/** * */ package de.danielsenff.badds.view.GUI; import java.awt.BorderLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.DefaultListSelectionModel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import de.danielsenff.badds.actions.ActionPreview; import de.danielsenff.badds.controller.Application; import de.danielsenff.badds.model.FilesListModel; import de.danielsenff.badds.view.View; /** * @author danielsenff * */ public class FilesTable extends JCPanel { /** * */ private static final long serialVersionUID = 1L; private JTable table; /** * */ public FilesTable(Application controller) { super(controller); this.controller = controller; this.setLayout(new BorderLayout()); this.table = initTable(); JScrollPane scrollPane = new JScrollPane(this.table); this.add(scrollPane, BorderLayout.CENTER); } /** * @return */ private JTable initTable() { final JTable table = new JTable(); // set models table.setModel(controller.getFilesListModel()); final DefaultListSelectionModel selectionModel = (DefaultListSelectionModel) controller.getFilesListModel().getSelectionModel(); table.setSelectionModel(selectionModel); TableColumnModel tcm = table.getColumnModel(); TableColumn col1 = tcm.getColumn(0); // col1.setCellRenderer(new FileCellRenderer()); table.setCellSelectionEnabled(false); table.setColumnSelectionAllowed(false); table.setRowSelectionAllowed(true); // start preview on double-click table.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { new ActionPreview(controller).actionPerformed(null); } } }); // enable and disable buttons on (de)selection selectionModel.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent arg0) { enableSelectionButtons(selectionModel); } }); controller.getFilesListModel().addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent arg0) { enableListOpButton(controller.getFilesListModel()); invalidate(); } }); return table; } private void enableListOpButton(FilesListModel filesListModel) { View view = controller.getView(); if (!filesListModel.isEmpty()) { view.getActionSaveAll().setEnabled(true); view.getActionClearFilelist().setEnabled(true); // view.getActionSelectAll().setEnabled(true); } else { view.getActionSaveAll().setEnabled(false); view.getActionClearFilelist().setEnabled(false); // view.getActionSelectAll().setEnabled(false); } } private void enableSelectionButtons( final DefaultListSelectionModel lsm) { if(lsm.isSelectionEmpty() && !hasSelectedRow()) { controller.getView().getActionRemoveFile().setEnabled(false); controller.getView().getActionPreview().setEnabled(false); } else { controller.getView().getActionRemoveFile().setEnabled(true); controller.getView().getActionPreview().setEnabled(true); } } /** * @return */ public int getSelectedRow() { return table.getSelectedRow(); } /** * @return */ public JTable getTable() { return this.table; } /** * @return */ public boolean hasSelectedRow() { for (int i = 0; i < table.getRowCount(); i++) { if (table.isRowSelected(i)) return true; } return false; } }