package mapmaker; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ColorButton extends JPanel { Color mColor; String mText; JPanel mColorPanel = new JPanel(); JButton mButton = new JButton(new ChooseAction()); JColorChooser mColorChooser = new JColorChooser(); public ColorButton(String aText, Color aColor) { mText = aText; mColor = aColor; mColorPanel.setBackground(aColor); mButton.setText(aText); mColorPanel.setPreferredSize(new Dimension(24, 24)); mColorPanel.setBorder(BorderFactory.createLineBorder(Color.black)); setLayout(new BorderLayout(6, 0)); JPanel squishPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0)); squishPanel.add(mColorPanel); add(mButton, BorderLayout.CENTER); add(squishPanel, BorderLayout.EAST); } public Color getColor() { return mColor; } class ChooseAction extends AbstractAction { private static final String NAME = "Choose"; private static final String SMALL_ICON = "Blank16.gif"; private static final String LARGE_ICON = "Blank24.gif"; private static final String SHORT_DESCRIPTION = "Choose"; private static final String LONG_DESCRIPTION = "Choose Color"; private static final int MNEMONIC_KEY = 'C'; public ChooseAction() { putValue(Action.NAME, NAME); putValue(Action.SHORT_DESCRIPTION, SHORT_DESCRIPTION); putValue(Action.LONG_DESCRIPTION, LONG_DESCRIPTION); putValue(Action.MNEMONIC_KEY, new Integer(MNEMONIC_KEY)); putValue(Action.ACTION_COMMAND_KEY, ACTION_COMMAND_KEY); } public void actionPerformed(ActionEvent e) { Color color = mColorChooser.showDialog(ColorButton.this, "Choose " + mText, mColor); if (color != null) { mColorPanel.setBackground(color); mColor = color; } } } }