001 /*
002 * Copyright 2002-2004 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.springframework.richclient.components;
017
018 import java.awt.Color;
019 import java.awt.Dimension;
020 import java.awt.GradientPaint;
021 import java.awt.Graphics;
022 import java.awt.Graphics2D;
023 import java.awt.geom.Rectangle2D;
024
025 import javax.swing.JPanel;
026
027 import org.springframework.util.Assert;
028
029 /**
030 * A JPanel with a nice gradient background (should be move to another package)
031 * @author cro
032 */
033 public class GradientPanel extends JPanel {
034
035 private Color upperLeftColor;
036
037 private Color lowerRightColor;
038
039 public GradientPanel(Color lowerRightColor, Color upperLeftColor) {
040 this.lowerRightColor = lowerRightColor;
041 this.upperLeftColor = upperLeftColor;
042 }
043
044 public GradientPanel(Color lowerRightColor) {
045 this(lowerRightColor, Color.white);
046 }
047
048 public GradientPanel() {
049 this(null);
050 }
051
052 private void paintGradientComponent(int w, int h, Graphics2D g2) {
053 if (lowerRightColor == null)
054 lowerRightColor = getBackground();
055
056 Assert.notNull(upperLeftColor, "The OuterColor cannot be null");
057
058 Rectangle2D rect1 = new Rectangle2D.Float(0, 0, w, h);
059 GradientPaint gp = new GradientPaint(w * .80f, h * .30f, upperLeftColor, w * .90f, h * .70f, lowerRightColor);
060 g2.setPaint(gp);
061 g2.fill(rect1);
062 }
063
064 public void paintComponent(Graphics g) {
065 Graphics2D g2 = (Graphics2D)g;
066 Dimension d = getSize();
067 g2.setBackground(lowerRightColor);
068 g2.clearRect(0, 0, d.width, d.height);
069 paintGradientComponent(d.width, d.height, g2);
070 }
071
072 public Color getLowerRightColor() {
073 return lowerRightColor;
074 }
075
076 public void setLowerRightColor(Color lowerRightColor) {
077 this.lowerRightColor = lowerRightColor;
078 }
079
080 public Color getUpperLeftColor() {
081 return upperLeftColor;
082 }
083
084 public void setUpperLeftColor(Color upperLeftColor) {
085 this.upperLeftColor = upperLeftColor;
086 }
087 }