mirror of
https://github.com/igniterealtime/Spark.git
synced 2025-12-01 12:27:58 +00:00
Fixed window focus issue with ctrl+f
git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@5542 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
@ -34,6 +34,7 @@ import javax.swing.JComponent;
|
|||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JWindow;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
@ -406,10 +407,10 @@ public class UserManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final JContactItemField contactField = new JContactItemField(new ArrayList(contacts));
|
final JWindow frame = new JWindow(parent);
|
||||||
|
final JContactItemField contactField = new JContactItemField(new ArrayList(contacts), frame);
|
||||||
|
|
||||||
|
|
||||||
final JFrame frame = new JFrame();
|
|
||||||
frame.setUndecorated(true);
|
|
||||||
JPanel layoutPanel = new JPanel();
|
JPanel layoutPanel = new JPanel();
|
||||||
layoutPanel.setLayout(new GridBagLayout());
|
layoutPanel.setLayout(new GridBagLayout());
|
||||||
frame.getContentPane().setLayout(new BorderLayout());
|
frame.getContentPane().setLayout(new BorderLayout());
|
||||||
|
|||||||
@ -12,16 +12,7 @@ import org.jivesoftware.resource.SparkRes;
|
|||||||
import org.jivesoftware.spark.ui.ContactItem;
|
import org.jivesoftware.spark.ui.ContactItem;
|
||||||
import org.jivesoftware.spark.util.ModelUtil;
|
import org.jivesoftware.spark.util.ModelUtil;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
|
||||||
import java.awt.Component;
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.event.KeyAdapter;
|
|
||||||
import java.awt.event.KeyEvent;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.swing.DefaultListModel;
|
import javax.swing.DefaultListModel;
|
||||||
import javax.swing.JFrame;
|
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JList;
|
import javax.swing.JList;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
@ -30,12 +21,22 @@ import javax.swing.JTextField;
|
|||||||
import javax.swing.JWindow;
|
import javax.swing.JWindow;
|
||||||
import javax.swing.ListCellRenderer;
|
import javax.swing.ListCellRenderer;
|
||||||
|
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.awt.Window;
|
||||||
|
import java.awt.event.KeyAdapter;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.awt.event.KeyListener;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of a popup field from a TextField.
|
* Implementation of a popup field from a TextField.
|
||||||
*
|
*
|
||||||
* @author Derek DeMoro
|
* @author Derek DeMoro
|
||||||
*/
|
*/
|
||||||
public class JContactItemField extends JPanel {
|
public class JContactItemField extends JPanel implements KeyListener {
|
||||||
|
|
||||||
private JTextField textField = new JTextField();
|
private JTextField textField = new JTextField();
|
||||||
private DefaultListModel model = new DefaultListModel();
|
private DefaultListModel model = new DefaultListModel();
|
||||||
@ -43,7 +44,9 @@ public class JContactItemField extends JPanel {
|
|||||||
private JWindow popup;
|
private JWindow popup;
|
||||||
private List<ContactItem> items;
|
private List<ContactItem> items;
|
||||||
|
|
||||||
public JContactItemField(List items) {
|
private Window parentWindow;
|
||||||
|
|
||||||
|
public JContactItemField(List items, Window parentWindow) {
|
||||||
setLayout(new BorderLayout());
|
setLayout(new BorderLayout());
|
||||||
this.items = items;
|
this.items = items;
|
||||||
|
|
||||||
@ -81,7 +84,11 @@ public class JContactItemField extends JPanel {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
popup = new JWindow(new JFrame());
|
list.addKeyListener(this);
|
||||||
|
addKeyListener(this);
|
||||||
|
|
||||||
|
|
||||||
|
popup = new JWindow(parentWindow);
|
||||||
|
|
||||||
|
|
||||||
popup.getContentPane().add(new JScrollPane(list));
|
popup.getContentPane().add(new JScrollPane(list));
|
||||||
@ -139,7 +146,7 @@ public class JContactItemField extends JPanel {
|
|||||||
for (int i = 0; i < text.length(); i++) {
|
for (int i = 0; i < text.length(); i++) {
|
||||||
char ch = text.charAt(i);
|
char ch = text.charAt(i);
|
||||||
if (!Character.isLetterOrDigit(ch) && ch != '@' && ch != '-' && ch != '_'
|
if (!Character.isLetterOrDigit(ch) && ch != '@' && ch != '-' && ch != '_'
|
||||||
&& ch != '.' && ch != ',' && ch != ' ') {
|
&& ch != '.' && ch != ',' && ch != ' ') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -157,8 +164,8 @@ public class JContactItemField extends JPanel {
|
|||||||
*/
|
*/
|
||||||
public boolean validateChar(char ch) {
|
public boolean validateChar(char ch) {
|
||||||
if (!Character.isLetterOrDigit(ch) && ch != '@' && ch != '-' && ch != '_'
|
if (!Character.isLetterOrDigit(ch) && ch != '@' && ch != '-' && ch != '_'
|
||||||
&& ch != '.' && ch != ',' && ch != ' ' && ch != KeyEvent.VK_BACK_SPACE && ch != KeyEvent.CTRL_DOWN_MASK
|
&& ch != '.' && ch != ',' && ch != ' ' && ch != KeyEvent.VK_BACK_SPACE && ch != KeyEvent.CTRL_DOWN_MASK
|
||||||
&& ch != KeyEvent.CTRL_MASK) {
|
&& ch != KeyEvent.CTRL_MASK) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,5 +228,15 @@ public class JContactItemField extends JPanel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void keyTyped(KeyEvent keyEvent) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void keyPressed(KeyEvent keyEvent) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void keyReleased(KeyEvent keyEvent) {
|
||||||
|
if (keyEvent.getKeyCode() == KeyEvent.VK_ESCAPE) {
|
||||||
|
textField.requestFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user