raplamenubar.java
来自「Rapla是一个灵活的多用户资源管理系统。它提供的一些功能有:日历GUI」· Java 代码 · 共 221 行
JAVA
221 行
/*--------------------------------------------------------------------------*
| Copyright (C) 2006 Christopher Kohlhaas |
| |
| 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. A copy of the license has been included with |
| these distribution in the COPYING file, if not go to www.fsf.org |
| |
| As a special exception, you are granted the permissions to link this |
| program with every library, which license fulfills the Open Source |
| Definition as published by the Open Source Initiative (OSI). |
*--------------------------------------------------------------------------*/
package org.rapla.gui.internal;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.KeyStroke;
import org.rapla.client.ClientService;
import org.rapla.entities.configuration.Preferences;
import org.rapla.framework.RaplaContext;
import org.rapla.framework.RaplaException;
import org.rapla.gui.EditController;
import org.rapla.gui.RaplaGUIComponent;
import org.rapla.gui.internal.action.RestartRaplaAction;
import org.rapla.gui.internal.action.RestartServerAction;
import org.rapla.gui.internal.action.user.UserAction;
import org.rapla.gui.internal.common.CalendarSelectionModel;
import org.rapla.gui.internal.common.InternMenus;
import org.rapla.gui.internal.print.PrintAction;
import org.rapla.gui.toolkit.DialogUI;
import org.rapla.gui.toolkit.HTMLView;
import org.rapla.gui.toolkit.RaplaFrame;
import org.rapla.gui.toolkit.RaplaMenuItem;
import org.rapla.gui.toolkit.RaplaSeparator;
public class RaplaMenuBar extends RaplaGUIComponent
{
public RaplaMenuBar(RaplaContext sm) throws RaplaException {
super(sm);
JMenu systemMenu = (JMenu)getService( InternMenus.FILE_MENU_ROLE );
systemMenu.setText( getString("file"));
JMenu editMenu = (JMenu)getService( InternMenus.EDIT_MENU_ROLE );
editMenu.setText( getString("edit"));
JMenu exportMenu = (JMenu)getService( InternMenus.EXPORT_MENU_ROLE );
exportMenu.setText( getString("export"));
JMenu importMenu = (JMenu)getService( InternMenus.IMPORT_MENU_ROLE );
importMenu.setText( getString("import"));
JMenuItem newMenu = (JMenuItem)getService( InternMenus.NEW_MENU_ROLE );
newMenu.setText( getString("new"));
JMenu extraMenu = (JMenu)getService( InternMenus.EXTRA_MENU_ROLE);
extraMenu.setText( getString("help"));
JMenu adminMenu = (JMenu)getService( InternMenus.ADMIN_MENU_ROLE );
adminMenu.setText( getString("admin"));
JMenu viewMenu = (JMenu)getService( InternMenus.VIEW_MENU_ROLE );
viewMenu.setText( getString("view"));
viewMenu.add( new RaplaSeparator("view_save"));
JMenuItem storeViewEntry = new JMenuItem();
if ( isModifyPreferencesAllowed() )
{
StoreCalendarSelectionAction storeCalendar = new StoreCalendarSelectionAction( getContext());
storeViewEntry.setAction( storeCalendar );
viewMenu.add( storeViewEntry );
}
systemMenu.add( newMenu);
systemMenu.add( new JSeparator());
systemMenu.add( exportMenu );
systemMenu.add( importMenu );
systemMenu.add( adminMenu);
systemMenu.add( new JSeparator());
JMenuItem printMenu = new JMenuItem( getString("print"));
PrintAction printAction = new PrintAction(getContext());
printMenu.setAction( printAction );
printAction.setEnabled( true );
CalendarSelectionModel model = (CalendarSelectionModel)getService(CalendarSelectionModel.ROLE);
printAction.setModel(model);
systemMenu.add( printMenu );
systemMenu.add( new JSeparator());
if ( getUserModule().canSwitchBack() ) {
JMenuItem switchBack = new JMenuItem();
switchBack.setAction( new UserAction(getContext(),null,null).setSwitchToUser());
adminMenu.add( switchBack );
}
boolean server = getUpdateModule().isClientForServer();
if ( server && isAdmin() ) {
JMenuItem restartServer = new JMenuItem();
restartServer.setAction( new RestartServerAction(getContext()));
adminMenu.add( restartServer );
}
if ( isAdmin() )
{
JMenuItem restart = new JMenuItem();
restart.setAction( new RestartRaplaAction(getContext()));
adminMenu.add( restart );
}
systemMenu.setMnemonic('F');
JMenuItem logout = new JMenuItem(getString("exit"));
logout.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_Q, ActionEvent.CTRL_MASK ) );
logout.setMnemonic('x');
logout.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent event) {
RaplaFrame mainComponent = (RaplaFrame) getService( ClientService.MAIN_COMPONENT);
mainComponent.close();
}
});
systemMenu.add( logout );
RaplaMenuItem userOptions = new RaplaMenuItem("userOptions");
editMenu.add( userOptions );
if ( isModifyPreferencesAllowed() ) {
userOptions.setAction( createOptionAction( getQuery().getPreferences( )));
} else {
userOptions.setVisible( false );
}
if ( isAdmin() ) {
RaplaMenuItem adminOptions = new RaplaMenuItem("adminOptions");
adminOptions.setAction( createOptionAction( getQuery().getPreferences( null )));
adminMenu.add( adminOptions );
}
extraMenu.addSeparator();
RaplaMenuItem info = new RaplaMenuItem("info");
info.setAction( createInfoAction( getContext()));
extraMenu.add( info );
adminMenu.setEnabled( adminMenu.getMenuComponentCount() != 0 );
exportMenu.setEnabled( exportMenu.getMenuComponentCount() != 0);
importMenu.setEnabled( importMenu.getMenuComponentCount() != 0);
}
private Action createOptionAction( final Preferences preferences) {
AbstractAction action = new AbstractAction() {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent arg0) {
try {
EditController editContrl =(EditController) getService(EditController.ROLE);
editContrl.edit( preferences, getMainComponent());
} catch (RaplaException ex) {
showException( ex, getMainComponent());
}
}
};
action.putValue( Action.SMALL_ICON, getIcon("icon.empty") );
action.putValue( Action.NAME, getString("options"));
return action;
}
private Action createInfoAction( RaplaContext context) throws RaplaException {
final String name = getString("info");
final Icon icon = getIcon("icon.info_small");
AbstractAction action = new AbstractAction() {
private static final long serialVersionUID = 1L;
public void actionPerformed( ActionEvent e )
{
try {
HTMLView infoText = new HTMLView();
infoText.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
String javaversion;
try {
javaversion = System.getProperty("java.version");
} catch (SecurityException ex) {
javaversion = "-";
getLogger().warn("Permission to system properties denied!");
}
infoText.setBody(getI18n().format("info.text",javaversion));
DialogUI dialog = DialogUI.create( getContext(),getMainComponent(),true, new JScrollPane(infoText), new String[] {getString("ok")});
dialog.setTitle( name);
dialog.setSize( 550, 300);
dialog.startNoPack();
} catch (RaplaException ex) {
showException( ex, getMainComponent());
}
}
};
action.putValue( Action.SMALL_ICON, icon );
action.putValue( Action.NAME, name);
return action;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?