001    /* 
002     * Copyright (c) Holger Pfaff - http://pfaff.ws
003     *
004     * This software maybe used for any purpose provided the
005     * above copyright notice is retained. It is supplied as is.
006     * No warranty expressed or implied - Use at your own risk.
007     */
008    
009    import java.awt.*;
010    
011    /**
012      * (#)NullLayout.java
013      * @author   Holger Pfaff
014      * @version  3.2 19-Mar-2004<br><br>
015      *
016      * A layout to act as an placeholder for the original.  
017      * Used in BorderPanel to accomplish minimization
018      *
019      */
020    
021    public class NullLayout implements LayoutManager {
022    
023      /**
024       * handle for original layout
025       */
026      private LayoutManager baseLayout = null;
027      
028      /**
029       * The default constructor does - nothing
030       */
031      public NullLayout() {
032      }
033      
034      /**
035       * Move all widgets out of sight!
036       *
037       * @param   C       our container
038       */
039      public void layoutContainer(Container C) {
040        Component[] children = C.getComponents();
041        for(int i = 0; i < children.length; i++) {
042          children[i].setLocation(-999999,-999999);
043        }
044      }
045    
046      /**
047       * Layout size is just the border - nothing else
048       *
049       * @param   C       our container
050       */
051      public Dimension minimumLayoutSize(Container C) {
052              Insets is = C.getInsets();
053        return new Dimension(is.left + is.right, is.top + is.bottom);
054      }
055    
056      /**
057       * Layout size is just the border - nothing else
058       *
059       * @param   C       our container
060       */
061      public Dimension preferredLayoutSize(Container C) {
062        return minimumLayoutSize(C);
063      }
064    
065      /**
066       * catch this to tell the original layout that widget was removed
067       *
068       * @param   c       component to remove
069       */
070      public void removeLayoutComponent(Component c) {
071        if(baseLayout != null) baseLayout.removeLayoutComponent(c);
072      }
073      
074      /**
075       * catch this to tell the original layout that widget was added
076       *
077       * @param   s       contraints to add component - Layout dependend
078       * @param   c       component to add
079       */
080      public void addLayoutComponent(String s, Component c) {
081        if(baseLayout != null) baseLayout.addLayoutComponent(s, c);
082      }
083      
084      /**
085       * replace the base layout
086       *
087       * @param   l       the new base layout
088       */
089      public void setBaseLayout(LayoutManager l) {
090        baseLayout = l;
091      }
092      
093      /**
094       * get current base layout
095       */
096      public LayoutManager getBaseLayout() {
097        return baseLayout;
098      }
099    }