001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.openide.windows;
042:
043: import java.awt.Image;
044: import java.awt.Rectangle;
045:
046: import java.beans.PropertyChangeListener;
047:
048: import java.io.Serializable;
049:
050: /** Instances of this interface represent places or containers
051: * which <code>TopComponent</code> has to be added to
052: * in order to be managed by window system.
053: *
054: * <p>There is always present default document mode named "editor".
055: * Modules can add their own modes by declaring them using XML.
056: * <P>
057: * Modules can get a set of current modes by calling
058: * {@link WindowManager#getModes}.<p>
059: *
060: * <p>
061: * Each mode must have a unique name.
062: *
063: * <p><p>
064: * <b><font color="red"><em>Important note: Do not provide implementation of this interface unless you are window system provider!</em></font></b>
065: */
066: public interface Mode extends Serializable {
067: /** Name of property for bounds of the mode */
068: public static final String PROP_BOUNDS = "bounds"; // NOI18N
069:
070: /** Name of property for the unique programmatic name of this mode.
071: * @deprecated Do not use. It is redundant, name can not be changed.*/
072: public static final String PROP_NAME = "name"; // NOI18N
073:
074: /** Name of property for the display name of this mode.
075: * @deprecated Do not use. It is redundant. */
076: public static final String PROP_DISPLAY_NAME = "displayName"; // NOI18N
077:
078: /** @deprecated Only public by accident. */
079:
080: /* public static final */long serialVersionUID = -2650968323666215654L;
081:
082: /** Get the diplay name of the mode.
083: * This name will be used by a container to create its title.
084: * @return human-presentable name of the mode
085: * @deprecated Do not use. It is redudant. */
086: public String getDisplayName();
087:
088: /** Get the programmatic name of the mode.
089: * This name should be unique, as it is used to find modes etc.
090: * @return programmatic name of the mode */
091: public String getName();
092:
093: /** Get the icon of the mode. It will be used by component container
094: * implementations as the icon (e.g. for display in tabs).
095: * @return the icon of the mode (or <code>null</code> if no icon was specified)
096: * @deprecated Do not use. It is redundant. */
097: public Image getIcon();
098:
099: /** Attaches a component to a mode for this workspace.
100: * If the component is in different mode on this workspace, it is
101: * removed from the original and moved to this one.
102: *
103: * @param c component
104: * @return true if top component was succesfully docked to this mode, false otherwise
105: */
106: public boolean dockInto(TopComponent c);
107:
108: /** Allows implementor to specify some restrictive policy as to which
109: * top components can be docked into this mode.
110: * @return true if a given top component can be docked into this mode,
111: * false otherwise
112: */
113: public boolean canDock(TopComponent tc);
114:
115: /** Sets the bounds of the mode.
116: * @param s the bounds for the mode
117: */
118: public void setBounds(Rectangle s);
119:
120: /** Getter for current bounds of the mode.
121: * @return the bounds of the mode
122: */
123: public Rectangle getBounds();
124:
125: /** Getter for asociated workspace.
126: * @return The workspace instance to which is this mode asociated.
127: * @deprecated Do not use. Worskpaces are not supporeted anymore. */
128: public Workspace getWorkspace();
129:
130: /** Get all top components currently docked into this mode.
131: * @return the list of components; might be empty, but not null
132: */
133: public TopComponent[] getTopComponents();
134:
135: /** Add a property change listener.
136: * @param list the listener to add
137: */
138: public void addPropertyChangeListener(PropertyChangeListener list);
139:
140: /** Remove a property change listener.
141: * @param list the listener to remove
142: */
143: public void removePropertyChangeListener(PropertyChangeListener list);
144:
145: /** Gets selected <code>TopComponent</code> in this mode.
146: * @since 4.13 */
147: public TopComponent getSelectedTopComponent();
148: }
|