1 /* 2 * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package build.tools.generatenimbus; 27 28 import javax.xml.stream.XMLStreamException; 29 import javax.xml.stream.XMLStreamReader; 30 import java.util.ArrayList; 31 import java.util.List; 32 33 class UIStyle { 34 35 public enum CacheMode { 36 NO_CACHING, FIXED_SIZES, NINE_SQUARE_SCALE 37 } 38 39 private UIColor textForeground = null; 40 private boolean textForegroundInherited = true; 41 42 private UIColor textBackground = null; 43 private boolean textBackgroundInherited = true; 44 45 private UIColor background = null; 46 private boolean backgroundInherited = true; 47 48 private boolean cacheSettingsInherited = true; 49 CacheMode cacheMode = CacheMode.FIXED_SIZES; 50 String maxHozCachedImgScaling = "1.0"; 51 String maxVertCachedImgScaling = "1.0"; 52 53 private List<UIProperty> uiProperties = new ArrayList<>(); 54 UIStyle()55 UIStyle() { 56 } 57 UIStyle(XMLStreamReader reader)58 UIStyle(XMLStreamReader reader) throws XMLStreamException { 59 while (reader.hasNext()) { 60 int eventType = reader.next(); 61 switch (eventType) { 62 case XMLStreamReader.START_ELEMENT: 63 switch (reader.getLocalName()) { 64 case "textForeground": 65 textForeground = new UIColor(reader); 66 break; 67 case "textBackground": 68 textBackground = new UIColor(reader); 69 break; 70 case "background": 71 background = new UIColor(reader); 72 break; 73 case "uiProperty": 74 uiProperties.add(new UIProperty(reader)); 75 break; 76 case "inherit-textForeground": 77 textForegroundInherited = Boolean.parseBoolean(reader.getElementText()); 78 break; 79 case "inherit-textBackground": 80 textBackgroundInherited = Boolean.parseBoolean(reader.getElementText()); 81 break; 82 case "cacheSettingsInherited": 83 cacheSettingsInherited = Boolean.parseBoolean(reader.getElementText()); 84 break; 85 case "inherit-background": 86 backgroundInherited = Boolean.parseBoolean(reader.getElementText()); 87 break; 88 case "cacheMode": 89 cacheMode = CacheMode.valueOf(reader.getElementText()); 90 break; 91 case "maxHozCachedImgScaling": 92 maxHozCachedImgScaling = reader.getElementText(); 93 break; 94 case "maxVertCachedImgScaling": 95 maxVertCachedImgScaling = reader.getElementText(); 96 break; 97 } 98 break; 99 case XMLStreamReader.END_ELEMENT: 100 switch (reader.getLocalName()) { 101 case "style": 102 return; 103 } 104 break; 105 } 106 } 107 } 108 109 private UIStyle parentStyle = null; setParentStyle(UIStyle parentStyle)110 public void setParentStyle(UIStyle parentStyle) { 111 this.parentStyle = parentStyle; 112 } 113 getCacheMode()114 public CacheMode getCacheMode() { 115 if (cacheSettingsInherited) { 116 return (parentStyle == null ? 117 CacheMode.FIXED_SIZES : parentStyle.getCacheMode()); 118 } else { 119 return cacheMode; 120 } 121 } 122 getMaxHozCachedImgScaling()123 public String getMaxHozCachedImgScaling() { 124 if (cacheSettingsInherited) { 125 return (parentStyle == null ? 126 "1.0" : parentStyle.getMaxHozCachedImgScaling()); 127 } else { 128 return maxHozCachedImgScaling; 129 } 130 } 131 getMaxVertCachedImgScaling()132 public String getMaxVertCachedImgScaling() { 133 if (cacheSettingsInherited) { 134 return (parentStyle == null ? 135 "1.0" : parentStyle.getMaxVertCachedImgScaling()); 136 } else { 137 return maxVertCachedImgScaling; 138 } 139 } 140 write(String prefix)141 public String write(String prefix) { 142 StringBuilder sb = new StringBuilder(); 143 if (! textForegroundInherited) { 144 sb.append(String.format(" addColor(d, \"%s%s\", %s);\n", 145 prefix, "textForeground", textForeground.getValue().write())); 146 } 147 if (! textBackgroundInherited) { 148 sb.append(String.format(" addColor(d, \"%s%s\", %s);\n", 149 prefix, "textBackground", textBackground.getValue().write())); 150 } 151 if (! backgroundInherited) { 152 sb.append(String.format(" addColor(d, \"%s%s\", %s);\n", 153 prefix, "background", background.getValue().write())); 154 } 155 for (UIProperty property : uiProperties) { 156 sb.append(property.write(prefix)); 157 } 158 return sb.toString(); 159 } 160 } 161