1 package org.xpilot.jxpmap; 2 3 import java.awt.Color; 4 import java.awt.Dimension; 5 import java.awt.Graphics; 6 import java.awt.Graphics2D; 7 import java.awt.Polygon; 8 9 import javax.swing.JComponent; 10 11 public class EdgeStylePreview extends JComponent { 12 13 private LineStyle style; 14 15 setStyle(LineStyle style)16 public void setStyle (LineStyle style) { 17 this.style = style; 18 repaint(); 19 } 20 21 paint(Graphics _g)22 public void paint (Graphics _g) { 23 Graphics2D g = (Graphics2D)_g; 24 g.setColor(Color.black); 25 g.fill(g.getClipBounds()); 26 27 if (style == null) return; 28 if (style.getStyle() == LineStyle.STYLE_HIDDEN) return; 29 30 Polygon p = getPreviewPolygon(); 31 32 g.setColor(style.getColor()); 33 g.setStroke(style.getStroke(1.0f)); 34 g.draw(p); 35 } 36 37 getPreviewPolygon()38 private Polygon getPreviewPolygon () { 39 40 Polygon p = new Polygon(); 41 Dimension d = getSize(); 42 int a = Math.min(d.width, d.height); 43 float u = a / 6f; 44 45 int x = (d.width - a) / 2; 46 int y = (d.height - a) / 2; 47 48 for (int i = 0; i < XPOINTS.length; i++) { 49 p.addPoint(x + (int)(XPOINTS[i] * u), y + (int)(YPOINTS[i] * u)); 50 } 51 52 return p; 53 } 54 55 56 private static final int[] XPOINTS = {1, 1, 5, 5, 3, 4, 2, 3, 1}; 57 private static final int[] YPOINTS = {1, 5, 5, 3, 4, 2, 3, 1, 1}; 58 } 59