1 32 33 package it.businesslogic.ireport; 34 import it.businesslogic.ireport.gui.sheet.ColorSelectorPanel; 35 import java.awt.Color ; 36 import java.util.HashMap ; 37 import java.util.Iterator ; 38 import java.util.Vector ; 39 43 public class Style { 44 45 public static final String ATTRIBUTE_name = "name"; 46 public static final String ATTRIBUTE_isDefault = "isDefault"; 47 public static final String ATTRIBUTE_mode = "mode"; 48 public static final String ATTRIBUTE_forecolor = "forecolor"; 49 public static final String ATTRIBUTE_backcolor = "backcolor"; 50 public static final String ATTRIBUTE_style = "style"; 51 52 public static final String ATTRIBUTE_pen = "pen"; 53 public static final String ATTRIBUTE_fill = "fill"; 54 55 public static final String ATTRIBUTE_radius = "radius"; 56 57 public static final String ATTRIBUTE_scaleImage = "scaleImage"; 58 public static final String ATTRIBUTE_hAlign = "hAlign"; 60 public static final String ATTRIBUTE_vAlign = "vAlign"; 61 62 public static final String ATTRIBUTE_border = "border"; 63 public static final String ATTRIBUTE_borderColor = "borderColor"; 64 public static final String ATTRIBUTE_padding = "padding"; 65 public static final String ATTRIBUTE_topBorder = "topBorder"; 66 public static final String ATTRIBUTE_topBorderColor = "topBorderColor"; 67 public static final String ATTRIBUTE_topPadding = "topPadding"; 68 public static final String ATTRIBUTE_leftBorder = "leftBorder"; 69 public static final String ATTRIBUTE_leftBorderColor = "leftBorderColor"; 70 public static final String ATTRIBUTE_leftPadding = "leftPadding"; 71 public static final String ATTRIBUTE_bottomBorder = "bottomBorder"; 72 public static final String ATTRIBUTE_bottomBorderColor = "bottomBorderColor"; 73 public static final String ATTRIBUTE_bottomPadding = "bottomPadding"; 74 public static final String ATTRIBUTE_rightBorder = "rightBorder"; 75 public static final String ATTRIBUTE_rightBorderColor = "rightBorderColor"; 76 public static final String ATTRIBUTE_rightPadding = "rightPadding"; 77 78 public static final String ATTRIBUTE_rotation = "rotation"; 79 public static final String ATTRIBUTE_lineSpacing = "lineSpacing"; 80 public static final String ATTRIBUTE_isStyledText = "isStyledText"; 81 public static final String ATTRIBUTE_pattern = "pattern"; 82 public static final String ATTRIBUTE_isBlankWhenNull = "isBlankWhenNull"; 83 84 public static final String ATTRIBUTE_fontName = "fontName"; 85 public static final String ATTRIBUTE_isBold = "isBold"; 86 public static final String ATTRIBUTE_isItalic = "isItalic"; 87 public static final String ATTRIBUTE_isUnderline = "isUnderline"; 88 public static final String ATTRIBUTE_isStrikeThrough = "isStrikeThrough"; 89 public static final String ATTRIBUTE_fontSize = "fontSize"; 90 public static final String ATTRIBUTE_pdfFontName = "pdfFontName"; 91 public static final String ATTRIBUTE_pdfEncoding = "pdfEncoding"; 92 public static final String ATTRIBUTE_isPdfEmbedded = "isPdfEmbedded"; 93 public static final String ATTRIBUTE_condition = "condition"; 94 95 private Vector conditionedStyles = new Vector (); 96 97 public static final String [] JRXMLStyleAttributes = {"name", 98 "isDefault", 99 "style", 100 "mode", 101 "forecolor", 102 "backcolor", 103 "pen", 104 "fill", 105 "radius", 106 "scaleImage", 107 "hAlign", 108 "vAlign", 109 "border", 110 "borderColor", 111 "padding", 112 "topBorder", 113 "topBorderColor", 114 "topPadding", 115 "leftBorder", 116 "leftBorderColor", 117 "leftPadding", 118 "bottomBorder", 119 "bottomBorderColor", 120 "bottomPadding", 121 "rightBorder", 122 "rightBorderColor", 123 "rightPadding", 124 "rotation", 125 "lineSpacing", 126 "isStyledText", 127 "fontName", 128 "fontSize", 129 "isBold", 130 "isItalic", 131 "isUnderline", 132 "isStrikeThrough", 133 "pdfFontName", 134 "pdfEncoding", 135 "isPdfEmbedded", 136 "pattern", 137 "isBlankWhenNull"}; 138 139 private String name = ""; 140 private HashMap attributes = new HashMap (); 141 private Style defaultStyle = null; 142 143 146 public Style() 147 {} 148 149 153 public Style(Style s1) 154 { 155 Iterator iterator_style = s1.getAttributes().keySet().iterator(); 156 while (iterator_style.hasNext()) 157 { 158 Object key = iterator_style.next(); 159 Object val = s1.getAttributes().get(key); 160 this.getAttributes().put(key, val); 161 } 162 this.getAttributes().put( this.ATTRIBUTE_isDefault, "false"); 163 164 getConditionedStyles().clear(); 165 for (int i=0; i<s1.getConditionedStyles().size(); ++i) 166 { 167 Style c_s = (Style)s1.getConditionedStyles().elementAt(i); 168 getConditionedStyles().addElement( new ConditionedStyle(c_s)); 169 } 170 } 171 172 176 public void copyStyleFrom(Style s1) 177 { 178 Iterator iterator_style = s1.getAttributes().keySet().iterator(); 179 while (iterator_style.hasNext()) 180 { 181 Object key = iterator_style.next(); 182 Object val = s1.getAttributes().get(key); 183 this.getAttributes().put(key, val); 184 } 185 this.setConditionedStyles( s1.getConditionedStyles()); 186 } 187 188 189 public String getName() { 190 return (getAttributes().get(ATTRIBUTE_name) == null) ? null : getAttributes().get(ATTRIBUTE_name)+""; 191 } 192 193 public void setName(String name) { 194 getAttributes().put(ATTRIBUTE_name, name); 195 } 196 197 public HashMap getAttributes() { 198 return attributes; 199 } 200 201 public void setAttributes(HashMap attributes) { 202 this.attributes = attributes; 203 } 204 205 208 public Object getAttribute(String attribute) 209 { 210 if ( getAttributes().containsKey(attribute)) return getAttributes().get(attribute); 211 return null; 213 } 214 215 218 public Object getAttribute(String attribute, boolean lookInParent) 219 { 220 221 return getAttributeSafe(attribute, lookInParent, null); 222 } 223 224 227 private Object getAttributeSafe(String attribute, boolean lookInParent,java.util.Collection coll) 228 { 229 if ( getAttributes().containsKey(attribute)) return getAttributes().get(attribute); 230 231 if (lookInParent && attribute != ATTRIBUTE_style && getParent() != null ) 232 { 233 if (coll == null) coll = new java.util.ArrayList (); 234 coll.add(this); 235 if (coll.contains(getParent())) return null; 237 return getParent().getAttributeSafe(attribute, true,coll); 238 } 239 return null; 240 } 241 242 public String getAttributeString(String attribute, String defaultString) 243 { 244 245 return getAttributeString(attribute, defaultString, false); 246 } 247 250 public String getAttributeString(String attribute, String defaultString, boolean lookInParentToo) 251 { 252 Object obj = this.getAttribute(attribute, true); 253 return ((obj != null) ? ""+obj : defaultString); 254 } 255 256 257 public int getAttributeInteger(String attribute, int defaultInt) 258 { 259 return getAttributeInteger(attribute, defaultInt, false); 260 } 261 262 265 public int getAttributeInteger(String attribute, int defaultInt, boolean lookInParentToo) 266 { 267 Object obj = this.getAttribute(attribute, true); 268 if (obj == null) return defaultInt; 269 if (obj instanceof Double ) return ((Double )obj).intValue(); 270 if (obj instanceof Integer ) return ((Integer )obj).intValue(); 271 try { 272 273 return Integer.parseInt(obj+""); 274 } catch (Exception ex) 275 { 276 277 } 278 return defaultInt; 279 } 280 281 284 public double getAttributeDouble(String attribute, double defaultDouble) 285 { 286 Object obj = this.getAttribute(attribute); 287 if (obj == null) return defaultDouble; 288 if (obj instanceof Double ) return ((Double )obj).doubleValue(); 289 if (obj instanceof Integer ) return ((Integer )obj).intValue()*1.0; 290 return defaultDouble; 291 } 292 293 public Color getAttributeColor(String attribute, Color defaultColor) 294 { 295 296 return getAttributeColor(attribute, defaultColor, false); 297 } 298 301 public Color getAttributeColor(String attribute, Color defaultColor, boolean lookInParentToo) 302 { 303 Object obj = this.getAttribute(attribute); 304 if (obj == null) return defaultColor; 305 if (obj instanceof Color ) return (Color )obj; 306 Color c = ColorSelectorPanel.parseColorString(obj+""); 307 if (c != null) return c; 308 309 return defaultColor; 310 } 311 312 public boolean getAttributeBoolean(String attribute, boolean defaultBoolean) 313 { 314 return getAttributeBoolean(attribute, defaultBoolean, false); 315 } 316 317 320 public boolean getAttributeBoolean(String attribute, boolean defaultBoolean, boolean lookInParentToo) 321 { 322 Object obj = this.getAttribute(attribute, lookInParentToo); 323 if (obj == null) return defaultBoolean; 324 if (obj instanceof Boolean ) return ((Boolean )obj).booleanValue(); 325 try { 326 return Boolean.valueOf(obj+"").booleanValue(); 327 } catch (Exception ex) 328 { 329 ex.printStackTrace(); 330 } 331 return defaultBoolean; 332 } 333 334 public Style getParent() 335 { 336 Object obj = this.getAttributes().get(ATTRIBUTE_style); 337 if (obj == null || !(obj instanceof Style)) 338 { 339 this.getAttributes().remove(ATTRIBUTE_style); 340 return null; 341 } 342 343 return (Style)obj; 344 } 345 346 public String toString() 347 { 348 return this.getName()+""; 349 } 350 351 public Vector getConditionedStyles() { 352 return conditionedStyles; 353 } 354 355 public void setConditionedStyles(Vector conditionedStyles) { 356 this.conditionedStyles = conditionedStyles; 357 } 358 359 360 public static boolean isDefaultValue(Object value, String attributeName, Style elementStyle, Style defaultStyle) 361 { 362 363 if (elementStyle == null && defaultStyle == null) 364 { 365 return false; 366 } 367 368 Style referenceStyle = (elementStyle == null) ? defaultStyle : elementStyle; 369 370 Object defaultValue = referenceStyle.getAttribute(attributeName, true); 371 372 if (defaultValue == null) return false; 373 374 if (attributeName.endsWith("color") && value instanceof Color ) 375 { 376 Color color = it.businesslogic.ireport.gui.sheet.ColorSelectorPanel.parseColorString(""+defaultValue); 377 return color.equals((Color )value); 378 } 379 380 return defaultValue.equals(value); 381 } 382 } 383 | Popular Tags |