MainMenuBar.java
| Index Score | ||
|---|---|---|
![]() |
![]() |
org.xnap.gui |
![]() |
![]() |
XNap 3 |
View: Reasons, Metrics, Source Code
These are the metrics that contribute to the Enerjy Score for this file, ranked by impact. So the metrics listed at the top influence the score to a greater extent that the metrics listed at the bottom.
/*
* XNap - A P2P framework and client.
*
* See the file AUTHORS for copyright information.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.xnap.gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.help.CSH;
import javax.help.HelpBroker;
import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComponent;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
import org.xnap.XNap;
import org.xnap.action.AbstractXNapAction;
import org.xnap.gui.action.AboutDialogAction;
import org.xnap.gui.action.ActionHelper;
import org.xnap.gui.action.ClearHistoriesAction;
import org.xnap.gui.action.ConsoleDialogAction;
import org.xnap.gui.action.ContextHelpAction;
import org.xnap.gui.action.ErrorAction;
import org.xnap.gui.action.ExitAction;
import org.xnap.gui.action.FeedbackDialogAction;
import org.xnap.gui.action.FocusAction;
import org.xnap.gui.action.HelpDialogAction;
import org.xnap.gui.action.PluginDialogAction;
import org.xnap.gui.action.PreferencesDialogAction;
import org.xnap.gui.action.ResetPreferencesAction;
import org.xnap.gui.action.ShowChatPanelAction;
import org.xnap.gui.action.ShowHotlistAction;
import org.xnap.gui.action.ShowLibraryPanelAction;
import org.xnap.gui.action.ShowMainToolBarAction;
import org.xnap.gui.action.StartupWizardDialogAction;
import org.xnap.gui.action.UpdateLibraryAction;
import org.xnap.gui.action.UseTabbedPaneAction;
import org.xnap.gui.action.UseTabbedTransferPaneAction;
import org.xnap.gui.component.XNapCheckBoxMenuItem;
import org.xnap.gui.component.XNapMenu;
import org.xnap.gui.component.XNapMenuItem;
import org.xnap.gui.menu.EnablePluginsMenu;
import org.xnap.gui.shortcut.ShortcutManager;
import org.xnap.gui.theme.ThemeManager;
import org.xnap.gui.util.GUIHelper;
import org.xnap.gui.util.HelpManager;
import org.xnap.gui.util.IconHelper;
import org.xnap.util.Preferences;
import org.xnap.util.SystemHelper;
/**
* The MainToolBar is shown at the top of the main application window.
*/
public class MainMenuBar extends JMenuBar
{
//--- Constant(s) ---
//--- Data field(s) ---
private JMenu editMenu;
private JMenu fileMenu;
private JMenu helpMenu;
private JMenu pluginsMenu;
private JMenu settingsMenu;
private JMenu viewMenu;
private JMenu lookAndFeelMenu;
private JMenu visibleColumnsMenu;
private int pluginMenuInitialItemCount;
private static Preferences prefs = Preferences.getInstance();
//--- Constructor(s) ---
public MainMenuBar()
{
initializeFileMenu();
initializeEditMenu();
initializeViewMenu();
initializePluginsMenu();
initializeSettingsMenu();
initializeHelpMenu();
updateMnemonics();
}
//--- Method(s) ---
/**
* Adds a plugins menu.
*/
public void addPluginMenu(JMenu menu)
{
if (Preferences.getInstance().getUseSubMenuForPluginMenus()) {
if (pluginsMenu.getItemCount() == pluginMenuInitialItemCount) {
pluginsMenu.addSeparator();
}
pluginsMenu.add(menu);
}
else {
menu.setIcon(null);
add(menu, 4);
updateUI();
}
updateMnemonics();
}
/**
* Adds a table column menu.
*/
public void addTableColumnsMenu(JMenu menu)
{
visibleColumnsMenu.add(menu);
updateMnemonics();
}
/**
* Adds a panel to the view menu.
*/
public JMenuItem addViewItem(FocusAction action, int keyCode)
{
JMenuItem jmi = new XNapMenuItem(action);
GUIHelper.setAccelerator(jmi, keyCode);
getViewMenu().add(jmi);
updateMnemonics();
return jmi;
}
/**
* Returns the file menu.
*/
public JMenu getFileMenu()
{
return fileMenu;
}
/**
* Returns the help menu.
*/
public JMenu getHelpMenu()
{
return helpMenu;
}
public JMenu getPluginsMenu1()
{
return pluginsMenu;
}
/**
* Returns the view menu.
*/
public JMenu getViewMenu()
{
return viewMenu;
}
/**
* Removes a plugins menu.
*/
public void removePluginMenu(JMenu menu)
{
if (pluginsMenu.isMenuComponent(menu)) {
pluginsMenu.remove(menu);
if (pluginsMenu.getItemCount() == pluginMenuInitialItemCount) {
// remove separator
pluginsMenu.remove(pluginMenuInitialItemCount);
}
}
else {
remove(menu);
updateUI();
}
}
public void removeTableColumnsMenu(JMenu menu)
{
visibleColumnsMenu.remove(menu);
}
public void removeViewItem(JMenuItem menuItem)
{
getViewMenu().remove(menuItem);
}
public void updateMnemonics()
{
// mnemomics are a foreign concept to Mac OS X, see
// http://developer.apple.com/techpubs/macosx/Java/JavaDevelopment/ \
// JavaDevonMacOSX.pdf for more information
if (!SystemHelper.isMacOSX) {
GUIHelper.setMnemonics(this);
}
}
private void initializeFileMenu()
{
fileMenu = new JMenu(XNap.tr("File"));
CSH.setHelpIDString(fileMenu, "file-menu");
add(fileMenu);
fileMenu.add(new XNapMenuItem(new UpdateLibraryAction()));
fileMenu.addSeparator();
if (XNap.isRunFromCvs()) {
fileMenu.add(new XNapMenuItem(new ErrorAction()));
fileMenu.addSeparator();
}
ExitAction exitAction = new ExitAction();
ShortcutManager.getInstance().add(exitAction);
fileMenu.add(new XNapMenuItem(exitAction));
}
private void initializeEditMenu()
{
editMenu = new JMenu(XNap.tr("Edit"));
CSH.setHelpIDString(editMenu, "edit-menu");
add(editMenu);
editMenu.add(new XNapMenuItem(ActionHelper.cutAction));
editMenu.add(new XNapMenuItem(ActionHelper.copyAction));
editMenu.add(new XNapMenuItem(ActionHelper.pasteAction));
editMenu.addSeparator();
editMenu.add(new XNapMenuItem(new ClearHistoriesAction()));
}
private void initializePluginsMenu()
{
pluginsMenu = new JMenu(XNap.tr("Plugins"));
CSH.setHelpIDString(pluginsMenu, "plugin-menu");
add(pluginsMenu);
pluginsMenu.add(new XNapMenuItem(new PluginDialogAction()));
pluginsMenu.add(new EnablePluginsMenu());
pluginMenuInitialItemCount = pluginsMenu.getItemCount();
}
private void initializeViewMenu()
{
viewMenu = new JMenu(XNap.tr("View"));
CSH.setHelpIDString(viewMenu, "view-menu");
add(viewMenu);
FocusAction action = new FocusAction();
action.putValue(Action.NAME, XNap.tr("Search"));
action.putValue(Action.SHORT_DESCRIPTION,
XNap.tr("Switches to search panel."));
action.putValue(Action.ACTION_COMMAND_KEY, "search");
action.putValue(IconHelper.XNAP_ICON, "find.png");
action.putValue(AbstractXNapAction.DEFAULT_KEYSTROKE,
GUIHelper.getMenuKeyStroke(KeyEvent.VK_S));
viewMenu.add(new XNapMenuItem(action));
ShortcutManager.getInstance().add(action);
action = new FocusAction();
action.putValue(Action.NAME, XNap.tr("Transfer"));
action.putValue(Action.SHORT_DESCRIPTION,
XNap.tr("Switches to transfer panel."));
action.putValue(Action.ACTION_COMMAND_KEY, "transfer");
action.putValue(IconHelper.XNAP_ICON, "connect_established.png");
action.putValue(AbstractXNapAction.DEFAULT_KEYSTROKE,
GUIHelper.getMenuKeyStroke(KeyEvent.VK_T));
viewMenu.add(new XNapMenuItem(action));
ShortcutManager.getInstance().add(action);
action = new FocusAction();
action.putValue(Action.NAME, XNap.tr("Chat"));
action.putValue(Action.SHORT_DESCRIPTION,
XNap.tr("Switches to chat panel."));
action.putValue(Action.ACTION_COMMAND_KEY, "chat");
action.putValue(IconHelper.XNAP_ICON, "mail_generic2.png");
action.putValue(AbstractXNapAction.DEFAULT_KEYSTROKE,
GUIHelper.getMenuKeyStroke(KeyEvent.VK_H));
viewMenu.add(new XNapMenuItem(action));
ShortcutManager.getInstance().add
(action, (JComponent) XNapFrame.getInstance().getContentPane());
action = new FocusAction();
action.putValue(Action.NAME, XNap.tr("Library"));
action.putValue(Action.SHORT_DESCRIPTION,
XNap.tr("Switches to library panel."));
action.putValue(Action.ACTION_COMMAND_KEY, "library");
action.putValue(IconHelper.XNAP_ICON, "contents.png");
action.putValue(AbstractXNapAction.DEFAULT_KEYSTROKE,
GUIHelper.getMenuKeyStroke(KeyEvent.VK_L));
viewMenu.add(new XNapMenuItem(action));
ShortcutManager.getInstance().add
(action, (JComponent) XNapFrame.getInstance().getContentPane());
viewMenu.addSeparator();
viewMenu.add(new XNapMenuItem(new ConsoleDialogAction()));
}
private void initializeSettingsMenu()
{
settingsMenu = new JMenu(XNap.tr("Settings"));
CSH.setHelpIDString(settingsMenu, "settings-menu");
add(settingsMenu);
settingsMenu.add
(new XNapCheckBoxMenuItem(new ShowMainToolBarAction()));
XNapCheckBoxMenuItem jmiHotlist
= new XNapCheckBoxMenuItem(new ShowHotlistAction());
jmiHotlist.setAccelerator
(KeyStroke.getKeyStroke(KeyEvent.VK_H, KeyEvent.CTRL_MASK));
settingsMenu.add(jmiHotlist);
JMenu jmPanels = new XNapMenu(XNap.tr("Show Panels"));
settingsMenu.add(jmPanels);
jmPanels.add
(new XNapCheckBoxMenuItem(new ShowChatPanelAction()));
jmPanels.add
(new XNapCheckBoxMenuItem(new ShowLibraryPanelAction()));
settingsMenu.addSeparator();
settingsMenu.add(new XNapCheckBoxMenuItem(new UseTabbedPaneAction()));
settingsMenu.add
(new XNapCheckBoxMenuItem(new UseTabbedTransferPaneAction()));
settingsMenu.addSeparator();
/* who needs to switch that on and off quickly? */
//settingsMenu.add(new XNapCheckBoxMenuItem(new UseSocksProxyAction()));
//settingsMenu.addSeparator();
visibleColumnsMenu
= new XNapMenu(XNap.tr("Visible Columns"), "view_detailed.png");
//settingsMenu.add(jmVisibleColumns);
//settingsMenu.addSeparator();
lookAndFeelMenu = new XNapMenu(XNap.tr("Look & Feel"));
lookAndFeelMenu.setIcon(IconHelper.getMenuIcon("list.png"));
settingsMenu.add(lookAndFeelMenu);
updateLookAndFeels();
settingsMenu.addSeparator();
JMenu maintananceMenu = new JMenu(XNap.tr("Maintenance"));
settingsMenu.add(maintananceMenu);
maintananceMenu.add(new XNapMenuItem(new ResetPreferencesAction()));
settingsMenu.add(new XNapMenuItem(new StartupWizardDialogAction()));
settingsMenu.add
(new XNapMenuItem(ActionHelper.pluginPreferencesDialogAction));
XNapMenuItem jmiPreferences
= new XNapMenuItem(new PreferencesDialogAction());
jmiPreferences.setAccelerator(prefs.getShortcut("preferencesDialog"));
settingsMenu.add(jmiPreferences);
}
private void initializeHelpMenu()
{
helpMenu = new JMenu (XNap.tr("Help"));
CSH.setHelpIDString(helpMenu, "help-menu");
add(helpMenu);
helpMenu.add
(new XNapMenuItem(new HelpDialogAction(XNap.tr("XNap Handbook"),
HelpManager.getMainHelpSet())));
JMenuItem item = new JMenuItem(XNap.tr("XNap FAQ"),
IconHelper.getMenuIcon("contents.png"));
HelpBroker hb = HelpManager.getMainHelpBroker();
if (hb != null) {
hb.enableHelpOnButton(item, "frequently-asked-questions",
HelpManager.getMainHelpSet());
}
else {
item.setEnabled(false);
}
helpMenu.add(item);
JMenuItem jm = new XNapMenuItem(new ContextHelpAction());
jm.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,
KeyEvent.SHIFT_MASK));
helpMenu.add(jm);
helpMenu.addSeparator();
helpMenu.add(new XNapMenuItem(new FeedbackDialogAction()));
helpMenu.addSeparator();
helpMenu.add(new XNapMenuItem(new AboutDialogAction()));
}
public void updateLookAndFeels()
{
lookAndFeelMenu.removeAll();
UIManager.LookAndFeelInfo[] info
= ThemeManager.getInstalledLookAndFeels();
ButtonGroup group = new ButtonGroup();
ActionListener lafListener = new LookAndFeelActionListener();
String currentLaf = UIManager.getLookAndFeel().getClass().getName();
for (int i = 0; i < info.length; i++) {
JCheckBoxMenuItem item = new JCheckBoxMenuItem(info[i].getName());
item.setActionCommand(info[i].getClassName());
item.addActionListener(lafListener);
if (currentLaf.equals(info[i].getClassName())) {
item.setSelected(true);
}
group.add(item);
lookAndFeelMenu.add(item);
}
}
private class LookAndFeelActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Preferences.getInstance().setLookAndFeel(e.getActionCommand());
Preferences.getInstance().write();
//Dialogs.showRestartNotification(XNapFrame.getInstance());
}
}
}
The table below shows all metrics for MainMenuBar.java.



