001: /*
002: * Copyright (C) 2005 Jeff Tassin
003: *
004: * This library is free software; you can redistribute it and/or
005: * modify it under the terms of the GNU Lesser General Public
006: * License as published by the Free Software Foundation; either
007: * version 2.1 of the License, or (at your option) any later version.
008: *
009: * This library is distributed in the hope that it will be useful,
010: * but WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: * Lesser General Public License for more details.
013: *
014: * You should have received a copy of the GNU Lesser General Public
015: * License along with this library; if not, write to the Free Software
016: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017: */
018:
019: package com.jeta.swingbuilder.gui.lookandfeel;
020:
021: import javax.swing.LookAndFeel;
022:
023: import com.jeta.forms.logger.FormsLogger;
024:
025: /**
026: *
027: * @author Jeff Tassin
028: */
029: public class LookAndFeelInfo {
030: /**
031: * The class name of the imported look and feel
032: */
033: private String m_lf_class_name;
034:
035: /**
036: * The name of the look and feel
037: */
038: private String m_name;
039:
040: /**
041: * The name of the look and feel theme. Can be null for those LaFs that
042: * don't support themes.
043: */
044: private String m_theme;
045:
046: /**
047: * A unique id for the look and feel. Set by the application.
048: */
049: private String m_id;
050:
051: /**
052: * A cached reference to the look and feel associated with this class
053: */
054: private LookAndFeel m_laf;
055:
056: /**
057: * The name of the class responsible for instantiating a specified look and
058: * feel along with the specified theme.
059: */
060: private String m_loader_class;
061:
062: /**
063: * A cached reference to the look and feel loader
064: */
065: private LookAndFeelLoader m_loader;
066:
067: /**
068: * ctor
069: *
070: * @param loaderClass
071: * the name of the class responsible for instantiating a
072: * specified look and feel along with the specified theme.
073: * @param lfClass
074: * the name of the look and feel class
075: * @param lfTheme
076: * the name of a theme to apply to the look and feel. Can be
077: * null.
078: * @param lfName
079: * the name of the look and feel. This will be displayed in the
080: * application L&F menu.
081: */
082: public LookAndFeelInfo(String loaderClass, String lfClass,
083: String lfTheme, String lfName, String id) {
084: m_loader_class = loaderClass;
085: m_lf_class_name = lfClass;
086: m_theme = lfTheme;
087: m_name = lfName;
088: m_id = id;
089: }
090:
091: public LookAndFeelLoader getLoaderInstance() {
092: if (m_loader == null) {
093: try {
094: Class c = Class.forName(m_loader_class);
095: m_loader = (LookAndFeelLoader) c.newInstance();
096: } catch (Exception e) {
097: FormsLogger.severe(e);
098: }
099: }
100: return m_loader;
101: }
102:
103: public LookAndFeel getLookAndFeel() {
104: try {
105: m_laf = getLoaderInstance().createLookAndFeel(this );
106: } catch (Exception e) {
107: FormsLogger.severe(e);
108: }
109: return m_laf;
110: }
111:
112: /**
113: * @return the description for the look and feel
114: */
115: public String getName() {
116: return m_name;
117: }
118:
119: /**
120: * Returns the unique id for this look and feel.
121: */
122: public String getId() {
123: return m_id;
124: }
125:
126: /**
127: * @return the class name of the imported look and feel
128: */
129: public String getLookAndFeelClassName() {
130: return m_lf_class_name;
131: }
132:
133: public String getTheme() {
134: return m_theme;
135: }
136:
137: /**
138: * Sets the description for the look and feel
139: */
140: public void setName(String desc) {
141: m_name = desc;
142: }
143:
144: /**
145: * Sets the class name of the imported look and feel
146: */
147: public void setLookAndFeelClassName(String name) {
148: m_lf_class_name = name;
149: }
150:
151: }
|