SwingFrame.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package gnu.kawa.swingviews;
  2. import gnu.kawa.models.*;
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import javax.swing.*;
  6. import gnu.lists.*;
  7. public class SwingFrame extends JFrame
  8. implements gnu.kawa.models.Window
  9. {
  10. SwingDisplay display;
  11. public Display getDisplay () { return display; }
  12. public SwingFrame (String title,
  13. javax.swing.JMenuBar menubar,
  14. Object contents)
  15. {
  16. JFrame fr = this;
  17. if (title != null)
  18. fr.setTitle(title);
  19. if (menubar != null)
  20. fr.setJMenuBar(menubar);
  21. Container pane = getContentPane();
  22. pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS));
  23. addComponent(contents);
  24. }
  25. public void setContent (Object content)
  26. {
  27. setContentPane(new JPanel());
  28. addComponent(content);
  29. pack();
  30. }
  31. public void setMenuBar (Object menubar)
  32. {
  33. setJMenuBar((javax.swing.JMenuBar) menubar);
  34. }
  35. public void addComponent (Object contents)
  36. {
  37. if (contents instanceof gnu.lists.FString || contents instanceof String)
  38. getContentPane().add(new JLabel(contents.toString()));
  39. else if (contents instanceof AbstractSequence)
  40. {
  41. AbstractSequence seq = (AbstractSequence) contents;
  42. for (int iter = seq.startPos(); (iter = seq.nextPos(iter)) != 0; )
  43. addComponent(seq.getPosPrevious(iter));
  44. }
  45. else if (contents instanceof Viewable)
  46. ((Viewable) contents).makeView(getDisplay(), getContentPane());
  47. else if (contents instanceof Picture)
  48. getContentPane().add(new SwingPicture((Picture) contents));
  49. else if (contents != null)
  50. getContentPane().add((Component) contents);
  51. }
  52. public void open ()
  53. {
  54. pack();
  55. setVisible(true);
  56. }
  57. }