package com.revolsys.swing.toolbar; import java.awt.Component; import java.util.List; import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JToggleButton; import javax.swing.JToolBar; import com.revolsys.swing.Icons; import com.revolsys.swing.action.AbstractAction; import com.revolsys.swing.action.RunnableAction; import com.revolsys.swing.action.enablecheck.EnableCheck; import com.revolsys.swing.component.ComponentGroup; import com.revolsys.util.Property; public class ToolBar extends JToolBar { private static final long serialVersionUID = 1L; private final ComponentGroup groups = new ComponentGroup(); public ToolBar() { this(HORIZONTAL); } public ToolBar(final int orientation) { super(orientation); setOpaque(true); setRollover(false); setFloatable(false); } public JButton addButton(final AbstractAction action) { final JButton button = action.newButton(); button.setBorderPainted(false); this.groups.addComponent(this, button); return button; } public JButton addButton(final String groupName, final AbstractAction action) { final JButton button = action.newButton(); button.setBorderPainted(false); this.groups.addComponent(this, groupName, button); return button; } public JButton addButton(final String groupName, final int index, final AbstractAction action) { final JButton button = action.newButton(); button.setBorderPainted(false); this.groups.addComponent(this, groupName, index, button); return button; } public JButton addButton(final String groupName, final int index, final String name, final String title, final Icon icon, final EnableCheck enableCheck, final Runnable runnable) { final RunnableAction action = new RunnableAction(name, title, icon, runnable); action.setEnableCheck(enableCheck); final JButton button = action.newButton(); button.setBorderPainted(false); this.groups.addComponent(this, groupName, index, button); return button; } public JButton addButton(final String groupName, final String title, final EnableCheck enableCheck, final Runnable runnable) { final RunnableAction action = new RunnableAction(title, null, null, enableCheck, runnable); return addButton(groupName, action); } public JButton addButton(final String groupName, final String title, final Runnable runnable) { final RunnableAction action = new RunnableAction(title, runnable); return addButton(groupName, action); } public JButton addButton(final String groupName, String title, final String iconName, final EnableCheck enableCheck, final Runnable runnable) { String name = null; Icon icon = null; if (Property.hasValue(iconName)) { icon = Icons.getIcon(iconName); } else { name = title; title = null; } final RunnableAction action = new RunnableAction(name, title, icon, enableCheck, runnable); return addButton(groupName, action); } public JButton addButton(final String groupName, final String name, final String title, final Icon icon, final Runnable runnable) { final RunnableAction action = new RunnableAction(name, title, icon, runnable); return addButton(groupName, action); } public JButton addButton(final String groupName, final String title, final String iconName, final Runnable runnable) { return addButton(groupName, title, iconName, (EnableCheck)null, runnable); } public JButton addButtonTitleIcon(final String groupName, final int index, final String title, final String iconName, final Runnable runnable) { final Icon icon = Icons.getIcon(iconName); return addButton(groupName, index, null, title, icon, null, runnable); } public JButton addButtonTitleIcon(final String groupName, final String title, final String iconName, final EnableCheck enableCheck, final Runnable runnable) { final Icon icon = Icons.getIcon(iconName); return addButton(groupName, -1, null, title, icon, enableCheck, runnable); } public JButton addButtonTitleIcon(final String groupName, final String title, final String iconName, final Runnable runnable) { final Icon icon = Icons.getIcon(iconName); return addButton(groupName, -1, iconName, title, icon, null, runnable); } public void addComponent(final Component component) { this.groups.addComponent(this, component); } public void addComponent(final String groupName, final Component component) { this.groups.addComponent(this, groupName, component); } public void addGroup(final String groupName) { this.groups.addGroup(groupName); } public JToggleButton addToggleButton(final String groupName, final int index, final String name, final String title, final Icon icon, final EnableCheck enableCheck, final Runnable runnable) { final RunnableAction action = new RunnableAction(name, title, icon, runnable); action.setEnableCheck(enableCheck); final JToggleButton button = action.newToggleButton(); button.setBorderPainted(true); this.groups.addComponent(this, groupName, index, button); final ButtonGroup buttonGroup = getButtonGroup(groupName); buttonGroup.add(button); return button; } public JToggleButton addToggleButtonTitleIcon(final String groupName, final int index, final String title, final String iconName, final EnableCheck enableCheck, final Runnable runnable) { final Icon icon = Icons.getIcon(iconName); return addToggleButton(groupName, index, iconName, title, icon, enableCheck, runnable); } public JToggleButton addToggleButtonTitleIcon(final String groupName, final int index, final String title, final String iconName, final Runnable runnable) { final Icon icon = Icons.getIcon(iconName); return addToggleButton(groupName, index, iconName, title, icon, null, runnable); } public void clear() { super.removeAll(); this.groups.clear(); } public ButtonGroup getButtonGroup(final String groupName) { return this.groups.getButtonGroup(groupName); } public List<Component> getGroup(final String groupName) { return this.groups.getGroup(groupName); } public void removeComponent(final String groupName, final int index) { this.groups.removeComponent(this, groupName, index); } public void removeGroup(final String groupName) { this.groups.removeGroup(this, groupName); } public void setGroupEnabled(final String groupName, final boolean enabled) { this.groups.setGroupEnabled(groupName, enabled); } }