Package org.freeplane.core.ui.components

Source Code of org.freeplane.core.ui.components.FreeplaneToolBar

/*
*  Freeplane - mind map editor
*  Copyright (C) 2008 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev
*
*  this file is modified by Dimitry Polivaev in 2008.
*
*  This program 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 of the License, or
*  (at your option) any later version.
*
*  This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.freeplane.core.ui.components;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.event.HierarchyBoundsListener;
import java.awt.event.HierarchyEvent;

import javax.swing.AbstractButton;
import javax.swing.Action;
import javax.swing.JToolBar;

/**
* @author Stefan Zechmeister
*/
public class FreeplaneToolBar extends JToolBar {
  protected static Insets nullInsets = new Insets(0, 0, 0, 0);
  /**
   *
   */
  private static final long serialVersionUID = 1L;

  /**
   */
  public FreeplaneToolBar(final String name, final int orientation) {
    super(name, orientation);
    this.setMargin(FreeplaneToolBar.nullInsets);
    setFloatable(false);
    setRollover(true);
    if (orientation == HORIZONTAL) {
      super.setLayout(ToolbarLayout.getInstance());
      addHierarchyBoundsListener(new HierarchyBoundsListener() {
        public void ancestorResized(final HierarchyEvent e) {
          revalidate();
          repaint();
        }

        public void ancestorMoved(final HierarchyEvent e) {
        }
      });
    }
  }
 
 

  @Override
    public void setLayout(LayoutManager mgr) {
    if (getOrientation() != HORIZONTAL)
      super.setLayout(mgr);
    }



  @Override
  public Component add(final Component comp) {
    super.add(comp);
    configureComponent(comp);
    return comp;
  }

  @Override
  public Component add(final Component comp, final int index) {
    super.add(comp, index);
    configureComponent(comp);
    return comp;
  }

  @Override
  public void add(final Component comp, final Object constraints) {
    super.add(comp, constraints);
    configureComponent(comp);
  }

  @Override
  public void add(final Component comp, final Object constraints, final int index) {
    super.add(comp, constraints, index);
    configureComponent(comp);
  }

  @Override
  public Component add(final String name, final Component comp) {
    super.add(name, comp);
    configureComponent(comp);
    return comp;
  }

  protected void configureComponent(final Component comp) {
    if (!(comp instanceof AbstractButton)) {
      return;
    }
    final AbstractButton abstractButton = (AbstractButton) comp;
    final String actionName = (String) abstractButton.getAction().getValue(Action.NAME);
    abstractButton.setName(actionName);
    if (null != abstractButton.getIcon()) {
      final String text = abstractButton.getText();
      final String toolTipText = abstractButton.getToolTipText();
      if (text != null) {
        if (toolTipText == null) {
          abstractButton.setToolTipText(text);
        }
        abstractButton.setText(null);
      }
    }
    if (System.getProperty("os.name").equals("Mac OS X")) {
      abstractButton.putClientProperty("JButton.buttonType", "segmented");
      abstractButton.putClientProperty("JButton.segmentPosition", "middle");
      final Dimension buttonSize = new Dimension(22, 22);
      abstractButton.setPreferredSize(buttonSize);
      abstractButton.setFocusPainted(false);
    }
    abstractButton.setFocusable(false);
    abstractButton.setMargin(FreeplaneToolBar.nullInsets);
  }
}
TOP

Related Classes of org.freeplane.core.ui.components.FreeplaneToolBar

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.