// GoGuiToolBar.java package net.sf.gogui.gogui; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import javax.swing.Action; import javax.swing.AbstractAction; import javax.swing.AbstractButton; import javax.swing.JButton; import javax.swing.JToolBar; import javax.swing.JToggleButton; import net.sf.gogui.util.Platform; /** Tool bar for GoGui. */ public class GoGuiToolBar extends JToolBar { /** Tool bar for GoGui. */ public GoGuiToolBar(GoGui goGui) { m_goGui = goGui; GoGuiActions actions = m_goGui.getActions(); m_actions = actions; addButton(actions.m_actionOpen); addButton(actions.m_actionSave); addSeparator(); addButton(actions.m_actionNewGame); addButton(actions.m_actionPass); addButton(actions.m_actionPlay); addSeparator(); addToggleButton(actions.m_actionSetupBlack); addToggleButton(actions.m_actionSetupWhite); addSeparator(); addButton(actions.m_actionBeginning); addButton(actions.m_actionBackwardTen); addButton(actions.m_actionBackward); addButton(actions.m_actionForward); addButton(actions.m_actionForwardTen); addButton(actions.m_actionEnd); addSeparator(); addButton(actions.m_actionNextVariation); addButton(actions.m_actionPreviousVariation); if (! Platform.isMac()) setRollover(true); setFloatable(false); } private final GoGui m_goGui; private final GoGuiActions m_actions; private AbstractButton addButton(AbstractButton button) { button.setFocusable(false); add(button); return button; } private JButton addButton(AbstractAction action) { JButton button = new JButton(action); //button.putClientProperty("Quaqua.Button.style", "toolbar"); setAction(button, action); addButton(button); return button; } private GoGuiToggleButton addToggleButton(AbstractAction action) { GoGuiToggleButton button = new GoGuiToggleButton(action); setAction(button, action); addButton(button); return button; } private void setAction(AbstractButton button, Action action) { button.setAction(action); button.setText(null); } } /** Toggle button with additional "selected" action property. */ class GoGuiToggleButton extends JToggleButton { public GoGuiToggleButton(AbstractAction action) { super(action); action.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { if (e.getPropertyName().equals("selected")) setSelected(((Boolean)e.getNewValue()).booleanValue()); } }); } }