1 19 20 package org.apache.tools.ant.module.wizards.shortcut; 21 22 import java.awt.Component ; 23 import java.awt.event.KeyEvent ; 24 import java.awt.event.KeyListener ; 25 import java.util.HashSet ; 26 import java.util.Set ; 27 import javax.swing.KeyStroke ; 28 import javax.swing.event.ChangeEvent ; 29 import javax.swing.event.ChangeListener ; 30 import org.openide.WizardDescriptor; 31 import org.openide.filesystems.FileObject; 32 import org.openide.filesystems.Repository; 33 import org.openide.util.HelpCtx; 34 import org.openide.util.NbBundle; 35 import org.openide.util.Utilities; 36 37 final class SelectKeyboardShortcutPanel extends javax.swing.JPanel implements KeyListener { 38 39 private KeyStroke stroke = null; 40 41 private SelectKeyboardShortcutWizardPanel wiz; 42 43 44 public SelectKeyboardShortcutPanel (SelectKeyboardShortcutWizardPanel wiz) { 45 this.wiz = wiz; 46 initComponents (); 47 initAccessibility (); 48 setName (NbBundle.getMessage (SelectKeyboardShortcutPanel.class, "SKSP_LBL_select_shortcut_to_add")); 50 testField.addKeyListener (this); 51 } 52 53 54 private void initAccessibility () { 55 testField.getAccessibleContext().setAccessibleName(NbBundle.getMessage (SelectKeyboardShortcutPanel.class, "ACSN_LBL_type_here")); 56 testField.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage (SelectKeyboardShortcutPanel.class, "ACSD_LBL_type_here")); 57 this.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(SelectKeyboardShortcutPanel.class, "SKSP_TEXT_press_any_key_seq")); 58 } 59 60 62 67 private void initComponents() { hintsArea = new javax.swing.JTextArea (); 69 mainPanel = new javax.swing.JPanel (); 70 testField = new javax.swing.JTextField (); 71 72 setLayout(new java.awt.BorderLayout ()); 73 74 hintsArea.setBackground(new java.awt.Color (204, 204, 204)); 75 hintsArea.setEditable(false); 76 hintsArea.setFont(javax.swing.UIManager.getFont ("Label.font")); 77 hintsArea.setForeground(new java.awt.Color (102, 102, 153)); 78 hintsArea.setLineWrap(true); 79 hintsArea.setText(NbBundle.getMessage(SelectKeyboardShortcutPanel.class, "SKSP_TEXT_press_any_key_seq")); 80 hintsArea.setWrapStyleWord(true); 81 hintsArea.setDisabledTextColor(javax.swing.UIManager.getColor ("Label.foreground")); 82 hintsArea.setEnabled(false); 83 hintsArea.setOpaque(false); 84 add(hintsArea, java.awt.BorderLayout.NORTH); 85 86 testField.setColumns(15); 87 testField.setHorizontalAlignment(javax.swing.JTextField.CENTER); 88 testField.setText(NbBundle.getMessage(SelectKeyboardShortcutPanel.class, "SKSP_LBL_type_here")); 89 mainPanel.add(testField); 90 91 add(mainPanel, java.awt.BorderLayout.CENTER); 92 93 } 95 private javax.swing.JTextArea hintsArea; 97 private javax.swing.JPanel mainPanel; 98 private javax.swing.JTextField testField; 99 101 103 public void keyPressed (KeyEvent e) { 104 stroke = KeyStroke.getKeyStroke (e.getKeyCode (), e.getModifiers ()); 106 testField.setText (Utilities.keyToString (stroke)); 107 wiz.fireChangeEvent (); 108 e.consume (); 109 } 110 public void keyReleased (KeyEvent e) { 111 e.consume (); 112 } 113 public void keyTyped (KeyEvent e) { 114 e.consume (); 115 } 116 117 public static class SelectKeyboardShortcutWizardPanel implements WizardDescriptor.Panel { 118 119 private SelectKeyboardShortcutPanel panel = null; 120 private FileObject shortcutsFolder = null; 121 122 public Component getComponent () { 123 return getPanel(); 124 } 125 126 private SelectKeyboardShortcutPanel getPanel() { 127 if (panel == null) { 128 panel = new SelectKeyboardShortcutPanel(this); 129 } 130 return panel; 131 } 132 133 public HelpCtx getHelp () { 134 return HelpCtx.DEFAULT_HELP; 135 } 136 137 public boolean isValid () { 138 if (shortcutsFolder == null) 139 shortcutsFolder = Repository.getDefault ().getDefaultFileSystem ().findResource ("Shortcuts"); return (getPanel().stroke != null) && 141 (shortcutsFolder.getFileObject(Utilities.keyToString(getPanel().stroke), "instance") == null) && (shortcutsFolder.getFileObject(Utilities.keyToString(getPanel().stroke), "xml") == null); } 144 145 private final Set <ChangeListener > listeners = new HashSet <ChangeListener >(1); 146 public final void addChangeListener (ChangeListener l) { 147 synchronized (listeners) { 148 listeners.add (l); 149 } 150 } 151 public final void removeChangeListener (ChangeListener l) { 152 synchronized (listeners) { 153 listeners.remove (l); 154 } 155 } 156 protected final void fireChangeEvent () { 157 ChangeListener [] ls; 158 synchronized (listeners) { 159 ls = listeners.toArray(new ChangeListener [listeners.size()]); 160 } 161 ChangeEvent ev = new ChangeEvent (this); 162 for (ChangeListener l : ls) { 163 l.stateChanged(ev); 164 } 165 } 166 167 public void readSettings (Object settings) { 168 } 170 public void storeSettings (Object settings) { 171 WizardDescriptor wiz = (WizardDescriptor) settings; 172 wiz.putProperty(ShortcutWizard.PROP_STROKE, getPanel().stroke); 173 } 174 } 175 176 } 177 | Popular Tags |