/** * $RCSfile: ,v $ * $Revision: $ * $Date: $ * * Copyright (C) 2004-2011 Jive Software. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jivesoftware.spark.component; import org.jivesoftware.resource.Default; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Image; import java.awt.Insets; import java.awt.geom.AffineTransform; /** * Fancy title panel that displays gradient colors, text and components. */ public class ImageTitlePanel extends JPanel { private static final long serialVersionUID = -4942953711496567252L; private Image backgroundImage; private final JLabel titleLabel = new JLabel(); private final JLabel iconLabel = new JLabel(); private final GridBagLayout gridBagLayout = new GridBagLayout(); private final WrappedLabel descriptionLabel = new WrappedLabel(); /** * Creates a new ImageTitlePanel. * * @param title the title to use for this label. */ public ImageTitlePanel(String title) { backgroundImage = Default.getImageIcon(Default.TOP_BOTTOM_BACKGROUND_IMAGE).getImage(); init(); titleLabel.setText(title); titleLabel.setFont(new Font("Dialog", Font.BOLD, 11)); } /** * Creates a new ImageTitlePanel object. */ public ImageTitlePanel() { backgroundImage = Default.getImageIcon(Default.TOP_BOTTOM_BACKGROUND_IMAGE).getImage(); init(); titleLabel.setFont(new Font("Dialog", Font.BOLD, 11)); } public void paintComponent(Graphics g) { double scaleX = getWidth() / (double)backgroundImage.getWidth(null); double scaleY = getHeight() / (double)backgroundImage.getHeight(null); AffineTransform xform = AffineTransform.getScaleInstance(scaleX, scaleY); ((Graphics2D)g).drawImage(backgroundImage, xform, this); } private void init() { setLayout(gridBagLayout); add(titleLabel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); } /** * Set the description for the label. * * @param description the description for the label. */ public void setDescription(String description) { descriptionLabel.setText(description); add(descriptionLabel, new GridBagConstraints(0, 1, 3, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); } /** * Set the font of the description label. * * @param font the font to use in the description label. */ public void setDescriptionFont(Font font) { descriptionLabel.setFont(font); } /** * Returns the description label. * * @return the description label. */ public JTextArea getDescriptionLabel() { return descriptionLabel; } /** * Sets the title to use in the label. * * @param title the title to use. */ public void setTitle(String title) { titleLabel.setText(title); } /** * Returns the title label. * * @return the title label. */ public JLabel getTitleLabel() { return titleLabel; } /** * Set the font of the title label. * * @param font the font to use for title label. */ public void setTitleFont(Font font) { titleLabel.setFont(font); } /** * Specify a component to use on this label. * * @param component the component to use with this label. */ public void setComponent(JComponent component) { add(new JLabel(), new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); add(component, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); } /** * Specify the icon to use with this label. * * @param icon the icon to use with this label. */ public void setIcon(ImageIcon icon) { add(new JLabel(), new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); iconLabel.setIcon(icon); add(iconLabel, new GridBagConstraints(2, 0, 1, 1, 1.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); } }