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