KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > tasklist > core > export > ImportAction


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.tasklist.core.export;
21
22 import java.awt.Dialog JavaDoc;
23
24 import java.awt.event.ActionEvent JavaDoc;
25 import java.awt.event.ActionListener JavaDoc;
26 import java.beans.PropertyChangeEvent JavaDoc;
27 import java.beans.PropertyChangeListener JavaDoc;
28 import javax.swing.JComponent JavaDoc;
29 import javax.swing.JMenu JavaDoc;
30 import javax.swing.JMenuItem JavaDoc;
31 import javax.swing.event.MenuEvent JavaDoc;
32 import javax.swing.event.MenuListener JavaDoc;
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 /**
48    Import action which provides a pullright menu selecting the Import format
49    to use.
50    @author Tor Norbye
51 */

52 public final class ImportAction extends CallableSystemAction implements Menu JavaDoc {
53
54     static final long serialVersionUID = 1L;
55
56     /* Constructs a import action */
57     public ImportAction() {
58         WindowManager.getDefault().getRegistry().addPropertyChangeListener(
59             new PropertyChangeListener JavaDoc() {
60                 public void propertyChange(PropertyChangeEvent JavaDoc e) {
61                     update();
62                 }
63             }
64         );
65         update();
66     }
67
68     /**
69      * Updates the enabled/disabled state of this action.
70      */

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 JavaDoc getName() {
81         return NbBundle.getMessage(ImportAction.class, "LBL_Import"); // NOI18N
82
}
83
84     /*
85     protected String iconResource() {
86         return "org/netbeans/modules/tasklist/core/import.gif"; // NOI18N
87     }
88     */

89     
90     public HelpCtx getHelpCtx() {
91         return HelpCtx.DEFAULT_HELP;
92         // If you will provide context help then use:
93
// return new HelpCtx(ImportAction.class);
94
}
95     
96     /* Returns a submneu that will present this action in a Menu.
97     * @return the JMenuItem representation for this action
98     */

99     public JMenuItem JavaDoc getMenuPresenter () {
100     JMenu JavaDoc 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     /* Returns a submneu that will present this action in a PopupMenu.
111     * @return the JMenuItem representation for this action
112     */

113     public JMenuItem JavaDoc getPopupPresenter() {
114     JMenu JavaDoc 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         // all functionality is accomplished by menu listeners
124
}
125
126     // innerclasses .......................................................
127

128     /** Listens to selecting of main item and expands it to the
129      * submenu of exiting and new modes
130      */

131     private static final class MainItemListener
132         implements ActionListener JavaDoc, MenuListener JavaDoc {
133
134         /** Source of the events */
135         private JMenu JavaDoc menu;
136         
137         public MainItemListener () {}
138
139         public void menuCanceled (MenuEvent JavaDoc e) {
140         }
141
142         public void menuDeselected (MenuEvent JavaDoc e) {
143             JMenu JavaDoc menu = (JMenu JavaDoc)e.getSource();
144             menu.removeAll();
145         }
146
147         public void menuSelected (MenuEvent JavaDoc e) {
148             this.menu = (JMenu JavaDoc)e.getSource();
149
150             // Add the import filters to the menu
151

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 JavaDoc PROPNAME = "translator"; // NOI18N
166

167         private JMenuItem JavaDoc createMenuItem(ExportImportFormat translator) {
168         JMenuItem JavaDoc curMenuItem = new JMenuItem JavaDoc();
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 JavaDoc evt) {
176             TopComponent tc = WindowManager.
177                 getDefault().getRegistry().getActivated();
178             assert tc instanceof ExportImportProvider;
179             
180         JComponent JavaDoc jc = (JComponent JavaDoc)evt.getSource();
181         ExportImportFormat translator =
182         (ExportImportFormat) jc.getClientProperty(PROPNAME);
183             assert translator != null;
184             
185             WizardDescriptor wd = translator.getWizard();
186             Dialog JavaDoc 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