home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.plaf.basic;
-
- import com.sun.java.swing.BoxLayout;
- import com.sun.java.swing.JComponent;
- import com.sun.java.swing.JFrame;
- import com.sun.java.swing.JToolBar;
- import com.sun.java.swing.LookAndFeel;
- import com.sun.java.swing.UIManager;
- import com.sun.java.swing.plaf.ComponentUI;
- import com.sun.java.swing.plaf.ToolBarUI;
- import com.sun.java.swing.plaf.UIResource;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Frame;
- import java.awt.Point;
- import java.awt.Window;
- import java.awt.event.WindowListener;
- import java.beans.PropertyChangeEvent;
- import java.io.Serializable;
-
- public class BasicToolBarUI extends ToolBarUI implements Serializable {
- protected JToolBar toolBar;
- private boolean floating;
- private boolean floatable;
- private int floatingX;
- private int floatingY;
- private JFrame floatingFrame;
- private DragWindow dragWindow;
- private Container dockingSource;
- private DockingListener dockingListener;
- private int dockingSensitivity;
- protected Color dockingColor;
- protected Color floatingColor;
- protected Color dockingBorderColor;
- protected Color floatingBorderColor;
- public static final int HORIZONTAL = 0;
- public static final int VERTICAL = 1;
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicToolBarUI();
- }
-
- public void installUI(JComponent var1) {
- this.toolBar = (JToolBar)var1;
- this.installDefaults(var1);
- this.dockingSensitivity = 0;
- this.floating = this.floatable = false;
- this.floatingX = this.floatingY = 0;
- this.floatingFrame = this.createFloatingFrame(this.toolBar);
- this.setOrientation(0);
- this.installListeners(var1);
- var1.setOpaque(true);
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallDefaults(var1);
- this.setFloating(false, (Point)null);
- this.floatingFrame = null;
- this.dragWindow = null;
- this.dockingSource = null;
- this.uninstallListeners(var1);
- }
-
- protected void installDefaults(JComponent var1) {
- LookAndFeel.installBorder(var1, "ToolBar.border");
- LookAndFeel.installColorsAndFont(var1, "ToolBar.background", "ToolBar.foreground", "ToolBar.font");
- if (this.dockingColor == null || this.dockingColor instanceof UIResource) {
- this.dockingColor = UIManager.getColor("ToolBar.dockingColor");
- }
-
- if (this.floatingColor == null || this.floatingColor instanceof UIResource) {
- this.floatingColor = UIManager.getColor("ToolBar.floatingColor");
- }
-
- if (this.dockingBorderColor == null || this.dockingBorderColor instanceof UIResource) {
- this.dockingBorderColor = UIManager.getColor("ToolBar.dockingBorderColor");
- }
-
- if (this.floatingBorderColor == null || this.floatingBorderColor instanceof UIResource) {
- this.floatingBorderColor = UIManager.getColor("ToolBar.floatingBorderColor");
- }
-
- }
-
- protected void uninstallDefaults(JComponent var1) {
- LookAndFeel.uninstallBorder(var1);
- this.dockingColor = null;
- this.floatingColor = null;
- this.dockingBorderColor = null;
- this.floatingBorderColor = null;
- }
-
- protected void installListeners(JComponent var1) {
- this.dockingListener = this.createDockingListener((JToolBar)var1);
- this.setFloatable(true);
- }
-
- protected void uninstallListeners(JComponent var1) {
- this.setFloatable(false);
- if (this.dockingListener != null) {
- this.dockingListener = null;
- }
-
- }
-
- protected JFrame createFloatingFrame(JToolBar var1) {
- JFrame var2 = new JFrame(((Component)var1).getName());
- WindowListener var3 = this.createFrameListener();
- ((Window)var2).addWindowListener(var3);
- return var2;
- }
-
- protected DragWindow createDragWindow(JToolBar var1) {
- Object var2 = null;
- if (this.toolBar != null) {
- Container var3;
- for(var3 = this.toolBar.getParent(); var3 != null && !(var3 instanceof Frame); var3 = ((Component)var3).getParent()) {
- }
-
- if (var3 != null && var3 instanceof Frame) {
- var2 = (Frame)var3;
- }
- }
-
- if (var2 == null) {
- this.floatingFrame = this.createFloatingFrame(this.toolBar);
- var2 = this.floatingFrame;
- }
-
- DragWindow var4 = new DragWindow((Frame)var2);
- return var4;
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- return this.getPreferredSize(var1);
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- return null;
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- return this.getPreferredSize(var1);
- }
-
- public void setFloatingLocation(int var1, int var2) {
- this.floatingX = var1;
- this.floatingY = var2;
- }
-
- public boolean isFloating() {
- return this.floating;
- }
-
- public void setFloating(boolean var1, Point var2) {
- if (this.toolBar.isFloatable()) {
- if (this.dragWindow != null) {
- this.dragWindow.setVisible(false);
- }
-
- this.floating = var1;
- if (var1) {
- if (this.dockingSource == null) {
- this.dockingSource = this.toolBar.getParent();
- this.dockingSource.remove(this.toolBar);
- }
-
- if (this.floatingFrame == null) {
- this.floatingFrame = this.createFloatingFrame(this.toolBar);
- }
-
- this.floatingFrame.getContentPane().add(this.toolBar, "Center");
- this.setOrientation(0);
- this.floatingFrame.pack();
- this.floatingFrame.setLocation(this.floatingX, this.floatingY);
- this.floatingFrame.show();
- } else {
- this.floatingFrame.setVisible(false);
- this.floatingFrame.getContentPane().remove(this.toolBar);
- String var3 = this.getDockingConstraint(this.dockingSource, var2);
- int var4 = this.mapConstraintToOrientation(var3);
- this.setOrientation(var4);
- if (this.dockingSource == null) {
- this.dockingSource = this.toolBar.getParent();
- }
-
- this.dockingSource.add(var3, this.toolBar);
- }
-
- this.dockingSource.invalidate();
- Container var5 = this.dockingSource.getParent();
- if (var5 != null) {
- var5.validate();
- }
-
- this.dockingSource.repaint();
- }
-
- }
-
- private int mapConstraintToOrientation(String var1) {
- byte var2 = 0;
- if (var1 != null && (var1.equals("East") || var1.equals("West"))) {
- var2 = 1;
- }
-
- return var2;
- }
-
- public void setOrientation(int var1) {
- if (var1 == 1) {
- this.toolBar.setLayout(new BoxLayout(this.toolBar, 1));
- } else {
- this.toolBar.setLayout(new BoxLayout(this.toolBar, 0));
- }
-
- if (this.dragWindow != null) {
- this.dragWindow.setOrientation(var1);
- }
-
- }
-
- public Color getDockingColor() {
- return this.dockingColor;
- }
-
- public void setDockingColor(Color var1) {
- this.dockingColor = var1;
- }
-
- public Color getFloatingColor() {
- return this.floatingColor;
- }
-
- public void setFloatingColor(Color var1) {
- this.floatingColor = var1;
- }
-
- public void propertyChange(PropertyChangeEvent var1) {
- var1.getPropertyName();
- if (var1.getPropertyName().equals("floatable")) {
- Boolean var2 = (Boolean)var1.getNewValue();
- this.setFloatable(var2);
- }
-
- }
-
- public void setFloatable(boolean var1) {
- if (var1) {
- this.toolBar.addMouseMotionListener(this.dockingListener);
- this.toolBar.addMouseListener(this.dockingListener);
- } else {
- this.toolBar.removeMouseMotionListener(this.dockingListener);
- this.toolBar.removeMouseListener(this.dockingListener);
- }
- }
-
- public boolean canDock(Component var1, Point var2) {
- boolean var3 = false;
- if (var1.contains(var2)) {
- if (this.dockingSensitivity == 0) {
- this.dockingSensitivity = this.toolBar.getSize().height;
- }
-
- if (var2.y < this.dockingSensitivity) {
- var3 = true;
- }
-
- if (var2.y > var1.getSize().height - this.dockingSensitivity) {
- var3 = true;
- }
-
- if (var2.x < this.dockingSensitivity) {
- var3 = true;
- }
-
- if (var2.x > var1.getSize().width - this.dockingSensitivity) {
- var3 = true;
- }
- }
-
- return var3;
- }
-
- private String getDockingConstraint(Component var1, Point var2) {
- String var3 = "North";
- if (var2 != null && var1.contains(var2)) {
- if (this.dockingSensitivity == 0) {
- this.dockingSensitivity = this.toolBar.getSize().height;
- }
-
- if (var2.y > var1.getSize().height - this.dockingSensitivity) {
- var3 = "South";
- }
-
- if (var2.x < this.dockingSensitivity) {
- var3 = "West";
- }
-
- if (var2.x > var1.getSize().width - this.dockingSensitivity) {
- var3 = "East";
- }
-
- if (var2.y < this.dockingSensitivity) {
- var3 = "North";
- }
- }
-
- return var3;
- }
-
- protected void dragTo(Point var1, Point var2) {
- if (this.toolBar.isFloatable()) {
- if (this.dragWindow == null) {
- this.dragWindow = this.createDragWindow(this.toolBar);
- }
-
- Point var3 = this.dragWindow.getOffset();
- if (var3 == null) {
- Dimension var4 = this.toolBar.getPreferredSize();
- var3 = new Point(var4.width / 2, var4.height / 2);
- this.dragWindow.setOffset(var3);
- }
-
- Point var10 = new Point(var2.x + var1.x, var2.y + var1.y);
- Point var5 = new Point(var10.x - var3.x, var10.y - var3.y);
- if (this.dockingSource == null) {
- this.dockingSource = this.toolBar.getParent();
- }
-
- Point var6 = this.dockingSource.getLocationOnScreen();
- Point var7 = new Point(var10.x - var6.x, var10.y - var6.y);
- if (this.canDock(this.dockingSource, var7)) {
- this.dragWindow.setBackground(this.getDockingColor());
- String var8 = this.getDockingConstraint(this.dockingSource, var7);
- int var9 = this.mapConstraintToOrientation(var8);
- this.dragWindow.setOrientation(var9);
- this.dragWindow.setBorderColor(this.dockingBorderColor);
- } else {
- this.dragWindow.setBackground(this.getFloatingColor());
- this.dragWindow.setOrientation(0);
- this.dragWindow.setBorderColor(this.floatingBorderColor);
- }
-
- this.dragWindow.setLocation(var5.x, var5.y);
- if (!this.dragWindow.isVisible()) {
- Dimension var11 = this.toolBar.getPreferredSize();
- this.dragWindow.setSize(var11.width, var11.height);
- this.dragWindow.show();
- }
- }
-
- }
-
- protected void floatAt(Point var1, Point var2) {
- if (this.toolBar.isFloatable()) {
- Point var3 = this.dragWindow.getOffset();
- if (var3 == null) {
- var3 = var1;
- this.dragWindow.setOffset(var1);
- }
-
- Point var4 = new Point(var2.x + var1.x, var2.y + var1.y);
- this.setFloatingLocation(var4.x - var3.x, var4.y - var3.y);
- if (this.dockingSource != null) {
- Point var5 = this.dockingSource.getLocationOnScreen();
- Point var6 = new Point(var4.x - var5.x, var4.y - var5.y);
- if (this.canDock(this.dockingSource, var6)) {
- this.setFloating(false, var6);
- } else {
- this.setFloating(true, (Point)null);
- }
- } else {
- this.setFloating(true, (Point)null);
- }
-
- this.dragWindow.setOffset((Point)null);
- }
-
- }
-
- protected DockingListener createDockingListener(JToolBar var1) {
- return new DockingListener(this, var1);
- }
-
- protected WindowListener createFrameListener() {
- return new FrameListener(this);
- }
- }
-