//----------------------------------------------------------------------------//
// //
// S e p a r a b l e T o o l B a r //
// //
//----------------------------------------------------------------------------//
// <editor-fold defaultstate="collapsed" desc="hdr"> //
// Copyright © Hervé Bitteur and others 2000-2013. All rights reserved. //
// This software is released under the GNU General Public License. //
// Goto http://kenai.com/projects/audiveris to report bugs or suggestions. //
//----------------------------------------------------------------------------//
// </editor-fold>
package omr.ui.util;
import omr.constant.Constant;
import omr.constant.ConstantSet;
import java.awt.Dimension;
import javax.swing.JSeparator;
import javax.swing.JToolBar;
/**
* Class {@code SeparableToolBar} is a tool bar which is able to collapse
* unneeded separators
*
* @author Brenton Partridge
*/
public class SeparableToolBar
extends JToolBar
{
//~ Static fields/initializers ---------------------------------------------
/** Specific application parameters */
private static final Constants constants = new Constants();
/**
* Dimension of the separator.
*/
private static final Dimension gap = new Dimension(
constants.separatorWidth.getValue(),
constants.separatorWidth.getValue());
//~ Constructors -----------------------------------------------------------
/**
* Creates a new SeparableToolBar object.
*/
public SeparableToolBar ()
{
super();
}
/**
* Creates a new SeparableToolBar object.
*
* @param orientation Specific toolbar orientation
*/
public SeparableToolBar (int orientation)
{
super(orientation);
}
/**
* Creates a new SeparableToolBar object.
*
* @param name DOCUMENT ME!
*/
public SeparableToolBar (String name)
{
super(name);
}
/**
* Creates a new SeparableToolBar object.
*
* @param name DOCUMENT ME!
* @param orientation DOCUMENT ME!
*/
public SeparableToolBar (String name,
int orientation)
{
super(name, orientation);
}
//~ Methods ----------------------------------------------------------------
//--------------//
// addSeparator //
//--------------//
/**
* The separator will be inserted only if it is really necessary
*/
@Override
public void addSeparator ()
{
int count = super.getComponentCount();
if ((count > 0) && !(getComponent(count - 1) instanceof JSeparator)) {
super.addSeparator(gap);
}
}
//----------------//
// purgeSeparator //
//----------------//
/**
* Remove any potential orphan separator at the end of the tool bar
*/
public static void purgeSeparator (JToolBar toolBar)
{
int count = toolBar.getComponentCount();
if (toolBar.getComponent(count - 1) instanceof JSeparator) {
toolBar.remove(count - 1);
}
}
//~ Inner Classes ----------------------------------------------------------
//-----------//
// Constants //
//-----------//
private static final class Constants
extends ConstantSet
{
//~ Instance fields ----------------------------------------------------
private final Constant.Integer separatorWidth = new Constant.Integer(
"Pixels",
15,
"Width of separator");
}
}