/** * $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 java.awt.Color; 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.LayoutManager; import java.awt.geom.AffineTransform; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; /** * <code>TitlePanel</code> class is the top panel displayed in this application. This * should be used to identify the application to users using a title, brief description, * and the company's logo. * * @author Derek DeMoro */ public final class TitlePanel extends JPanel { private static final long serialVersionUID = -967166058268240672L; private final JLabel titleLabel = new JLabel(); private final JLabel descriptionLabel = new JLabel(); private final JLabel iconLabel = new JLabel(); private final GridBagLayout gridBagLayout = new GridBagLayout(); /** * Create a new TitlePanel. * * @param title the title to use with the panel. * @param description the panel description. * @param icon the icon to use with the panel. * @param showDescription true if the descrption should be shown. */ public TitlePanel(String title, String description, Icon icon, boolean showDescription) { // Set the icon iconLabel.setIcon(icon); // Set the title setTitle(title); // Set the description setDescription(description); setLayout(gridBagLayout); descriptionLabel.setBackground(Color.white); if (showDescription) { add(iconLabel, new GridBagConstraints(2, 0, 1, 2, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); add(descriptionLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(0, 9, 5, 5), 0, 0)); add(titleLabel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); setBackground(Color.white); titleLabel.setFont(new Font("dialog", Font.BOLD, 11)); descriptionLabel.setFont(new Font("dialog", 0, 10)); } else { final JPanel panel = new ImagePanel(); panel.setBorder(BorderFactory.createEtchedBorder()); panel.setLayout(new GridBagLayout()); panel.add(titleLabel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(2, 2, 2, 2), 0, 0)); panel.add(iconLabel, new GridBagConstraints(2, 0, 1, 2, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(2, 2, 2, 2), 0, 0)); titleLabel.setVerticalTextPosition(JLabel.CENTER); titleLabel.setFont(new Font("dialog", Font.BOLD, 14)); titleLabel.setForeground(Color.black); descriptionLabel.setFont(new Font("dialog", 0, 10)); add(panel, new GridBagConstraints(0, 0, 1, 0, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 2, 2, 2), 0, 0)); } } /** * Set the icon for the panel. * * @param icon - the relative icon based on classpath. ex. /com/jivesoftware/images/Foo.gif. */ public final void setIcon(Icon icon) { titleLabel.setIcon(icon); } /** * Set the main title for this panel. * * @param title - main title. */ public final void setTitle(String title) { titleLabel.setText(title); } /** * Set a brief description which will be displayed below the main title. * * @param desc - brief description */ public final void setDescription(String desc) { desc = "<HTML><BODY>"+desc+"</HTML></BODY>"; descriptionLabel.setText(desc); } public class ImagePanel extends JPanel { private static final long serialVersionUID = 5155908601530113727L; final ImageIcon icons = Default.getImageIcon(Default.SECONDARY_BACKGROUND_IMAGE); public ImagePanel() { } public ImagePanel(LayoutManager layout) { super(layout); } public void paintComponent(Graphics g) { Image backgroundImage = icons.getImage(); 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); } } }