    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: }