/* @(#)CanvasPhrasePanel.java  */
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.*;
import java.util.regex.*;

// import java.text.*;

public class CanvasPhrasePanel
    extends DisplayPanel
{
    private int width  = 750;
    private int height = 500;
    
    private PaintableCanvas canvas =
        new PaintableCanvas(width, height);
    
    private PhraseMaker phrasemaker =
        new PhraseMaker();
    
    
    private Object[] mainItems = { canvas, phrasemaker };
    
    private TablePanel mainPanel =
        new TablePanel(mainItems, VERTICAL, 10, 10, CENTER);
    
    
    private SimpleAction dropPhraseOnCanvas =
        new SimpleAction() {
            public void perform()
                { dropPhraseOnCanvas(); }
    };
    
    
    public CanvasPhrasePanel() {
        add(mainPanel);
        
        phrasemaker.addPropertyChangeListener
            (dropPhraseOnCanvas);
    }
    
    
    private void dropPhraseOnCanvas() {
        Paintable tp = phrasemaker.
            getCurrentPhrase();
    
        MutatablePaintable mp =
            new MutatableWrapper(tp);
        
        mp.move(width/2, height/2);
        
        canvas.getPaintableSequence().
            addPaintableAtTop(mp);
        
        canvas.repaint();
    }
    
}
