001: /*
002: * Copyright (C) 2004 NNL Technology AB
003: * Visit www.infonode.net for information about InfoNode(R)
004: * products and how to contact NNL Technology AB.
005: *
006: * This program is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU General Public License
008: * as published by the Free Software Foundation; either version 2
009: * of the License, or (at your option) any later version.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
019: * MA 02111-1307, USA.
020: */
021:
022: // $Id: TabWindowProperties.java,v 1.20 2007/01/28 21:25:10 jesper Exp $
023: package net.infonode.docking.properties;
024:
025: import net.infonode.properties.propertymap.*;
026: import net.infonode.properties.types.BooleanProperty;
027: import net.infonode.tabbedpanel.TabbedPanelProperties;
028:
029: /**
030: * Properties and property values for tab windows.
031: *
032: * @author $Author: jesper $
033: * @version $Revision: 1.20 $
034: */
035: public class TabWindowProperties extends PropertyMapContainer {
036: /**
037: * Property group containing all tab window properties.
038: */
039: public static final PropertyMapGroup PROPERTIES = new PropertyMapGroup(
040: "Tab Window Properties", "");
041:
042: /**
043: * Property values for the tabbed panel in the tab window.
044: */
045: public static final PropertyMapProperty TABBED_PANEL_PROPERTIES = new PropertyMapProperty(
046: PROPERTIES, "Tabbed Panel Properties",
047: "Property values for the tabbed panel in the TabWindow.",
048: TabbedPanelProperties.PROPERTIES);
049:
050: /**
051: * Default property values for the window tabs in the tab window.
052: */
053: public static final PropertyMapProperty TAB_PROPERTIES = new PropertyMapProperty(
054: PROPERTIES,
055: "Tab Properties",
056: "Default property values for the window tabs in the TabWindow.",
057: WindowTabProperties.PROPERTIES);
058:
059: /**
060: * The minimize button property values.
061: *
062: * @since IDW 1.1.0
063: */
064: public static final PropertyMapProperty MINIMIZE_BUTTON_PROPERTIES = new PropertyMapProperty(
065: PROPERTIES, "Minimize Button Properties",
066: "The minimize button property values.",
067: WindowTabButtonProperties.PROPERTIES);
068:
069: /**
070: * The restore button property values.
071: *
072: * @since IDW 1.1.0
073: */
074: public static final PropertyMapProperty RESTORE_BUTTON_PROPERTIES = new PropertyMapProperty(
075: PROPERTIES, "Restore Button Properties",
076: "The restore button property values.",
077: WindowTabButtonProperties.PROPERTIES);
078:
079: /**
080: * The close button property values.
081: *
082: * @since IDW 1.1.0
083: */
084: public static final PropertyMapProperty CLOSE_BUTTON_PROPERTIES = new PropertyMapProperty(
085: PROPERTIES, "Close Button Properties",
086: "The close button property values.",
087: WindowTabButtonProperties.PROPERTIES);
088:
089: /**
090: * The maximize button property values.
091: *
092: * @since IDW 1.1.0
093: */
094: public static final PropertyMapProperty MAXIMIZE_BUTTON_PROPERTIES = new PropertyMapProperty(
095: PROPERTIES, "Maximize Button Properties",
096: "The maximize button property values.",
097: WindowTabButtonProperties.PROPERTIES);
098:
099: /**
100: * The undock button property values.
101: *
102: * @since IDW 1.4.0
103: */
104: public static final PropertyMapProperty UNDOCK_BUTTON_PROPERTIES = new PropertyMapProperty(
105: PROPERTIES, "Undock Button Properties",
106: "The undock button property values.",
107: WindowTabButtonProperties.PROPERTIES);
108:
109: /**
110: * The dock button property values.
111: *
112: * @since IDW 1.4.0
113: */
114: public static final PropertyMapProperty DOCK_BUTTON_PROPERTIES = new PropertyMapProperty(
115: PROPERTIES, "Dock Button Properties",
116: "The dock button property values.",
117: WindowTabButtonProperties.PROPERTIES);
118:
119: /**
120: * The repect child windows minimum sizes property.
121: *
122: * @since IDW 1.5.0
123: */
124: public static final BooleanProperty RESPECT_CHILD_WINDOW_MINIMUM_SIZE = new BooleanProperty(
125: PROPERTIES,
126: "Respect Child Window Minimum Size",
127: "When enabled the Tab Window will repsect its child windows minimum sizes.",
128: PropertyMapValueHandler.INSTANCE);
129:
130: /**
131: * Creates an empty property object.
132: */
133: public TabWindowProperties() {
134: super (PropertyMapFactory.create(PROPERTIES));
135: }
136:
137: /**
138: * Creates a property object containing the map.
139: *
140: * @param map the property map
141: */
142: public TabWindowProperties(PropertyMap map) {
143: super (map);
144: }
145:
146: /**
147: * Creates a property object that inherit values from another property object.
148: *
149: * @param inheritFrom the object from which to inherit property values
150: */
151: public TabWindowProperties(TabWindowProperties inheritFrom) {
152: super (PropertyMapFactory.create(inheritFrom.getMap()));
153: }
154:
155: /**
156: * Adds a super object from which property values are inherited.
157: *
158: * @param properties the object from which to inherit property values
159: * @return this
160: */
161: public TabWindowProperties addSuperObject(
162: TabWindowProperties properties) {
163: getMap().addSuperMap(properties.getMap());
164: return this ;
165: }
166:
167: /**
168: * Removes the last added super object.
169: *
170: * @return this
171: * @since IDW 1.1.0
172: * @deprecated Use {@link #removeSuperObject(TabWindowProperties)} instead.
173: */
174: public TabWindowProperties removeSuperObject() {
175: getMap().removeSuperMap();
176: return this ;
177: }
178:
179: /**
180: * Removes a super object.
181: *
182: * @param superObject the super object to remove
183: * @return this
184: * @since IDW 1.3.0
185: */
186: public TabWindowProperties removeSuperObject(
187: TabWindowProperties super Object) {
188: getMap().removeSuperMap(super Object.getMap());
189: return this ;
190: }
191:
192: /**
193: * Returns the property values for the tabbed panel in the tab window.
194: *
195: * @return the property values for the tabbed panel in the tab window
196: */
197: public TabbedPanelProperties getTabbedPanelProperties() {
198: return new TabbedPanelProperties(TABBED_PANEL_PROPERTIES
199: .get(getMap()));
200: }
201:
202: /**
203: * Returns the default property values for the window tabs in the tab window.
204: *
205: * @return the default property values for the window tabs in the tab window
206: */
207: public WindowTabProperties getTabProperties() {
208: return new WindowTabProperties(TAB_PROPERTIES.get(getMap()));
209: }
210:
211: /**
212: * Returns the minimize button property values.
213: *
214: * @return the minimize button property values
215: * @since IDW 1.1.0
216: */
217: public WindowTabButtonProperties getMinimizeButtonProperties() {
218: return new WindowTabButtonProperties(MINIMIZE_BUTTON_PROPERTIES
219: .get(getMap()));
220: }
221:
222: /**
223: * Returns the restore button property values.
224: *
225: * @return the restore button property values
226: * @since IDW 1.1.0
227: */
228: public WindowTabButtonProperties getRestoreButtonProperties() {
229: return new WindowTabButtonProperties(RESTORE_BUTTON_PROPERTIES
230: .get(getMap()));
231: }
232:
233: /**
234: * Returns the close button property values.
235: *
236: * @return the close button property values
237: * @since IDW 1.1.0
238: */
239: public WindowTabButtonProperties getCloseButtonProperties() {
240: return new WindowTabButtonProperties(CLOSE_BUTTON_PROPERTIES
241: .get(getMap()));
242: }
243:
244: /**
245: * Returns the maximize button property values.
246: *
247: * @return the maximize button property values
248: * @since IDW 1.1.0
249: */
250: public WindowTabButtonProperties getMaximizeButtonProperties() {
251: return new WindowTabButtonProperties(MAXIMIZE_BUTTON_PROPERTIES
252: .get(getMap()));
253: }
254:
255: /**
256: * Returns the undock button property values.
257: *
258: * @return the undock button property values
259: * @since IDW 1.4.0
260: */
261: public WindowTabButtonProperties getUndockButtonProperties() {
262: return new WindowTabButtonProperties(UNDOCK_BUTTON_PROPERTIES
263: .get(getMap()));
264: }
265:
266: /**
267: * Returns the dock button property values.
268: *
269: * @return the dock button property values
270: * @since IDW 1.4.0
271: */
272: public WindowTabButtonProperties getDockButtonProperties() {
273: return new WindowTabButtonProperties(DOCK_BUTTON_PROPERTIES
274: .get(getMap()));
275: }
276:
277: /**
278: * <p>
279: * Returns true if the TabWindow will respect its child windows minimum sizes.
280: * </p>
281: *
282: * <p>
283: * When true the content area of the TabWindow cannot be resized smaller than
284: * the maximum of all its child windows minimum sizes.
285: * </p>
286: *
287: * @return true if the TabWindow respects its child windows minimum sizes
288: * @since IDW 1.5.0
289: */
290: public boolean getRespectChildWindowMinimumSize() {
291: return RESPECT_CHILD_WINDOW_MINIMUM_SIZE.get(getMap());
292: }
293:
294: /**
295: * <p>
296: * Enables/disables the TabWindow will respect its child windows minimum sizes.
297: * </p>
298: *
299: * <p>
300: * When true the content area of the TabWindow cannot be resized smaller than
301: * the maximum of all its child windows minimum sizes.
302: * </p>
303: *
304: * @param repsectMinimuSize if true the TabWindow will respect its child windows
305: * minimum sizes
306: * @return this
307: * @since IDW 1.5.0
308: */
309: public TabWindowProperties setRespectChildWindowMinimumSize(
310: boolean repsectMinimuSize) {
311: RESPECT_CHILD_WINDOW_MINIMUM_SIZE.set(getMap(),
312: repsectMinimuSize);
313: return this;
314: }
315:
316: }
|