package edu.harvard.wcfia.yoshikoder.ui.dialog;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FileDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import edu.harvard.wcfia.yoshikoder.Yoshikoder;
import edu.harvard.wcfia.yoshikoder.reporting.DictionaryFrequencyReport;
import edu.harvard.wcfia.yoshikoder.reporting.YKReport;
import edu.harvard.wcfia.yoshikoder.ui.TableSorter;
import edu.harvard.wcfia.yoshikoder.ui.TableUtil;
import edu.harvard.wcfia.yoshikoder.util.DialogUtil;
import edu.harvard.wcfia.yoshikoder.util.ExportUtil;
import edu.harvard.wcfia.yoshikoder.util.FileUtil;
import edu.harvard.wcfia.yoshikoder.util.Messages;
import edu.harvard.wcfia.yoshikoder.util.TaskWorker;
public class YKDictionaryReportDialog extends JDialog {
protected DictionaryFrequencyReport catsOnlyReport;
protected DictionaryFrequencyReport catsAndPatsReport;
protected DictionaryFrequencyReport current;
protected TaskWorker worker;
protected Yoshikoder yoshikoder;
protected JTable table;
protected boolean catsOnlyFlag;
public YKDictionaryReportDialog(Yoshikoder parent,
DictionaryFrequencyReport cats, DictionaryFrequencyReport catsAndPats, boolean catsOnly){
super(parent, "Dictionary Report", true);
yoshikoder = parent;
// data
catsOnlyReport = cats;
catsAndPatsReport = catsAndPats;
if (catsOnly)
current = catsOnlyReport;
else
current = catsAndPatsReport;
catsOnlyFlag = catsOnly;
// interface
Container cPane = getContentPane();
cPane.setLayout(new BorderLayout());
// insert current report
TableSorter sorter = new TableSorter( current );
table = new JTable(sorter);
sorter.setTableHeader(table.getTableHeader());
table.setFont(yoshikoder.getDisplayFont());
TableUtil.packColumn(table, 0, 2);
JPanel central = new JPanel(new BorderLayout());
central.add(new JScrollPane(table), BorderLayout.CENTER);
/*
String desc = current.getDescription();
if (desc != null){
JTextArea darea = new JTextArea(desc);
darea.setEditable(false);
darea.setFont(yoshikoder.getDisplayFont());
darea.setBackground(this.getBackground());
darea.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
central.add(darea, BorderLayout.NORTH);
}
*/
central.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
cPane.add(central, BorderLayout.CENTER);
//
final JCheckBox categoriesOnlyCheck = new JCheckBox("Show categories only", catsOnlyFlag);
categoriesOnlyCheck.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){ // switch reports if necessary
catsOnlyFlag = categoriesOnlyCheck.isSelected();
System.err.println("cats only flag is set to " + catsOnlyFlag);
if (catsOnlyFlag && current.getShowPatterns()){
current = catsOnlyReport;
setReport(current);
} else if (!catsOnlyFlag && !current.getShowPatterns()){
current = catsAndPatsReport;
setReport(current);
}
}
});
JPanel checkPanel = new JPanel(new BorderLayout());
checkPanel.add(categoriesOnlyCheck, BorderLayout.WEST);
central.add(checkPanel, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(yoshikoder);
}
public DictionaryFrequencyReport getCurrentReport(){
return current;
}
/*
protected YKReport makeCatsAndPatsReport(){ // DO show the patterns
String title = report.getTitle();
String desc = report.getDescription();
String dictName = report.getDictionaryName();
YKDocument doc = (YKDocument)report.getDocuments().get(0);
EntryFrequencyMap efm =
((DictionaryFrequencyReport)report).getEntryFrequencyMap();
YKReport rep =
new DictionaryFrequencyReport(title, desc, dictName, doc, efm, true);
return rep;
}
*/
protected void setReport(YKReport rep){
TableSorter sorter = new TableSorter(rep);
table.setModel(sorter);
sorter.setTableHeader(table.getTableHeader());
table.setFont(yoshikoder.getDisplayFont());
TableUtil.packColumn(table, 0, 2);
}
}