01: package org.jvnet.substance.netbeans;
02:
03: import java.awt.Graphics;
04: import java.awt.Graphics2D;
05:
06: import javax.swing.*;
07: import javax.swing.plaf.ComponentUI;
08: import org.jvnet.lafwidget.utils.RenderingUtils;
09:
10: import org.jvnet.substance.utils.MemoryAnalyzer;
11: import org.jvnet.substance.SubstanceLookAndFeel;
12: import org.jvnet.substance.button.ClassicButtonShaper;
13: import org.netbeans.swing.tabcontrol.SlidingButton;
14: import org.netbeans.swing.tabcontrol.SlidingButtonUI;
15:
16: public class SubstanceSlidingButtonUI extends SlidingButtonUI {
17: // Has the shared instance defaults been initialized?
18: private boolean defaults_initialized = false;
19:
20: protected JToggleButton hiddenToggle;
21:
22: protected NetbeansButtonBackgroundDelegate backgroundDelegate;
23:
24: private static final SubstanceSlidingButtonUI INSTANCE = new SubstanceSlidingButtonUI();
25:
26: private SubstanceSlidingButtonUI() {
27: this .backgroundDelegate = new NetbeansButtonBackgroundDelegate();
28: }
29:
30: public static ComponentUI createUI(JComponent c) {
31: SlidingButton button = (SlidingButton) c;
32: button.putClientProperty(
33: SubstanceLookAndFeel.BUTTON_SHAPER_PROPERTY,
34: ClassicButtonShaper.class.getName());
35: if (MemoryAnalyzer.isRunning())
36: MemoryAnalyzer.enqueueUsage("Sliding " + button.getText());
37: return INSTANCE;
38: }
39:
40: public void installDefaults(AbstractButton b) {
41: super .installDefaults(b);
42: if (!defaults_initialized) {
43: hiddenToggle = new JToggleButton();
44: hiddenToggle.setText("");
45: JToolBar bar = new JToolBar();
46: bar.setRollover(true);
47: bar.add(hiddenToggle);
48: defaults_initialized = true;
49: }
50: b.setFont(SubstanceLookAndFeel.getFontPolicy().getFontSet(
51: "Substance", null).getControlFont());
52: }
53:
54: protected void uninstallDefaults(AbstractButton b) {
55: super .uninstallDefaults(b);
56: defaults_initialized = false;
57: }
58:
59: protected void paintBackground(Graphics2D g, AbstractButton button) {
60: this .backgroundDelegate.updateBackground(g, button, 0);
61: hiddenToggle.setBackground(button.getBackground());
62: hiddenToggle.paint(g);
63: }
64:
65: protected void paintButtonPressed(Graphics g, AbstractButton b) {
66: this .backgroundDelegate.updateBackground(g, b, 5);
67: hiddenToggle.setBackground(b.getBackground());
68: hiddenToggle.paint(g);
69: }
70:
71: @Override
72: public void update(Graphics graphics, JComponent jComponent) {
73: Graphics2D g2 = (Graphics2D) graphics.create();
74: RenderingUtils.installDesktopHints(g2);
75: super.update(g2, jComponent);
76: g2.dispose();
77: }
78: }
|