/* RocTable.java created 2007-12-18 * */ package org.signalml.app.view.signal.roc; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JPopupMenu; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; import javax.swing.table.TableColumnModel; import org.signalml.app.action.components.ExportToClipboardAction; import org.signalml.app.action.document.ExportToFileAction; import org.signalml.app.model.components.TableToTextExporter; import org.signalml.app.model.components.WriterExportableTable; import org.signalml.app.view.workspace.ViewerFileChooser; /** RocTable * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class RocTable extends JTable { private static final long serialVersionUID = 1L; private TableToTextExporter tableToTextExporter; private ViewerFileChooser fileChooser; private JPopupMenu popupMenu; public RocTable(RocTableModel model) { super(model, (TableColumnModel) null); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e) && (e.getClickCount() == 1)) { int index = rowAtPoint(e.getPoint()); ListSelectionModel selectionModel = getSelectionModel(); if (!selectionModel.isSelectedIndex(index)) { selectionModel.setSelectionInterval(index, index); } } } }); getTableHeader().setReorderingAllowed(false); setAutoResizeMode(JTable.AUTO_RESIZE_OFF); } @Override public RocTableModel getModel() { return (RocTableModel) super.getModel(); } public TableToTextExporter getTableToTextExporter() { return tableToTextExporter; } public void setTableToTextExporter(TableToTextExporter tableToTextExporter) { this.tableToTextExporter = tableToTextExporter; } public ViewerFileChooser getFileChooser() { return fileChooser; } public void setFileChooser(ViewerFileChooser fileChooser) { this.fileChooser = fileChooser; } @Override public JPopupMenu getComponentPopupMenu() { if (popupMenu == null) { popupMenu = new JPopupMenu(); popupMenu.add(new ExportComparisonToClipboardAction(tableToTextExporter)); popupMenu.add(new ExportComparisonToFileAction(tableToTextExporter)); } return popupMenu; } protected class ExportComparisonToClipboardAction extends ExportToClipboardAction { private static final long serialVersionUID = 1L; public ExportComparisonToClipboardAction(TableToTextExporter tableToTextExporter) { super(tableToTextExporter); } @Override protected WriterExportableTable getExportableTable() { RocTableModel model = getModel(); if (model != null) { return model.getRocData(); } return null; } } protected class ExportComparisonToFileAction extends ExportToFileAction { private static final long serialVersionUID = 1L; private ExportComparisonToFileAction(TableToTextExporter tableToTextExporter) { super(tableToTextExporter); setFileChooser(fileChooser); setOptionPaneParent(RocTable.this); } @Override protected WriterExportableTable getExportableTable() { RocTableModel model = getModel(); if (model != null) { return model.getRocData(); } return null; } } }