home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / plaf / basic / BasicInternalFrameUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  9.6 KB  |  420 lines

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.DefaultDesktopManager;
  4. import com.sun.java.swing.DesktopManager;
  5. import com.sun.java.swing.Icon;
  6. import com.sun.java.swing.JComponent;
  7. import com.sun.java.swing.JInternalFrame;
  8. import com.sun.java.swing.LookAndFeel;
  9. import com.sun.java.swing.UIManager;
  10. import com.sun.java.swing.plaf.ComponentUI;
  11. import com.sun.java.swing.plaf.InternalFrameUI;
  12. import com.sun.java.swing.plaf.UIResource;
  13. import java.awt.Component;
  14. import java.awt.Container;
  15. import java.awt.Cursor;
  16. import java.awt.Dimension;
  17. import java.awt.IllegalComponentStateException;
  18. import java.awt.Insets;
  19. import java.awt.LayoutManager;
  20. import java.awt.event.MouseEvent;
  21. import java.awt.event.MouseListener;
  22. import java.awt.event.MouseMotionListener;
  23. import java.beans.PropertyChangeEvent;
  24. import java.beans.PropertyChangeListener;
  25. import java.io.Serializable;
  26. import java.util.EventListener;
  27. import java.util.EventObject;
  28.  
  29. public class BasicInternalFrameUI extends InternalFrameUI implements LayoutManager, PropertyChangeListener, Serializable, MouseListener {
  30.    protected JInternalFrame frame;
  31.    protected EventListener borderListener;
  32.    protected JComponent northPane;
  33.    protected JComponent southPane;
  34.    protected JComponent westPane;
  35.    protected JComponent eastPane;
  36.    protected static DesktopManager sharedDesktopManager;
  37.  
  38.    public static ComponentUI createUI(JComponent var0) {
  39.       return new BasicInternalFrameUI((JInternalFrame)var0);
  40.    }
  41.  
  42.    public BasicInternalFrameUI(JInternalFrame var1) {
  43.    }
  44.  
  45.    public void installUI(JComponent var1) {
  46.       this.frame = (JInternalFrame)var1;
  47.       this.frame.add(this.frame.getRootPane(), "Center");
  48.       this.installDefaults(this.frame);
  49.       this.borderListener = this.createBorderListener(this.frame);
  50.       this.frame.addPropertyChangeListener(this);
  51.       this.frame.setLayout(this);
  52.       this.setNorthPane(this.createNorthPane(this.frame));
  53.       this.setSouthPane(this.createSouthPane(this.frame));
  54.       this.setEastPane(this.createEastPane(this.frame));
  55.       this.setWestPane(this.createWestPane(this.frame));
  56.       this.installMouseHandlers(this.frame);
  57.       this.frame.setOpaque(true);
  58.       this.frame.setMinimumSize(new Dimension(120, 24));
  59.    }
  60.  
  61.    public void uninstallUI(JComponent var1) {
  62.       if (var1 != this.frame) {
  63.          throw new IllegalComponentStateException(this + " was asked to deinstall() " + var1 + " when it only knows about " + this.frame + ".");
  64.       } else {
  65.          this.uninstallDefaults(this.frame);
  66.          this.frame.setCursor(Cursor.getPredefinedCursor(0));
  67.          this.setNorthPane((JComponent)null);
  68.          this.setSouthPane((JComponent)null);
  69.          this.setEastPane((JComponent)null);
  70.          this.setWestPane((JComponent)null);
  71.          this.frame.setLayout((LayoutManager)null);
  72.          this.deinstallMouseHandlers(this.frame);
  73.          this.borderListener = null;
  74.          this.frame.removePropertyChangeListener(this);
  75.          this.frame.remove(this.frame.getRootPane());
  76.          this.frame = null;
  77.       }
  78.    }
  79.  
  80.    protected void installDefaults(JInternalFrame var1) {
  81.       Icon var2 = var1.getFrameIcon();
  82.       if (var2 == null || var2 instanceof UIResource) {
  83.          var1.setFrameIcon(UIManager.getIcon("InternalFrame.icon"));
  84.       }
  85.  
  86.       LookAndFeel.installBorder(var1, "InternalFrame.border");
  87.    }
  88.  
  89.    protected void uninstallDefaults(JInternalFrame var1) {
  90.       Icon var2 = var1.getFrameIcon();
  91.       if (var2 instanceof UIResource) {
  92.          var1.setFrameIcon((Icon)null);
  93.       }
  94.  
  95.       LookAndFeel.uninstallBorder(var1);
  96.    }
  97.  
  98.    public Dimension getPreferredSize(JComponent var1) {
  99.       return this.frame == var1 ? this.frame.getLayout().preferredLayoutSize(var1) : new Dimension(100, 100);
  100.    }
  101.  
  102.    public Dimension getMinimumSize(JComponent var1) {
  103.       return this.frame == var1 ? this.frame.getLayout().minimumLayoutSize(var1) : new Dimension(0, 0);
  104.    }
  105.  
  106.    public Dimension getMaximumSize(JComponent var1) {
  107.       return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
  108.    }
  109.  
  110.    public void propertyChange(PropertyChangeEvent var1) {
  111.       String var2 = var1.getPropertyName();
  112.       JInternalFrame var3 = (JInternalFrame)((EventObject)var1).getSource();
  113.       Object var4 = var1.getNewValue();
  114.       Object var5 = var1.getOldValue();
  115.       if ("rootPane".equals(var2)) {
  116.          if (var5 != null) {
  117.             this.frame.remove((Component)var5);
  118.          }
  119.  
  120.          if (var4 != null) {
  121.             this.frame.add((Component)var4);
  122.             return;
  123.          }
  124.       } else if ("isClosed".equals(var2)) {
  125.          if (var4 == Boolean.TRUE) {
  126.             this.closeFrame(var3);
  127.             return;
  128.          }
  129.       } else {
  130.          if ("isMaximum".equals(var2)) {
  131.             if (var4 == Boolean.TRUE) {
  132.                this.maximizeFrame(var3);
  133.                return;
  134.             }
  135.  
  136.             this.minimizeFrame(var3);
  137.             return;
  138.          }
  139.  
  140.          if ("isIcon".equals(var2)) {
  141.             if (var4 == Boolean.TRUE) {
  142.                this.iconifyFrame(var3);
  143.                return;
  144.             }
  145.  
  146.             this.deiconifyFrame(var3);
  147.             return;
  148.          }
  149.  
  150.          if ("isSelected".equals(var2)) {
  151.             if (var4 == Boolean.TRUE && var5 == Boolean.FALSE) {
  152.                this.activateFrame(var3);
  153.                return;
  154.             }
  155.  
  156.             if (var4 == Boolean.FALSE && var5 == Boolean.TRUE) {
  157.                this.deactivateFrame(var3);
  158.             }
  159.          }
  160.       }
  161.  
  162.    }
  163.  
  164.    protected void replacePane(JComponent var1, JComponent var2) {
  165.       if (var1 != null) {
  166.          this.deinstallMouseHandlers(var1);
  167.          this.frame.remove(var1);
  168.       }
  169.  
  170.       if (var2 != null) {
  171.          this.frame.add(var2);
  172.          this.installMouseHandlers(var2);
  173.       }
  174.  
  175.    }
  176.  
  177.    protected void deinstallMouseHandlers(JComponent var1) {
  178.       if (var1 != null) {
  179.          if (this.borderListener instanceof MouseListener) {
  180.             ((Component)var1).removeMouseListener((MouseListener)this.borderListener);
  181.          }
  182.  
  183.          if (this.borderListener instanceof MouseMotionListener) {
  184.             ((Component)var1).removeMouseMotionListener((MouseMotionListener)this.borderListener);
  185.          }
  186.       }
  187.  
  188.    }
  189.  
  190.    protected void installMouseHandlers(JComponent var1) {
  191.       if (var1 != null) {
  192.          if (this.borderListener instanceof MouseListener) {
  193.             ((Component)var1).addMouseListener((MouseListener)this.borderListener);
  194.          }
  195.  
  196.          if (this.borderListener instanceof MouseMotionListener) {
  197.             ((Component)var1).addMouseMotionListener((MouseMotionListener)this.borderListener);
  198.          }
  199.       }
  200.  
  201.    }
  202.  
  203.    protected JComponent createNorthPane(JInternalFrame var1) {
  204.       return new BasicInternalFrameTitlePane(var1);
  205.    }
  206.  
  207.    protected JComponent createSouthPane(JInternalFrame var1) {
  208.       return null;
  209.    }
  210.  
  211.    protected JComponent createWestPane(JInternalFrame var1) {
  212.       return null;
  213.    }
  214.  
  215.    protected JComponent createEastPane(JInternalFrame var1) {
  216.       return null;
  217.    }
  218.  
  219.    protected EventListener createBorderListener(JInternalFrame var1) {
  220.       return new BorderListener(this);
  221.    }
  222.  
  223.    public JComponent getNorthPane() {
  224.       return this.northPane;
  225.    }
  226.  
  227.    public void setNorthPane(JComponent var1) {
  228.       this.replacePane(this.northPane, var1);
  229.       this.northPane = var1;
  230.    }
  231.  
  232.    public JComponent getSouthPane() {
  233.       return this.southPane;
  234.    }
  235.  
  236.    public void setSouthPane(JComponent var1) {
  237.       this.southPane = var1;
  238.    }
  239.  
  240.    public JComponent getWestPane() {
  241.       return this.westPane;
  242.    }
  243.  
  244.    public void setWestPane(JComponent var1) {
  245.       this.westPane = var1;
  246.    }
  247.  
  248.    public JComponent getEastPane() {
  249.       return this.eastPane;
  250.    }
  251.  
  252.    public void setEastPane(JComponent var1) {
  253.       this.eastPane = var1;
  254.    }
  255.  
  256.    public void addLayoutComponent(String var1, Component var2) {
  257.    }
  258.  
  259.    public void removeLayoutComponent(Component var1) {
  260.    }
  261.  
  262.    public Dimension preferredLayoutSize(Container var1) {
  263.       Insets var3 = this.frame.getInsets();
  264.       Dimension var2 = this.frame.getRootPane().getPreferredSize();
  265.       var2.width += var3.left + var3.right;
  266.       var2.height += var3.top + var3.bottom;
  267.       if (this.getNorthPane() != null) {
  268.          Dimension var4 = this.getNorthPane().getPreferredSize();
  269.          var2.width = Math.max(var4.width, var2.width);
  270.          var2.height += var4.height;
  271.       }
  272.  
  273.       if (this.getSouthPane() != null) {
  274.          Dimension var5 = this.getSouthPane().getPreferredSize();
  275.          var2.width = Math.max(var5.width, var2.width);
  276.          var2.height += var5.height;
  277.       }
  278.  
  279.       if (this.getEastPane() != null) {
  280.          Dimension var6 = this.getEastPane().getPreferredSize();
  281.          var2.width += var6.width;
  282.          var2.height = Math.max(var6.height, var2.height);
  283.       }
  284.  
  285.       if (this.getWestPane() != null) {
  286.          Dimension var7 = this.getWestPane().getPreferredSize();
  287.          var2.width += var7.width;
  288.          var2.height = Math.max(var7.height, var2.height);
  289.       }
  290.  
  291.       return var2;
  292.    }
  293.  
  294.    public Dimension minimumLayoutSize(Container var1) {
  295.       Insets var3 = this.frame.getInsets();
  296.       Dimension var2 = this.frame.getRootPane().getMinimumSize();
  297.       var2.width += var3.left + var3.right;
  298.       var2.height += var3.top + var3.bottom;
  299.       if (this.getNorthPane() != null) {
  300.          Dimension var4 = this.getNorthPane().getMinimumSize();
  301.          var2.width = Math.max(var4.width, var2.width);
  302.          var2.height += var4.height;
  303.       }
  304.  
  305.       if (this.getSouthPane() != null) {
  306.          Dimension var5 = this.getSouthPane().getMinimumSize();
  307.          var2.width = Math.max(var5.width, var2.width);
  308.          var2.height += var5.height;
  309.       }
  310.  
  311.       if (this.getEastPane() != null) {
  312.          Dimension var6 = this.getEastPane().getMinimumSize();
  313.          var2.width += var6.width;
  314.          var2.height = Math.max(var6.height, var2.height);
  315.       }
  316.  
  317.       if (this.getWestPane() != null) {
  318.          Dimension var7 = this.getWestPane().getMinimumSize();
  319.          var2.width += var7.width;
  320.          var2.height = Math.max(var7.height, var2.height);
  321.       }
  322.  
  323.       return var2;
  324.    }
  325.  
  326.    public void layoutContainer(Container var1) {
  327.       Insets var2 = this.frame.getInsets();
  328.       int var3 = var2.left;
  329.       int var4 = var2.top;
  330.       int var5 = this.frame.getWidth() - var2.left - var2.right;
  331.       int var6 = this.frame.getHeight() - var2.top - var2.bottom;
  332.       if (this.getNorthPane() != null) {
  333.          Dimension var7 = this.getNorthPane().getPreferredSize();
  334.          this.getNorthPane().setBounds(var3, var4, var5, var7.height);
  335.          var4 += var7.height;
  336.          var6 -= var7.height;
  337.       }
  338.  
  339.       if (this.getSouthPane() != null) {
  340.          Dimension var8 = this.getSouthPane().getPreferredSize();
  341.          this.getSouthPane().setBounds(var3, this.frame.getHeight() - var2.bottom - var8.height, var5, var8.height);
  342.          var6 -= var8.height;
  343.       }
  344.  
  345.       if (this.getWestPane() != null) {
  346.          Dimension var9 = this.getWestPane().getPreferredSize();
  347.          this.getWestPane().setBounds(var3, var4, var9.width, var6);
  348.          var5 -= var9.width;
  349.          var3 += var9.width;
  350.       }
  351.  
  352.       if (this.getEastPane() != null) {
  353.          Dimension var10 = this.getEastPane().getPreferredSize();
  354.          this.getEastPane().setBounds(var5 - var10.width, var4, var10.width, var6);
  355.          var5 -= var10.width;
  356.       }
  357.  
  358.       if (this.frame.getRootPane() != null) {
  359.          this.frame.getRootPane().setBounds(var3, var4, var5, var6);
  360.       }
  361.  
  362.    }
  363.  
  364.    protected DesktopManager getDesktopManager() {
  365.       if (this.frame.getDesktopPane() != null && this.frame.getDesktopPane().getDesktopManager() != null) {
  366.          return this.frame.getDesktopPane().getDesktopManager();
  367.       } else {
  368.          if (sharedDesktopManager == null) {
  369.             sharedDesktopManager = new DefaultDesktopManager();
  370.          }
  371.  
  372.          return sharedDesktopManager;
  373.       }
  374.    }
  375.  
  376.    protected void closeFrame(JInternalFrame var1) {
  377.       this.getDesktopManager().closeFrame(var1);
  378.    }
  379.  
  380.    protected void maximizeFrame(JInternalFrame var1) {
  381.       this.getDesktopManager().maximizeFrame(var1);
  382.    }
  383.  
  384.    protected void minimizeFrame(JInternalFrame var1) {
  385.       this.getDesktopManager().minimizeFrame(var1);
  386.    }
  387.  
  388.    protected void iconifyFrame(JInternalFrame var1) {
  389.       this.getDesktopManager().iconifyFrame(var1);
  390.    }
  391.  
  392.    protected void deiconifyFrame(JInternalFrame var1) {
  393.       this.getDesktopManager().deiconifyFrame(var1);
  394.    }
  395.  
  396.    protected void activateFrame(JInternalFrame var1) {
  397.       this.getDesktopManager().activateFrame(var1);
  398.    }
  399.  
  400.    protected void deactivateFrame(JInternalFrame var1) {
  401.       this.getDesktopManager().deactivateFrame(var1);
  402.    }
  403.  
  404.    public void mousePressed(MouseEvent var1) {
  405.       ((BorderListener)this.borderListener).mousePressed(var1);
  406.    }
  407.  
  408.    public void mouseClicked(MouseEvent var1) {
  409.    }
  410.  
  411.    public void mouseReleased(MouseEvent var1) {
  412.    }
  413.  
  414.    public void mouseEntered(MouseEvent var1) {
  415.    }
  416.  
  417.    public void mouseExited(MouseEvent var1) {
  418.    }
  419. }
  420.