package edu.cmu.minorthird.text.gui;
import java.awt.BorderLayout;
import java.io.File;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import edu.cmu.minorthird.text.FancyLoader;
import edu.cmu.minorthird.text.MutableTextLabels;
import edu.cmu.minorthird.text.TextBase;
import edu.cmu.minorthird.text.TextLabels;
/**
* Label top-level "document" spans in a TextBase.
*/
public class TextBaseLabeler extends TrackedTextBaseComponent{
static final long serialVersionUID=200803014L;
// private SpanLabeler spanLabeler;
public TextBaseLabeler(TextBase base,TextLabels viewLabels, // seen in viewer
MutableTextLabels editLabels, // changed in editor
StatusMessage statusMsg){
super(base,viewLabels,editLabels,statusMsg);
viewer=new TextBaseViewer(base,viewLabels,statusMsg);
viewerTracker=
new SpanLabeler(viewLabels,editLabels,viewer.getDocumentList(),viewer
.getSpanPainter(),statusMsg);
((SpanLabeler)viewerTracker).addViewer(viewer);
viewer.getDocumentList().addListSelectionListener(viewerTracker);
initializeLayout();
}
/** Pop up a frame for editing the labels. */
public static void label(MutableTextLabels labels,File file){
JFrame frame=new JFrame("TextBaseLabeler");
TextBase base=labels.getTextBase();
StatusMessage statusMsg=new StatusMessage();
TextBaseLabeler labeler=new TextBaseLabeler(base,labels,labels,statusMsg);
if(file!=null)
labeler.setSaveAs(file);
JComponent main=new StatusMessagePanel(labeler,statusMsg);
frame.getContentPane().add(main,BorderLayout.CENTER);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args){
if(args.length!=2){
System.out.println("Usage: TextBaseLabeler <data> <labelfile>");
return;
}
try{
MutableTextLabels labels=
(MutableTextLabels)FancyLoader.loadTextLabels(args[0]);
label(labels,new File(args[1]));
}catch(Exception e){
e.printStackTrace();
}
}
}