| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| --> |
| <html><head><title>The NetBeans look and feel customization library</title></head><body> |
| |
| This library installs custom values into UIDefaults, such as colors, borders and UI class names, which |
| various components in NetBeans use to provide a customized or native appearance. |
| <p> |
| NetBeans provides a number of custom components, such as the tabbed containers in its main window; |
| other components may look for custom colors - for example, the property sheet will look for a custom color |
| in UIDefaults to use for its margin and the background color of property set entries, in order that it may |
| be customized to match the UI specification for different platforms/look and feels. |
| <p> |
| This library centralizes the installation and setup of such custom values. It also: |
| <ul> |
| <li>Handles the setup of custom font sizes for look and feels (other than GTK, which |
| gets its font sizes from the operating system theme), by replacing the font entries in UIDefaults with those |
| of the requested font size</li> |
| <li>Allows UIDefaults values to be guaranteed to be present for look and feels (GTK) which do not |
| provide them, to enable older code that depends on such values being there (as they were for all look |
| and feels until JDK 1.4) to work without modification</li> |
| <li>Handles loading of a theme file for those look and feels (Metal) that support MetalTheme</li> |
| <li>Installs per-look-and-feel customizations needed to ensure a harmonious, native appearance on a |
| given look and feel</li> |
| <li>Contains custom implementations of things like ToolbarUI for some platforms on which |
| NetBeans does not use the standard JDK implementation (GTK and Aqua).</li> |
| </ul> |
| |
| <h4>Usage</h4> |
| An application using NetBeans tab control, window system, property sheet or some other component |
| of NetBeans, which wants to guarantee that the same colors and styles are used in their application as in |
| NetBeans, needs simply to call <code>org.netbeans.swing.plaf.Startup.run()</code> early in its startup |
| sequence, as <code>org.netbeans.core.Main</code> does. |
| <p> |
| A look and feel or application author who wishes to provide custom values for some thing can provide |
| an implementation of <code>org.netbeans.swing.plaf.LFCustoms</code>, and place it in UIManager under |
| a key which contains the unique ID of the look and feel. See the documentation for LFCustoms for further |
| details of how to do this. |
| <p> |
| Another option is simply to provide values for the (quite self-explanatory) keys defined as static fields |
| of the LFCustoms class. The advantage to providing an implementation of LFCustoms is simply that those |
| values would not be loaded unless requested; either approach is equivalent. |
| <p> |
| Also, if a look and feel is designed to be an improvement on an existing platform-specific look and |
| feel (such as JGoodies for Windows or QuaQua for Apple), it may simply provide the appropriate existing |
| LFCustoms subclass name in UIDefaults, in accordance with the following: |
| <p> |
| <table> |
| <tr> |
| <th>Look and feel</th> |
| <th>UIManager key</th> |
| <th>Class name</th> |
| </tr> |
| |
| |
| <tr> |
| <td>Metal look and feel</td> |
| <td>Nb.MetalLFCustoms</td> |
| <td>org.netbeans.swing.plaf.metal.MetalLFCustoms</td> |
| </tr> |
| |
| <tr> |
| <td>Windows classic look and feel</td> |
| <td>Nb.WindowsLFCustoms</td> |
| <td>org.netbeans.swing.plaf.winclassic.WindowsLFCustoms</td> |
| </tr> |
| |
| <tr> |
| <td>Windows XP look and feel</td> |
| <td>Nb.WindowsXPLFCustoms</td> |
| <td>org.netbeans.swing.plaf.winxp.XPLFCustoms</td> |
| </tr> |
| |
| <tr> |
| <td>Aqua look and feel (Mac)</td> |
| <td>Nb.AquaLFCustoms</td> |
| <td>org.netbeans.swing.plaf.aqua.AquaLFCustoms</td> |
| </tr> |
| |
| <tr> |
| <td>GTK Look and Feel (Linux & Solaris) - JDK 1.5 and up</td> |
| <td>Nb.GTKLFCustoms</td> |
| <td>org.netbeans.swing.plaf.gtk.GtkLFCustoms</td> |
| </tr> |
| </table> |
| |
| For details on the specific requirements and design of this library, see its |
| <a href="../../../../architecture-summary.html">arch questions and answers</a>. |
| |
| </body> |
| </html> |