📄 appsaction.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Business Solution
* The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
* Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
* created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.apps;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import org.compiere.util.*;
import org.compiere.swing.*;
/**
* Application Action.
* <br>
* Creates Action with MenuItem and Button
* The ActionCommand is translated for display
* If translated text contains &, the next character is the Mnemonic
*
* @author Jorg Janke
* @version $Id: AppsAction.java,v 1.11 2003/02/14 06:44:13 jjanke Exp $
*/
public final class AppsAction extends AbstractAction
{
/**
* Application Action
*
* @param action base action command - used as AD_Message for Text and Icon name
* @param accelerator optional keystroke for accelerator
* @param toggle is toggle action (maintains state)
*/
public AppsAction (String action, KeyStroke accelerator, boolean toggle)
{
super();
m_action = action;
// Data
String text = Msg.getMsg(Env.getCtx(), action);
int pos = text.indexOf("&");
if (pos != -1) // We have a nemonic
{
Character ch = new Character(text.toUpperCase().charAt(pos+1));
text = text.substring(0, pos) + text.substring(pos+1);
putValue(Action.MNEMONIC_KEY, new Integer(ch.hashCode()));
}
//
Icon small = getIcon(action, true);
Icon large = getIcon(action, false);
Icon smallPressed = null;
Icon largePressed = null;
m_toggle = toggle;
// ToggleIcons have the pressed name with X
if (toggle)
{
smallPressed = getIcon(action+"X", true);
if (smallPressed == null)
smallPressed = small;
largePressed = getIcon(action+"X", false);
if (largePressed == null)
largePressed = large;
}
// Attributes
putValue(Action.NAME, text); // Display
putValue(Action.SMALL_ICON, small); // Icon
putValue(Action.SHORT_DESCRIPTION, text); // Tooltip
putValue(Action.ACTION_COMMAND_KEY, m_action); // ActionCammand
putValue(Action.ACCELERATOR_KEY, accelerator); // KeyStroke
// putValue(Action.MNEMONIC_KEY, new Integer(0)); // Mnemonic
// putValue(Action.DEFAULT, text); // Not Used
// Create Button
if (toggle)
{
m_button = new CToggleButton(this);
m_button.setSelectedIcon(largePressed);
}
else
m_button = new CButton(this);
m_button.setName(action);
// Correcting Action items
if (large != null)
{
m_button.setIcon(large);
m_button.setText(null);
}
m_button.setActionCommand(m_action);
m_button.setMargin(BUTTON_INSETS);
m_button.setSize(BUTTON_SIZE);
// Create Menu
if (toggle)
{
m_menu = new JCheckBoxMenuItem(this);
m_menu.setSelectedIcon(smallPressed);
}
else
m_menu = new JMenuItem(this);
m_menu.setAccelerator(accelerator);
m_menu.setActionCommand(m_action);
} // Action
/** Button Size */
public static final Dimension BUTTON_SIZE = new Dimension(28,28);
/** Button Insets */
public static final Insets BUTTON_INSETS = new Insets(0, 0, 0, 0);
//
private AbstractButton m_button;
private JMenuItem m_menu;
private String m_action;
private ActionListener m_delegate = null;
private boolean m_toggle = false;
private boolean m_pressed = false;
/**
* Get Icon with name action
* @param name name
* @param small small
* @return Icon
*/
private ImageIcon getIcon(String name, boolean small)
{
String fullName = name + (small ? "16.gif" : "24.gif");
return Env.getImageIcon(fullName);
} // getIcon
/**
* Get Name/ActionCommand
* @return ActionName
*/
public String getName()
{
return m_action;
} // getName
/**
* Return Button
* @return Button
*/
public AbstractButton getButton()
{
return m_button;
} // getButton
/**
* Return MenuItem
* @return MenuItem
*/
public JMenuItem getMenuItem()
{
return m_menu;
} // getMenuItem
/**
* Set Delegate to receive the actionPerformed calls
* @param al listener
*/
public void setDelegate(ActionListener al)
{
m_delegate = al;
} // setDelegate
/**
* Toggle
* @param pressed pressed
*/
public void setPressed (boolean pressed)
{
if (!m_toggle)
return;
m_pressed = pressed;
// Set Button
m_button.setSelected(pressed);
// Set Menu
m_menu.setSelected(pressed);
} // setPressed
/**
* IsPressed
* @return true if pressed
*/
public boolean isPressed()
{
return m_pressed;
} // isPressed
/**
* ActionListener
* @param e Event
*/
public void actionPerformed(ActionEvent e)
{
// Log.trace(Log.l1_User, "AppsAction.actionPerformed", e.getActionCommand());
// Toggle Items
if (m_toggle)
setPressed(!m_pressed);
// Inform
if (m_delegate != null)
m_delegate.actionPerformed(e);
} // actionPerformed
/**
* Dispose
*/
public void dispose()
{
m_button = null;
m_menu = null;
} // dispose
/**
* toString
* @return String Representation
*/
public String toString()
{
StringBuffer sb = new StringBuffer("AppsAction - ");
sb.append(m_action)
.append(" Acc=")
.append(getValue(Action.ACCELERATOR_KEY));
return sb.toString();
} // toString
} // AppsAction
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -