1 19 20 package org.netbeans.modules.tasklist.core.export; 21 22 23 import java.awt.event.ActionEvent ; 24 import java.awt.event.ActionListener ; 25 import java.awt.*; 26 import java.beans.PropertyChangeEvent ; 27 import java.beans.PropertyChangeListener ; 28 import javax.swing.*; 29 import javax.swing.event.MenuEvent ; 30 import javax.swing.event.MenuListener ; 31 32 import org.openide.util.actions.SystemAction; 33 import org.openide.util.actions.Presenter.Menu; 34 35 import org.openide.awt.JMenuPlus; 36 import org.openide.util.HelpCtx; 37 import org.openide.util.NbBundle; 38 import org.openide.util.actions.CallableSystemAction; 39 import org.openide.DialogDisplayer; 40 import org.openide.WizardDescriptor; 41 import org.openide.awt.Mnemonics; 42 import org.openide.windows.TopComponent; 43 import org.openide.windows.WindowManager; 44 45 52 public final class ExportAction extends CallableSystemAction implements Menu { 53 54 static final long serialVersionUID = 1L; 55 56 59 public ExportAction() { 60 WindowManager.getDefault().getRegistry().addPropertyChangeListener( 61 new PropertyChangeListener () { 62 public void propertyChange(PropertyChangeEvent e) { 63 update(); 64 } 65 } 66 ); 67 update(); 68 } 69 70 73 public void update() { 74 TopComponent tc = WindowManager.getDefault().getRegistry().getActivated(); 75 setEnabled(tc instanceof ExportImportProvider); 76 } 77 78 protected boolean asynchronous() { 79 return false; 80 } 81 82 public String getName() { 83 return NbBundle.getMessage(ExportAction.class, "LBL_Export"); } 85 86 protected String iconResource() { 87 return "org/netbeans/modules/tasklist/core/exportAction.gif"; } 89 90 public HelpCtx getHelpCtx() { 91 return HelpCtx.DEFAULT_HELP; 92 } 95 96 100 public Component getToolbarPresenter() { 101 final Component original = super.getToolbarPresenter(); 102 AbstractButton ab = (AbstractButton) original; 103 ab.addActionListener(new ActionListener () { 104 public void actionPerformed(ActionEvent e) { 105 JPopupMenu menu = new JPopupMenu(); 106 107 TopComponent tc = WindowManager. 109 getDefault().getRegistry().getActivated(); 110 assert tc instanceof ExportImportProvider; 111 112 ExportImportFormat translators[] = 113 ((ExportImportProvider) tc).getExportFormats(); 114 assert translators != null; 115 116 for (int i = 0; i < translators.length; i++) { 117 menu.add(createMenuItem(translators[i])); 118 } 119 121 menu.show(original, original.getWidth(), 0); 122 } 123 }); 124 return original; 125 } 126 127 130 public JMenuItem getMenuPresenter() { 131 JMenu mainItem = new JMenuPlus(); 132 Mnemonics.setLocalizedText(mainItem, getName()); 133 mainItem.setIcon(SystemAction.get( 134 ExportAction.class).getIcon()); 135 HelpCtx.setHelpIDString(mainItem, 136 ExportAction.class.getName()); 137 mainItem.addMenuListener(new MainItemListener()); 138 return mainItem; 139 } 140 141 144 public JMenuItem getPopupPresenter() { 145 JMenu mainItem = new JMenuPlus(); 146 Mnemonics.setLocalizedText(mainItem, getName()); 147 HelpCtx.setHelpIDString(mainItem, 148 ExportAction.class.getName()); 149 mainItem.addMenuListener(new MainItemListener()); 150 return mainItem; 151 } 152 153 public void performAction() { 154 } 156 157 final private static String PROPNAME = "translator"; 159 private static JMenuItem createMenuItem(ExportImportFormat translator) { 160 JMenuItem curMenuItem = new JMenuItem(); 161 Mnemonics.setLocalizedText(curMenuItem, translator.getName()); 162 curMenuItem.putClientProperty(PROPNAME, translator); 163 curMenuItem.addActionListener(new ActionListener () { 164 public void actionPerformed(ActionEvent evt) { 165 TopComponent tc = WindowManager. 166 getDefault().getRegistry().getActivated(); 167 assert tc instanceof ExportImportProvider; 168 169 JComponent jc = (JComponent) evt.getSource(); 170 ExportImportFormat translator = 171 (ExportImportFormat) jc.getClientProperty(PROPNAME); 172 WizardDescriptor wd = translator.getWizard(); 173 Dialog d = DialogDisplayer.getDefault().createDialog(wd); 174 d.setVisible(true); 175 if (wd.getValue() == WizardDescriptor.FINISH_OPTION) { 176 translator.doExportImport((ExportImportProvider) tc, wd); 177 } 178 } 179 }); 180 return curMenuItem; 181 } 182 183 185 188 private static final class MainItemListener implements MenuListener { 189 190 191 private JMenu menu; 192 193 public MainItemListener () {} 194 195 public void menuCanceled(MenuEvent e) { 196 } 197 198 public void menuDeselected(MenuEvent e) { 199 JMenu menu = (JMenu) e.getSource(); 200 menu.removeAll(); 201 } 202 203 public void menuSelected(MenuEvent e) { 204 this.menu = (JMenu) e.getSource(); 205 206 208 211 216 218 TopComponent tc = WindowManager. 219 getDefault().getRegistry().getActivated(); 220 assert tc instanceof ExportImportProvider; 221 222 ExportImportFormat[] translators = 223 ((ExportImportProvider) tc).getExportFormats(); 224 assert translators != null; 225 226 for (int i = 0; i < translators.length; i++) { 227 menu.add(createMenuItem(translators[i])); 228 } 229 } 230 } 231 } 232 | Popular Tags |