00001 package edu.stanford.hci.r3.util.components.ribbons;
00002
00003 import static edu.stanford.hci.r3.util.components.ribbons.RibbonConstants.CATEGORY_LABEL_FONT;
00004 import static edu.stanford.hci.r3.util.components.ribbons.RibbonConstants.NOT_SELECTED_COLOR;
00005 import static edu.stanford.hci.r3.util.components.ribbons.RibbonConstants.SELECTED_COLOR;
00006
00007 import java.awt.CardLayout;
00008 import java.awt.Color;
00009 import java.awt.Graphics;
00010 import java.awt.Graphics2D;
00011 import java.awt.event.MouseAdapter;
00012 import java.awt.event.MouseEvent;
00013
00014 import javax.swing.JLabel;
00015 import javax.swing.JPanel;
00016
00017 import edu.stanford.hci.r3.util.graphics.GraphicsUtils;
00018
00031 public class RibbonCategoryLabel extends JPanel {
00032
00033 private boolean isSelected;
00034
00035 private JLabel labelText;
00036
00037 private CardLayout layout;
00038
00039 private String name;
00040
00041 private RibbonToolbar parentToolbar;
00042
00043 private JPanel toolPanel;
00044
00049 public RibbonCategoryLabel(String categoryName, RibbonToolbar toolbar) {
00050 parentToolbar = toolbar;
00051 name = categoryName;
00052 labelText = new JLabel(name);
00053 labelText.setFont(CATEGORY_LABEL_FONT);
00054 add(labelText);
00055 addMouseListener(getClickListener());
00056 setOpaque(false);
00057 }
00058
00062 private MouseAdapter getClickListener() {
00063 return new MouseAdapter() {
00064 public void mousePressed(MouseEvent e) {
00065 System.out.println("Clicked on Category Label: " + name);
00066 if (layout != null) {
00067 layout.show(toolPanel, name);
00068 parentToolbar.setSelectedLabel(RibbonCategoryLabel.this);
00069 }
00070 }
00071 };
00072 }
00073
00077 protected void paintComponent(Graphics g) {
00078 super.paintComponent(g);
00079 final Graphics2D g2d = (Graphics2D) g;
00080 g2d.setRenderingHints(GraphicsUtils.getBestRenderingHints());
00081
00082
00083 final int w = getWidth();
00084 final int h = getHeight();
00085
00086 if (isSelected) {
00087 g2d.setColor(SELECTED_COLOR);
00088 g2d.fillRoundRect(0, 0, w, h + 14, 14, 14);
00089 } else {
00090 g2d.setColor(NOT_SELECTED_COLOR);
00091 g2d.fillRoundRect(0, 0, w, h + 14, 14, 14);
00092
00093 }
00094 }
00095
00100 public void setCardLayoutInfo(CardLayout cardLayout, JPanel tools) {
00101 layout = cardLayout;
00102 toolPanel = tools;
00103 }
00104
00109 public void setSelected(boolean selected) {
00110 isSelected = selected;
00111
00112 if (isSelected) {
00113 labelText.setForeground(Color.BLACK);
00114 } else {
00115 labelText.setForeground(Color.GRAY);
00116 }
00117 repaint();
00118 }
00119
00120 }