001/* Region.java -- Describes a region within a component
002   Copyright (C) 2006 Free Software Foundation, Inc.
003
004This file is part of GNU Classpath.
005
006GNU Classpath is free software; you can redistribute it and/or modify
007it under the terms of the GNU General Public License as published by
008the Free Software Foundation; either version 2, or (at your option)
009any later version.
010
011GNU Classpath is distributed in the hope that it will be useful, but
012WITHOUT ANY WARRANTY; without even the implied warranty of
013MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014General Public License for more details.
015
016You should have received a copy of the GNU General Public License
017along with GNU Classpath; see the file COPYING.  If not, write to the
018Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
01902110-1301 USA.
020
021Linking this library statically or dynamically with other modules is
022making a combined work based on this library.  Thus, the terms and
023conditions of the GNU General Public License cover the whole
024combination.
025
026As a special exception, the copyright holders of this library give you
027permission to link this library with independent modules to produce an
028executable, regardless of the license terms of these independent
029modules, and to copy and distribute the resulting executable under
030terms of your choice, provided that you also meet, for each linked
031independent module, the terms and conditions of the license of that
032module.  An independent module is a module which is not derived from
033or based on this library.  If you modify this library, you may extend
034this exception to your version of the library, but you are not
035obligated to do so.  If you do not wish to do so, delete this
036exception statement from your version. */
037
038
039package javax.swing.plaf.synth;
040
041/**
042 * Describes a region of a component or the complete component.
043 *
044 * @author Roman Kennke (kennke@aicas.com)
045 *
046 * @since 1.5
047 */
048public class Region
049{
050
051  // FIXME: What should ui be for the non-component regions that have
052  // subregion==false?
053
054  /**
055   * Specifies an arrow button region.
056   */
057  public static final Region ARROW_BUTTON =
058    new Region("ArrowButton", null, false);
059
060  /**
061   * Specifies the region of a standard button.
062   */
063  public static final Region BUTTON =
064    new Region("Button", "ButtonUI", false);
065
066  /**
067   * Specifies the region of a check box.
068   */
069  public static final Region CHECK_BOX =
070    new Region("CheckBox", "CheckBoxUI", false);
071
072  /**
073   * Specifies the region of a check box menu item.
074   */
075  public static final Region CHECK_BOX_MENU_ITEM =
076    new Region("CheckBoxMenuItem", "CheckBoxMenuItemUI", false);
077
078  /**
079   * Specifies the region of a colorchooser.
080   */
081  public static final Region COLOR_CHOOSER =
082    new Region("ColorChooser", "ColorChooserUI", false);
083
084  /**
085   * Specifies the region of a combo box.
086   */
087  public static final Region COMBO_BOX =
088    new Region("ComboBox", "ComboBoxUI", false);
089
090  /**
091   * Specifies the region of a desktop pane.
092   */
093  public static final Region DESKTOP_PANE =
094    new Region("DesktopPane", "DesktopPaneUI", false);
095
096  /**
097   * Specifies the region of a desktop icon.
098   */
099  public static final Region DESKTOP_ICON =
100    new Region("DesktopIcon", "DesktopIconUI", false);
101
102  /**
103   * Specifies the region of an editor pane.
104   */
105  public static final Region EDITOR_PANE =
106    new Region("EditorPane", "EditorPaneUI", false);
107
108  /**
109   * Specifies the region of a file chooser.
110   */
111  public static final Region FILE_CHOOSER =
112    new Region("FileChooser", "FileChooserUI", false);
113
114  /**
115   * Specifies the region of a formatted text field.
116   */
117  public static final Region FORMATTED_TEXT_FIELD =
118    new Region("FormattedTextField", "FormattedTextFieldUI", false);
119
120  /**
121   * Specifies the region of an internal frame.
122   */
123  public static final Region INTERNAL_FRAME =
124    new Region("InternalFrame", "InternalFrameUI", false);
125
126  /**
127   * Specifies the region of the title pane of an internal frame.
128   */
129  public static final Region INTERNAL_FRAME_TITLE_PANE =
130    new Region("InternalFrameTitlePane", "InternalFrameTitlePaneUI", false);
131
132  /**
133   * Specifies the region of a label.
134   */
135  public static final Region LABEL =
136    new Region("Label", "LabelUI", false);
137
138  /**
139   * Specifies the region of a list.
140   */
141  public static final Region LIST =
142    new Region("List", "ListUI", false);
143
144  /**
145   * Specifies the region of a menu.
146   */
147  public static final Region MENU =
148    new Region("Menu", "MenuUI", false);
149
150  /**
151   * Specifies the region of a menu bar.
152   */
153  public static final Region MENU_BAR =
154    new Region("MenuBar", "MenuBarUI", false);
155
156  /**
157   * Specifies the region of a menu item.
158   */
159  public static final Region MENU_ITEM =
160    new Region("MenuItem", "MenuItemUI", false);
161
162  /**
163   * Specifies the region of a menu item accelerator. This is a subregion
164   * of menu item.
165   */
166  public static final Region MENU_ITEM_ACCELERATOR =
167    new Region("MenuItemAccelerator", null, true);
168
169  /**
170   * Specifies the region of an option pane.
171   */
172  public static final Region OPTION_PANE =
173    new Region("OptionPane", "OptionPaneUI", false);
174
175  /**
176   * Specifies the region of a panel.
177   */
178  public static final Region PANEL =
179    new Region("Panel", "PanelUI", false);
180
181  /**
182   * Specifies the region of a password field.
183   */
184  public static final Region PASSWORD_FIELD =
185    new Region("PasswordField", "PasswordFieldUI", false);
186
187  /**
188   * Specifies the region of a popup menu.
189   */
190  public static final Region POPUP_MENU =
191    new Region("PopupMenu", "PopupMenuUI", false);
192
193  /**
194   * Specifies the region of a popup menu separator.
195   */
196  public static final Region POPUP_MENU_SEPARATOR =
197    new Region("PopupMenuSeparator", null, false);
198
199  /**
200   * Specifies the region of a progress bar.
201   */
202  public static final Region PROGRESS_BAR =
203    new Region("ProgressBar", "ProgressBarUI", false);
204
205  /**
206   * Specifies the region of a radio button.
207   */
208  public static final Region RADIO_BUTTON =
209    new Region("RadioButton", "RadioButtonUI", false);
210
211  /**
212   * Specifies the region of a radio button menu item.
213   */
214  public static final Region RADIO_BUTTON_MENU_ITEM =
215    new Region("RadioButtonMenuItem", "RadioButtonMenuItemUI", false);
216
217  /**
218   * Specifies the region of a root pane.
219   */
220  public static final Region ROOT_PANE =
221    new Region("RootPane", "RootPaneUI", false);
222
223  /**
224   * Specifies the region of a scroll bar.
225   */
226  public static final Region SCROLL_BAR =
227    new Region("ScrollBar", "ScrollBarUI", false);
228
229  /**
230   * Specifies the region of a scroll bar track. This is a subregion of
231   * scroll bars.
232   */
233  public static final Region SCROLL_BAR_TRACK =
234    new Region("ScrollBarTrack", null, true);
235
236  /**
237   * Specifies the region of a scroll bar thumb. This is a subregion of
238   * scroll bars.
239   */
240  public static final Region SCROLL_BAR_THUMB =
241    new Region("ScrollBarThumb", null, true);
242
243  /**
244   * Specifies the region of a scroll pane.
245   */
246  public static final Region SCROLL_PANE =
247    new Region("ScrollPane", "ScrollPaneUI", false);
248
249  /**
250   * Specifies the region of a separator.
251   */
252  public static final Region SEPARATOR =
253    new Region("Separator", "SeparatorUI", false);
254
255  /**
256   * Specifies the region of a slider.
257   */
258  public static final Region SLIDER =
259    new Region("Slider", "SliderUI", false);
260
261  /**
262   * Specifies the region of a slider track. This is a subregion of a slider.
263   */
264  public static final Region SLIDER_TRACK =
265    new Region("SliderTrack", null, true);
266
267  /**
268   * Specifies the region of a slider thumb. This is a subregion of a slider.
269   */
270  public static final Region SLIDER_THUMB =
271    new Region("SliderThumb", null, true);
272
273  /**
274   * Specifies the region of a spinner.
275   */
276  public static final Region SPINNER =
277    new Region("Spinner", "SpinnerUI", false);
278
279  /**
280   * Specifies the region of a split pane.
281   */
282  public static final Region SPLIT_PANE =
283    new Region("SplitPane", "SplitPaneUI", false);
284
285  /**
286   * Specifies the region of a split pane divider. This is a subregion of
287   * a split pane.
288   */
289  public static final Region SPLIT_PANE_DIVIDER =
290    new Region("SplitPaneDivider", null, true);
291
292  /**
293   * Specifies the region of a tabbed pane.
294   */
295  public static final Region TABBED_PANE =
296    new Region("TabbedPane", "TabbedPaneUI", false);
297
298  /**
299   * This specifies the region of a tab of a tabbed pane. This is a subregion
300   * of a tabbed pane.
301   */
302  public static final Region TABBED_PANE_TAB =
303    new Region("TabbedPaneTab", null, true);
304
305  /**
306   * This specifies the region underneath the tabs of a tabbed pane. This is a
307   * subregion of a tabbed pane.
308   */
309  public static final Region TABBED_PANE_TAB_AREA =
310    new Region("TabbedPaneTabArea", null, true);
311
312  /**
313   * This specifies the region for the content of a tabbed pane. This is a
314   * subregion of a tabbed pane.
315   */
316  public static final Region TABBED_PANE_CONTENT =
317    new Region("TabbedPaneContent", null, true);
318
319  /**
320   * Specifies the region of a table.
321   */
322  public static final Region TABLE =
323    new Region("Table", "TableUI", false);
324
325  /**
326   * Specifies the region of a table header.
327   */
328  public static final Region TABLE_HEADER =
329    new Region("TableHeader", "TableHeaderUI", false);
330
331  /**
332   * Specifies the region of a text area.
333   */
334  public static final Region TEXT_AREA =
335    new Region("TextArea", "TextAreaUI", false);
336
337  /**
338   * Specifies the region of a text field.
339   */
340  public static final Region TEXT_FIELD =
341    new Region("TextField", "TextFieldUI", false);
342
343  /**
344   * Specifies the region of a text pane.
345   */
346  public static final Region TEXT_PANE =
347    new Region("TextPane", "TextPaneUI", false);
348
349  /**
350   * Specifies the region of a toggle button.
351   */
352  public static final Region TOGGLE_BUTTON =
353    new Region("ToggleButton", "ToggleButtonUI", false);
354
355  /**
356   * Specifies the region of a tool bar.
357   */
358  public static final Region TOOL_BAR =
359    new Region("ToolBar", "ToolBarUI", false);
360
361  /**
362   * Specifies the content region of a tool bar. This is a subregion of a tool
363   * bar.
364   */
365  public static final Region TOOL_BAR_CONTENT =
366    new Region("ToolBarContent", null, true);
367
368  /**
369   * Specifies the drag window region of a tool bar. This is a subregion of a
370   * tool bar.
371   */
372  public static final Region TOOL_BAR_DRAG_WINDOW =
373    new Region("ToolBarDragWindow", null, false);
374
375  /**
376   * Specifies the region of a tool tip.
377   */
378  public static final Region TOOL_TIP =
379    new Region("ToolTip", "ToolTipUI", false);
380
381  /**
382   * Specifies the region of a separator of a tool bar. This is a subregion of
383   * a tool bar.
384   */
385  public static final Region TOOL_BAR_SEPARATOR =
386    new Region("ToolBarSeparator", null, false);
387
388  /**
389   * Specifies the region of a tree.
390   */
391  public static final Region TREE =
392    new Region("Tree", "TreeUI", false);
393
394  /**
395   * Specifies the region of a tree cell. This is a subregion of a tree.
396   */
397  public static final Region TREE_CELL =
398    new Region("TreeCell", null, true);
399
400  /**
401   * Specifies the region of a viewport.
402   */
403  public static final Region VIEWPORT =
404    new Region("Viewport", "ViewportUI", false);
405
406
407  /**
408   * The UI class id for the region. This is package private because this will
409   * be used by other classes in that package.
410   */
411  String ui;
412
413  /**
414   * The name of the region.
415   */
416  private String name;
417
418  /**
419   * If this region is a subregion or not.
420   */
421  private boolean subregion;
422
423  /**
424   * Creates a new <code>Region</code> with the specified name and ui ID.
425   * The <code>ui</code> must be the same what
426   * {@link javax.swing.JComponent#getUIClassID()} returns for toplevel regions. For
427   * subregions this should be <code>null</code>.
428   *
429   * @param name the name of the region
430   * @param ui the UI class ID of the region or <code>null</code> for
431   *        subregions
432   * @param subregion <code>true</code> if this region is a subregion,
433   *        <code>false</code> otherwise
434   */
435  protected Region(String name, String ui, boolean subregion)
436  {
437    this.name = name;
438    this.ui = ui;
439    this.subregion = subregion;
440  }
441
442  /**
443   * Returns <code>true</code> if this region describes a subregion of a
444   * component, <code>false</code> if it describes a component region itself.
445   *
446   * @return <code>true</code> if this region describes a subregion of a
447   *         component, <code>false</code> if it describes a component region
448   *         itself
449   */
450  public boolean isSubregion()
451  {
452    return subregion;
453  }
454
455  /**
456   * Returns the name of the region.
457   *
458   * @return the name of the region
459   */
460  public String getName()
461  {
462    return name;
463  }
464
465  /**
466   * Returns the name of the region.
467   *
468   * @return  the name of the region
469   */
470  public String toString()
471  {
472    return name;
473  }
474}