/* * org.openmicroscopy.shoola.util.ui.TitlePanel * *------------------------------------------------------------------------------ * Copyright (C) 2006 University of Dundee. All rights reserved. * * * This program 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 of the License, or * (at your option) any later version. * This program 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 this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * *------------------------------------------------------------------------------ */ package org.openmicroscopy.shoola.util.ui; //Java imports import java.awt.Color; import java.awt.GradientPaint; import java.awt.geom.Point2D; import javax.swing.Icon; //Third-party libraries import org.jdesktop.swingx.JXHeader; import org.jdesktop.swingx.painter.CompoundPainter; import org.jdesktop.swingx.painter.GlossPainter; import org.jdesktop.swingx.painter.MattePainter; import org.jdesktop.swingx.painter.Painter; import org.jdesktop.swingx.painter.RectanglePainter; //Application-internal dependencies /** * A general purpose title panel having a title, sub-title, explanatory text, * and graphics. * The title, sub-title, and explanatory text are aligned to the left in three * horizontal rows and take up as much width as is available. The grahics is * aligned to the right and spawns all three rows. The title is displayed in * a bold font, the sub-title in a normal font, and the explanatory text in an * italic font. The title and sub-title are displayed in a single line label, * as the explanatory text is embedded in a multi-line label. * * @author Jean-Marie Burel      * <a href="mailto:j.burel@dundee.ac.uk">j.burel@dundee.ac.uk</a> * @author <br>Andrea Falconi      * <a href="mailto:a.falconi@dundee.ac.uk"> * a.falconi@dundee.ac.uk</a> * @version 2.2 * <small> * (<b>Internal version:</b> $Revision$ $Date$) * </small> * @since OME2.2 */ public class TitlePanel extends JXHeader { /** Default background color. */ private static final Color BG_COLOR = UIUtilities.SELECTED_BACKGROUND_COLOUR.darker();//new Color(0x417DDD); /** * Creates a new instance. * All arguments are optional. * * @param title The panel's title. * @param subTitle The panel's sub-title. * @param text The explanatory text. * @param icon An icon to use as the panel's graphics. */ public TitlePanel(String title, String subTitle, String text, Icon icon) { super.setTitle(title); String s = subTitle; if (text != null) s += "\n"+text; setDescription(s); if (icon != null) setIcon(icon); Color translucent = new Color(BG_COLOR.getRed(), BG_COLOR.getGreen(), BG_COLOR.getBlue(), 0); setForeground(Color.LIGHT_GRAY); GradientPaint bgToTranslucent = new GradientPaint( new Point2D.Double(.4, 0), BG_COLOR, new Point2D.Double(1, 0), translucent); MattePainter veil = new MattePainter(bgToTranslucent); veil.setPaintStretched(true); Painter backgroundPainter = new RectanglePainter(Color.white, null); Painter p = new CompoundPainter(backgroundPainter, veil, new GlossPainter()); setBackgroundPainter(p); } /** * Creates a new instance. * All arguments are optional. * * @param title The panel's title. * @param subTitle The panel's sub-title. * @param icon An icon to use as the panel's graphics. */ public TitlePanel(String title, String subTitle, Icon icon) { this(title, subTitle, null, icon); } /** * Sets the title displayed in the header. * * @param text The text to set. */ public void setTitle(String text) { //title.setText(text); super.setTitle(text); repaint(); } /** * Sets the text displayed in the header. * * @param text The text to set. */ public void setTextHeader(String text) { super.setDescription(text); // this.text.setText(text); repaint(); } /** * Sets the note displayed in the header. * * @param text The text to set. */ public void setSubtitle(String text) { String s = super.getDescription(); if (text != null) s += "\n"+text; setTextHeader(s); } }