1 7 package com.sun.java.swing.plaf.nimbus; 8 9 import java.awt.*; 10 import java.awt.geom.*; 11 import java.awt.image.*; 12 import javax.swing.*; 13 import com.sun.java.swing.Painter; 14 15 17 public final class FormattedTextFieldPainter extends AbstractRegionPainter { 18 static final int BACKGROUND_DISABLED = 1; 23 static final int BACKGROUND_ENABLED = 2; 24 static final int BACKGROUND_SELECTED = 3; 25 static final int BORDER_DISABLED = 4; 26 static final int BORDER_FOCUSED = 5; 27 static final int BORDER_ENABLED = 6; 28 29 30 private int state; private PaintContext ctx; 32 33 private Path2D path = new Path2D.Float(); 35 private Rectangle2D rect = new Rectangle2D.Float(0, 0, 0, 0); 36 private RoundRectangle2D roundRect = new RoundRectangle2D.Float(0, 0, 0, 0, 0, 0); 37 private Ellipse2D ellipse = new Ellipse2D.Float(0, 0, 0, 0); 38 39 private Color color1 = decodeColor("nimbusBlueGrey", -0.015872955f, -0.07995863f, 0.15294117f, 0); 43 private Color color2 = decodeColor("nimbusLightBackground", 0.0f, 0.0f, 0.0f, 0); 44 private Color color3 = decodeColor("nimbusBlueGrey", -0.006944418f, -0.07187897f, 0.06666666f, 0); 45 private Color color4 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07826825f, 0.10588235f, 0); 46 private Color color5 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07856284f, 0.11372548f, 0); 47 private Color color6 = decodeColor("nimbusBlueGrey", 0.007936537f, -0.07796818f, 0.09803921f, 0); 48 private Color color7 = decodeColor("nimbusBlueGrey", -0.027777791f, -0.0965403f, -0.18431371f, 0); 49 private Color color8 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.1048766f, -0.05098039f, 0); 50 private Color color9 = decodeColor("nimbusLightBackground", 0.6666667f, 0.004901961f, -0.19999999f, 0); 51 private Color color10 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.10512091f, -0.019607842f, 0); 52 private Color color11 = decodeColor("nimbusBlueGrey", 0.055555582f, -0.105344966f, 0.011764705f, 0); 53 private Color color12 = decodeColor("nimbusFocus", 0.0f, 0.0f, 0.0f, 0); 54 55 56 private Object [] componentColors; 58 59 public FormattedTextFieldPainter(PaintContext ctx, int state) { 60 super(); 61 this.state = state; 62 this.ctx = ctx; 63 } 64 65 @Override 66 protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object [] extendedCacheKeys) { 67 componentColors = extendedCacheKeys; 69 switch(state) { 72 case BACKGROUND_DISABLED: paintBackgroundDisabled(g); break; 73 case BACKGROUND_ENABLED: paintBackgroundEnabled(g); break; 74 case BACKGROUND_SELECTED: paintBackgroundSelected(g); break; 75 case BORDER_DISABLED: paintBorderDisabled(g); break; 76 case BORDER_FOCUSED: paintBorderFocused(g); break; 77 case BORDER_ENABLED: paintBorderEnabled(g); break; 78 79 } 80 } 81 82 protected Object [] getExtendedCacheKeys(JComponent c) { 83 Object [] extendedCacheKeys = null; 84 switch(state) { 85 case BACKGROUND_ENABLED: 86 extendedCacheKeys = new Object [] { 87 getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)}; 88 break; 89 case BORDER_FOCUSED: 90 extendedCacheKeys = new Object [] { 91 getComponentColor(c, "background", color9, 0.004901961f, -0.19999999f, 0), 92 getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)}; 93 break; 94 case BORDER_ENABLED: 95 extendedCacheKeys = new Object [] { 96 getComponentColor(c, "background", color9, 0.004901961f, -0.19999999f, 0), 97 getComponentColor(c, "background", color2, 0.0f, 0.0f, 0)}; 98 break; 99 } 100 return extendedCacheKeys; 101 } 102 103 @Override 104 protected final PaintContext getPaintContext() { 105 return ctx; 106 } 107 108 private void paintBackgroundDisabled(Graphics2D g) { 109 rect = decodeRect1(); 110 g.setPaint(color1); 111 g.fill(rect); 112 113 } 114 115 private void paintBackgroundEnabled(Graphics2D g) { 116 rect = decodeRect1(); 117 g.setPaint((Color)componentColors[0]); 118 g.fill(rect); 119 120 } 121 122 private void paintBackgroundSelected(Graphics2D g) { 123 rect = decodeRect1(); 124 g.setPaint(color2); 125 g.fill(rect); 126 127 } 128 129 private void paintBorderDisabled(Graphics2D g) { 130 rect = decodeRect2(); 131 g.setPaint(decodeGradient1(rect)); 132 g.fill(rect); 133 rect = decodeRect3(); 134 g.setPaint(decodeGradient2(rect)); 135 g.fill(rect); 136 rect = decodeRect4(); 137 g.setPaint(color6); 138 g.fill(rect); 139 rect = decodeRect5(); 140 g.setPaint(color4); 141 g.fill(rect); 142 rect = decodeRect6(); 143 g.setPaint(color4); 144 g.fill(rect); 145 146 } 147 148 private void paintBorderFocused(Graphics2D g) { 149 rect = decodeRect7(); 150 g.setPaint(decodeGradient3(rect)); 151 g.fill(rect); 152 rect = decodeRect8(); 153 g.setPaint(decodeGradient4(rect)); 154 g.fill(rect); 155 rect = decodeRect9(); 156 g.setPaint(color10); 157 g.fill(rect); 158 rect = decodeRect10(); 159 g.setPaint(color10); 160 g.fill(rect); 161 rect = decodeRect11(); 162 g.setPaint(color11); 163 g.fill(rect); 164 path = decodePath1(); 165 g.setPaint(color12); 166 g.fill(path); 167 168 } 169 170 private void paintBorderEnabled(Graphics2D g) { 171 rect = decodeRect7(); 172 g.setPaint(decodeGradient5(rect)); 173 g.fill(rect); 174 rect = decodeRect8(); 175 g.setPaint(decodeGradient4(rect)); 176 g.fill(rect); 177 rect = decodeRect9(); 178 g.setPaint(color10); 179 g.fill(rect); 180 rect = decodeRect10(); 181 g.setPaint(color10); 182 g.fill(rect); 183 rect = decodeRect11(); 184 g.setPaint(color11); 185 g.fill(rect); 186 187 } 188 189 190 191 private Rectangle2D decodeRect1() { 192 rect.setRect(decodeX(0.4f), decodeY(0.4f), decodeX(2.6f) - decodeX(0.4f), decodeY(2.6f) - decodeY(0.4f)); return rect; 197 } 198 199 private Rectangle2D decodeRect2() { 200 rect.setRect(decodeX(0.6666667f), decodeY(0.4f), decodeX(2.3333333f) - decodeX(0.6666667f), decodeY(1.0f) - decodeY(0.4f)); return rect; 205 } 206 207 private Rectangle2D decodeRect3() { 208 rect.setRect(decodeX(1.0f), decodeY(0.6f), decodeX(2.0f) - decodeX(1.0f), decodeY(1.0f) - decodeY(0.6f)); return rect; 213 } 214 215 private Rectangle2D decodeRect4() { 216 rect.setRect(decodeX(0.6666667f), decodeY(1.0f), decodeX(1.0f) - decodeX(0.6666667f), decodeY(2.0f) - decodeY(1.0f)); return rect; 221 } 222 223 private Rectangle2D decodeRect5() { 224 rect.setRect(decodeX(0.6666667f), decodeY(2.3333333f), decodeX(2.3333333f) - decodeX(0.6666667f), decodeY(2.0f) - decodeY(2.3333333f)); return rect; 229 } 230 231 private Rectangle2D decodeRect6() { 232 rect.setRect(decodeX(2.0f), decodeY(1.0f), decodeX(2.3333333f) - decodeX(2.0f), decodeY(2.0f) - decodeY(1.0f)); return rect; 237 } 238 239 private Rectangle2D decodeRect7() { 240 rect.setRect(decodeX(0.4f), decodeY(0.4f), decodeX(2.6f) - decodeX(0.4f), decodeY(1.0f) - decodeY(0.4f)); return rect; 245 } 246 247 private Rectangle2D decodeRect8() { 248 rect.setRect(decodeX(0.6f), decodeY(0.6f), decodeX(2.4f) - decodeX(0.6f), decodeY(1.0f) - decodeY(0.6f)); return rect; 253 } 254 255 private Rectangle2D decodeRect9() { 256 rect.setRect(decodeX(0.4f), decodeY(1.0f), decodeX(0.6f) - decodeX(0.4f), decodeY(2.6f) - decodeY(1.0f)); return rect; 261 } 262 263 private Rectangle2D decodeRect10() { 264 rect.setRect(decodeX(2.4f), decodeY(1.0f), decodeX(2.6f) - decodeX(2.4f), decodeY(2.6f) - decodeY(1.0f)); return rect; 269 } 270 271 private Rectangle2D decodeRect11() { 272 rect.setRect(decodeX(0.6f), decodeY(2.4f), decodeX(2.4f) - decodeX(0.6f), decodeY(2.6f) - decodeY(2.4f)); return rect; 277 } 278 279 private Path2D decodePath1() { 280 path.reset(); 281 path.moveTo(decodeX(0.4f), decodeY(0.4f)); 282 path.lineTo(decodeX(0.4f), decodeY(2.6f)); 283 path.lineTo(decodeX(2.6f), decodeY(2.6f)); 284 path.lineTo(decodeX(2.6f), decodeY(0.4f)); 285 path.curveTo(decodeAnchorX(2.5999999046325684f, 0.0f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeX(2.8800004f), decodeY(0.4f)); 286 path.curveTo(decodeAnchorX(2.880000352859497f, 0.09999999999999432f), decodeAnchorY(0.4000000059604645f, 0.0f), decodeAnchorX(2.880000352859497f, 0.0f), decodeAnchorY(2.879999876022339f, 0.0f), decodeX(2.8800004f), decodeY(2.8799999f)); 287 path.lineTo(decodeX(0.120000005f), decodeY(2.8799999f)); 288 path.lineTo(decodeX(0.120000005f), decodeY(0.120000005f)); 289 path.lineTo(decodeX(2.8800004f), decodeY(0.120000005f)); 290 path.lineTo(decodeX(2.8800004f), decodeY(0.4f)); 291 path.lineTo(decodeX(0.4f), decodeY(0.4f)); 292 path.closePath(); 293 return path; 294 } 295 296 297 298 private Paint decodeGradient1(Shape s) { 299 Rectangle2D bounds = s.getBounds2D(); 300 float x = (float)bounds.getX(); 301 float y = (float)bounds.getY(); 302 float w = (float)bounds.getWidth(); 303 float h = (float)bounds.getHeight(); 304 return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y, 305 new float[] { 0.0f,0.5f,1.0f }, 306 new Color[] { color3, 307 decodeColor(color3,color4,0.5f), 308 color4}); 309 } 310 311 private Paint decodeGradient2(Shape s) { 312 Rectangle2D bounds = s.getBounds2D(); 313 float x = (float)bounds.getX(); 314 float y = (float)bounds.getY(); 315 float w = (float)bounds.getWidth(); 316 float h = (float)bounds.getHeight(); 317 return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y, 318 new float[] { 0.0f,0.5f,1.0f }, 319 new Color[] { color5, 320 decodeColor(color5,color1,0.5f), 321 color1}); 322 } 323 324 private Paint decodeGradient3(Shape s) { 325 Rectangle2D bounds = s.getBounds2D(); 326 float x = (float)bounds.getX(); 327 float y = (float)bounds.getY(); 328 float w = (float)bounds.getWidth(); 329 float h = (float)bounds.getHeight(); 330 return decodeGradient((0.25f * w) + x, (0.0f * h) + y, (0.25f * w) + x, (0.1625f * h) + y, 331 new float[] { 0.1f,0.49999997f,0.9f }, 332 new Color[] { color7, 333 decodeColor(color7,color8,0.5f), 334 color8}); 335 } 336 337 private Paint decodeGradient4(Shape s) { 338 Rectangle2D bounds = s.getBounds2D(); 339 float x = (float)bounds.getX(); 340 float y = (float)bounds.getY(); 341 float w = (float)bounds.getWidth(); 342 float h = (float)bounds.getHeight(); 343 return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y, 344 new float[] { 0.1f,0.49999997f,0.9f }, 345 new Color[] { (Color)componentColors[0], 346 decodeColor((Color)componentColors[0],(Color)componentColors[1],0.5f), 347 (Color)componentColors[1]}); 348 } 349 350 private Paint decodeGradient5(Shape s) { 351 Rectangle2D bounds = s.getBounds2D(); 352 float x = (float)bounds.getX(); 353 float y = (float)bounds.getY(); 354 float w = (float)bounds.getWidth(); 355 float h = (float)bounds.getHeight(); 356 return decodeGradient((0.5f * w) + x, (0.0f * h) + y, (0.5f * w) + x, (1.0f * h) + y, 357 new float[] { 0.1f,0.49999997f,0.9f }, 358 new Color[] { color7, 359 decodeColor(color7,color8,0.5f), 360 color8}); 361 } 362 363 364 } 365 | Popular Tags |