GlossyTaskPaneUI.java
资源名称:swingx.zip [点击查看]
上传用户:zhengdagz
上传日期:2014-03-06
资源大小:1956k
文件大小:5k
源码类别:
xml/soap/webservice
开发平台:
Java
- /*
- * $Id: GlossyTaskPaneUI.java,v 1.4 2005/10/10 18:03:15 rbair Exp $
- *
- * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
- * Santa Clara, California 95054, U.S.A. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
- package org.jdesktop.swingx.plaf.misc;
- import java.awt.GradientPaint;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Paint;
- import java.awt.Rectangle;
- import java.awt.RenderingHints;
- import javax.swing.JComponent;
- import javax.swing.border.Border;
- import javax.swing.plaf.ComponentUI;
- import org.jdesktop.swingx.JXTaskPane;
- import org.jdesktop.swingx.plaf.basic.BasicTaskPaneUI;
- /**
- * Paints the JXTaskPane with a gradient in the title bar.
- *
- * @author <a href="mailto:fred@L2FProd.com">Frederic Lavigne</a>
- */
- public class GlossyTaskPaneUI extends BasicTaskPaneUI {
- public static ComponentUI createUI(JComponent c) {
- return new GlossyTaskPaneUI();
- }
- protected Border createPaneBorder() {
- return new GlossyPaneBorder();
- }
- /**
- * Overriden to paint the background of the component but keeping the rounded
- * corners.
- */
- public void update(Graphics g, JComponent c) {
- if (c.isOpaque()) {
- g.setColor(c.getParent().getBackground());
- g.fillRect(0, 0, c.getWidth(), c.getHeight());
- g.setColor(c.getBackground());
- g.fillRect(0, ROUND_HEIGHT, c.getWidth(), c.getHeight() - ROUND_HEIGHT);
- }
- paint(g, c);
- }
- /**
- * The border of the taskpane group paints the "text", the "icon", the
- * "expanded" status and the "special" type.
- *
- */
- class GlossyPaneBorder extends PaneBorder {
- protected void paintTitleBackground(JXTaskPane group, Graphics g) {
- if (group.isSpecial()) {
- g.setColor(specialTitleBackground);
- g.fillRoundRect(
- 0,
- 0,
- group.getWidth(),
- ROUND_HEIGHT * 2,
- ROUND_HEIGHT,
- ROUND_HEIGHT);
- g.fillRect(
- 0,
- ROUND_HEIGHT,
- group.getWidth(),
- TITLE_HEIGHT - ROUND_HEIGHT);
- } else {
- Paint oldPaint = ((Graphics2D)g).getPaint();
- GradientPaint gradient =
- new GradientPaint(
- 0f,
- 0f, //group.getWidth() / 2,
- titleBackgroundGradientStart,
- 0f, //group.getWidth(),
- TITLE_HEIGHT,
- titleBackgroundGradientEnd);
- ((Graphics2D)g).setRenderingHint(
- RenderingHints.KEY_COLOR_RENDERING,
- RenderingHints.VALUE_COLOR_RENDER_QUALITY);
- ((Graphics2D)g).setRenderingHint(
- RenderingHints.KEY_INTERPOLATION,
- RenderingHints.VALUE_INTERPOLATION_BILINEAR);
- ((Graphics2D)g).setRenderingHint(
- RenderingHints.KEY_RENDERING,
- RenderingHints.VALUE_RENDER_QUALITY);
- ((Graphics2D)g).setPaint(gradient);
- g.fillRoundRect(
- 0,
- 0,
- group.getWidth(),
- ROUND_HEIGHT * 2,
- ROUND_HEIGHT,
- ROUND_HEIGHT);
- g.fillRect(
- 0,
- ROUND_HEIGHT,
- group.getWidth(),
- TITLE_HEIGHT - ROUND_HEIGHT);
- ((Graphics2D)g).setPaint(oldPaint);
- }
- Rectangle oldRect = g.getClipBounds();
- g.setClip(0, 0, group.getWidth(), TITLE_HEIGHT);
- g.setColor(borderColor);
- g.drawRoundRect(
- 0,
- 0,
- group.getWidth() - 1,
- TITLE_HEIGHT + ROUND_HEIGHT,
- ROUND_HEIGHT,
- ROUND_HEIGHT);
- g.drawLine(0, TITLE_HEIGHT - 1, group.getWidth(), TITLE_HEIGHT - 1);
- g.setClip(oldRect);
- }
- protected void paintExpandedControls(JXTaskPane group, Graphics g, int x,
- int y, int width, int height) {
- ((Graphics2D)g).setRenderingHint(
- RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- paintOvalAroundControls(group, g, x, y, width, height);
- g.setColor(getPaintColor(group));
- paintChevronControls(group, g, x, y, width, height);
- ((Graphics2D)g).setRenderingHint(
- RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_OFF);
- }
- @Override
- protected boolean isMouseOverBorder() {
- return true;
- }
- }
- }