package edu.cmu.minorthird.classify.sequential;
import java.io.Serializable;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.TitledBorder;
import edu.cmu.minorthird.classify.transform.InstanceTransform;
import edu.cmu.minorthird.util.gui.ComponentViewer;
import edu.cmu.minorthird.util.gui.SmartVanillaViewer;
import edu.cmu.minorthird.util.gui.Viewer;
import edu.cmu.minorthird.util.gui.Visible;
/*package*/ class TransformingSegmenter implements Segmenter,Serializable,Visible
{
static private final long serialVersionUID = 20080207L;
private InstanceTransform instanceTransform;
private Segmenter segmenter;
public TransformingSegmenter(InstanceTransform instanceTransform,Segmenter segmenter)
{
this.instanceTransform = instanceTransform;
this.segmenter = segmenter;
}
@Override
public Segmentation segmentation(CandidateSegmentGroup group)
{
return segmenter.segmentation( new SegmentTransform(instanceTransform).transform(group) );
}
@Override
public String explain(CandidateSegmentGroup group)
{
return "not implemented";
}
@Override
public Viewer toGUI()
{
Viewer v = new ComponentViewer() {
static final long serialVersionUID=20080207L;
@Override
public JComponent componentFor(Object o) {
TransformingSegmenter ts = (TransformingSegmenter)o;
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel,BoxLayout.Y_AXIS));
mainPanel.setBorder(new TitledBorder("TransformingSegmenter"));
JLabel subView1 = new JLabel(ts.instanceTransform.toString());
Viewer subView2 = new SmartVanillaViewer(ts.segmenter);
//subView1.setSuperView(this);
subView2.setSuperView(this);
mainPanel.add(subView1);
mainPanel.add(subView2);
return new JScrollPane(mainPanel);
}
};
v.setContent(this);
return v;
}
}