1 14 package org.compiere.apps; 15 16 import java.awt.*; 17 import java.awt.event.*; 18 import java.net.*; 19 import javax.swing.*; 20 21 import org.compiere.util.*; 22 import org.compiere.swing.*; 23 24 34 public final class AppsAction extends AbstractAction 35 { 36 43 public AppsAction (String action, KeyStroke accelerator, boolean toggle) 44 { 45 super(); 46 m_action = action; 47 48 String text = Msg.getMsg(Env.getCtx(), action); 50 int pos = text.indexOf("&"); 51 if (pos != -1) { 53 Character ch = new Character (text.toUpperCase().charAt(pos+1)); 54 text = text.substring(0, pos) + text.substring(pos+1); 55 putValue(Action.MNEMONIC_KEY, new Integer (ch.hashCode())); 56 } 57 Icon small = getIcon(action, true); 59 Icon large = getIcon(action, false); 60 Icon smallPressed = null; 61 Icon largePressed = null; 62 63 m_toggle = toggle; 64 if (toggle) 66 { 67 smallPressed = getIcon(action+"X", true); 68 if (smallPressed == null) 69 smallPressed = small; 70 largePressed = getIcon(action+"X", false); 71 if (largePressed == null) 72 largePressed = large; 73 } 74 75 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); 84 if (toggle) 86 { 87 m_button = new CToggleButton(this); 88 m_button.setSelectedIcon(largePressed); 89 } 90 else 91 m_button = new CButton(this); 92 m_button.setName(action); 93 if (large != null) 95 { 96 m_button.setIcon(large); 97 m_button.setText(null); 98 } 99 m_button.setActionCommand(m_action); 100 m_button.setMargin(BUTTON_INSETS); 101 m_button.setSize(BUTTON_SIZE); 102 103 if (toggle) 105 { 106 m_menu = new JCheckBoxMenuItem(this); 107 m_menu.setSelectedIcon(smallPressed); 108 } 109 else 110 m_menu = new JMenuItem(this); 111 m_menu.setAccelerator(accelerator); 112 m_menu.setActionCommand(m_action); 113 } 115 116 public static final Dimension BUTTON_SIZE = new Dimension(28,28); 117 118 public static final Insets BUTTON_INSETS = new Insets(0, 0, 0, 0); 119 private AbstractButton m_button; 121 private JMenuItem m_menu; 122 123 private String m_action; 124 private ActionListener m_delegate = null; 125 private boolean m_toggle = false; 126 private boolean m_pressed = false; 127 128 134 private ImageIcon getIcon(String name, boolean small) 135 { 136 String fullName = name + (small ? "16.gif" : "24.gif"); 137 return Env.getImageIcon(fullName); 138 } 140 144 public String getName() 145 { 146 return m_action; 147 } 149 153 public AbstractButton getButton() 154 { 155 return m_button; 156 } 158 162 public JMenuItem getMenuItem() 163 { 164 return m_menu; 165 } 167 171 public void setDelegate(ActionListener al) 172 { 173 m_delegate = al; 174 } 176 180 public void setPressed (boolean pressed) 181 { 182 if (!m_toggle) 183 return; 184 m_pressed = pressed; 185 186 m_button.setSelected(pressed); 188 m_menu.setSelected(pressed); 190 } 192 196 public boolean isPressed() 197 { 198 return m_pressed; 199 } 201 205 public void actionPerformed(ActionEvent e) 206 { 207 if (m_toggle) 210 setPressed(!m_pressed); 211 if (m_delegate != null) 213 m_delegate.actionPerformed(e); 214 } 216 219 public void dispose() 220 { 221 m_button = null; 222 m_menu = null; 223 } 225 229 public String toString() 230 { 231 StringBuffer sb = new StringBuffer ("AppsAction - "); 232 sb.append(m_action) 233 .append(" Acc=") 234 .append(getValue(Action.ACCELERATOR_KEY)); 235 return sb.toString(); 236 } 238 } | Popular Tags |