1 19 20 package org.apache.tools.ant.module.wizards.shortcut; 21 22 import java.awt.Component ; 23 import java.util.HashSet ; 24 import java.util.NoSuchElementException ; 25 import java.util.Set ; 26 import javax.swing.JComponent ; 27 import javax.swing.event.ChangeEvent ; 28 import javax.swing.event.ChangeListener ; 29 import org.openide.WizardDescriptor; 30 import org.openide.filesystems.Repository; 31 import org.openide.loaders.DataFolder; 32 import org.openide.util.NbBundle; 33 34 final class ShortcutIterator implements WizardDescriptor.Iterator { 35 36 ShortcutIterator() {} 37 38 40 private WizardDescriptor.Panel[] createPanels () { 41 return new WizardDescriptor.Panel[] { 42 new IntroPanel.IntroWizardPanel (), 43 new SelectFolderPanel.SelectFolderWizardPanel( 44 NbBundle.getMessage(ShortcutIterator.class, "SI_LBL_select_menu_to_add_to"), 45 NbBundle.getMessage(ShortcutIterator.class, "SI_TEXT_menu_locn"), 46 NbBundle.getMessage(ShortcutIterator.class, "SI_LBL_display_name_for_menu"), 47 DataFolder.findFolder(Repository.getDefault().getDefaultFileSystem().findResource("Menu")), true, ShortcutWizard.PROP_FOLDER_MENU), 49 new SelectFolderPanel.SelectFolderWizardPanel( 50 NbBundle.getMessage(ShortcutIterator.class, "SI_LBL_select_toolbar"), 51 NbBundle.getMessage(ShortcutIterator.class, "SI_TEXT_toolbar_locn"), 52 NbBundle.getMessage(ShortcutIterator.class, "SI_LBL_display_name_for_toolbar"), 53 DataFolder.findFolder(Repository.getDefault().getDefaultFileSystem().findResource("Toolbars")), false, ShortcutWizard.PROP_FOLDER_TOOL), 55 new SelectKeyboardShortcutPanel.SelectKeyboardShortcutWizardPanel (), 56 new CustomizeScriptPanel.CustomizeScriptWizardPanel (), 57 }; 58 } 59 60 62 private String [] createSteps () { 63 return new String [] { 64 NbBundle.getMessage (ShortcutIterator.class, "SI_LBL_choose_options"), 65 NbBundle.getMessage (ShortcutIterator.class, "SI_LBL_add_to_menu"), 66 NbBundle.getMessage (ShortcutIterator.class, "SI_LBL_add_to_toolbar"), 67 NbBundle.getMessage (ShortcutIterator.class, "SI_LBL_make_keyboard_shortcut"), 68 NbBundle.getMessage (ShortcutIterator.class, "SI_LBL_cust_script"), 69 }; 70 } 71 72 private transient int index; 73 private transient WizardDescriptor.Panel[] panels; 74 private transient ShortcutWizard wiz; 75 76 void initialize(ShortcutWizard wiz) { 81 this.wiz = wiz; 82 index = 0; 83 panels = createPanels (); 84 ((IntroPanel.IntroWizardPanel) panels[0]).initialize(wiz); 87 String [] steps = createSteps (); 89 for (int i = 0; i < panels.length; i++) { 90 Component c = panels[i].getComponent (); 91 if (steps[i] == null) { 92 steps[i] = c.getName (); 96 } 97 if (c instanceof JComponent ) { JComponent jc = (JComponent ) c; 99 jc.putClientProperty ("WizardPanel_contentSelectedIndex", new Integer (i)); jc.putClientProperty ("WizardPanel_contentData", steps); } 104 } 105 } 106 107 109 public String name () { 110 return NbBundle.getMessage (ShortcutIterator.class, "TITLE_x_of_y", 111 new Integer (index + 1), new Integer (panels.length)); 112 } 113 114 boolean showing(String prop) { 115 Boolean s = (Boolean ) wiz.getProperty (prop); 116 return (s == null) || s.booleanValue (); 117 } 118 private boolean showing (int index) throws NoSuchElementException { 119 switch (index) { 120 case 0: 121 return true; 122 case 1: 123 return showing(ShortcutWizard.PROP_SHOW_MENU); 124 case 2: 125 return showing(ShortcutWizard.PROP_SHOW_TOOL); 126 case 3: 127 return showing(ShortcutWizard.PROP_SHOW_KEYB); 128 case 4: 129 return showing(ShortcutWizard.PROP_SHOW_CUST); 130 default: 131 throw new NoSuchElementException (); 132 } 133 } 134 public boolean hasNext () { 135 for (int i = index + 1; i < panels.length; i++) { 136 if (showing (i)) { 137 return true; 138 } 139 } 140 return false; 141 } 142 public boolean hasPrevious () { 143 return index > 0; 144 } 145 public void nextPanel() throws NoSuchElementException { 146 if (!hasNext()) { 147 throw new NoSuchElementException (); 148 } 149 index++; 150 while (! showing (index)) index++; 151 if (index == 1) { 152 fireChangeEvent (); 154 } 155 } 156 public void previousPanel() throws NoSuchElementException { 157 if (!hasPrevious()) { 158 throw new NoSuchElementException (); 159 } 160 index--; 161 while (! showing (index)) index--; 162 } 163 public WizardDescriptor.Panel current () { 164 return panels[index]; 165 } 166 167 private transient Set <ChangeListener > listeners = new HashSet <ChangeListener >(1); 168 public final void addChangeListener (ChangeListener l) { 169 synchronized (listeners) { 170 listeners.add (l); 171 } 172 } 173 public final void removeChangeListener (ChangeListener l) { 174 synchronized (listeners) { 175 listeners.remove (l); 176 } 177 } 178 protected final void fireChangeEvent () { 179 ChangeListener [] ls; 180 synchronized (listeners) { 181 ls = listeners.toArray(new ChangeListener [listeners.size()]); 182 } 183 ChangeEvent ev = new ChangeEvent (this); 184 for (ChangeListener l : ls) { 185 l.stateChanged(ev); 186 } 187 } 188 189 } 190 | Popular Tags |