package edu.harvard.wcfia.yoshikoder.ui.dialog; import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.logging.Logger; import javax.swing.BorderFactory; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import edu.harvard.wcfia.yoshikoder.Yoshikoder; import edu.harvard.wcfia.yoshikoder.document.DocumentList; import edu.harvard.wcfia.yoshikoder.document.YKDocument; import edu.harvard.wcfia.yoshikoder.reporting.DictionaryComparisonReport; import edu.harvard.wcfia.yoshikoder.reporting.EntryFrequencyMap; import edu.harvard.wcfia.yoshikoder.reporting.YKReport; import edu.harvard.wcfia.yoshikoder.ui.TableSorter; import edu.harvard.wcfia.yoshikoder.ui.TableUtil; public class ComparisonReportDialog extends YKReportDialog { private static Logger log = Logger.getLogger("edu.harvard.wcfia.yoshikoder.ui.dialog.ComparisonReportDialog"); protected YKReport otherReport; protected JCheckBox showPatternsCheck; protected JTable table; public ComparisonReportDialog(Yoshikoder parent, DictionaryComparisonReport rep){ super(parent, rep); otherReport = makeOtherReport(); } protected YKReport makeOtherReport(){ // make a categories only report String title = report.getTitle(); String desc = report.getDescription(); String dictName = report.getDictionaryName(); DocumentList dl = report.getDocuments(); EntryFrequencyMap efm1 = ((DictionaryComparisonReport)report).getFirstEntryFrequencyMap(); EntryFrequencyMap efm2 = ((DictionaryComparisonReport)report).getSecondEntryFrequencyMap(); YKReport rep = new DictionaryComparisonReport(title, desc, dictName, dl, efm1, efm2, false); 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); } protected void makeGUI(){ Container cPane = getContentPane(); cPane.setLayout(new BorderLayout()); JPanel buttons = createButtonPanel(); cPane.add(buttons, BorderLayout.SOUTH); table = new JTable(report.getRowCount(), report.getColumnCount()); setReport(report); JPanel central = new JPanel(new BorderLayout()); central.add(new JScrollPane(table), BorderLayout.CENTER); showPatternsCheck = new JCheckBox("Show categories only", false); showPatternsCheck.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ YKReport tmp = report; report = otherReport; otherReport = tmp; setReport(report); } }); central.add(showPatternsCheck, BorderLayout.SOUTH); JPanel description = new JPanel(new GridLayout(3,1)); DocumentList dl = report.getDocuments(); YKDocument d1 = (YKDocument)dl.get(0); YKDocument d2 = (YKDocument)dl.get(1); description.add(new JLabel("Comparing Documents:")); description.add(new JLabel("(1) " + d1.getTitle())); description.add(new JLabel("(2) " + d2.getTitle())); description.setBorder(BorderFactory.createEmptyBorder(0,0,10,0)); central.add(description, BorderLayout.NORTH); central.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); cPane.add(central, BorderLayout.CENTER); pack(); setLocationRelativeTo(yoshikoder); } }