/* @(#)Methods.java   12 September 2006 */

/* 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 javax.imageio.*;
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;

/** The sample starter class for Java Power Framework. */
public class Methods extends JPF 
{
    
    public static void main(String[] args) { 
        // LookAndFeelTools.showSelectLookAndFeelDialog();
        // LookAndFeelTools.adjustAllDefaultFontSizes(2);
        
        new Methods();
    }
    
    
    public void ShowWriterFormatNames() {
        console.out.println(JPTImageIO.getWriterFormatNamesList());
    }
    
    
    public void SaveGraphicsWindowToFile() {
        int gap = 10;
        
        final TextFieldView filename =
            new TextFieldView(200);
        
        final RadioPanel filetype =
            JPTImageIO.makeWriteFormatRadioPanel();
        
        Object[][] filestuff =
            { { "File Name", filename },
              { "File Type", filetype } };
        
        TablePanel filepanel =
            new TablePanel(filestuff, gap, gap, WEST);
        
        SimpleAction save =
            new SimpleAction("Save Graphics Window To File") {
                public void perform() {
                    String name = filename.getViewState();
                    String type = filetype.getSelectedLabel();
                    String fullname = name + "." + type;
                    
                    File file = new File(fullname);
                    
                    JPTImageIO.write(window, type, file);
                }
        };
        
        Object[] controlStuff = { filepanel, save };
        
        VTable controlPanel =
            new VTable(controlStuff, gap, gap, CENTER);
        
        controlPanel.emptyBorder(gap);
        
        controlPanel.frame("Save Graphics", WEST);
    }
    
    
    public void ShowStarInGraphicsWindow() {
        window.setBufferBackground((Colors.red));
        window.clearPanelAndSequence();

        window.addPaintable(MakeStarPaintable());
        
        window.repaint();
    }
    
    
    public Paintable MakeStarPaintable() {
        PolygonShape star =
            RegularShape.star(200, 200, 150, 5, 2);
        
        ShapePaintable paintable =
            new ShapePaintable
                (star, PaintMode.FILL_DRAW, Colors.green);
        
        return paintable;
    }
    
    
    public void SaveStarPaintable() {
        Paintable paintable = MakeStarPaintable();
        
        String name = "star_paintable";
        String type = "jpg";
        String fullname = name + "." + type;
        
        File file = new File(fullname);
        
        JPTImageIO.write(paintable, type, file);
    }
}
