mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			799 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			799 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Java
		
	
	
	
/* JToolBar.java --
 | 
						|
   Copyright (C) 2002, 2004, 2005, 2006,  Free Software Foundation, Inc.
 | 
						|
 | 
						|
This file is part of GNU Classpath.
 | 
						|
 | 
						|
GNU Classpath is free software; you can redistribute it and/or modify
 | 
						|
it under the terms of the GNU General Public License as published by
 | 
						|
the Free Software Foundation; either version 2, or (at your option)
 | 
						|
any later version.
 | 
						|
 | 
						|
GNU Classpath is distributed in the hope that it will be useful, but
 | 
						|
WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
General Public License for more details.
 | 
						|
 | 
						|
You should have received a copy of the GNU General Public License
 | 
						|
along with GNU Classpath; see the file COPYING.  If not, write to the
 | 
						|
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
						|
02110-1301 USA.
 | 
						|
 | 
						|
Linking this library statically or dynamically with other modules is
 | 
						|
making a combined work based on this library.  Thus, the terms and
 | 
						|
conditions of the GNU General Public License cover the whole
 | 
						|
combination.
 | 
						|
 | 
						|
As a special exception, the copyright holders of this library give you
 | 
						|
permission to link this library with independent modules to produce an
 | 
						|
executable, regardless of the license terms of these independent
 | 
						|
modules, and to copy and distribute the resulting executable under
 | 
						|
terms of your choice, provided that you also meet, for each linked
 | 
						|
independent module, the terms and conditions of the license of that
 | 
						|
module.  An independent module is a module which is not derived from
 | 
						|
or based on this library.  If you modify this library, you may extend
 | 
						|
this exception to your version of the library, but you are not
 | 
						|
obligated to do so.  If you do not wish to do so, delete this
 | 
						|
exception statement from your version. */
 | 
						|
 | 
						|
 | 
						|
package javax.swing;
 | 
						|
 | 
						|
import gnu.java.lang.CPStringBuilder;
 | 
						|
 | 
						|
import java.awt.Component;
 | 
						|
import java.awt.Container;
 | 
						|
import java.awt.Dimension;
 | 
						|
import java.awt.Graphics;
 | 
						|
import java.awt.Insets;
 | 
						|
import java.awt.LayoutManager;
 | 
						|
import java.beans.PropertyChangeListener;
 | 
						|
 | 
						|
import javax.accessibility.Accessible;
 | 
						|
import javax.accessibility.AccessibleContext;
 | 
						|
import javax.accessibility.AccessibleRole;
 | 
						|
import javax.accessibility.AccessibleStateSet;
 | 
						|
import javax.swing.plaf.ToolBarUI;
 | 
						|
 | 
						|
/**
 | 
						|
 * JToolBar is a component that provides a toolbar to Swing programs. Users
 | 
						|
 * can add buttons (or actions that will be represented by JButtons) as well
 | 
						|
 * as other components to the JToolBar. JToolBars can be dragged in and out
 | 
						|
 * of their parent components. If the JToolBar is dragged out of the parent,
 | 
						|
 * then it will be displayed in its own RootPaneContainer. For dragging to
 | 
						|
 * work properly, JToolBars need to be placed in a Container that has a
 | 
						|
 * BorderLayout. That parent Container cannot have components in the NORTH,
 | 
						|
 * EAST, SOUTH,  or WEST components (that is not the JToolBar).
 | 
						|
 */
 | 
						|
public class JToolBar extends JComponent implements SwingConstants, Accessible
 | 
						|
{
 | 
						|
  /**
 | 
						|
   * Provides the accessibility features for the <code>JToolBar</code>
 | 
						|
   * component.
 | 
						|
   */
 | 
						|
  protected class AccessibleJToolBar extends AccessibleJComponent
 | 
						|
  {
 | 
						|
    private static final long serialVersionUID = -5516888265903814215L;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Creates a new <code>AccessibleJToolBar</code> instance.
 | 
						|
     */
 | 
						|
    protected AccessibleJToolBar()
 | 
						|
    {
 | 
						|
      // Nothing to do here.
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns a set containing the current state of the {@link JToolBar}
 | 
						|
     * component.  The current implementation simply calls the superclass.
 | 
						|
     *
 | 
						|
     * @return The accessible state set.
 | 
						|
     */
 | 
						|
    public AccessibleStateSet getAccessibleStateSet()
 | 
						|
    {
 | 
						|
      // running tests against the reference implementation, I was unable
 | 
						|
      // to find any state information that is set specifically by the
 | 
						|
      // tool bar...
 | 
						|
      return super.getAccessibleStateSet();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns the accessible role for the <code>JToolBar</code> component.
 | 
						|
     *
 | 
						|
     * @return {@link AccessibleRole#TOOL_BAR}.
 | 
						|
     */
 | 
						|
    public AccessibleRole getAccessibleRole()
 | 
						|
    {
 | 
						|
      return AccessibleRole.TOOL_BAR;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * This is the private JToolBar layout manager.
 | 
						|
   */
 | 
						|
  private class DefaultToolBarLayout implements LayoutManager
 | 
						|
  {
 | 
						|
    /**
 | 
						|
     * This method is called when a new component is added to the container.
 | 
						|
     *
 | 
						|
     * @param name The name of the component added.
 | 
						|
     * @param comp The component that was added.
 | 
						|
     */
 | 
						|
    public void addLayoutComponent(String name, Component comp)
 | 
						|
    {
 | 
						|
      // Do nothing.
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method is called to lay out the given container  to position and
 | 
						|
     * size the child components.
 | 
						|
     *
 | 
						|
     * @param c The container to lay out.
 | 
						|
     *
 | 
						|
     * @throws Error DOCUMENT ME!
 | 
						|
     */
 | 
						|
    public void layoutContainer(Container c)
 | 
						|
    {
 | 
						|
      if (! (c instanceof JToolBar))
 | 
						|
        throw new Error("DefaultToolBarLayout can only be used on JToolBars.");
 | 
						|
      Insets insets = getInsets();
 | 
						|
      Insets margin = getMargin();
 | 
						|
      int middle;
 | 
						|
      if (margin != null)
 | 
						|
        {
 | 
						|
          insets.left += margin.left;
 | 
						|
          insets.top += margin.top;
 | 
						|
          insets.bottom += margin.bottom;
 | 
						|
          insets.right += margin.right;
 | 
						|
        }
 | 
						|
      Component[] components = c.getComponents();
 | 
						|
      Dimension tdims = c.getSize();
 | 
						|
      int start = 0;
 | 
						|
      Dimension pref;
 | 
						|
 | 
						|
      if (getOrientation() == SwingUtilities.HORIZONTAL)
 | 
						|
        {
 | 
						|
          start += insets.left;
 | 
						|
          for (int i = 0; i < components.length; i++)
 | 
						|
            {
 | 
						|
              if (components[i] != null && components[i].isVisible())
 | 
						|
                {
 | 
						|
                  pref = components[i].getPreferredSize();
 | 
						|
                  if (pref != null)
 | 
						|
                    {
 | 
						|
                      middle = (tdims.height - pref.height) / 2;
 | 
						|
                      components[i].setBounds(start, middle, pref.width,
 | 
						|
                                              pref.height);
 | 
						|
                      start += pref.width;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
      else
 | 
						|
        {
 | 
						|
          start += insets.top;
 | 
						|
          for (int i = 0; i < components.length; i++)
 | 
						|
            {
 | 
						|
              if (components[i] != null && components[i].isVisible())
 | 
						|
                {
 | 
						|
                  pref = components[i].getPreferredSize();
 | 
						|
                  if (pref != null)
 | 
						|
                    {
 | 
						|
                      middle = (tdims.width - pref.width) / 2;
 | 
						|
                      components[i].setBounds(middle, start, pref.width,
 | 
						|
                                              pref.height);
 | 
						|
                      start += pref.height;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method returns the minimum size of the given container given the
 | 
						|
     * child components.
 | 
						|
     *
 | 
						|
     * @param parent The container to measure.
 | 
						|
     *
 | 
						|
     * @return The minimum size of the given container.
 | 
						|
     */
 | 
						|
    public Dimension minimumLayoutSize(Container parent)
 | 
						|
    {
 | 
						|
      return preferredLayoutSize(parent);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method returns the preferred size of the given container given the
 | 
						|
     * child components.
 | 
						|
     *
 | 
						|
     * @param parent The container to measure.
 | 
						|
     *
 | 
						|
     * @return The preferred size of the given container.
 | 
						|
     */
 | 
						|
    public Dimension preferredLayoutSize(Container parent)
 | 
						|
    {
 | 
						|
      int orientation = getOrientation();
 | 
						|
      Component[] components = getComponents();
 | 
						|
 | 
						|
      int limit = 0;
 | 
						|
      int total = 0;
 | 
						|
      Dimension dims;
 | 
						|
 | 
						|
      int w = 0;
 | 
						|
      int h = 0;
 | 
						|
 | 
						|
      if (orientation == SwingConstants.HORIZONTAL)
 | 
						|
        {
 | 
						|
          for (int i = 0; i < components.length; i++)
 | 
						|
            {
 | 
						|
              dims = components[i].getPreferredSize();
 | 
						|
              if (dims != null)
 | 
						|
                {
 | 
						|
                  if (dims.height > limit)
 | 
						|
                    limit = dims.height;
 | 
						|
                  total += dims.width;
 | 
						|
                }
 | 
						|
            }
 | 
						|
          w = total;
 | 
						|
          h = limit;
 | 
						|
        }
 | 
						|
      else
 | 
						|
        {
 | 
						|
          for (int i = 0; i < components.length; i++)
 | 
						|
            {
 | 
						|
              dims = components[i].getPreferredSize();
 | 
						|
              if (dims != null)
 | 
						|
                {
 | 
						|
                  if (dims.width > limit)
 | 
						|
                    limit = dims.width;
 | 
						|
                  total += dims.height;
 | 
						|
                }
 | 
						|
            }
 | 
						|
          w = limit;
 | 
						|
          h = total;
 | 
						|
        }
 | 
						|
 | 
						|
      Insets insets = getInsets();
 | 
						|
      w += insets.left + insets.right;
 | 
						|
      h += insets.top + insets.bottom;
 | 
						|
 | 
						|
      Insets margin = getMargin();
 | 
						|
      if (margin != null)
 | 
						|
        {
 | 
						|
          w += margin.left + margin.right;
 | 
						|
          h += margin.top + margin.bottom;
 | 
						|
        }
 | 
						|
 | 
						|
      return new Dimension(w, h);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method is called when the given component  is removed from the
 | 
						|
     * container.
 | 
						|
     *
 | 
						|
     * @param comp The component removed.
 | 
						|
     */
 | 
						|
    public void removeLayoutComponent(Component comp)
 | 
						|
    {
 | 
						|
      // Do nothing.
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * This is an extension of JSeparator used in toolbars. Unlike JSeparator,
 | 
						|
   * nothing is painted for this Separator, it is only blank space that
 | 
						|
   * separates components.
 | 
						|
   */
 | 
						|
  public static class Separator extends JSeparator
 | 
						|
  {
 | 
						|
    /** DOCUMENT ME! */
 | 
						|
    private static final long serialVersionUID = -1656745644823105219L;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Creates a new Separator object.
 | 
						|
     */
 | 
						|
    public Separator()
 | 
						|
    {
 | 
						|
      super();
 | 
						|
    } // Separator()
 | 
						|
 | 
						|
    /**
 | 
						|
     * Creates a new Separator object with the given size.
 | 
						|
     *
 | 
						|
     * @param size The size of the separator.
 | 
						|
     */
 | 
						|
    public Separator(Dimension size)
 | 
						|
    {
 | 
						|
      setPreferredSize(size);
 | 
						|
    } // Separator()
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method returns the String ID of the UI class of  Separator.
 | 
						|
     *
 | 
						|
     * @return The UI class' String ID.
 | 
						|
     */
 | 
						|
    public String getUIClassID()
 | 
						|
    {
 | 
						|
      return "ToolBarSeparatorUI";
 | 
						|
    } // getUIClassID()
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method returns the preferred size of the Separator.
 | 
						|
     *
 | 
						|
     * @return The preferred size of the Separator.
 | 
						|
     */
 | 
						|
    public Dimension getPreferredSize()
 | 
						|
    {
 | 
						|
      return super.getPreferredSize();
 | 
						|
    } // getPreferredSize()
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method returns the maximum size of the Separator.
 | 
						|
     *
 | 
						|
     * @return The maximum size of the Separator.
 | 
						|
     */
 | 
						|
    public Dimension getMaximumSize()
 | 
						|
    {
 | 
						|
      return super.getPreferredSize();
 | 
						|
    } // getMaximumSize()
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method returns the minimum size of the Separator.
 | 
						|
     *
 | 
						|
     * @return The minimum size of the Separator.
 | 
						|
     */
 | 
						|
    public Dimension getMinimumSize()
 | 
						|
    {
 | 
						|
      return super.getPreferredSize();
 | 
						|
    } // getMinimumSize()
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method returns the size of the Separator.
 | 
						|
     *
 | 
						|
     * @return The size of the Separator.
 | 
						|
     */
 | 
						|
    public Dimension getSeparatorSize()
 | 
						|
    {
 | 
						|
      return super.getPreferredSize();
 | 
						|
    } // getSeparatorSize()
 | 
						|
 | 
						|
    /**
 | 
						|
     * This method sets the size of the Separator.
 | 
						|
     *
 | 
						|
     * @param size The new size of the Separator.
 | 
						|
     */
 | 
						|
    public void setSeparatorSize(Dimension size)
 | 
						|
    {
 | 
						|
      setPreferredSize(size);
 | 
						|
    } // setSeparatorSize()
 | 
						|
  } // Separator
 | 
						|
 | 
						|
  /** DOCUMENT ME! */
 | 
						|
  private static final long serialVersionUID = -1269915519555129643L;
 | 
						|
 | 
						|
  /** Whether the JToolBar paints its border. */
 | 
						|
  private transient boolean paintBorder = true;
 | 
						|
 | 
						|
  /** The extra insets around the JToolBar. */
 | 
						|
  private transient Insets margin;
 | 
						|
 | 
						|
  /** Whether the JToolBar can float (and be dragged around). */
 | 
						|
  private transient boolean floatable = true;
 | 
						|
 | 
						|
  /** Whether the buttons will have rollover borders. */
 | 
						|
  private transient boolean rollover;
 | 
						|
 | 
						|
  /** The orientation of the JToolBar. */
 | 
						|
  private int orientation = HORIZONTAL;
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method creates a new JToolBar object with horizontal orientation
 | 
						|
   * and no name.
 | 
						|
   */
 | 
						|
  public JToolBar()
 | 
						|
  {
 | 
						|
    this(null, HORIZONTAL);
 | 
						|
  } // JToolBar()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method creates a new JToolBar with the given orientation and  no
 | 
						|
   * name.
 | 
						|
   *
 | 
						|
   * @param orientation JToolBar orientation (HORIZONTAL or VERTICAL)
 | 
						|
   */
 | 
						|
  public JToolBar(int orientation)
 | 
						|
  {
 | 
						|
    this(null, orientation);
 | 
						|
  } // JToolBar()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method creates a new JToolBar object with the given name and
 | 
						|
   * horizontal orientation.
 | 
						|
   *
 | 
						|
   * @param name Name assigned to undocked tool bar.
 | 
						|
   */
 | 
						|
  public JToolBar(String name)
 | 
						|
  {
 | 
						|
    this(name, HORIZONTAL);
 | 
						|
  } // JToolBar()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method creates a new JToolBar object with the given name and
 | 
						|
   * orientation.
 | 
						|
   *
 | 
						|
   * @param name Name assigned to undocked tool bar.
 | 
						|
   * @param orientation JToolBar orientation (HORIZONTAL or VERTICAL)
 | 
						|
   */
 | 
						|
  public JToolBar(String name, int orientation)
 | 
						|
  {
 | 
						|
    setName(name);
 | 
						|
    setOrientation(orientation);
 | 
						|
    setLayout(new DefaultToolBarLayout());
 | 
						|
    revalidate();
 | 
						|
    setOpaque(true);
 | 
						|
    updateUI();
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method adds a new JButton that performs the given Action to the
 | 
						|
   * JToolBar.
 | 
						|
   *
 | 
						|
   * @param action The Action to add to the JToolBar.
 | 
						|
   *
 | 
						|
   * @return The JButton that wraps the Action.
 | 
						|
   */
 | 
						|
  public JButton add(Action action)
 | 
						|
  {
 | 
						|
    JButton b = createActionComponent(action);
 | 
						|
    add(b);
 | 
						|
    return b;
 | 
						|
  } // add()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method paints the border if the borderPainted property is true.
 | 
						|
   *
 | 
						|
   * @param graphics The graphics object to paint with.
 | 
						|
   */
 | 
						|
  protected void paintBorder(Graphics graphics)
 | 
						|
  {
 | 
						|
    if (paintBorder && isFloatable())
 | 
						|
      super.paintBorder(graphics);
 | 
						|
  } // paintBorder()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method returns the UI class used to paint this JToolBar.
 | 
						|
   *
 | 
						|
   * @return The UI class for this JToolBar.
 | 
						|
   */
 | 
						|
  public ToolBarUI getUI()
 | 
						|
  {
 | 
						|
    return (ToolBarUI) ui;
 | 
						|
  } // getUI()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method sets the UI used with the JToolBar.
 | 
						|
   *
 | 
						|
   * @param ui The UI used with the JToolBar.
 | 
						|
   */
 | 
						|
  public void setUI(ToolBarUI ui)
 | 
						|
  {
 | 
						|
    super.setUI(ui);
 | 
						|
  } // setUI()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method resets the UI used to the Look and Feel defaults.
 | 
						|
   */
 | 
						|
  public void updateUI()
 | 
						|
  {
 | 
						|
    setUI((ToolBarUI) UIManager.getUI(this));
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method returns the String identifier for the UI class to the used
 | 
						|
   * with the JToolBar.
 | 
						|
   *
 | 
						|
   * @return The String identifier for the UI class.
 | 
						|
   */
 | 
						|
  public String getUIClassID()
 | 
						|
  {
 | 
						|
    return "ToolBarUI";
 | 
						|
  } // getUIClassID()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method sets the rollover property for the JToolBar. In rollover
 | 
						|
   * mode, JButtons inside the JToolBar will only display their borders when
 | 
						|
   * the mouse is moving over them.
 | 
						|
   *
 | 
						|
   * @param b The new rollover property.
 | 
						|
   */
 | 
						|
  public void setRollover(boolean b)
 | 
						|
  {
 | 
						|
    if (b != rollover)
 | 
						|
      {
 | 
						|
        rollover = b;
 | 
						|
        firePropertyChange("rollover", ! rollover, rollover);
 | 
						|
        revalidate();
 | 
						|
        repaint();
 | 
						|
      }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method returns the rollover property.
 | 
						|
   *
 | 
						|
   * @return The rollover property.
 | 
						|
   */
 | 
						|
  public boolean isRollover()
 | 
						|
  {
 | 
						|
    return rollover;
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method returns the index of the given component.
 | 
						|
   *
 | 
						|
   * @param component The component to find.
 | 
						|
   *
 | 
						|
   * @return The index of the given component.
 | 
						|
   */
 | 
						|
  public int getComponentIndex(Component component)
 | 
						|
  {
 | 
						|
    Component[] components = getComponents();
 | 
						|
    if (components == null)
 | 
						|
      return -1;
 | 
						|
 | 
						|
    for (int i = 0; i < components.length; i++)
 | 
						|
      if (components[i] == component)
 | 
						|
        return i;
 | 
						|
 | 
						|
    return -1;
 | 
						|
  } // getComponentIndex()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method returns the component at the given index.
 | 
						|
   *
 | 
						|
   * @param index The index of the component.
 | 
						|
   *
 | 
						|
   * @return The component at the given index.
 | 
						|
   */
 | 
						|
  public Component getComponentAtIndex(int index)
 | 
						|
  {
 | 
						|
    return getComponent(index);
 | 
						|
  } // getComponentAtIndex()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method returns the margin property.
 | 
						|
   *
 | 
						|
   * @return The margin property.
 | 
						|
   */
 | 
						|
  public Insets getMargin()
 | 
						|
  {
 | 
						|
    return margin;
 | 
						|
  } // getMargin()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method sets the margin property. The margin property determines the
 | 
						|
   * extra space between the children components of the JToolBar and the
 | 
						|
   * border.
 | 
						|
   *
 | 
						|
   * @param margin The margin property.
 | 
						|
   */
 | 
						|
  public void setMargin(Insets margin)
 | 
						|
  {
 | 
						|
    if ((this.margin != null && margin == null)
 | 
						|
        || (this.margin == null && margin != null)
 | 
						|
        || (margin != null && this.margin != null
 | 
						|
        && (margin.left != this.margin.left
 | 
						|
        || margin.right != this.margin.right || margin.top != this.margin.top
 | 
						|
        || margin.bottom != this.margin.bottom)))
 | 
						|
      {
 | 
						|
        Insets oldMargin = this.margin;
 | 
						|
        this.margin = margin;
 | 
						|
        firePropertyChange("margin", oldMargin, this.margin);
 | 
						|
        revalidate();
 | 
						|
        repaint();
 | 
						|
      }
 | 
						|
  } // setMargin()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method returns the borderPainted property.
 | 
						|
   *
 | 
						|
   * @return The borderPainted property.
 | 
						|
   */
 | 
						|
  public boolean isBorderPainted()
 | 
						|
  {
 | 
						|
    return paintBorder;
 | 
						|
  } // isBorderPainted()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method sets the borderPainted property. If set to false, the border
 | 
						|
   * will not be painted.
 | 
						|
   *
 | 
						|
   * @param painted Whether the border will be painted.
 | 
						|
   */
 | 
						|
  public void setBorderPainted(boolean painted)
 | 
						|
  {
 | 
						|
    if (painted != paintBorder)
 | 
						|
      {
 | 
						|
        paintBorder = painted;
 | 
						|
        firePropertyChange("borderPainted", ! paintBorder,
 | 
						|
                           paintBorder);
 | 
						|
        repaint();
 | 
						|
      }
 | 
						|
  } // setBorderPainted()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method returns the floatable property.
 | 
						|
   *
 | 
						|
   * @return The floatable property.
 | 
						|
   */
 | 
						|
  public boolean isFloatable()
 | 
						|
  {
 | 
						|
    return floatable;
 | 
						|
  } // isFloatable()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method sets the floatable property. If set to false, the JToolBar
 | 
						|
   * cannot be dragged.
 | 
						|
   *
 | 
						|
   * @param floatable Whether the JToolBar can be dragged.
 | 
						|
   */
 | 
						|
  public void setFloatable(boolean floatable)
 | 
						|
  {
 | 
						|
    if (floatable != this.floatable)
 | 
						|
      {
 | 
						|
        this.floatable = floatable;
 | 
						|
        firePropertyChange("floatable", ! floatable, floatable);
 | 
						|
      }
 | 
						|
  } // setFloatable()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method returns the orientation of the JToolBar.
 | 
						|
   *
 | 
						|
   * @return The orientation of the JToolBar.
 | 
						|
   */
 | 
						|
  public int getOrientation()
 | 
						|
  {
 | 
						|
    return orientation;
 | 
						|
  } // getOrientation()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method sets the layout manager to be used with the JToolBar.
 | 
						|
   *
 | 
						|
   * @param mgr The Layout Manager used with the JToolBar.
 | 
						|
   */
 | 
						|
  public void setLayout(LayoutManager mgr)
 | 
						|
  {
 | 
						|
    super.setLayout(mgr);
 | 
						|
    revalidate();
 | 
						|
    repaint();
 | 
						|
  } // setLayout()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method sets the orientation property for JToolBar.
 | 
						|
   *
 | 
						|
   * @param orientation The new orientation for JToolBar.
 | 
						|
   *
 | 
						|
   * @throws IllegalArgumentException If the orientation is not HORIZONTAL or
 | 
						|
   *         VERTICAL.
 | 
						|
   */
 | 
						|
  public void setOrientation(int orientation)
 | 
						|
  {
 | 
						|
    if (orientation != HORIZONTAL && orientation != VERTICAL)
 | 
						|
      throw new IllegalArgumentException(orientation
 | 
						|
                                         + " is not a legal orientation");
 | 
						|
    if (orientation != this.orientation)
 | 
						|
      {
 | 
						|
        int oldOrientation = this.orientation;
 | 
						|
        this.orientation = orientation;
 | 
						|
        firePropertyChange("orientation", oldOrientation, this.orientation);
 | 
						|
        revalidate();
 | 
						|
        repaint();
 | 
						|
      }
 | 
						|
  } // setOrientation()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method adds a Separator of default size to the JToolBar.
 | 
						|
   */
 | 
						|
  public void addSeparator()
 | 
						|
  {
 | 
						|
    add(new Separator());
 | 
						|
  } // addSeparator()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method adds a Separator with the given size to the JToolBar.
 | 
						|
   *
 | 
						|
   * @param size The size of the Separator.
 | 
						|
   */
 | 
						|
  public void addSeparator(Dimension size)
 | 
						|
  {
 | 
						|
    add(new Separator(size));
 | 
						|
  } // addSeparator()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method is used to create JButtons which can be added to the JToolBar
 | 
						|
   * for the given action.
 | 
						|
   *
 | 
						|
   * @param action The action to create a JButton for.
 | 
						|
   *
 | 
						|
   * @return The JButton created from the action.
 | 
						|
   */
 | 
						|
  protected JButton createActionComponent(Action action)
 | 
						|
  {
 | 
						|
    return new JButton(action);
 | 
						|
  } // createActionComponent()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method creates a pre-configured PropertyChangeListener which updates
 | 
						|
   * the control as changes are made to the Action. However, this is no
 | 
						|
   * longer the recommended way of adding Actions to Containers. As such,
 | 
						|
   * this method returns null.
 | 
						|
   *
 | 
						|
   * @param button The JButton to configure a PropertyChangeListener for.
 | 
						|
   *
 | 
						|
   * @return null.
 | 
						|
   */
 | 
						|
  protected PropertyChangeListener createActionChangeListener(JButton button)
 | 
						|
  {
 | 
						|
    // XXX: As specified, this returns null. But seems kind of strange, usually deprecated methods don't just return null, verify!
 | 
						|
    return null;
 | 
						|
  } // createActionChangeListener()
 | 
						|
 | 
						|
  /**
 | 
						|
   * This method overrides Container's addImpl method. If a JButton is added,
 | 
						|
   * it is disabled.
 | 
						|
   *
 | 
						|
   * @param component The Component to add.
 | 
						|
   * @param constraints The Constraints placed on the component.
 | 
						|
   * @param index The index to place the Component at.
 | 
						|
   */
 | 
						|
  protected void addImpl(Component component, Object constraints, int index)
 | 
						|
  {
 | 
						|
    // XXX: Sun says disable button but test cases show otherwise.
 | 
						|
    super.addImpl(component, constraints, index);
 | 
						|
 | 
						|
    // if we added a Swing Button then adjust this a little
 | 
						|
    if (component instanceof AbstractButton)
 | 
						|
      {
 | 
						|
        AbstractButton b = (AbstractButton) component;
 | 
						|
        b.setRolloverEnabled(rollover);
 | 
						|
      }
 | 
						|
 | 
						|
  } // addImpl()
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns a string describing the attributes for the <code>JToolBar</code>
 | 
						|
   * component, for use in debugging.  The return value is guaranteed to be
 | 
						|
   * non-<code>null</code>, but the format of the string may vary between
 | 
						|
   * implementations.
 | 
						|
   *
 | 
						|
   * @return A string describing the attributes of the <code>JToolBar</code>.
 | 
						|
   */
 | 
						|
  protected String paramString()
 | 
						|
  {
 | 
						|
    CPStringBuilder sb = new CPStringBuilder(super.paramString());
 | 
						|
    sb.append(",floatable=").append(floatable);
 | 
						|
    sb.append(",margin=");
 | 
						|
    if (margin != null)
 | 
						|
      sb.append(margin);
 | 
						|
    sb.append(",orientation=");
 | 
						|
    if (orientation == HORIZONTAL)
 | 
						|
      sb.append("HORIZONTAL");
 | 
						|
    else
 | 
						|
      sb.append(VERTICAL);
 | 
						|
    sb.append(",paintBorder=").append(paintBorder);
 | 
						|
    return sb.toString();
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns the object that provides accessibility features for this
 | 
						|
   * <code>JToolBar</code> component.
 | 
						|
   *
 | 
						|
   * @return The accessible context (an instance of {@link AccessibleJToolBar}).
 | 
						|
   */
 | 
						|
  public AccessibleContext getAccessibleContext()
 | 
						|
  {
 | 
						|
    if (accessibleContext == null)
 | 
						|
      accessibleContext = new AccessibleJToolBar();
 | 
						|
 | 
						|
    return accessibleContext;
 | 
						|
  }
 | 
						|
}
 |