001 /* 002 * LAPIS lightweight structured text processing system 003 * 004 * Copyright (C) 1998-2002 Carnegie Mellon University, 005 * Copyright (C) 2003 Massachusetts Institute of Technology. 006 * All rights reserved. 007 * 008 * This library is free software; you can redistribute it 009 * and/or modify it under the terms of the GNU General 010 * Public License as published by the Free Software 011 * Foundation, version 2. 012 * 013 * LAPIS homepage: http://graphics.lcs.mit.edu/lapis/ 014 */ 015 016 package lapisx.swing; 017 018 import java.awt.*; 019 import javax.swing.*; 020 021 public abstract class ActionAdapters { 022 023 public static Action toMenuAction (Action action) { 024 return new MaskedAction (Action.SMALL_ICON, action); 025 } 026 027 public static Action toToolbarAction (Action action) { 028 return new MaskedAction (Action.NAME, action); 029 } 030 031 public static JToggleButton toToggleButton (Action action, 032 ButtonGroup group) { 033 JToggleButton button = 034 new JToggleButton ((Icon) action.getValue (Action.SMALL_ICON)); 035 036 button.addActionListener (action); 037 038 String tooltip = (String) action.getValue (Action.SHORT_DESCRIPTION); 039 if (tooltip != null) 040 button.setToolTipText (tooltip); 041 042 if (group != null) 043 group.add (button); 044 return button; 045 } 046 047 public static JRadioButtonMenuItem toRadioButtonMenuItem (Action action, 048 ButtonGroup group) { 049 JRadioButtonMenuItem item = 050 new JRadioButtonMenuItem ((String) action.getValue (Action.NAME)); 051 052 item.addActionListener (action); 053 054 Object mn = action.getValue (AcceleratedAction.MNEMONIC); 055 if (mn != null) 056 item.setMnemonic (((Character)mn).charValue ()); 057 058 Object acc = action.getValue (AcceleratedAction.ACCELERATOR); 059 if (acc != null) 060 item.setAccelerator ((KeyStroke) acc); 061 062 if (group != null) 063 group.add (item); 064 065 return item; 066 } 067 public static JRadioButton toRadioButton (Action action, ButtonGroup group) { 068 JRadioButton item = 069 new JRadioButton ((String) action.getValue (Action.NAME)); 070 071 item.addActionListener (action); 072 073 Object mn = action.getValue (AcceleratedAction.MNEMONIC); 074 if (mn != null) 075 item.setMnemonic (((Character)mn).charValue ()); 076 077 if (group != null) 078 group.add (item); 079 080 return item; 081 } 082 /** 083 * constructs a new JButton attached to an Action 084 * @returns a new JButton 085 * 086 **/ 087 public static JButton toButton (Action a) { 088 JButton b = new JButton ((String) a.getValue (Action.NAME)); 089 b.addActionListener (a); 090 return b; 091 } 092 093 /** 094 * constructs a new JCheckBox attached to an Action 095 * @returns a new JCheckBox 096 * 097 **/ 098 public static JCheckBox toCheckBox (Action a) { 099 JCheckBox b = new JCheckBox ((String) a.getValue (Action.NAME)); 100 b.addActionListener (a); 101 return b; 102 } 103 104 105 /** 106 * Make a new JButton attached to an Action. This JButton 107 * is shorter than a default JButtons, and uses a smaller font. 108 * @param action Action to trigger when button is pressed. 109 * @returns a new tiny JButton 110 **/ 111 public static JButton toTinyButton (Action a) { 112 int height = new JLabel ("X").getPreferredSize ().height; 113 114 JButton button = new JButton ((String) a.getValue (Action.NAME)); 115 button.addActionListener (a); 116 117 Font oldFont = button.getFont (); 118 Font font = new Font (oldFont.getName (), 119 oldFont.getStyle (), 120 oldFont.getSize () - 2); 121 button.setFont (font); 122 123 Dimension d = new Dimension (button.getPreferredSize ().width, 124 height); 125 button.setPreferredSize (d); 126 button.setMaximumSize (d); 127 128 return button; 129 } 130 131 132 }