1 19 20 package org.netbeans.modules.tasklist.core.export; 21 22 import java.awt.Dialog ; 23 24 import java.awt.event.ActionEvent ; 25 import java.awt.event.ActionListener ; 26 import java.beans.PropertyChangeEvent ; 27 import java.beans.PropertyChangeListener ; 28 import javax.swing.JComponent ; 29 import javax.swing.JMenu ; 30 import javax.swing.JMenuItem ; 31 import javax.swing.event.MenuEvent ; 32 import javax.swing.event.MenuListener ; 33 34 import org.openide.util.actions.SystemAction; 35 import org.openide.util.actions.Presenter.Menu; 36 import org.openide.DialogDisplayer; 37 38 import org.openide.awt.JMenuPlus; 39 import org.openide.util.HelpCtx; 40 import org.openide.util.NbBundle; 41 import org.openide.util.actions.CallableSystemAction; 42 import org.openide.WizardDescriptor; 43 import org.openide.awt.Mnemonics; 44 import org.openide.windows.TopComponent; 45 import org.openide.windows.WindowManager; 46 47 52 public final class ImportAction extends CallableSystemAction implements Menu { 53 54 static final long serialVersionUID = 1L; 55 56 57 public ImportAction() { 58 WindowManager.getDefault().getRegistry().addPropertyChangeListener( 59 new PropertyChangeListener () { 60 public void propertyChange(PropertyChangeEvent e) { 61 update(); 62 } 63 } 64 ); 65 update(); 66 } 67 68 71 public void update() { 72 TopComponent tc = WindowManager.getDefault().getRegistry().getActivated(); 73 setEnabled(tc instanceof ExportImportProvider); 74 } 75 76 protected boolean asynchronous() { 77 return false; 78 } 79 80 public String getName() { 81 return NbBundle.getMessage(ImportAction.class, "LBL_Import"); } 83 84 89 90 public HelpCtx getHelpCtx() { 91 return HelpCtx.DEFAULT_HELP; 92 } 95 96 99 public JMenuItem getMenuPresenter () { 100 JMenu mainItem = new JMenuPlus(); 101 Mnemonics.setLocalizedText(mainItem, getName()); 102 mainItem.setIcon(SystemAction.get( 103 ImportAction.class).getIcon()); 104 HelpCtx.setHelpIDString (mainItem, 105 ImportAction.class.getName()); 106 mainItem.addMenuListener(new MainItemListener()); 107 return mainItem; 108 } 109 110 113 public JMenuItem getPopupPresenter() { 114 JMenu mainItem = new JMenuPlus(); 115 Mnemonics.setLocalizedText(mainItem, getName()); 116 HelpCtx.setHelpIDString(mainItem, 117 ImportAction.class.getName()); 118 mainItem.addMenuListener(new MainItemListener()); 119 return mainItem; 120 } 121 122 public void performAction () { 123 } 125 126 128 131 private static final class MainItemListener 132 implements ActionListener , MenuListener { 133 134 135 private JMenu menu; 136 137 public MainItemListener () {} 138 139 public void menuCanceled (MenuEvent e) { 140 } 141 142 public void menuDeselected (MenuEvent e) { 143 JMenu menu = (JMenu )e.getSource(); 144 menu.removeAll(); 145 } 146 147 public void menuSelected (MenuEvent e) { 148 this.menu = (JMenu )e.getSource(); 149 150 152 TopComponent tc = WindowManager. 153 getDefault().getRegistry().getActivated(); 154 assert tc instanceof ExportImportProvider; 155 156 ExportImportFormat translators[] = 157 ((ExportImportProvider) tc).getImportFormats(); 158 assert translators != null; 159 160 for (int i = 0; i < translators.length; i++) { 161 menu.add(createMenuItem(translators[i])); 162 } 163 } 164 165 final private static String PROPNAME = "translator"; 167 private JMenuItem createMenuItem(ExportImportFormat translator) { 168 JMenuItem curMenuItem = new JMenuItem (); 169 Mnemonics.setLocalizedText(curMenuItem, translator.getName()); 170 curMenuItem.putClientProperty(PROPNAME, translator); 171 curMenuItem.addActionListener(this); 172 return curMenuItem; 173 } 174 175 public void actionPerformed(ActionEvent evt) { 176 TopComponent tc = WindowManager. 177 getDefault().getRegistry().getActivated(); 178 assert tc instanceof ExportImportProvider; 179 180 JComponent jc = (JComponent )evt.getSource(); 181 ExportImportFormat translator = 182 (ExportImportFormat) jc.getClientProperty(PROPNAME); 183 assert translator != null; 184 185 WizardDescriptor wd = translator.getWizard(); 186 Dialog d = DialogDisplayer.getDefault().createDialog(wd); 187 d.setVisible(true); 188 if (wd.getValue() == WizardDescriptor.FINISH_OPTION) { 189 translator.doExportImport((ExportImportProvider) tc, wd); 190 } 191 } 192 } 193 } 194 | Popular Tags |