001: /*
002: * Created on 14/10/2004
003: *
004: * Swing Components - visit http://sf.net/projects/gfd
005: *
006: * Copyright (C) 2004 Igor Regis da Silva Simões
007: *
008: * This program is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU General Public License
010: * as published by the Free Software Foundation; either version 2
011: * of the License, or (at your option) any later version.
012: *
013: * This program is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016: * GNU General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public License
019: * along with this program; if not, write to the Free Software
020: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
021: *
022: */
023: package br.com.gfpshare.plaf;
024:
025: import javax.swing.UIDefaults;
026: import javax.swing.plaf.metal.MetalLookAndFeel;
027:
028: /**
029: *
030: * Esta classe é responsável por instalar o IgorLookAndFeel na aplicação.
031: * Sua super classe é MetalLookAndFeel para que possa ser mantido por padrão
032: * o LookAndFeel Metal, padrão das aplicações Java.
033: * <P>
034: * O IgorLookAndFeel foi criado para resolver um problema de renderização de fontes
035: * de componentes no sistema operacional Linux.
036: * O problema foi reslvido sobrescrevendo os métodos responsáveis pelo pintura
037: * dos textos dos componentes para ativar uma propriedade do objeto Graphics.
038: *
039: * @author Igor Regis da Silva Simões
040: */
041: public class IgorLookAndFeel extends MetalLookAndFeel {
042: /** Método responsável por instalar os novos componentes de LookAndFeel
043: * <p>
044: * Para realizar a instalação dos novos componentes deve-se passar para um
045: * Array Object, String´s contendo uma tag que representa o componente o qual
046: * se deseja alterar o LookAndFeel e o nome completo da classe que irá substituir
047: * a padrão; separados por virgula.
048: * <p>
049: * Deve-se primeiro fazer uma chamada ao método da superclasse para carregar as
050: * classes padrão e depois inserir as classes do novo LookAndFeel.
051: * @param table Tebela contendo todos os UI Componetes que serão usados para criar o LookAndFeel
052: */
053: @Override
054: protected void initClassDefaults(UIDefaults table) {
055: super .initClassDefaults(table);
056: String packageName = "br.com.igor.plaf";
057:
058: Object[] uiDefaults = {
059: "ButtonUI",
060: packageName + "IgorButtonUI",
061: "CheckBoxUI",
062: packageName + "IgorCheckBoxUI",
063: // "ColorChooserUI", packageName + "BasicColorChooserUI",
064: // "MenuBarUI", packageName + "BasicMenuBarUI",
065: // "MenuUI", packageName + "BasicMenuUI",
066: // "MenuItemUI", packageName + "BasicMenuItemUI",
067: // "CheckBoxMenuItemUI", packageName + "BasicCheckBoxMenuItemUI",
068: // "RadioButtonMenuItemUI", packageName + "BasicRadioButtonMenuItemUI",
069: "RadioButtonUI",
070: packageName + "IgorRadioButtonUI",
071: "ToggleButtonUI",
072: packageName + "IgorToggleButtonUI",
073: // "PopupMenuUI", packageName + "IgorPopupMenuUI",
074: // "ProgressBarUI", packageName + "BasicProgressBarUI",
075: // "ScrollBarUI", packageName + "BasicScrollBarUI",
076: // "ScrollPaneUI", packageName + "BasicScrollPaneUI",
077: // "SplitPaneUI", packageName + "BasicSplitPaneUI",
078: // "SliderUI", packageName + "BasicSliderUI",
079: // "SeparatorUI", packageName + "BasicSeparatorUI",
080: // "ToolBarSeparatorUI", packageName + "BasicToolBarSeparatorUI",
081: // "PopupMenuSeparatorUI", packageName + "BasicPopupMenuSeparatorUI",
082: // "TabbedPaneUI", packageName + "BasicTabbedPaneUI",
083: "TextAreaUI", packageName + "IgorTextAreaUI",
084: "TextFieldUI", packageName + "IgorTextFieldUI",
085: // "PasswordFieldUI", packageName + "BasicPasswordFieldUI",
086: "TextPaneUI", packageName + "IgorTextPaneUI",
087: // "EditorPaneUI", packageName + "BasicEditorPaneUI",
088: // "TreeUI", packageName + "BasicTreeUI",
089: "LabelUI", packageName + "IgorLabelUI",
090: // "ListUI", packageName + "IgorListUI",
091: // "ToolBarUI", packageName + "BasicToolBarUI",
092: "ToolTipUI", packageName + "IgorToolTipUI"
093: // "ComboBoxUI", packageName + "IgorComboBoxUI"
094: // "TableUI", packageName + "BasicTableUI",
095: // "TableHeaderUI", packageName + "BasicTableHeaderUI",
096: // "InternalFrameUI", packageName + "BasicInternalFrameUI",
097: // "StandardDialogUI", packageName + "BasicStandardDialogUI",
098: // "DesktopPaneUI", packageName + "BasicDesktopPaneUI",
099: // "DesktopIconUI", packageName + "BasicDesktopIconUI",
100: // "OptionPaneUI", packageName + "BasicOptionPaneUI",
101: // "PanelUI", packageName + "BasicPanelUI"
102: // "ViewportUI", packageName + "BasicViewportUI",
103: // "RootPaneUI", packageName + "BasicRootPaneUI",
104: };
105:
106: table.putDefaults(uiDefaults);
107: }
108:
109: /** Retorna o nome do LookAndFeel
110: *
111: * @see javax.swing.LookAndFeel#getName()
112: * @return Retorna o nome do LookAndFeel
113: */
114: @Override
115: public String getName() {
116: return "IgorLookAndFeel";
117: }
118:
119: /** Retorna um ID do LookAndFeel
120: *
121: * @see javax.swing.LookAndFeel#getID()
122: * @return Retorna o ID do LookAndFeel
123: */
124: @Override
125: public String getID() {
126: return "Igor";
127: }
128:
129: /** Retorna uma descrição do LookAndFeel
130: *
131: * @see javax.swing.LookAndFeel#getDescription()
132: * @return Retorna uma descrição do LookAndFeel
133: */
134: @Override
135: public String getDescription() {
136: return "LookAndFeel do Igor";
137: }
138:
139: /** Retorna se este LookAndFeel é ou não nativo.
140: *
141: * @see javax.swing.LookAndFeel#isNativeLookAndFeel()
142: * @return Retorna sempre falso, pois este LookAndFeel não é nativo
143: */
144: @Override
145: public boolean isNativeLookAndFeel() {
146: return false;
147: }
148:
149: /** Retorna se o LookAndFeel é ou não suportado pelo atua sistema operacional.
150: *
151: * @see javax.swing.LookAndFeel#isSupportedLookAndFeel()
152: * @return Retorna sempre true, pois este LookAndFeel não é nativo
153: */
154: @Override
155: public boolean isSupportedLookAndFeel() {
156: return true;
157: }
158:
159: }
|