001    /* Region.java -- Describes a region within a component
002       Copyright (C) 2006 Free Software Foundation, Inc.
003    
004    This file is part of GNU Classpath.
005    
006    GNU Classpath is free software; you can redistribute it and/or modify
007    it under the terms of the GNU General Public License as published by
008    the Free Software Foundation; either version 2, or (at your option)
009    any later version.
010    
011    GNU Classpath is distributed in the hope that it will be useful, but
012    WITHOUT ANY WARRANTY; without even the implied warranty of
013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014    General Public License for more details.
015    
016    You should have received a copy of the GNU General Public License
017    along with GNU Classpath; see the file COPYING.  If not, write to the
018    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
019    02110-1301 USA.
020    
021    Linking this library statically or dynamically with other modules is
022    making a combined work based on this library.  Thus, the terms and
023    conditions of the GNU General Public License cover the whole
024    combination.
025    
026    As a special exception, the copyright holders of this library give you
027    permission to link this library with independent modules to produce an
028    executable, regardless of the license terms of these independent
029    modules, and to copy and distribute the resulting executable under
030    terms of your choice, provided that you also meet, for each linked
031    independent module, the terms and conditions of the license of that
032    module.  An independent module is a module which is not derived from
033    or based on this library.  If you modify this library, you may extend
034    this exception to your version of the library, but you are not
035    obligated to do so.  If you do not wish to do so, delete this
036    exception statement from your version. */
037    
038    
039    package 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     */
048    public 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    }