001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.netbeans.modules.visualweb.propertyeditors.css.model;
042:
043: import java.awt.Font;
044: import java.awt.GraphicsEnvironment;
045: import java.util.ArrayList;
046: import java.util.List;
047: import javax.swing.DefaultComboBoxModel;
048: import javax.swing.DefaultListModel;
049:
050: /**
051: * Data Structure to hold the font family data
052: * @author Winston Prakash
053: */
054: public class FontModel {
055:
056: public DefaultListModel getFontFamilySetList() {
057: return new FontFamilySetList();
058: }
059:
060: public DefaultListModel getFontList() {
061: return new FontList();
062: }
063:
064: public DefaultListModel getWebFontList() {
065: return new WebFontList();
066: }
067:
068: public DefaultListModel getFontFamilyList() {
069: return new FontFamilyList();
070: }
071:
072: public DefaultListModel getFontSizeList() {
073: return new FontSizeList();
074: }
075:
076: public DefaultComboBoxModel getFontSizeUnitList() {
077: return new FontSizeUnitList();
078: }
079:
080: public DefaultComboBoxModel getFontStyleList() {
081: return new FontStyleList();
082: }
083:
084: public DefaultComboBoxModel getFontSelectionList() {
085: return new FontSelectionList();
086: }
087:
088: public DefaultComboBoxModel getFontWeightList() {
089: return new FontWeightList();
090: }
091:
092: public DefaultComboBoxModel getFontVariantList() {
093: return new FontVariantList();
094: }
095:
096: public FontSize getFontSize(String fontSizeStr) {
097: return new FontSize(fontSizeStr);
098: }
099:
100: public class FontSize {
101: FontSizeUnitList unitList = new FontSizeUnitList();
102: String fontSizeUnit = null;
103: String fontSize = null;
104:
105: public FontSize(String fontSizeStr) {
106: fontSizeStr = fontSizeStr.trim();
107: for (int i = 0; i < unitList.getSize(); i++) {
108: String unit = (String) unitList.getElementAt(i);
109: if (fontSizeStr.endsWith(unit)) {
110: fontSizeUnit = unit;
111: fontSize = fontSizeStr.replaceAll(unit, "");
112: }
113: }
114: }
115:
116: public String getUnit() {
117: return fontSizeUnit;
118: }
119:
120: public String getValue() {
121: return fontSize;
122: }
123: }
124:
125: public class FontSelectionList extends DefaultComboBoxModel {
126: public FontSelectionList() {
127: addElement(org.openide.util.NbBundle.getMessage(
128: FontModel.class, "FONTS"));
129: addElement(org.openide.util.NbBundle.getMessage(
130: FontModel.class, "FONT_FAMILIES"));
131: addElement(org.openide.util.NbBundle.getMessage(
132: FontModel.class, "WEB_FONTS"));
133: }
134: }
135:
136: public class FontList extends DefaultListModel {
137: public FontList() {
138: GraphicsEnvironment ge = GraphicsEnvironment
139: .getLocalGraphicsEnvironment();
140: String fontNames[] = ge.getAvailableFontFamilyNames();
141:
142: // Iterate the font names and add to the model
143: for (int i = 0; i < fontNames.length; i++) {
144: addElement(fontNames[i]);
145: }
146: }
147: }
148:
149: public class WebFontList extends DefaultListModel {
150: public WebFontList() {
151: addElement("Arial Black"); //NOI18N
152: addElement("Cosmic Sans"); //NOI18N
153: addElement("Impact"); //NOI18N
154: addElement("Veranda"); //NOI18N
155: addElement("Webdings"); //NOI18N
156: addElement("Trebuchet"); //NOI18N
157: addElement("Georgia"); //NOI18N
158: addElement("Minion Web"); //NOI18N
159: }
160: }
161:
162: public class FontFamilyList extends DefaultListModel {
163: public FontFamilyList() {
164: addElement("serif"); //NOI18N
165: addElement("sans-serif"); //NOI18N
166: addElement("monospace"); //NOI18N
167: addElement("cursive"); //NOI18N
168: addElement("fantasy"); //NOI18N
169: }
170: }
171:
172: public class FontFamilySetList extends DefaultListModel {
173: public FontFamilySetList() {
174: addElement(CssStyleData.NOT_SET);
175: // Do not keep spaces between commas. Batik parser automatically
176: // removes the spaces.
177: addElement("Arial,Helvetica,sans-serif"); //NOI18N
178: addElement("\'Times New Roman\',Times,serif"); //NOI18N
179: addElement("\'Courier New\',Courier,monospace"); //NOI18N
180: addElement("Georgia,\'Times New Roman\',times,serif"); //NOI18N
181: addElement("Verdana,Arial,Helvetica,sans-serif"); //NOI18N
182: addElement("Geneva,Arial,Helvetica,sans-serif"); //NOI18N
183: addElement("serif"); //NOI18N
184: addElement("sans-serif"); //NOI18N
185: addElement("monospace"); //NOI18N
186: addElement("cursive"); //NOI18N
187: addElement("fantasy"); //NOI18N
188: }
189: }
190:
191: public class FontSizeList extends DefaultListModel {
192: public FontSizeList() {
193: addElement(CssStyleData.NOT_SET);
194: addElement("8"); //NOI18N
195: addElement("10"); //NOI18N
196: addElement("12"); //NOI18N
197: addElement("14"); //NOI18N
198: addElement("18"); //NOI18N
199: addElement("24"); //NOI18N
200: addElement("36"); //NOI18N
201: addElement("XX-small"); //NOI18N
202: addElement("X-small"); //NOI18N
203: addElement("small"); //NOI18N
204: addElement("medium"); //NOI18N
205: addElement("large"); //NOI18N
206: addElement("X-large"); //NOI18N
207: addElement("XX-large"); //NOI18N
208: addElement("smaller"); //NOI18N
209: addElement("larger"); //NOI18N
210: }
211: }
212:
213: public class FontSizeUnitList extends DefaultComboBoxModel {
214: public FontSizeUnitList() {
215: addElement("px"); //NOI18N
216: addElement("pt"); //NOI18N
217: addElement("%"); //NOI18N
218: addElement("in"); //NOI18N
219: addElement("cm"); //NOI18N
220: addElement("mm"); //NOI18N
221: addElement("em"); //NOI18N
222: addElement("ex"); //NOI18N
223: addElement("pc"); //NOI18N
224: }
225: }
226:
227: public class FontStyleList extends DefaultComboBoxModel {
228: public FontStyleList() {
229: addElement(CssStyleData.NOT_SET);
230: addElement("normal"); //NOI18N
231: addElement("italic"); //NOI18N
232: addElement("oblique"); //NOI18N
233: }
234: }
235:
236: public class FontWeightList extends DefaultComboBoxModel {
237: public FontWeightList() {
238: addElement(CssStyleData.NOT_SET);
239: addElement("normal"); //NOI18N
240: addElement("bold"); //NOI18N
241: addElement("bolder"); //NOI18N
242: addElement("lighter"); //NOI18N
243: }
244: }
245:
246: public class FontVariantList extends DefaultComboBoxModel {
247: public FontVariantList() {
248: addElement(CssStyleData.NOT_SET);
249: addElement("small-caps"); //NOI18N
250: }
251: }
252: }
|