home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / DefaultDesktopManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  5.9 KB  |  327 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.Graphics;
  8. import java.awt.Point;
  9. import java.awt.Rectangle;
  10. import java.beans.PropertyVetoException;
  11. import java.io.Serializable;
  12.  
  13. public class DefaultDesktopManager implements DesktopManager, Serializable {
  14.    static final String PREVIOUS_BOUNDS_PROPERTY = "previousBounds";
  15.    static final String HAS_BEEN_ICONIFIED_PROPERTY = "wasIconOnce";
  16.    static final int DEFAULT_DRAG_MODE = 0;
  17.    static final int OUTLINE_DRAG_MODE = 1;
  18.    int dragMode = 0;
  19.    private static JInternalFrame currentActiveFrame = null;
  20.    transient Point currentLoc = null;
  21.  
  22.    public void activateFrame(JInternalFrame var1) {
  23.       Container var2 = ((Component)var1).getParent();
  24.       if (var2 == null) {
  25.          var2 = var1.getDesktopIcon().getParent();
  26.          if (var2 == null) {
  27.             return;
  28.          }
  29.       }
  30.  
  31.       if (currentActiveFrame == null) {
  32.          currentActiveFrame = var1;
  33.       } else if (currentActiveFrame != var1) {
  34.          if (currentActiveFrame.isSelected()) {
  35.             try {
  36.                currentActiveFrame.setSelected(false);
  37.             } catch (PropertyVetoException var3) {
  38.             }
  39.          }
  40.  
  41.          currentActiveFrame = var1;
  42.       }
  43.  
  44.       var1.moveToFront();
  45.    }
  46.  
  47.    public void beginDraggingFrame(JComponent var1) {
  48.       JDesktopPane var2 = this.getDesktopPane(var1);
  49.       String var3 = (String)((JComponent)var2).getClientProperty("JDesktopPane.dragMode");
  50.       if (var3 == null) {
  51.          this.dragMode = 0;
  52.       } else if (var3.equals("outline")) {
  53.          this.dragMode = 1;
  54.       }
  55.  
  56.    }
  57.  
  58.    public void beginResizingFrame(JComponent var1, int var2) {
  59.    }
  60.  
  61.    public void closeFrame(JInternalFrame var1) {
  62.       if (((Component)var1).getParent() != null) {
  63.          Container var2 = ((Component)var1).getParent();
  64.          var2.remove(var1);
  65.          ((Component)var2).repaint(((JComponent)var1).getX(), ((JComponent)var1).getY(), ((JComponent)var1).getWidth(), ((JComponent)var1).getHeight());
  66.       }
  67.  
  68.       this.removeIconFor(var1);
  69.       if (this.getPreviousBounds(var1) != null) {
  70.          this.setPreviousBounds(var1, (Rectangle)null);
  71.       }
  72.  
  73.       if (this.wasIcon(var1)) {
  74.          this.setWasIcon(var1, (Boolean)null);
  75.       }
  76.  
  77.    }
  78.  
  79.    public void deactivateFrame(JInternalFrame var1) {
  80.       if (currentActiveFrame == var1) {
  81.          currentActiveFrame = null;
  82.       }
  83.  
  84.    }
  85.  
  86.    public void deiconifyFrame(JInternalFrame var1) {
  87.       JInternalFrame.JDesktopIcon var2 = var1.getDesktopIcon();
  88.       if (((Component)var2).getParent() != null) {
  89.          ((Component)var2).getParent().add(var1);
  90.          this.removeIconFor(var1);
  91.  
  92.          try {
  93.             var1.setSelected(true);
  94.          } catch (PropertyVetoException var3) {
  95.          }
  96.       }
  97.  
  98.    }
  99.  
  100.    public void dragFrame(JComponent var1, int var2, int var3) {
  101.       if (this.dragMode == 0) {
  102.          this.setBoundsForFrame(var1, var2, var3, var1.getWidth(), var1.getHeight());
  103.       } else {
  104.          JDesktopPane var4 = this.getDesktopPane(var1);
  105.          Graphics var5 = ((JComponent)var4).getGraphics();
  106.          var5.setXORMode(Color.white);
  107.          if (this.currentLoc != null) {
  108.             var5.drawRect(this.currentLoc.x, this.currentLoc.y, var1.getWidth() - 1, var1.getHeight() - 1);
  109.          }
  110.  
  111.          var5.drawRect(var2, var3, var1.getWidth() - 1, var1.getHeight() - 1);
  112.          this.currentLoc = new Point(var2, var3);
  113.          var5.setPaintMode();
  114.       }
  115.  
  116.    }
  117.  
  118.    public void endDraggingFrame(JComponent var1) {
  119.       if (this.dragMode == 1 && this.currentLoc != null) {
  120.          this.setBoundsForFrame(var1, this.currentLoc.x, this.currentLoc.y, var1.getWidth(), var1.getHeight());
  121.          this.currentLoc = null;
  122.       }
  123.  
  124.    }
  125.  
  126.    public void endResizingFrame(JComponent var1) {
  127.    }
  128.  
  129.    protected Rectangle getBoundsForIconOf(JInternalFrame var1) {
  130.       Rectangle var2 = ((Component)var1).getParent().getBounds();
  131.       Dimension var3 = var1.getDesktopIcon().getPreferredSize();
  132.       int var6 = var3.width;
  133.       int var7 = var3.height;
  134.       int var4 = 0;
  135.       int var5 = var2.height - var7;
  136.       if (((Component)var1).getParent() == null && var1.getDesktopIcon().getParent() == null) {
  137.          return new Rectangle(var4, var5, var6, var7);
  138.       } else {
  139.          Container var8 = ((Component)var1).getParent();
  140.          if (var8 == null) {
  141.             var8 = var1.getDesktopIcon().getParent();
  142.          }
  143.  
  144.          int var9 = var8.getComponentCount();
  145.          Component[] var10 = var8.getComponents();
  146.          int var13 = 0;
  147.          int var14 = var2.height;
  148.  
  149.          for(int var12 = var9 - 1; var12 >= 0; --var12) {
  150.             JInternalFrame var15 = null;
  151.             if (var8.getComponent(var12) instanceof JInternalFrame) {
  152.                var15 = (JInternalFrame)var8.getComponent(var12);
  153.             } else if (var8.getComponent(var12) instanceof JInternalFrame.JDesktopIcon) {
  154.                var15 = ((JInternalFrame.JDesktopIcon)var8.getComponent(var12)).getInternalFrame();
  155.             }
  156.  
  157.             if (var15 != null && var15 != var1 && this.wasIcon(var15)) {
  158.                Rectangle var11 = var15.getDesktopIcon().getBounds();
  159.                if (var11.y < var14) {
  160.                   var14 = var11.y;
  161.                   var13 = var11.x + var11.width;
  162.                } else if (var11.y == var14 && var11.x + var11.width > var13) {
  163.                   var13 = var11.x + var11.width;
  164.                }
  165.             }
  166.          }
  167.  
  168.          if (var14 != var2.height) {
  169.             var5 = var14;
  170.          }
  171.  
  172.          if (var13 + var6 > var2.width) {
  173.             var5 -= var7;
  174.             var4 = 0;
  175.          } else {
  176.             var4 = var13;
  177.          }
  178.  
  179.          return new Rectangle(var4, var5, var6, var7);
  180.       }
  181.    }
  182.  
  183.    JDesktopPane getDesktopPane(JComponent var1) {
  184.       JDesktopPane var2 = null;
  185.       Container var3 = ((Component)var1).getParent();
  186.  
  187.       while(var2 == null) {
  188.          if (var3 instanceof JDesktopPane) {
  189.             var2 = (JDesktopPane)var3;
  190.          } else {
  191.             if (var3 == null) {
  192.                break;
  193.             }
  194.  
  195.             var3 = ((Component)var3).getParent();
  196.          }
  197.       }
  198.  
  199.       return var2;
  200.    }
  201.  
  202.    protected Rectangle getPreviousBounds(JInternalFrame var1) {
  203.       return (Rectangle)((JComponent)var1).getClientProperty("previousBounds");
  204.    }
  205.  
  206.    public void iconifyFrame(JInternalFrame var1) {
  207.       JInternalFrame.JDesktopIcon var2 = var1.getDesktopIcon();
  208.       if (!this.wasIcon(var1)) {
  209.          Rectangle var4 = this.getBoundsForIconOf(var1);
  210.          ((Component)var2).setBounds(var4.x, var4.y, var4.width, var4.height);
  211.          this.setWasIcon(var1, Boolean.TRUE);
  212.       }
  213.  
  214.       Container var3 = ((Component)var1).getParent();
  215.       var3.remove(var1);
  216.       var3.add(var2);
  217.       ((Component)var3).repaint(((JComponent)var1).getX(), ((JComponent)var1).getY(), ((JComponent)var1).getWidth(), ((JComponent)var1).getHeight());
  218.  
  219.       try {
  220.          var1.setSelected(false);
  221.       } catch (PropertyVetoException var5) {
  222.       }
  223.  
  224.    }
  225.  
  226.    public void maximizeFrame(JInternalFrame var1) {
  227.       Rectangle var2;
  228.       if (!var1.isIcon()) {
  229.          this.setPreviousBounds(var1, ((Component)var1).getBounds());
  230.          var2 = ((Component)var1).getParent().getBounds();
  231.       } else {
  232.          Container var3 = var1.getDesktopIcon().getParent();
  233.          if (var3 == null) {
  234.             return;
  235.          }
  236.  
  237.          var2 = ((Component)var3).getBounds();
  238.  
  239.          try {
  240.             var1.setIcon(false);
  241.          } catch (PropertyVetoException var5) {
  242.          }
  243.       }
  244.  
  245.       this.setBoundsForFrame(var1, 0, 0, var2.width, var2.height);
  246.  
  247.       try {
  248.          var1.setSelected(true);
  249.       } catch (PropertyVetoException var4) {
  250.       }
  251.  
  252.       this.removeIconFor(var1);
  253.    }
  254.  
  255.    public void minimizeFrame(JInternalFrame var1) {
  256.       if (this.getPreviousBounds(var1) != null) {
  257.          Rectangle var2 = this.getPreviousBounds(var1);
  258.          this.setPreviousBounds(var1, (Rectangle)null);
  259.  
  260.          try {
  261.             var1.setSelected(true);
  262.          } catch (PropertyVetoException var4) {
  263.          }
  264.  
  265.          if (var1.isIcon()) {
  266.             try {
  267.                var1.setIcon(false);
  268.             } catch (PropertyVetoException var3) {
  269.             }
  270.          }
  271.  
  272.          this.setBoundsForFrame(var1, var2.x, var2.y, var2.width, var2.height);
  273.       }
  274.  
  275.       this.removeIconFor(var1);
  276.    }
  277.  
  278.    public void openFrame(JInternalFrame var1) {
  279.       if (var1.getDesktopIcon().getParent() != null) {
  280.          var1.getDesktopIcon().getParent().add(var1);
  281.          this.removeIconFor(var1);
  282.       }
  283.  
  284.    }
  285.  
  286.    protected void removeIconFor(JInternalFrame var1) {
  287.       JInternalFrame.JDesktopIcon var2 = var1.getDesktopIcon();
  288.       Container var3 = ((Component)var2).getParent();
  289.       if (var3 != null) {
  290.          var3.remove(var2);
  291.          ((Component)var3).repaint(((JComponent)var2).getX(), ((JComponent)var2).getY(), ((JComponent)var2).getWidth(), ((JComponent)var2).getHeight());
  292.       }
  293.  
  294.    }
  295.  
  296.    public void resizeFrame(JComponent var1, int var2, int var3, int var4, int var5) {
  297.       this.setBoundsForFrame(var1, var2, var3, var4, var5);
  298.    }
  299.  
  300.    public void setBoundsForFrame(JComponent var1, int var2, int var3, int var4, int var5) {
  301.       boolean var6 = var1.getWidth() != var4 || var1.getHeight() != var5;
  302.       ((Component)var1).setBounds(var2, var3, var4, var5);
  303.       if (var6) {
  304.          ((Container)var1).validate();
  305.       }
  306.  
  307.    }
  308.  
  309.    protected void setPreviousBounds(JInternalFrame var1, Rectangle var2) {
  310.       if (var2 != null) {
  311.          ((JComponent)var1).putClientProperty("previousBounds", var2);
  312.       }
  313.  
  314.    }
  315.  
  316.    protected void setWasIcon(JInternalFrame var1, Boolean var2) {
  317.       if (var2 != null) {
  318.          ((JComponent)var1).putClientProperty("wasIconOnce", var2);
  319.       }
  320.  
  321.    }
  322.  
  323.    protected boolean wasIcon(JInternalFrame var1) {
  324.       return ((JComponent)var1).getClientProperty("wasIconOnce") == Boolean.TRUE;
  325.    }
  326. }
  327.