home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / jfc.bin / JDesktopPane.java < prev    next >
Text File  |  1998-02-26  |  6KB  |  196 lines

  1. /*
  2.  * @(#)JDesktopPane.java    1.14 98/02/06
  3.  *
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  *
  19.  */
  20.  
  21. package com.sun.java.swing;
  22.  
  23. import java.util.Vector;
  24. import com.sun.java.swing.plaf.*;
  25. import com.sun.java.accessibility.*;
  26.  
  27. /**
  28.  * This JLayeredPane subclass keeps a reference to a DesktopManager object.
  29.  * This class in normally used as the parent of JInternalFrames to provide a
  30.  * pluggable DesktopManager object to the JInternalFrames.
  31.  * <p>
  32.  * The installUI of the L&F specific implementation is responsible for setting
  33.  * the desktopManager variable appropriately.
  34.  * <p>
  35.  * When the parent of a JInternalFrame is a JDesktopPane, it should
  36.  * delegate most of its behavior to the desktopManager (closing, resizing, etc).
  37.  * <p>
  38.  * Warning: serialized objects of this class will not be compatible with
  39.  * future swing releases.  The current serialization support is appropriate 
  40.  * for short term storage or RMI between Swing1.0 applications.  It will
  41.  * not be possible to load serialized Swing1.0 objects with future releases
  42.  * of Swing.  The JDK1.2 release of Swing will be the compatibility
  43.  * baseline for the serialized form of Swing objects.
  44.  *
  45.  * @see JInternalFrame
  46.  * @see JInternalFrame.JDesktopIcon
  47.  * @see DesktopManager
  48.  *
  49.  * @version 1.14 02/06/98
  50.  * @author David Kloba
  51.  */
  52. public class JDesktopPane extends JLayeredPane implements Accessible
  53. {
  54.     DesktopManager desktopManager;
  55.  
  56.     public JDesktopPane() {
  57.     updateUI();
  58.     }
  59.  
  60.     public DesktopPaneUI getUI() {
  61.         return (DesktopPaneUI)ui;
  62.     }
  63.  
  64.     public void setUI(DesktopPaneUI ui) {
  65.         super.setUI(ui);
  66.     }
  67.  
  68.     public DesktopManager getDesktopManager() {
  69.         return desktopManager;
  70.     }
  71.  
  72.     public void setDesktopManager(DesktopManager d) {
  73.         desktopManager = d;
  74.     }
  75.  
  76.     /**
  77.      * Called to replace the UI with the latest version from the
  78.      * default UIFactory.
  79.      */
  80.     public void updateUI() {
  81.         setUI((DesktopPaneUI)UIManager.getUI(this));
  82.     }
  83.  
  84.  
  85.     /**
  86.      * @return "DesktopPaneUI"
  87.      * @see JComponent#getUIClassID
  88.      * @see UIDefaults#getUI
  89.      */
  90.     public String getUIClassID() {
  91.     return "DesktopPaneUI";
  92.     }
  93.  
  94.  
  95.  
  96.     /** Returns all JInternalFrames currently displayed in the
  97.       * desktop. This will return iconified frames as well.
  98.       */
  99.     public JInternalFrame[] getAllFrames() {
  100.         int i, count;
  101.         JInternalFrame[] results;
  102.         Vector vResults = new Vector(10);
  103.         Object next, tmp;
  104.  
  105.         count = getComponentCount();
  106.         for(i = 0; i < count; i++) {
  107.             next = getComponent(i);
  108.             if(next instanceof JInternalFrame)
  109.                 vResults.addElement(next);
  110.             else if(next instanceof JInternalFrame.JDesktopIcon)  {
  111.                 tmp = ((JInternalFrame.JDesktopIcon)next).getInternalFrame();
  112.                 if(tmp != null)
  113.                     vResults.addElement(tmp);
  114.             }
  115.         }
  116.  
  117.         results = new JInternalFrame[vResults.size()];
  118.         vResults.copyInto(results);
  119.  
  120.         return results;
  121.     }
  122.  
  123.     /** Returns all JInternalFrames currently displayed in the
  124.       * desktop that are in <b>layer</b>. This will return iconified frames as well.
  125.       */
  126.     public JInternalFrame[] getAllFramesInLayer(int layer) {
  127.         int i, count;
  128.         JInternalFrame[] results;
  129.         Vector vResults = new Vector(10);
  130.         Object next, tmp;
  131.  
  132.         count = getComponentCount();
  133.         for(i = 0; i < count; i++) {
  134.             next = getComponent(i);
  135.             if(next instanceof JInternalFrame)
  136.                 if(((JInternalFrame)next).getLayer() == layer)
  137.                     vResults.addElement(next);
  138.             else if(next instanceof JInternalFrame.JDesktopIcon)  {
  139.                 tmp = ((JInternalFrame.JDesktopIcon)next).getInternalFrame();
  140.                 if(tmp != null && ((JInternalFrame)tmp).getLayer() == layer)
  141.                     vResults.addElement(tmp);
  142.             }
  143.         }
  144.  
  145.         results = new JInternalFrame[vResults.size()];
  146.         vResults.copyInto(results);
  147.  
  148.         return results;
  149.     }
  150.  
  151.     public boolean isOpaque() {
  152.         return true;
  153.     }
  154.  
  155. /////////////////
  156. // Accessibility support
  157. ////////////////
  158.  
  159.     /**
  160.      * Get the AccessibleContext associated with this JComponent
  161.      *
  162.      * @return the AccessibleContext of this JComponent
  163.      */
  164.     public AccessibleContext getAccessibleContext() {
  165.     if (accessibleContext == null) {
  166.         accessibleContext = new AccessibleJDesktopPane();
  167.     }
  168.     return accessibleContext;
  169.     }
  170.  
  171.     /**
  172.      * The class used to obtain the accessible role for this object.
  173.      * <p>
  174.      * Warning: serialized objects of this class will not be compatible with
  175.      * future swing releases.  The current serialization support is appropriate
  176.      * for short term storage or RMI between Swing1.0 applications.  It will
  177.      * not be possible to load serialized Swing1.0 objects with future releases
  178.      * of Swing.  The JDK1.2 release of Swing will be the compatibility
  179.      * baseline for the serialized form of Swing objects.
  180.      */
  181.     protected class AccessibleJDesktopPane extends AccessibleJComponent {
  182.  
  183.     /**
  184.      * Get the role of this object.
  185.      *
  186.      * @return an instance of AccessibleRole describing the role of the 
  187.      * object
  188.      * @see AccessibleRole
  189.      */
  190.     public AccessibleRole getAccessibleRole() {
  191.         return AccessibleRole.DESKTOP_PANE;
  192.     }
  193.     }
  194. }
  195.  
  196.