01: import java.awt.*;
02: import java.io.*;
03: 
04: /**
05:    This class defines line styles of various shapes.
06: */
07: public class LineStyle implements Serializable
08: {
09:    private LineStyle(String name) { this.name = name; }
10: 
11:    /**
12:       Gets a stroke with which to draw this line style.
13:       @return the stroke object that strokes this line style
14:    */
15:    public Stroke getStroke()
16:    {
17:       if (this == DOTTED) return DOTTED_STROKE;
18:       if (this == SOLID) return SOLID_STROKE;
19:       return null;
20:    }
21: 
22:    protected Object readResolve() throws ObjectStreamException
23:    {
24:       if (name.equals("SOLID")) return LineStyle.SOLID;
25:       else if (name.equals("DOTTED")) return LineStyle.DOTTED;
26:       else return null;
27:    }
28: 
29:    private String name;
30: 
31:    private static Stroke SOLID_STROKE = new BasicStroke();
32:    private static Stroke DOTTED_STROKE = new BasicStroke(
33:       1.0f, 
34:       BasicStroke.CAP_SQUARE, 
35:       BasicStroke.JOIN_MITER, 
36:       10.0f, 
37:       new float[] { 3.0f, 3.0f }, 
38:       0.0f);
39: 
40:    public static final LineStyle SOLID 
41:       = new LineStyle("SOLID");
42:    public static final LineStyle DOTTED 
43:       = new LineStyle("DOTTED");
44: }