JButton aMinus = new JButton();
String Minus = Msg.getMsg(Env.getCtx(), "Minus");
DialogButton dbMinus = new DialogButton(Minus, "Minus", Env
.getImageIcon("Minus24.gif"), 0);
dbMinus.getInputMap(CButton.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, Event.CTRL_MASK),
Minus);
dbMinus.getActionMap().put(Minus, dbMinus.getAction());
aMinus = dbMinus;
aMinus.addActionListener(this);
public void init(){
b_New = createButtonAction("New", null);
b_New.setText("New");
}
protected CButton createButtonAction(String action, KeyStroke accelerator) {
AppsAction act = new AppsAction(action, accelerator, false);
act.setDelegate(this);
CButton button = (CButton) act.getButton();
button.setPreferredSize(new Dimension(80, 40));
button.setMinimumSize(getPreferredSize());
button.setMaximumSize(getPreferredSize());
button.setFocusable(false);
return button;
}
package org.compiere.apps;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import org.compiere.swing.*;
import org.compiere.util.*;
public final class AppsAction extends AbstractAction
{
public AppsAction (String action, KeyStroke accelerator, boolean toggle)
{
super();
m_action = action;
String text = Msg.getMsg(Env.getCtx(), action);
int pos = text.indexOf("&");
if (pos != -1)
{
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;
if (toggle)
{
smallPressed = getIcon(action+"X", true);
if (smallPressed == null)
smallPressed = small;
largePressed = getIcon(action+"X", false);
if (largePressed == null)
largePressed = large;
}
putValue(Action.NAME, text);
putValue(Action.SMALL_ICON, small);
putValue(Action.SHORT_DESCRIPTION, text);
putValue(Action.ACTION_COMMAND_KEY, m_action);
putValue(Action.ACCELERATOR_KEY, accelerator);
if (toggle)
{
m_button = new CToggleButton(this);
m_button.setSelectedIcon(largePressed);
}
else
m_button = new CButton(this);
m_button.setName(action);
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);
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);
}
public AppsAction (String action, KeyStroke accelerator, String toolTipText, boolean toggle)
{
super();
m_action = action;
if (toolTipText == null)
toolTipText = Msg.getMsg(Env.getCtx(), action);
int pos = toolTipText.indexOf('&');
if (pos != -1 && toolTipText.length() > pos)
{
Character ch = new Character(toolTipText.toUpperCase().charAt(pos+1));
if (ch != ' ')
{
toolTipText = toolTipText.substring(0, pos) + toolTipText.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;
if (toggle)
{
smallPressed = getIcon(action+"X", true);
if (smallPressed == null)
smallPressed = small;
largePressed = getIcon(action+"X", false);
if (largePressed == null)
largePressed = large;
}
putValue(Action.NAME, toolTipText);
putValue(Action.SMALL_ICON, small);
putValue(Action.SHORT_DESCRIPTION, toolTipText);
putValue(Action.ACTION_COMMAND_KEY, m_action);
putValue(Action.ACCELERATOR_KEY, accelerator);
if (toggle)
{
m_button = new CToggleButton(this);
m_button.setSelectedIcon(largePressed);
}
else
m_button = new CButton(this);
m_button.setName(action);
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);
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);
}
public static final Dimension BUTTON_SIZE = new Dimension(28,28);
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;
private ImageIcon getIcon(String name, boolean small)
{
String fullName = name + (small ? "16.gif" : "24.gif");
return Env.getImageIcon(fullName);
}
public String getName()
{
return m_action;
}
public AbstractButton getButton()
{
return m_button;
}
public JMenuItem getMenuItem()
{
return m_menu;
}
public void setDelegate(ActionListener al)
{
m_delegate = al;
}
public void setPressed (boolean pressed)
{
if (!m_toggle)
return;
m_pressed = pressed;
m_button.setSelected(pressed);
m_menu.setSelected(pressed);
}
public boolean isPressed()
{
return m_pressed;
}
public void actionPerformed(ActionEvent e)
{
if (m_toggle)
setPressed(!m_pressed);
if (m_delegate != null)
m_delegate.actionPerformed(e);
}
public void dispose()
{
m_button = null;
m_menu = null;
}
public String toString()
{
StringBuffer sb = new StringBuffer("AppsAction - ");
sb.append(m_action)
.append(" Acc=")
.append(getValue(Action.ACCELERATOR_KEY));
return sb.toString();
}
}