|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.form.layoutsupport.delegates; import java.awt.*; import javax.swing.*; import org.netbeans.modules.form.layoutsupport.*; /** * Dedicated layout support class for JToolBar. * * @author Tomas Pavek */ public class JToolBarSupport extends AbstractLayoutSupport { /** Gets the supported layout manager class - JToolBar. * @return the class supported by this delegate */ public Class getSupportedClass() { return JToolBar.class; } /** This method calculates position (index) for a component dragged * over a container (or just for mouse cursor being moved over container, * without any component). * @param container instance of a real container over/in which the * component is dragged * @param containerDelegate effective container delegate of the container * @param component the real component being dragged; not needed here * @param index position (index) of the component in its current container; * not needed here * @param posInCont position of mouse in the container delegate * @param posInComp position of mouse in the dragged component; * not needed here * @return index corresponding to the position of the component in the * container */ public int getNewIndex(Container container, Container containerDelegate, Component component, int index, Point posInCont, Point posInComp) { if (!(container instanceof JToolBar)) return -1; int orientation = ((JToolBar)container).getOrientation(); Component[] components = container.getComponents(); for (int i = 0; i < components.length; i++) { Rectangle b = components[i].getBounds(); if (orientation == SwingConstants.HORIZONTAL) { if (posInCont.x < b.x + b.width / 2) return i; } else { if (posInCont.y < b.y + b.height / 2) return i; } } return components.length; } /** This method paints a dragging feedback for a component dragged over * a container (or just for mouse cursor being moved over container, * without any component). * @param container instance of a real container over/in which the * component is dragged * @param containerDelegate effective container delegate of the container * (for layout managers we always use container delegate instead of * the container) * @param component the real component being dragged, not needed here * @param newConstraints component layout constraints to be presented; * not used for JToolBar * @param newIndex component's index position to be presented * @param g Graphics object for painting (with color and line style set) * @return whether any feedback was painted (true in this case) */ public boolean paintDragFeedback(Container container, Container containerDelegate, Component component, LayoutConstraints newConstraints, int newIndex, Graphics g) { if (!(container instanceof JToolBar)) return false; int orientation = ((JToolBar)container).getOrientation(); Component[] components = container.getComponents(); Rectangle rect; if (components.length == 0) { Insets ins = container.getInsets(); rect = orientation == SwingConstants.HORIZONTAL ? new Rectangle(ins.left, ins.top + (container.getHeight() - ins.top - ins.bottom - 20) / 2, 30, 20) : new Rectangle(ins.left + (container.getWidth() - ins.left - ins.right - 30) / 2, ins.top, 30, 20); } else if (newIndex < 0 || newIndex >= components.length) { Rectangle b = components[components.length - 1].getBounds(); rect = orientation == SwingConstants.HORIZONTAL ? new Rectangle(b.x + b.width - 10, b.y, 20, b.height) : new Rectangle(b.x, b.y + b.height - 10, b.width, 20); } else { Rectangle b = components[newIndex].getBounds(); rect = orientation == SwingConstants.HORIZONTAL ? new Rectangle(b.x - 10, b.y, 20, b.height) : new Rectangle(b.x, b.y - 10, b.width, 20); } g.drawRect(rect.x, rect.y, rect.width, rect.height); return true; } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.