/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.bearsoft.gui.grid.columns; import com.bearsoft.gui.grid.BaseTableTest; import com.bearsoft.gui.grid.constraints.LinearConstraint; import com.bearsoft.gui.grid.data.BoundaredTableModel; import com.bearsoft.gui.grid.insets.InsetContent; import com.bearsoft.gui.grid.insets.InsetPart; import com.bearsoft.gui.grid.insets.LinearInset; import com.bearsoft.gui.grid.rows.ConstrainedRowSorter; import com.bearsoft.gui.grid.selection.ConstrainedListSelectionModel; import com.bearsoft.gui.grid.selection.InsettedListSelectionModel; import java.awt.BorderLayout; import java.awt.Color; import java.util.Enumeration; import javax.swing.DefaultListSelectionModel; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.border.MatteBorder; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; /** * * @author Gala */ public class ColumnsStaticTest extends BaseTableTest { protected int fixedRows = 3; protected int fixedCols = 2; protected TableModel etalonModel; protected TableColumnModel etalonColumnModel; protected JTable tlTable; protected JTable trTable; protected JTable blTable; protected JTable brTable; @Before public void prepare() throws InterruptedException { // base grid etalonModel = new SampleTableModel(); etalonColumnModel = new SampleColumnModel(new LinearInset(0, 0)); for (int i = 0; i < etalonColumnModel.getColumnCount(); i++) { etalonColumnModel.getColumn(i).setMinWidth(150); } final ListSelectionModel etalonRowsSelectionModel = new DefaultListSelectionModel(); final ListSelectionModel etalonColumnsSelectionModel = new DefaultListSelectionModel(); etalonColumnModel.setSelectionModel(etalonColumnsSelectionModel); etalonColumnModel.setColumnSelectionAllowed(true); etalonRowsSelectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); etalonColumnsSelectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // insets/constraints setup LinearInset rowsInset = new LinearInset(0, 0); LinearInset columnsInset = new LinearInset(0, 0);//(1, 0); LinearConstraint leftColsConstraint = new LinearConstraint(0, fixedCols - 1); LinearConstraint rightColsConstraint = new LinearConstraint(fixedCols, Integer.MAX_VALUE); LinearConstraint topRowsConstraint = new LinearConstraint(0, fixedRows - 1); LinearConstraint bottomRowsConstraint = new LinearConstraint(fixedRows, Integer.MAX_VALUE); // insetted layer models setup final TableModel insettedModel = new BoundaredTableModel(etalonModel, InsetPart.AFTER_INSET_BIAS, rowsInset, columnsInset); final ListSelectionModel insettedSelectionModel = new InsettedListSelectionModel(etalonRowsSelectionModel, rowsInset, new InsetContent() { public int getContentSize() { return insettedModel.getRowCount(); } }); final TableColumnModel insettedColumnModel = new InsettedColumnModel(etalonColumnModel, columnsInset); final ListSelectionModel insettedColumnSelectionModel = new InsettedListSelectionModel(etalonColumnsSelectionModel, columnsInset, new InsetContent() { public int getContentSize() { return insettedModel.getColumnCount(); } }); insettedColumnModel.setSelectionModel(insettedColumnSelectionModel); tlTable = new JTable(); trTable = new JTable(); blTable = new JTable(); brTable = new JTable(); // constrained layer models setup tlTable.setModel(insettedModel); tlTable.setSelectionModel(new ConstrainedListSelectionModel(insettedSelectionModel, topRowsConstraint)); tlTable.setColumnModel(new ConstrainedColumnModel(insettedColumnModel, leftColsConstraint)); tlTable.getColumnModel().setSelectionModel(new ConstrainedListSelectionModel(insettedColumnSelectionModel, leftColsConstraint)); tlTable.setRowSorter(new ConstrainedRowSorter<>(insettedModel, topRowsConstraint)); tlTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); trTable.setModel(insettedModel); trTable.setSelectionModel(new ConstrainedListSelectionModel(insettedSelectionModel, topRowsConstraint)); trTable.setColumnModel(new ConstrainedColumnModel(insettedColumnModel, rightColsConstraint)); trTable.getColumnModel().setSelectionModel(new ConstrainedListSelectionModel(insettedColumnSelectionModel, rightColsConstraint)); trTable.setRowSorter(new ConstrainedRowSorter<>(insettedModel, topRowsConstraint)); trTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); blTable.setModel(insettedModel); blTable.setSelectionModel(new ConstrainedListSelectionModel(insettedSelectionModel, bottomRowsConstraint)); blTable.setColumnModel(new ConstrainedColumnModel(insettedColumnModel, leftColsConstraint)); blTable.getColumnModel().setSelectionModel(new ConstrainedListSelectionModel(insettedColumnSelectionModel, leftColsConstraint)); blTable.setRowSorter(new ConstrainedRowSorter<>(insettedModel, bottomRowsConstraint)); blTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); brTable.setModel(insettedModel); brTable.setSelectionModel(new ConstrainedListSelectionModel(insettedSelectionModel, bottomRowsConstraint)); brTable.setColumnModel(new ConstrainedColumnModel(insettedColumnModel, rightColsConstraint)); brTable.getColumnModel().setSelectionModel(new ConstrainedListSelectionModel(insettedColumnSelectionModel, rightColsConstraint)); brTable.setRowSorter(new ConstrainedRowSorter<>(insettedModel, bottomRowsConstraint)); brTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // grid components setup JPanel tlPanel = new JPanel(new BorderLayout()); tlPanel.add(tlTable.getTableHeader(), BorderLayout.NORTH); tlPanel.add(tlTable, BorderLayout.CENTER); JPanel trPanel = new JPanel(new BorderLayout()); trPanel.add(trTable.getTableHeader(), BorderLayout.NORTH); trPanel.add(trTable, BorderLayout.CENTER); JPanel blPanel = new JPanel(new BorderLayout()); blPanel.add(blTable, BorderLayout.CENTER); JPanel brPanel = new JPanel(new BorderLayout()); brPanel.add(brTable, BorderLayout.CENTER); trPanel.setBorder(new MatteBorder(0, 0, 1, 0, Color.blue)); tlPanel.setBorder(new MatteBorder(0, 0, 1, 1, Color.blue)); blPanel.setBorder(new MatteBorder(0, 0, 0, 1, Color.blue)); final JScrollPane gridScroll = new JScrollPane(); gridScroll.setCorner(JScrollPane.UPPER_LEFT_CORNER, tlPanel); gridScroll.setColumnHeaderView(trPanel); gridScroll.setRowHeaderView(blPanel); gridScroll.setViewportView(brPanel); // test components setup JFrame frame = new JFrame(); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add(gridScroll, BorderLayout.CENTER); frame.setSize(800, 700); //frame.setVisible(true); frame.setTitle("configuredTest"); } @Test public void constraintedColumnsTest() { System.out.println("constraintedColumnsTest"); assertEquals(tlTable.getColumnCount(), fixedCols); checkColumnsEnumeration(tlTable, fixedCols); assertEquals(blTable.getColumnCount(), fixedCols); checkColumnsEnumeration(blTable, fixedCols); assertEquals(trTable.getColumnCount(), etalonColumnModel.getColumnCount() - fixedCols); checkColumnsEnumeration(trTable, etalonColumnModel.getColumnCount() - fixedCols); assertEquals(brTable.getColumnCount(), etalonColumnModel.getColumnCount() - fixedCols); checkColumnsEnumeration(brTable, etalonColumnModel.getColumnCount() - fixedCols); } @Test public void constraintedRowsTest() { System.out.println("constraintedRowsTest"); assertEquals(tlTable.getRowCount(), fixedRows); assertEquals(trTable.getRowCount(), fixedRows); assertEquals(blTable.getRowCount(), etalonModel.getRowCount() - fixedRows); assertEquals(brTable.getRowCount(), etalonModel.getRowCount() - fixedRows); } private void checkColumnsEnumeration(JTable aTable, int aCols) { Enumeration<TableColumn> cols = aTable.getColumnModel().getColumns(); int enumeratedColsCount = 0; while (cols.hasMoreElements()) { cols.nextElement(); enumeratedColsCount++; } assertEquals(enumeratedColsCount, aCols); assertEquals(aTable.getColumnCount(), enumeratedColsCount); } }