SwingButton.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package gnu.kawa.swingviews;
  2. import gnu.kawa.models.*;
  3. import javax.swing.*;
  4. import java.awt.Color;
  5. public class SwingButton
  6. extends JButton
  7. implements ModelListener
  8. {
  9. Button model;
  10. public SwingButton (Button model)
  11. {
  12. super(model.getText());
  13. setModel(new SwModel(model));
  14. this.model = model;
  15. Object action = model.getAction();
  16. if (action != null)
  17. addActionListener(SwingDisplay.makeActionListener(action));
  18. model.addListener(this);
  19. Color fg = model.getForeground();
  20. if (fg != null)
  21. super.setBackground(fg);
  22. Color bg = model.getBackground();
  23. if (bg != null)
  24. super.setBackground(bg);
  25. }
  26. public void setText(String text)
  27. {
  28. if (model == null)
  29. super.setText(text);
  30. else
  31. model.setText(text);
  32. }
  33. public void setForeground (Color fg)
  34. {
  35. if (model == null)
  36. super.setForeground(fg);
  37. else
  38. model.setForeground(fg);
  39. }
  40. public void setBackground (Color bg)
  41. {
  42. if (model == null)
  43. super.setBackground(bg);
  44. else
  45. model.setBackground(bg);
  46. }
  47. public void modelUpdated (Model model, Object key)
  48. {
  49. if (key == "text" && model == this.model)
  50. super.setText(this.model.getText());
  51. else if (key == "foreground" && model == this.model)
  52. super.setForeground(this.model.getForeground());
  53. else if (key == "background" && model == this.model)
  54. super.setBackground(this.model.getBackground());
  55. }
  56. }
  57. class SwModel extends DefaultButtonModel
  58. {
  59. Button model;
  60. public SwModel (Button model)
  61. {
  62. this.model = model;
  63. setActionCommand(model.getText());
  64. }
  65. }