1 19 20 package org.netbeans.modules.xml.wsdl.ui.view.grapheditor.actions; 21 22 import java.awt.Dimension ; 23 import java.awt.Rectangle ; 24 import java.awt.event.ActionEvent ; 25 import java.awt.event.ActionListener ; 26 import java.awt.event.FocusAdapter ; 27 import java.awt.event.FocusEvent ; 28 import java.awt.event.FocusListener ; 29 import java.awt.event.KeyAdapter ; 30 import java.awt.event.KeyEvent ; 31 import java.awt.event.KeyListener ; 32 import java.util.EnumSet ; 33 34 import javax.swing.ComboBoxModel ; 35 import javax.swing.JComboBox ; 36 37 import org.netbeans.api.visual.action.InplaceEditorProvider; 38 import org.netbeans.api.visual.widget.Widget; 39 40 42 public final class ComboBoxInplaceEditorProvider implements InplaceEditorProvider<JComboBox > { 43 44 private ComboBoxInplaceEditor localEditor; 45 46 private EnumSet <ExpansionDirection> expansionDirections; 47 48 private FocusListener focusListener; 49 50 public ComboBoxInplaceEditorProvider (ComboBoxInplaceEditor editor, EnumSet <ExpansionDirection> expansionDirections) { 51 this.localEditor = editor; 52 this.expansionDirections = expansionDirections; 53 } 54 55 private KeyListener keyListener; 56 57 public JComboBox createEditorComponent (EditorController controller, Widget widget) { 58 if (! localEditor.isEnabled (widget)) 59 return null; 60 ComboBoxModel model = localEditor.getModel(); 61 JComboBox comboBox = new JComboBox (model); 62 comboBox.setEditable(localEditor.getEditable()); 63 comboBox.setPreferredSize(widget.getBounds().getSize()); 64 65 66 67 return comboBox; 68 } 69 70 public void notifyOpened (final EditorController controller, final Widget widget, JComboBox editor) { 71 editor.setMinimumSize (new Dimension (64, 19)); 72 keyListener = new KeyAdapter () { 73 @Override 74 public void keyReleased (KeyEvent e) { 75 switch (e.getKeyCode ()) { 76 case KeyEvent.VK_ESCAPE: 77 e.consume (); 78 controller.closeEditor (false); 79 break; 80 case KeyEvent.VK_ENTER: 81 e.consume (); 82 controller.closeEditor (true); 83 break; 84 } 85 } 86 }; 87 editor.addKeyListener (keyListener); 88 editor.addActionListener(new ActionListener () { 89 90 public void actionPerformed(ActionEvent e) { 91 controller.closeEditor(true); 92 } 93 94 }); 95 96 FocusAdapter focusListener = new FocusAdapter () { 97 public void focusLost (FocusEvent e) { 98 controller.closeEditor (true); 99 } 100 }; 101 editor.addFocusListener(focusListener); 102 103 } 105 106 public void notifyClosing (EditorController controller, Widget widget, JComboBox editor, boolean commit) { 107 editor.removeKeyListener (keyListener); 108 if (commit) { 109 if (widget != null) { 110 widget.revalidate(); 111 widget.repaint(); 112 } 113 } 114 localEditor.setSelectedItem(editor.getSelectedItem()); 115 } 116 117 public EnumSet <ExpansionDirection> getExpansionDirections(EditorController controller, Widget widget, JComboBox editor) { 118 return expansionDirections; 119 } 120 121 public Rectangle getInitialEditorComponentBounds(EditorController controller, Widget widget, JComboBox editor, Rectangle viewBounds) { 122 return null; 123 } 124 125 } 126 | Popular Tags |