View Javadoc

1   package com.melloware.jukes.gui.view;
2   
3   import java.awt.Component;
4   
5   import javax.swing.JMenu;
6   import javax.swing.JMenuBar;
7   import javax.swing.JPopupMenu;
8   
9   import com.jgoodies.looks.BorderStyle;
10  import com.jgoodies.looks.HeaderStyle;
11  import com.jgoodies.looks.Options;
12  import com.jgoodies.looks.plastic.PlasticLookAndFeel;
13  import com.jgoodies.looks.windows.WindowsLookAndFeel;
14  import com.jgoodies.uif.action.ActionManager;
15  import com.jgoodies.uif.builder.MenuBuilder;
16  import com.jgoodies.uif.builder.PopupMenuBuilder;
17  import com.jgoodies.uif.component.UIFMenuItem;
18  import com.jgoodies.uif.osx.OSXApplicationMenu;
19  import com.melloware.jukes.gui.tool.Actions;
20  import com.melloware.jukes.gui.tool.Resources;
21  
22  /**
23   * Builds the <code>JMenuBar</code> and pull-down menus in Jukes.
24   * <p>
25   * Copyright (c) 1999-2007 Melloware, Inc. <http://www.melloware.com>
26   * @author Emil A. Lefkof III <info@melloware.com>
27   * @version 4.0
28   */
29  public final class MainMenuBuilder {
30  
31  	public static final String CATALOG = Resources.getString("menu.catalog");
32  	private static final String PLAYER = Resources.getString("menu.player");
33     private static final String REPORTS = Resources.getString("menu.reports");
34  	private static final String TOOLS = Resources.getString("menu.tools");
35  	private static final String HELP = Resources.getString("menu.help");
36  	private static final String LANGUAGE = Resources.getString("menu.language");
37  	
38      
39      /**
40       * Builds and returns the Player.
41       */
42      public static JPopupMenu buildPlayerPopupMenu(Component aComponent) {
43          final PopupMenuBuilder popup = new PopupMenuBuilder("Player");
44          UIFMenuItem menuItem = null;
45          menuItem = new UIFMenuItem(ActionManager.get(Actions.PLAYER_QUEUE_ID));
46          menuItem.putClientProperty(Resources.EDITOR_COMPONENT, aComponent);
47          popup.add(menuItem);
48          menuItem = new UIFMenuItem(ActionManager.get(Actions.PLAYER_QUEUE_NEXT_ID));
49          menuItem.putClientProperty(Resources.EDITOR_COMPONENT, aComponent);
50          popup.add(menuItem);
51          menuItem = new UIFMenuItem(ActionManager.get(Actions.TRACK_PLAY_IMMEDIATE_ID));
52          menuItem.putClientProperty(Resources.EDITOR_COMPONENT, aComponent);
53          popup.add(menuItem);
54          
55          return popup.getPopupMenu();
56      }
57      
58      /**
59       * Builds and returns the Playlist Menu.
60       * <p>
61       * @param aComponent the panel that owns this menu
62       * @param aList a JList that this menu item is acting on.
63       */
64      public static JPopupMenu buildPlaylistPopupMenu(Component aComponent, Component aList) {
65          final PopupMenuBuilder popup = new PopupMenuBuilder("Playlist");
66          UIFMenuItem menuItem = null;
67          menuItem = new UIFMenuItem(ActionManager.get(Actions.TRACK_PLAY_IMMEDIATE_ID));
68          menuItem.putClientProperty(Resources.EDITOR_COMPONENT, aList);
69          popup.add(menuItem);
70          menuItem = new UIFMenuItem(ActionManager.get(Actions.PLAYLIST_MOVEUP_ID));
71          menuItem.putClientProperty(Resources.EDITOR_COMPONENT, aComponent);
72          popup.add(menuItem);
73          menuItem = new UIFMenuItem(ActionManager.get(Actions.PLAYLIST_MOVEDOWN_ID));
74          menuItem.putClientProperty(Resources.EDITOR_COMPONENT, aComponent);
75          popup.add(menuItem);
76          menuItem = new UIFMenuItem(ActionManager.get(Actions.PLAYLIST_MOVEOVER_ID));
77          menuItem.putClientProperty(Resources.EDITOR_COMPONENT, aComponent);
78          popup.add(menuItem);
79          menuItem = new UIFMenuItem(ActionManager.get(Actions.PLAYLIST_REMOVE_TRACK_ID));
80          menuItem.putClientProperty(Resources.EDITOR_COMPONENT, aComponent);
81          popup.add(menuItem);
82          menuItem = new UIFMenuItem(ActionManager.get(Actions.PLAYLIST_CLEAR_ID));
83          menuItem.putClientProperty(Resources.EDITOR_COMPONENT, aComponent);
84          popup.add(menuItem);
85          menuItem = new UIFMenuItem(ActionManager.get(Actions.PLAYLIST_GOTO_ID));
86          menuItem.putClientProperty(Resources.EDITOR_COMPONENT, aList);
87          popup.add(menuItem);
88            
89          return popup.getPopupMenu();
90      }
91  
92      /**
93       * Configures, composes, and returns the menu bar.
94       */
95      JMenuBar build() {
96          JMenuBar menuBar = new JMenuBar();
97  
98          // Set a hint so that JGoodies Looks will detect it as being in the header.
99          menuBar.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH);
100         // Unlike the default, use a separator border.
101         menuBar.putClientProperty(WindowsLookAndFeel.BORDER_STYLE_KEY, BorderStyle.SEPARATOR);
102         menuBar.putClientProperty(PlasticLookAndFeel.BORDER_STYLE_KEY, BorderStyle.SEPARATOR);
103 
104         menuBar.add(buildCatalogMenu());
105         menuBar.add(buildPlayerMenu());
106         menuBar.add(buildReportsMenu());
107         menuBar.add(buildLanguageMenu());
108         menuBar.add(buildToolsMenu());
109         menuBar.add(buildHelpMenu());
110         return menuBar;
111     }
112 
113     /**
114      * Builds and returns the Catalog menu.
115      */
116     private JMenu buildCatalogMenu() {
117         MenuBuilder builder = new MenuBuilder(CATALOG, CATALOG.charAt(0));
118         
119         builder.add(ActionManager.get(Actions.DISC_ADD_ID));
120         builder.add(ActionManager.get(Actions.DISC_FINDER_ID));
121         builder.add(ActionManager.get(Actions.DISC_REMOVER_ID));
122         builder.addSeparator();
123         builder.add(ActionManager.get(Actions.SEARCH_ID));
124         builder.add(ActionManager.get(Actions.PLAYLIST_SHOW_ID));
125         builder.add(ActionManager.get(Actions.FILTER_SHOW_ID));
126         builder.add(ActionManager.get(Actions.CATALOG_EXPORT_ID));
127         builder.addSeparator();
128         builder.add(ActionManager.get(Actions.CONNECT_ID));
129         builder.add(ActionManager.get(Actions.REFRESH_ID));
130         if (!OSXApplicationMenu.isRegisteredQuit()) {
131             builder.addSeparator();
132             builder.add(ActionManager.get(Actions.EXIT_ID));
133         }
134         return builder.getMenu();
135     }
136     
137     /**
138      * Builds and returns the Player menu.
139      */
140     private JMenu buildPlayerMenu() {
141         MenuBuilder builder = new MenuBuilder(PLAYER, PLAYER.charAt(0));
142         builder.add(ActionManager.get(Actions.PLAYER_PLAY_ID));
143         builder.add(ActionManager.get(Actions.PLAYER_PAUSE_ID));
144         builder.add(ActionManager.get(Actions.PLAYER_STOP_ID));
145         builder.add(ActionManager.get(Actions.PLAYER_PREVIOUS_ID));
146         builder.add(ActionManager.get(Actions.PLAYER_NEXT_ID));
147         return builder.getMenu();
148     }
149     
150     /**
151      * Builds and returns the Reports menu.
152      */
153     private JMenu buildReportsMenu() {
154         MenuBuilder builder = new MenuBuilder(REPORTS, REPORTS.charAt(0));
155         builder.add(ActionManager.get(Actions.REPORT_CATALOG_ID));
156         builder.add(ActionManager.get(Actions.REPORT_NOCOVERART_ID));
157         builder.add(ActionManager.get(Actions.REPORT_BITRATE_ID));
158         builder.addSeparator();
159         builder.add(ActionManager.get(Actions.CATALOG_EXPORT_ID));
160         return builder.getMenu();
161     }
162 
163     /**
164      * Builds and returns the Help menu.
165      */
166     private JMenu buildHelpMenu() {
167         MenuBuilder builder = new MenuBuilder(HELP, HELP.charAt(0));
168         builder.add(ActionManager.get(Actions.HELP_CONTENTS_ID));
169         builder.addSeparator();
170         builder.add(ActionManager.get(Actions.HELP_DONATE_ID));
171         builder.add(ActionManager.get(Actions.HELP_FORUMS_ID));
172         builder.add(ActionManager.get(Actions.HELP_CONTACT_ID));
173         builder.add(ActionManager.get(Actions.HELP_TIP_OF_THE_DAY_ID));
174         if (!OSXApplicationMenu.isRegisteredAbout()) {
175             builder.addSeparator();
176             builder.add(ActionManager.get(Actions.HELP_ABOUT_DIALOG_ID));
177         }
178         return builder.getMenu();
179     }
180 
181     /**
182      * Builds and returns the Component menu.
183      */
184     private JMenu buildToolsMenu() {
185         MenuBuilder builder = new MenuBuilder(TOOLS, TOOLS.charAt(0));
186         if (!OSXApplicationMenu.isRegisteredPreferences()) {
187             builder.add(ActionManager.get(Actions.PREFERENCES_ID));
188         }
189         builder.add(ActionManager.get(Actions.TOOL_BACKUP_ID));
190         builder.add(ActionManager.get(Actions.PREFERENCES_IMPORT_ID));
191         builder.add(ActionManager.get(Actions.PREFERENCES_EXPORT_ID));
192         builder.add(ActionManager.get(Actions.TOOL_DIFFERENCE_ID));
193         builder.add(ActionManager.get(Actions.TOOL_LOCATION_ID));
194         builder.addSeparator();
195         builder.add(ActionManager.get(Actions.TOOL_STATISTICS_ID));
196         builder.add(ActionManager.get(Actions.TOOL_MEMORY_ID));
197         return builder.getMenu();
198     }
199     
200     /**
201      * Builds and returns the Language menu.
202      */
203     private JMenu buildLanguageMenu() {
204         MenuBuilder builder = new MenuBuilder(LANGUAGE, LANGUAGE.charAt(0));
205         builder.add(ActionManager.get(Actions.LANG_ENGLISH_ID));
206         builder.add(ActionManager.get(Actions.LANG_SPANISH_ID));
207         builder.add(ActionManager.get(Actions.LANG_GERMAN_ID));
208         builder.add(ActionManager.get(Actions.LANG_INDONESIAN_ID));
209         builder.add(ActionManager.get(Actions.LANG_KOREAN_ID));
210         builder.add(ActionManager.get(Actions.LANG_NORWEGIAN_ID));
211         builder.add(ActionManager.get(Actions.LANG_DUTCH_ID));
212         builder.add(ActionManager.get(Actions.LANG_FRENCH_ID));
213         builder.add(ActionManager.get(Actions.LANG_PORTUGEUSE_ID));
214         builder.add(ActionManager.get(Actions.LANG_ITALIAN_ID));
215         builder.add(ActionManager.get(Actions.LANG_SWEDISH_ID));
216         builder.add(ActionManager.get(Actions.LANG_FINNISH_ID));
217         builder.add(ActionManager.get(Actions.LANG_RUSSIAN_ID));
218         builder.add(ActionManager.get(Actions.LANG_UKRAINIAN_ID));
219         builder.add(ActionManager.get(Actions.LANG_CHINESE_ID));
220         builder.add(ActionManager.get(Actions.LANG_HINDHI_ID));
221         //builder.add(ActionManager.get(Actions.LANG_TAMIL_ID));
222         //builder.add(ActionManager.get(Actions.LANG_TELEGU_ID));
223         return builder.getMenu();
224     }
225 
226 }