01 package ideExtensions.menuItems;
02
03 import com.bea.ide.Application;
04 import com.bea.ide.actions.ActionSvc;
05 import com.bea.ide.actions.DefaultAction;
06 import com.bea.ide.core.PreferencesSvc;
07
08 import java.awt.event.ActionEvent;
09 import javax.swing.JLabel;
10 import javax.swing.JOptionPane;
11 import javax.swing.JPanel;
12 import javax.swing.JTextField;
13
14 /**
15 * An action behind an "Add Favorite" menu command. The command
16 * adds a "favorite" URL menu command to a "Favorites"
17 * menu in the IDE. This class extends DefaultAction, which in turn
18 * implements IAction. Action extensions such as menu commands and
19 * toolbar buttons implement the IAction interface's actionPerformed
20 * method to provide logic for the action. The IDE calls actionPerformed
21 * when the command is selected by the IDE's user.
22 *
23 * The extension.xml file provided in the META-INF folder of the MenuItems
24 * sample specifies this class as the handler for the "Add Favorite" action.
25 */
26 public class AddFavoriteAction extends DefaultAction
27 {
28 /**
29 * Adds a "favorite" URL to the "Favorites" menu provided by the
30 * MenuItems sample. This method is called by the IDE when the user
31 * clicks the "Favorites -> Add Favorite" menu.
32 *
33 * @param e The menu click event that occurred in the IDE.
34 */
35 public void actionPerformed(ActionEvent e)
36 {
37 /**
38 * Start creating the user interface for a dialog to prompt the
39 * user for a URL to add. The panel contains the text box, then is
40 * added to a dialog below.
41 */
42 JPanel panel = new JPanel();
43 JTextField textField = new JTextField(25);
44 textField.setText("http://");
45 textField.setCaretPosition(7);
46 JLabel label = new JLabel("Yo. Enter a favorite web link: ");
47 panel.add(label);
48 panel.add(textField);
49
50 /**
51 * Display a simple dialog that includes the panel created above. If
52 * the user clicks OK (rather than Cancel), then proceed with the
53 * following.
54 */
55 if (JOptionPane.showConfirmDialog(Application.getRootFrame(),
56 panel,
57 "Add Favorite",
58 JOptionPane.OK_CANCEL_OPTION,
59 JOptionPane.PLAIN_MESSAGE,
60 null) == JOptionPane.OK_OPTION)
61 {
62 /**
63 * Use the preferences service to get any favorites already saved
64 * to $USER_HOME/.workshop.pref.
65 */
66 PreferencesSvc.IPreferencePkg prefs =
67 PreferencesSvc.get().getUserPreferences(Application.get(),
68 Application.class).getPackageForNode("favorites");
69
70 /**
71 * Favorites are stored in .workshop.pref as <option> elements
72 * whose name attribute is a value such as "favorites1" and value
73 * attribute is the URL. Find the end of the list and add a new entry
74 * with the text in the dialog's text box.
75 */
76 int favNum = 0;
77 while (prefs.get("favorites" + (++favNum)) != null) ;
78 prefs.put("favorites" + favNum, textField.getText());
79
80 /**
81 * Use the action service to refresh the menu with the complete list
82 * using the FavoritesGenerator class included in this extension.
83 * See the code in that class for details.
84 */
85 ActionSvc.get().refreshGenerator(FavoritesGenerator.class.getName());
86 }
87 }
88 }
|