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
24
25
26
27
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
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
60
61
62
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
94
95 JMenuBar build() {
96 JMenuBar menuBar = new JMenuBar();
97
98
99 menuBar.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH);
100
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
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
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
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
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
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
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
222
223 return builder.getMenu();
224 }
225
226 }