summaryrefslogtreecommitdiffstats
path: root/libjava/javax/swing/plaf/basic/BasicDesktopIconUI.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/javax/swing/plaf/basic/BasicDesktopIconUI.java')
-rw-r--r--libjava/javax/swing/plaf/basic/BasicDesktopIconUI.java590
1 files changed, 0 insertions, 590 deletions
diff --git a/libjava/javax/swing/plaf/basic/BasicDesktopIconUI.java b/libjava/javax/swing/plaf/basic/BasicDesktopIconUI.java
deleted file mode 100644
index 561b497f1c3..00000000000
--- a/libjava/javax/swing/plaf/basic/BasicDesktopIconUI.java
+++ /dev/null
@@ -1,590 +0,0 @@
-/* BasicDesktopIconUI.java --
- Copyright (C) 2004, 2005 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.plaf.basic;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyVetoException;
-
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JDesktopPane;
-import javax.swing.JInternalFrame;
-import javax.swing.JInternalFrame.JDesktopIcon;
-import javax.swing.SwingConstants;
-import javax.swing.border.Border;
-import javax.swing.event.MouseInputAdapter;
-import javax.swing.event.MouseInputListener;
-import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.DesktopIconUI;
-
-/**
- * This class acts as the UI delegate for JDesktopIcons for the Basic look and feel.
- */
-public class BasicDesktopIconUI extends DesktopIconUI
-{
- /**
- * This helper class handles mouse events that occur on the JDesktopIcon.
- */
- public class MouseInputHandler extends MouseInputAdapter
- {
- /** The x offset from the MouseEvent coordinates to the top left corner. */
- private transient int xOffset;
-
- /** The y offset fromt he MouseEvent coordinates to the top left corner. */
- private transient int yOffset;
-
- /** A cached value of the JDesktopPane that parents this JDesktopIcon. */
- private transient JDesktopPane pane;
-
- /**
- * This method is called when the mouse is dragged in the JDesktopIcon.
- *
- * @param e The MouseEvent.
- */
- public void mouseDragged(MouseEvent e)
- {
- Rectangle b = desktopIcon.getBounds();
-
- moveAndRepaint(desktopIcon, b.x + e.getX() - xOffset,
- b.y + e.getY() - yOffset, b.width, b.height);
- }
-
- /**
- * This method is called when the mouse is moved in the JDesktopIcon.
- *
- * @param e The MouseEvent.
- */
- public void mouseMoved(MouseEvent e)
- {
- // Nothing to do.
- }
-
- /**
- * This method is called when the mouse is pressed in the JDesktopIcon.
- *
- * @param e The MouseEvent.
- */
- public void mousePressed(MouseEvent e)
- {
- xOffset = e.getX();
- yOffset = e.getY();
- pane = frame.getDesktopPane();
- if (pane != null)
- pane.getDesktopManager().beginDraggingFrame(desktopIcon);
- }
-
- /**
- * This method is called when the mouse is released in the JDesktopIcon.
- *
- * @param e The MouseEvent.
- */
- public void mouseReleased(MouseEvent e)
- {
- if (pane != null)
- pane.getDesktopManager().endDraggingFrame(desktopIcon);
- xOffset = 0;
- yOffset = 0;
- }
-
- /**
- * This method moves and repaints the JDesktopIcon to the given bounds.
- *
- * @param f The JComponent to move and repaint.
- * @param newX The new x coordinate.
- * @param newY The new y coordinate.
- * @param newWidth The new width.
- * @param newHeight The new height.
- */
- public void moveAndRepaint(JComponent f, int newX, int newY, int newWidth,
- int newHeight)
- {
- if (pane != null)
- pane.getDesktopManager().dragFrame(f, newX, newY);
- else
- desktopIcon.setBounds(newX, newY, newWidth, newHeight);
- }
- }
-
- /**
- * This class acts as the border for the JDesktopIcon.
- */
- private class DesktopIconBorder implements Border
- {
- /** The left inset value. */
- int left = 10;
-
- /** The top inset value. */
- int top = 4;
-
- /** The right inset value. */
- int right = top;
-
- /** The bottom inset value. */
- int bottom = top;
-
- /**
- * This method returns the insets of the border.
- *
- * @param c The Component to find border insets for.
- *
- * @return The border insets.
- */
- public Insets getBorderInsets(Component c)
- {
- return new Insets(top, left, bottom, right);
- }
-
- /**
- * This method returns whether the border is opaque.
- *
- * @return Whether the border is opaque.
- */
- public boolean isBorderOpaque()
- {
- return true;
- }
-
- /**
- * This method paints the border.
- *
- * @param c The Component the border is in.
- * @param g The Graphics object to paint with.
- * @param x The x coordinate of the Component.
- * @param y The y coordinate of the Component.
- * @param width The width of the Component.
- * @param height The height of the Component.
- */
- public void paintBorder(Component c, Graphics g, int x, int y, int width,
- int height)
- {
- g.translate(x, y);
- Color saved = g.getColor();
-
- g.setColor(Color.LIGHT_GRAY);
-
- g.fillRect(0, 0, left, height);
- g.fillRect(0, 0, width, top);
- g.fillRect(0, height - bottom, width, bottom);
- g.fillRect(width - right, 0, right, height);
-
- g.setColor(Color.BLACK);
- g.drawRect(0, 0, width - 1, height - 1);
-
- int fHeight = height / 4;
- int hLeft = left / 2;
-
- g.setColor(Color.BLACK);
- g.fillRect(hLeft, fHeight, 2, 2);
- g.fillRect(hLeft, fHeight * 2, 2, 2);
- g.fillRect(hLeft, fHeight * 3, 2, 2);
-
- g.setColor(saved);
- g.translate(-x, -y);
- }
- }
-
- /** The static width and height of the iconSize. */
- private static final int iconSize = 16;
-
- /**
- * This class represents the default frame icon when none
- * is supplied by the JInternalFrame.
- */
- static class InternalFrameDefaultMenuIcon implements Icon
- {
- /**
- * This returns the icon height.
- *
- * @return The icon height.
- */
- public int getIconHeight()
- {
- return iconSize;
- }
-
- /**
- * This returns the icon width.
- *
- * @return The icon width.
- */
- public int getIconWidth()
- {
- return iconSize;
- }
-
- /**
- * This method paints the icon.
- *
- * @param c The Component this icon belongs to.
- * @param g The Graphics object to paint with.
- * @param x The x coordinate to paint at.
- * @param y The y coordinate to paint at.
- */
- public void paintIcon(Component c, Graphics g, int x, int y)
- {
- g.translate(x, y);
- Color saved = g.getColor();
-
- g.setColor(Color.BLUE);
- g.fillRect(0, 0, iconSize, (int) ((double) iconSize / 3) + 1);
-
- g.setColor(Color.WHITE);
- g.fillRect(0, (int) ((double) iconSize / 3), iconSize, iconSize * 5 / 6);
-
- g.setColor(Color.GRAY);
- g.drawRect(0, 0, iconSize, iconSize);
-
- g.setColor(saved);
- g.translate(-x, -y);
- }
- }
-
- /** The default JDesktopIcon width. */
- private static final int iconWidth = 160;
-
- /** The default JDesktopIcon height */
- private static final int iconHeight = 35;
-
- /** The JDesktopIcon this UI delegate represents. */
- protected JDesktopIcon desktopIcon;
-
- /** The JInternalFrame associated with the JDesktopIcon. */
- protected JInternalFrame frame;
-
- /** The MouseListener responsible for reacting to MouseEvents on the JDesktopIcon. */
- private transient MouseInputListener mouseHandler;
-
- /** The Button in the JDesktopIcon responsible for deiconifying it.
- * This is package-private to avoid an accessor method. */
- transient BoundButton button;
-
- /** The PropertyChangeListener listening to the JDesktopIcon. */
- private transient PropertyChangeListener propertyHandler;
-
- /** The default icon used when no frame icon is given by the JInternalFrame. */
- static Icon defaultIcon = new InternalFrameDefaultMenuIcon();
-
- /**
- * This is a helper class that is used in JDesktopIcon and gives the Button a predetermined size.
- */
- private class BoundButton extends JButton
- {
- /**
- * Creates a new BoundButton object.
- *
- * @param title The title of the button.
- */
- public BoundButton(String title)
- {
- super(title);
- }
-
- /**
- * This method returns a standard size (based on the defaults of the JDesktopIcon) and the insets.
- *
- * @return The preferred size of the JDesktopIcon.
- */
- public Dimension getPreferredSize()
- {
- Insets insets = desktopIcon.getInsets();
- return new Dimension(iconWidth - insets.left - insets.right,
- iconHeight - insets.top - insets.bottom);
- }
-
- /**
- * This method returns the minimum size of the button.
- *
- * @return The minimum size of the button.
- */
- public Dimension getMinimumSize()
- {
- return getPreferredSize();
- }
-
- /**
- * This method returns the maximum size of the button.
- *
- * @return The maximum size of the button.
- */
- public Dimension getMaximumSize()
- {
- return getPreferredSize();
- }
- }
-
- /**
- * Creates a new BasicDesktopIconUI object.
- */
- public BasicDesktopIconUI()
- {
- }
-
- /**
- * This method creates a new BasicDesktopIconUI for the given JComponent.
- *
- * @param c The JComponent to create a UI for.
- *
- * @return A new BasicDesktopIconUI.
- */
- public static ComponentUI createUI(JComponent c)
- {
- return new BasicDesktopIconUI();
- }
-
- /**
- * This method installs the UI for the given JComponent.
- *
- * @param c The JComponent to install this UI for.
- */
- public void installUI(JComponent c)
- {
- if (c instanceof JDesktopIcon)
- {
- desktopIcon = (JDesktopIcon) c;
- desktopIcon.setLayout(new BorderLayout());
- frame = desktopIcon.getInternalFrame();
-
- installDefaults();
- installComponents();
- installListeners();
-
- desktopIcon.setOpaque(true);
- }
- }
-
- /**
- * This method uninstalls the UI for the given JComponent.
- *
- * @param c The JComponent to uninstall this UI for.
- */
- public void uninstallUI(JComponent c)
- {
- desktopIcon.setOpaque(false);
-
- uninstallListeners();
- uninstallComponents();
- uninstallDefaults();
-
- frame = null;
- desktopIcon.setLayout(null);
- desktopIcon = null;
- }
-
- /**
- * This method installs the necessary sub components for the JDesktopIcon.
- */
- protected void installComponents()
- {
- // Try to create a button based on what the frame's
- // state is currently
- button = new BoundButton(frame.getTitle());
- button.setHorizontalAlignment(SwingConstants.LEFT);
- button.setHorizontalTextPosition(SwingConstants.TRAILING);
-
- Icon use = frame.getFrameIcon();
- if (use == null)
- use = defaultIcon;
- button.setIcon(use);
-
- desktopIcon.add(button, SwingConstants.CENTER);
- }
-
- /**
- * This method uninstalls the sub components for the JDesktopIcon.
- */
- protected void uninstallComponents()
- {
- desktopIcon.remove(button);
-
- button = null;
- }
-
- /**
- * This method installs the listeners needed by this UI.
- */
- protected void installListeners()
- {
- mouseHandler = createMouseInputListener();
-
- desktopIcon.addMouseMotionListener(mouseHandler);
- desktopIcon.addMouseListener(mouseHandler);
-
- propertyHandler = new PropertyChangeListener()
- {
- public void propertyChange(PropertyChangeEvent e)
- {
- if (e.getPropertyName().equals(JInternalFrame.TITLE_PROPERTY))
- button.setText(desktopIcon.getInternalFrame().getTitle());
- else if (e.getPropertyName().equals(JInternalFrame.FRAME_ICON_PROPERTY))
- {
- Icon use = desktopIcon.getInternalFrame().getFrameIcon();
- if (use == null)
- use = defaultIcon;
- button.setIcon(use);
- }
- desktopIcon.revalidate();
- desktopIcon.repaint();
- }
- };
- frame.addPropertyChangeListener(propertyHandler);
-
- button.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- deiconize();
- }
- });
- }
-
- /**
- * This method uninstalls the listeners needed by the UI.
- */
- protected void uninstallListeners()
- {
- // button is nulled so no need to remove it.
-
- frame.removePropertyChangeListener(propertyHandler);
- propertyHandler = null;
-
- desktopIcon.removeMouseMotionListener(mouseHandler);
- desktopIcon.removeMouseListener(mouseHandler);
- }
-
- /**
- * This method installs the defaults for the JDesktopIcon.
- */
- protected void installDefaults()
- {
- // FIXME: Move border to defaults.
- desktopIcon.setBorder(new DesktopIconBorder());
- }
-
- /**
- * This method uninstalls the defaults for the JDesktopIcon.
- */
- protected void uninstallDefaults()
- {
- desktopIcon.setBorder(null);
- }
-
- /**
- * This method creates a new MouseInputListener for the JDesktopIcon.
- *
- * @return A new MouseInputListener.
- */
- protected MouseInputListener createMouseInputListener()
- {
- return new MouseInputHandler();
- }
-
- /**
- * This method returns the preferred size for the given JComponent.
- *
- * @param c The JComponent to find a preferred size for.
- *
- * @return The preferred size.
- */
- public Dimension getPreferredSize(JComponent c)
- {
- return new Dimension(iconWidth, iconHeight);
- }
-
- /**
- * This method returns the minimum size for the given JComponent.
- *
- * @param c The JComponent to find a minimum size for.
- *
- * @return The minimum size.
- */
- public Dimension getMinimumSize(JComponent c)
- {
- return getPreferredSize(c);
- }
-
- /**
- * This method returns the maximum size for the given JComponent.
- *
- * @param c The JComponent to find a maximum size for.
- *
- * @return The maximum size.
- */
- public Dimension getMaximumSize(JComponent c)
- {
- return getPreferredSize(c);
- }
-
- /**
- * This method returns the insets of the given JComponent.
- *
- * @param c The JComponent to find insets for.
- *
- * @return The insets of the given JComponent.
- */
- public Insets getInsets(JComponent c)
- {
- return c.getInsets();
- }
-
- /**
- * This method deiconizes the JInternalFrame associated with the JDesktopIcon.
- */
- public void deiconize()
- {
- try
- {
- frame.setIcon(false);
- }
- catch (PropertyVetoException pve)
- {
- }
- }
-}
OpenPOWER on IntegriCloud