/* @(#)ClassicShapes.java   15 September 2005 */

/* Useful imports */

import edu.neu.ccs.*;
import edu.neu.ccs.gui.*;
import edu.neu.ccs.codec.*;
import edu.neu.ccs.console.*;
import edu.neu.ccs.filter.*;
import edu.neu.ccs.jpf.*;
import edu.neu.ccs.parser.*;
import edu.neu.ccs.pedagogy.*;
import edu.neu.ccs.quick.*;
import edu.neu.ccs.util.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.util.*;
import java.math.*;
import java.beans.*;
import java.lang.reflect.*;
import java.net.URL;
import java.util.regex.*;
import java.text.ParseException;

public class ClassicShapes extends JPF 
{
    
    public static void main(String[] args) { 
        LookAndFeelTools.adjustAllDefaultFontSizes(4);
        
        new ClassicShapes();
    }
    
    
    public void ShapeSample() {
        // buffered panel
        BufferedPanel pane = new BufferedPanel(400, 750);
        
        // common paint mode
        PaintMode mode = PaintMode.FILL_DRAW;
        
        // common fill paint
        Color fill = Colors.red;
        
        // common draw paint
        Color draw = Colors.blueviolet;
        
        // common stroke
        BasicStroke stroke = new BasicStroke(4);
        
        // shapes
        XRect r =
            new XRect       ( 50,  50, 100,  50);
        
        XRoundRect rr =
            new XRoundRect  ( 50, 150, 100,  50,  15, 15);
        
        XOval o =
            new XOval       ( 50, 250, 100,  50);
        
        XSquare s =
            new XSquare     ( 75, 375,  25);
        
        XRoundSquare rs =
            new XRoundSquare( 75, 475,  25,  15);
        
        XCircle c =
            new XCircle     ( 75, 575,  25);
        
        XLine2D l =
            new XLine2D     ( 50, 650, 150, 650);
        
        // adding shapes
        ShapePaintable sp;
        
        sp = new ShapePaintable(r,  mode, fill, draw, stroke);
        pane.appendPaintable(sp);
        
        sp = new ShapePaintable(rr, mode, fill, draw, stroke);
        pane.appendPaintable(sp);
        
        sp = new ShapePaintable(s,  mode, fill, draw, stroke);
        pane.appendPaintable(sp);
        
        sp = new ShapePaintable(rs, mode, fill, draw, stroke);
        pane.appendPaintable(sp);
        
        sp = new ShapePaintable(o,  mode, fill, draw, stroke);
        pane.appendPaintable(sp);
        
        sp = new ShapePaintable(c,  mode, fill, draw, stroke);
        pane.appendPaintable(sp);
        
        sp = new ShapePaintable(l,  null, null, draw, stroke);
        pane.appendPaintable(sp);
        
        // adding labels
        TextPaintable tp;
        
        String name = Fonts.getMonospacedFontFamilyName();
        Font font = new Font(name, Font.BOLD, 20);
        
        tp = new TextPaintable("XRect",        font, 200,  50);
        pane.addPaintable(tp);
        
        tp = new TextPaintable("XRoundRect",   font, 200, 150);
        pane.addPaintable(tp);
        
        tp = new TextPaintable("XOval",        font, 200, 250);
        pane.addPaintable(tp);
        
        tp = new TextPaintable("XSquare",      font, 200, 350);
        pane.addPaintable(tp);
        
        tp = new TextPaintable("XRoundSquare", font, 200, 450);
        pane.addPaintable(tp);
        
        tp = new TextPaintable("XCircle",      font, 200, 550);
        pane.addPaintable(tp);
        
        tp = new TextPaintable("XLine2D",      font, 200, 650);
        pane.addPaintable(tp);
        
        
        // frame
        pane.frame("Shape Sample");
    }
    
}
