1. /*
  2. * @(#)SynthPanelUI.java 1.9 03/01/23
  3. *
  4. * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.java.swing.plaf.gtk;
  8. import java.awt.*;
  9. import javax.swing.*;
  10. import javax.swing.border.*;
  11. import javax.swing.plaf.*;
  12. import java.awt.*;
  13. import java.awt.event.*;
  14. import java.beans.*;
  15. /**
  16. * BasicPanel implementation
  17. *
  18. * @version 1.9, 01/23/03 (based on BasicPanelUI v 1.7)
  19. * @author Steve Wilson
  20. */
  21. class SynthPanelUI extends PanelUI implements PropertyChangeListener, SynthUI {
  22. private SynthStyle style;
  23. public static ComponentUI createUI(JComponent c) {
  24. return new SynthPanelUI();
  25. }
  26. public void installUI(JComponent c) {
  27. JPanel p = (JPanel)c;
  28. super.installUI(p);
  29. installDefaults(p);
  30. installListeners(p);
  31. }
  32. public void uninstallUI(JComponent c) {
  33. JPanel p = (JPanel)c;
  34. super.uninstallUI(c);
  35. uninstallListeners(p);
  36. uninstallDefaults(p);
  37. }
  38. protected void installListeners(JPanel p) {
  39. p.addPropertyChangeListener(this);
  40. }
  41. protected void installDefaults(JPanel p) {
  42. fetchStyle(p);
  43. }
  44. private void fetchStyle(JPanel c) {
  45. SynthContext context = getContext(c, ENABLED);
  46. style = SynthLookAndFeel.updateStyle(context, this);
  47. context.dispose();
  48. }
  49. protected void uninstallDefaults(JPanel p) {
  50. SynthContext context = getContext(p, ENABLED);
  51. style.uninstallDefaults(context);
  52. context.dispose();
  53. style = null;
  54. }
  55. protected void uninstallListeners(JPanel p) {
  56. p.removePropertyChangeListener((PropertyChangeListener)
  57. SynthLookAndFeel.getSynthEventListener(p));
  58. }
  59. public SynthContext getContext(JComponent c) {
  60. return getContext(c, getComponentState(c));
  61. }
  62. private SynthContext getContext(JComponent c, int state) {
  63. return SynthContext.getContext(SynthContext.class, c,
  64. SynthLookAndFeel.getRegion(c), style, state);
  65. }
  66. private Region getRegion(JComponent c) {
  67. return SynthLookAndFeel.getRegion(c);
  68. }
  69. private int getComponentState(JComponent c) {
  70. return SynthLookAndFeel.getComponentState(c);
  71. }
  72. public void update(Graphics g, JComponent c) {
  73. SynthContext context = getContext(c);
  74. SynthLookAndFeel.update(context, g);
  75. paint(context, g);
  76. context.dispose();
  77. }
  78. public void paint(Graphics g, JComponent c) {
  79. SynthContext context = getContext(c);
  80. paint(context, g);
  81. context.dispose();
  82. }
  83. protected void paint(SynthContext context, Graphics g) {
  84. // do actual painting
  85. }
  86. public void propertyChange(PropertyChangeEvent pce) {
  87. if (SynthLookAndFeel.shouldUpdateStyle(pce)) {
  88. fetchStyle((JPanel)pce.getSource());
  89. }
  90. }
  91. }