00001 package edu.stanford.hci.r3.util.components.ribbons;
00002
00003 import java.awt.BorderLayout;
00004 import java.awt.Color;
00005 import java.awt.Component;
00006 import java.awt.GradientPaint;
00007 import java.awt.Graphics;
00008 import java.awt.Graphics2D;
00009
00010 import javax.swing.BorderFactory;
00011 import javax.swing.JPanel;
00012 import javax.swing.SpringLayout;
00013
00014 import edu.stanford.hci.r3.util.graphics.GraphicsUtils;
00015 import edu.stanford.hci.r3.util.layout.SpringLayoutUtils;
00016
00028 public class RibbonPanel extends JPanel implements RibbonConstants {
00029
00033 private String displayName;
00034
00038 private JPanel toolPanel;
00039
00043 public RibbonPanel(String name) {
00044 displayName = name;
00045 super.setLayout(new BorderLayout());
00046 super.add(getToolPanel(), BorderLayout.CENTER);
00047 super.add(new RibbonPanelHeader(displayName), BorderLayout.SOUTH);
00048 setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 1));
00049 setBackground(Color.GRAY);
00050 }
00051
00057 public Component add(Component comp) {
00058 return getToolPanel().add(comp);
00059 }
00060
00066 @Override
00067 public Component add(Component comp, int index) {
00068 return getToolPanel().add(comp, index);
00069 }
00070
00076 @Override
00077 public void add(Component comp, Object constraints) {
00078 getToolPanel().add(comp, constraints);
00079 }
00080
00086 @Override
00087 public void add(Component comp, Object constraints, int index) {
00088 getToolPanel().add(comp, constraints, index);
00089 }
00090
00097 public JPanel getToolPanel() {
00098 if (toolPanel == null) {
00099 toolPanel = new JPanel() {
00100 private final GradientPaint gradient = new GradientPaint(0, 0, PANEL_BEGIN_COLOR, 0,
00101 getHeight(), PANEL_END_COLOR, false);
00102
00103 @Override
00104 protected void paintComponent(Graphics g) {
00105 super.paintComponent(g);
00106 final Graphics2D g2d = (Graphics2D) g;
00107 g2d.setRenderingHints(GraphicsUtils.getBestRenderingHints());
00108
00109 g2d.setPaint(gradient);
00110 g2d.fillRect(0, 0, getWidth(), getHeight());
00111 }
00112 };
00113 toolPanel.setLayout(new SpringLayout());
00114 }
00115 return toolPanel;
00116 }
00117
00124 public void layoutComponents(int rows, int cols) {
00125 SpringLayoutUtils.makeCompactGrid(getToolPanel(), rows, cols, 5, 5, 5, 5);
00126 }
00127
00131 public void layoutComponents() {
00132 SpringLayoutUtils.makeCompactGrid(getToolPanel(), 1, toolPanel.getComponentCount(), 5, 5, 5, 5);
00133 }
00134 }