diff options
Diffstat (limited to 'libjava/javax/swing/colorchooser/DefaultPreviewPanel.java')
-rw-r--r-- | libjava/javax/swing/colorchooser/DefaultPreviewPanel.java | 318 |
1 files changed, 0 insertions, 318 deletions
diff --git a/libjava/javax/swing/colorchooser/DefaultPreviewPanel.java b/libjava/javax/swing/colorchooser/DefaultPreviewPanel.java deleted file mode 100644 index 2462add3df2..00000000000 --- a/libjava/javax/swing/colorchooser/DefaultPreviewPanel.java +++ /dev/null @@ -1,318 +0,0 @@ -/* DefaultPreviewPanel.java -- - Copyright (C) 2004 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.colorchooser; - -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.FontMetrics; -import java.awt.Graphics; -import java.awt.Insets; - -import javax.swing.JColorChooser; -import javax.swing.JPanel; -import javax.swing.SwingUtilities; -import javax.swing.border.Border; - -/** - * This is the default preview panel for the JColorChooser. The default - * preview panel is responsible for displaying the currently selected color - * of the JColorChooser. - */ -class DefaultPreviewPanel extends JPanel -{ - /** - * This is the border around the preview panel. - */ - class PreviewBorder implements Border - { - /** This is the value of the top, bottom, top, and right inset. */ - private static final int edge = 20; - - /** - * This is the distance from the top left corner of the border to the - * text. - */ - private static final int lead = 5; - - /** This is the horizontal gap between the text and the border. */ - private static final int gap = 3; - - /** - * This method returns the border insets for the given Component. - * - * @param c The Component to retrieve insets for. - * - * @return The insets for the given Component. - */ - public Insets getBorderInsets(Component c) - { - return new Insets(edge, edge, edge, edge); - } - - /** - * This method returns whether the border is responsible for painting its - * own background. - * - * @return Whether the border is responsible for painting its own - * background. - */ - public boolean isBorderOpaque() - { - return true; - } - - /** - * This method paints the border for the given component with the graphics - * object using the given properties. - * - * @param c The Component to paint the border for. - * @param g The Graphics object to paint with. - * @param x The x location to paint at. - * @param y The y location to paint at. - * @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) - { - Color saved = g.getColor(); - FontMetrics fm = g.getFontMetrics(); - - g.setColor(Color.BLACK); - g.drawLine(x + edge / 2, y + edge / 2, x + edge / 2, - y + height - edge / 2); - g.drawLine(x + edge / 2, y + height - edge / 2, x + width - edge / 2, - y + height - edge / 2); - g.drawLine(x + width - edge / 2, y + edge / 2, x + width - edge / 2, - y + height - edge / 2); - g.drawLine(x + edge / 2, y + edge / 2, x + edge / 2 + lead, y + edge / 2); - - int strwidth = fm.stringWidth("Preview"); - - g.drawString("Preview", x + edge / 2 + lead + gap, - y + edge / 2 + fm.getAscent() / 2); - - g.drawLine(x + lead + edge / 2 + strwidth + gap * 2, y + edge / 2, - x + width - edge / 2, y + edge / 2); - - g.setColor(saved); - } - } - - /** A standard large gap size. */ - private static int largeGap = 6; - - /** A standard small gap size. */ - private static int smallGap = 2; - - /** The size of each side of the square. */ - private static int squareSize = 36; - - /** This padding between the text and the edge of its box. */ - private static int textPadding = 4; - - /** The width of the right most rectangles. */ - private static int rightSideRectWidth = 60; - - /** The sample text. */ - private static String sample = "Sample Text Sample Text"; - - /** - * Creates a new DefaultPreviewPanel object. - */ - DefaultPreviewPanel() - { - super(); - setBorder(new PreviewBorder()); - } - - /** - * This method paints the default preview panel with the given Graphics - * object. - * - * @param g The Graphics object. - */ - public void paint(Graphics g) - { - super.paint(g); - Color currentColor = null; - JColorChooser chooser = (JColorChooser) SwingUtilities.getAncestorOfClass(JColorChooser.class, - this); - if (chooser != null) - currentColor = chooser.getColor(); - - Color saved = g.getColor(); - Insets insets = getInsets(); - - int down = insets.top + squareSize + largeGap; - int currX = insets.left; - - paintSquare(g, currX, insets.top, Color.WHITE, currentColor, Color.WHITE, - -1, -1, -1); - paintSquare(g, currX, down, currentColor, null, null, -1, -1, -1); - - currX += squareSize + largeGap; - - paintSquare(g, currX, insets.top, Color.BLACK, currentColor, Color.WHITE, - -1, -1, -1); - paintSquare(g, currX, down, Color.WHITE, currentColor, null, -1, -1, -1); - - currX += squareSize + largeGap; - - paintSquare(g, currX, insets.top, Color.WHITE, currentColor, Color.BLACK, - -1, -1, -1); - paintSquare(g, currX, down, Color.BLACK, currentColor, null, -1, -1, -1); - - FontMetrics fm = g.getFontMetrics(); - int strWidth = fm.stringWidth(sample); - int strHeight = fm.getHeight(); - - currX += squareSize + largeGap; - - int boxWidth = 2 * textPadding + strWidth; - int boxHeight = 2 * textPadding + strHeight; - - int first = insets.top + textPadding; - int second = insets.top + boxHeight + smallGap; - int third = insets.top + 2 * (boxHeight + smallGap); - - g.setColor(Color.WHITE); - g.fillRect(currX, third, boxWidth, boxHeight); - - g.setColor(currentColor); - g.drawString(sample, currX + textPadding, - first + textPadding + fm.getAscent()); - - g.fillRect(currX, second, boxWidth, boxHeight); - - g.drawString(sample, currX + textPadding, - third + textPadding + fm.getAscent()); - - g.setColor(Color.BLACK); - g.drawString(sample, currX + textPadding, - second + textPadding + fm.getAscent()); - - currX += boxWidth + largeGap; - - g.setColor(Color.WHITE); - g.fillRect(currX, insets.top, rightSideRectWidth, squareSize - + largeGap / 2); - - g.setColor(currentColor); - g.fillRect(currX, insets.top + squareSize + largeGap / 2, - rightSideRectWidth, squareSize + largeGap / 2); - - g.setColor(saved); - } - - /** - * This method creates and paints a square. The square has two smaller - * squares inside of it. Each of the three squares has their sizes - * determined by the size arguments. If the size is not given (by passing - * in -1), then the size is determined automatically. - * - * @param g The Graphics object to paint with. - * @param x The x location to paint at. - * @param y The y location to paint at. - * @param first The color of the first square. - * @param second The color of the second square. - * @param third The color of the third square. - * @param firstSize The size of the first square. - * @param secondSize The size of the second square. - * @param thirdSize The size of the third square. - */ - private void paintSquare(Graphics g, int x, int y, Color first, - Color second, Color third, int firstSize, - int secondSize, int thirdSize) - { - Color saved = g.getColor(); - if (firstSize == -1) - firstSize = squareSize; - if (secondSize == -1) - secondSize = squareSize * 2 / 3; - if (thirdSize == -1) - thirdSize = squareSize / 3; - int secondOffset = (firstSize - secondSize) / 2; - int thirdOffset = (firstSize - thirdSize) / 2; - - if (first == null) - return; - g.setColor(first); - g.fillRect(x, y, firstSize, firstSize); - if (second == null) - return; - g.setColor(second); - g.fillRect(x + secondOffset, y + secondOffset, secondSize, secondSize); - if (third == null) - return; - g.setColor(third); - g.fillRect(x + thirdOffset, y + thirdOffset, thirdSize, thirdSize); - - g.setColor(saved); - } - - /** - * This method returns the preferred size of the default preview panel. - * - * @return The preferred size of the default preview panel. - */ - public Dimension getPreferredSize() - { - Graphics g = getGraphics(); - FontMetrics fm = g.getFontMetrics(); - g.dispose(); - - int strWidth = fm.stringWidth(sample); - int strHeight = fm.getHeight(); - - int h1 = (strHeight + 2 * textPadding) * 3 + 2 * smallGap; - int h2 = 2 * squareSize + largeGap; - - int height = Math.max(h1, h2); - - int width = 3 * (squareSize + largeGap) + strWidth + 2 * textPadding - + largeGap + rightSideRectWidth; - - Insets insets = getInsets(); - - return new Dimension(width + insets.right + insets.left, - height + insets.top + insets.bottom); - } -} |