Package javax.swing.table

Source Code of javax.swing.table.DefaultTableColumnModelTest$TestTableColumnModelListener

/*
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You under the Apache License, Version 2.0
*  (the "License"); you may not use this file except in compliance with
*  the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
/**
* @author Anton Avtamonov
*/
package javax.swing.table;

import java.beans.PropertyChangeEvent;
import java.util.Enumeration;
import java.util.EventObject;
import javax.swing.BasicSwingTestCase;
import javax.swing.DefaultListSelectionModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableColumnModelEvent;
import javax.swing.event.TableColumnModelListener;

public class DefaultTableColumnModelTest extends BasicSwingTestCase {
    private DefaultTableColumnModel model;

    public DefaultTableColumnModelTest(final String name) {
        super(name);
    }

    @Override
    protected void setUp() throws Exception {
        model = new DefaultTableColumnModel();
    }

    @Override
    protected void tearDown() throws Exception {
        model = null;
    }

    public void testDefaultTableColumnModel() throws Exception {
        assertNotNull(model.tableColumns);
        assertEquals(0, model.tableColumns.size());
        assertTrue(model.selectionModel instanceof DefaultListSelectionModel);
        assertEquals(1, ((DefaultListSelectionModel) model.selectionModel)
                .getListSelectionListeners().length);
        assertEquals(model, ((DefaultListSelectionModel) model.selectionModel)
                .getListSelectionListeners()[0]);
        assertEquals(1, model.columnMargin);
        assertNotNull(model.listenerList);
        assertNull(model.changeEvent);
        assertFalse(model.columnSelectionAllowed);
        assertEquals(-1, model.totalColumnWidth);
    }

    public void testAddRemoveMoveColumn() throws Exception {
        TestTableColumnModelListener listener = new TestTableColumnModelListener();
        model.addColumnModelListener(listener);
        TableColumn column1 = new TableColumn();
        model.addColumn(column1);
        assertEquals(1, model.getColumnCount());
        assertEquals(0, column1.getModelIndex());
        assertTrue(listener.eventOccured());
        assertEquals(TestTableColumnModelListener.COLUMN_ADDED, listener.getEventType());
        assertEquals(model, ((TableColumnModelEvent) listener.getEvent()).getSource());
        assertEquals(0, ((TableColumnModelEvent) listener.getEvent()).getFromIndex());
        assertEquals(0, ((TableColumnModelEvent) listener.getEvent()).getToIndex());
        assertEquals(1, column1.getPropertyChangeListeners().length);
        assertEquals(model, column1.getPropertyChangeListeners()[0]);
        listener.reset();
        TableColumn column2 = new TableColumn();
        model.addColumn(column2);
        assertEquals(2, model.getColumnCount());
        assertEquals(0, column2.getModelIndex());
        assertTrue(listener.eventOccured());
        assertEquals(TestTableColumnModelListener.COLUMN_ADDED, listener.getEventType());
        assertEquals(model, ((TableColumnModelEvent) listener.getEvent()).getSource());
        assertEquals(0, ((TableColumnModelEvent) listener.getEvent()).getFromIndex());
        assertEquals(1, ((TableColumnModelEvent) listener.getEvent()).getToIndex());
        listener.reset();
        model.removeColumn(column1);
        assertEquals(1, model.getColumnCount());
        assertEquals(column2, model.getColumn(0));
        assertTrue(listener.eventOccured());
        assertEquals(TestTableColumnModelListener.COLUMN_REMOVED, listener.getEventType());
        assertEquals(model, ((TableColumnModelEvent) listener.getEvent()).getSource());
        assertEquals(0, ((TableColumnModelEvent) listener.getEvent()).getFromIndex());
        assertEquals(0, ((TableColumnModelEvent) listener.getEvent()).getToIndex());
        assertEquals(0, column1.getPropertyChangeListeners().length);
        listener.reset();
        model.addColumn(column1);
        assertEquals(column2, model.getColumn(0));
        assertEquals(column1, model.getColumn(1));
        assertTrue(listener.eventOccured());
        assertEquals(TestTableColumnModelListener.COLUMN_ADDED, listener.getEventType());
        assertEquals(model, ((TableColumnModelEvent) listener.getEvent()).getSource());
        assertEquals(0, ((TableColumnModelEvent) listener.getEvent()).getFromIndex());
        assertEquals(1, ((TableColumnModelEvent) listener.getEvent()).getToIndex());
        listener.reset();
        model.moveColumn(0, 1);
        assertEquals(column1, model.getColumn(0));
        assertEquals(column2, model.getColumn(1));
        assertTrue(listener.eventOccured());
        assertEquals(TestTableColumnModelListener.COLUMN_MOVED, listener.getEventType());
        assertEquals(model, ((TableColumnModelEvent) listener.getEvent()).getSource());
        assertEquals(0, ((TableColumnModelEvent) listener.getEvent()).getFromIndex());
        assertEquals(1, ((TableColumnModelEvent) listener.getEvent()).getToIndex());
        listener.reset();
        model.moveColumn(1, 0);
        assertEquals(column2, model.getColumn(0));
        assertEquals(column1, model.getColumn(1));
        assertTrue(listener.eventOccured());
        assertEquals(TestTableColumnModelListener.COLUMN_MOVED, listener.getEventType());
        assertEquals(model, ((TableColumnModelEvent) listener.getEvent()).getSource());
        assertEquals(1, ((TableColumnModelEvent) listener.getEvent()).getFromIndex());
        assertEquals(0, ((TableColumnModelEvent) listener.getEvent()).getToIndex());
        listener.reset();
        model.moveColumn(0, 0);
        assertEquals(column2, model.getColumn(0));
        assertEquals(column1, model.getColumn(1));
        assertTrue(listener.eventOccured());
        model.removeColumn(null);
        assertEquals(2, model.getColumnCount());
        assertTrue(listener.eventOccured());
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                model.addColumn(null);
            }
        });
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                model.moveColumn(5, 1);
            }
        });
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                model.moveColumn(1, -1);
            }
        });
    }

    public void testGetSetColumnMargin() throws Exception {
        TestTableColumnModelListener listener = new TestTableColumnModelListener();
        model.addColumnModelListener(listener);
        assertNull(model.changeEvent);
        assertEquals(1, model.getColumnMargin());
        model.setColumnMargin(10);
        assertEquals(10, model.getColumnMargin());
        assertTrue(listener.eventOccured());
        assertEquals(TestTableColumnModelListener.MARGIN_CHANGED, listener.getEventType());
        assertEquals(model, ((ChangeEvent) listener.getEvent()).getSource());
        assertNotNull(model.changeEvent);
        model.setColumnMargin(-1);
        assertEquals(-1, model.getColumnMargin());
    }

    public void testGetColumnCount() throws Exception {
        assertEquals(0, model.getColumnCount());
        model.addColumn(new TableColumn());
        assertEquals(1, model.getColumnCount());
        model.addColumn(new TableColumn());
        assertEquals(2, model.getColumnCount());
    }

    public void testGetColumns() throws Exception {
        Enumeration<?> columns = model.getColumns();
        assertNotNull(columns);
        assertFalse(columns.hasMoreElements());
        TableColumn column = new TableColumn();
        model.addColumn(column);
        columns = model.getColumns();
        assertNotNull(columns);
        assertTrue(columns.hasMoreElements());
        assertEquals(column, columns.nextElement());
        assertFalse(columns.hasMoreElements());
    }

    public void testGetColumnIndex() throws Exception {
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                model.getColumnIndex(null);
            }
        });
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                model.getColumnIndex("tag1");
            }
        });
        TableColumn column1 = new TableColumn();
        TableColumn column2 = new TableColumn();
        TableColumn column3 = new TableColumn();
        TableColumn column4 = new TableColumn();
        column2.setIdentifier("tag1");
        column3.setIdentifier("tag2");
        column4.setIdentifier("tag1");
        model.addColumn(column1);
        model.addColumn(column2);
        model.addColumn(column3);
        model.addColumn(column4);
        assertEquals(1, model.getColumnIndex("tag1"));
        assertEquals(2, model.getColumnIndex("tag2"));
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                model.getColumnIndex("tag3");
            }
        });
    }

    public void testGetColumn() throws Exception {
        testExceptionalCase(new ExceptionalCase() {
            @Override
            public void exceptionalAction() throws Exception {
                model.getColumn(0);
            }
        });
        TableColumn column1 = new TableColumn();
        TableColumn column2 = new TableColumn();
        TableColumn column3 = new TableColumn();
        TableColumn column4 = new TableColumn();
        model.addColumn(column1);
        model.addColumn(column2);
        model.addColumn(column3);
        model.addColumn(column4);
        assertEquals(column1, model.getColumn(0));
        assertEquals(column2, model.getColumn(1));
        assertEquals(column3, model.getColumn(2));
        assertEquals(column4, model.getColumn(3));
    }

    public void testGetColumnIndexAtX() throws Exception {
        assertEquals(-1, model.getColumnIndexAtX(0));
        model.addColumn(new TableColumn(0, 10));
        model.addColumn(new TableColumn(0, 20));
        model.addColumn(new TableColumn(0, 30));
        model.addColumn(new TableColumn(0, 40));
        assertEquals(0, model.getColumnIndexAtX(0));
        assertEquals(0, model.getColumnIndexAtX(9));
        assertEquals(1, model.getColumnIndexAtX(10));
        assertEquals(1, model.getColumnIndexAtX(29));
        assertEquals(2, model.getColumnIndexAtX(30));
        assertEquals(2, model.getColumnIndexAtX(59));
        assertEquals(3, model.getColumnIndexAtX(60));
        assertEquals(3, model.getColumnIndexAtX(99));
        assertEquals(-1, model.getColumnIndexAtX(100));
        assertEquals(-1, model.getColumnIndexAtX(-5));
    }

    public void testGetTotalColumnWidth() throws Exception {
        assertEquals(0, model.getTotalColumnWidth());
        model.addColumn(new TableColumn(0, 10));
        model.addColumn(new TableColumn(0, 20));
        model.addColumn(new TableColumn(0, 30));
        model.addColumn(new TableColumn(0, 40));
        assertEquals(100, model.getTotalColumnWidth());
    }

    public void testGetSetSelectionModel() throws Exception {
        assertTrue(model.getSelectionModel() instanceof DefaultListSelectionModel);
        DefaultListSelectionModel oldModel = (DefaultListSelectionModel) model.selectionModel;
        assertEquals(1, oldModel.getListSelectionListeners().length);
        assertEquals(model, oldModel.getListSelectionListeners()[0]);
        DefaultListSelectionModel newModel = new DefaultListSelectionModel();
        model.setSelectionModel(newModel);
        assertEquals(newModel, model.getSelectionModel());
        assertEquals(1, newModel.getListSelectionListeners().length);
        assertEquals(model, newModel.getListSelectionListeners()[0]);
        assertEquals(0, oldModel.getListSelectionListeners().length);
    }

    public void testGetSetColumnSelectionAllowed() throws Exception {
        TestTableColumnModelListener listener = new TestTableColumnModelListener();
        TestListSelectionListener selectionListener = new TestListSelectionListener();
        model.addColumnModelListener(listener);
        model.getSelectionModel().addListSelectionListener(selectionListener);
        assertFalse(model.getColumnSelectionAllowed());
        model.setColumnSelectionAllowed(true);
        assertTrue(model.getColumnSelectionAllowed());
        assertFalse(listener.eventOccured());
        assertFalse(selectionListener.eventOccured());
    }

    public void testGetSelectedColumns() throws Exception {
        assertEquals(0, model.getSelectedColumns().length);
        model.addColumn(new TableColumn());
        model.addColumn(new TableColumn());
        model.addColumn(new TableColumn());
        model.addColumn(new TableColumn());
        model.addColumn(new TableColumn());
        assertEquals(0, model.getSelectedColumns().length);
        model.getSelectionModel().setSelectionInterval(1, 1);
        model.getSelectionModel().addSelectionInterval(3, 4);
        int[] selectedIndices = model.getSelectedColumns();
        assertEquals(3, selectedIndices.length);
        assertEquals(1, selectedIndices[0]);
        assertEquals(3, selectedIndices[1]);
        assertEquals(4, selectedIndices[2]);
    }

    public void testGetSelectedColumnCount() throws Exception {
        assertEquals(0, model.getSelectedColumnCount());
        model.addColumn(new TableColumn());
        model.addColumn(new TableColumn());
        model.addColumn(new TableColumn());
        model.addColumn(new TableColumn());
        model.addColumn(new TableColumn());
        assertEquals(0, model.getSelectedColumnCount());
        model.getSelectionModel().setSelectionInterval(1, 1);
        model.getSelectionModel().addSelectionInterval(3, 4);
        assertEquals(3, model.getSelectedColumnCount());
    }

    public void testAddRemoveGetTableColumnModelListener() throws Exception {
        assertEquals(0, model.getColumnModelListeners().length);
        TableColumnModelListener listener = new TestTableColumnModelListener();
        model.addColumnModelListener(listener);
        model.addColumnModelListener(new TestTableColumnModelListener());
        assertEquals(2, model.getColumnModelListeners().length);
        model.removeColumnModelListener(listener);
        assertEquals(1, model.getColumnModelListeners().length);
    }

    public void testgetListeners() throws Exception {
        assertEquals(0, model.getListeners(TableColumnModelListener.class).length);
        model.addColumnModelListener(new TestTableColumnModelListener());
        assertEquals(1, model.getListeners(TableColumnModelListener.class).length);
    }

    public void testPropertyChange() throws Exception {
        TableColumn column = new TableColumn();
        model.addColumn(column);
        assertEquals(-1, model.totalColumnWidth);
        assertEquals(75, model.getTotalColumnWidth());
        column.setWidth(25);
        assertEquals(-1, model.totalColumnWidth);
        assertEquals(25, model.getTotalColumnWidth());
        model.totalColumnWidth = 10;
        model.propertyChange(new PropertyChangeEvent("source", TableColumn.WIDTH_PROPERTY, "a",
                "b"));
        assertEquals(-1, model.totalColumnWidth);
        model.totalColumnWidth = 10;
        model.propertyChange(new PropertyChangeEvent("source",
                TableColumn.PREFERRED_WIDTH_PROPERTY, "a", "b"));
        assertEquals(-1, model.totalColumnWidth);
    }

    public void testValueChanged() throws Exception {
        TestTableColumnModelListener listener = new TestTableColumnModelListener();
        model.addColumnModelListener(listener);
        model.getSelectionModel().setSelectionInterval(1, 2);
        assertTrue(listener.eventOccured());
        assertEquals(TestTableColumnModelListener.SELECTION_CHANGED, listener.getEventType());
        assertEquals(model.getSelectionModel(), listener.getEvent().getSource());
        assertEquals(1, ((ListSelectionEvent) listener.getEvent()).getFirstIndex());
        assertEquals(2, ((ListSelectionEvent) listener.getEvent()).getLastIndex());
        listener.reset();
        ListSelectionEvent event = new ListSelectionEvent("source", 4, 7, true);
        model.valueChanged(event);
        assertTrue(listener.eventOccured());
        assertEquals(TestTableColumnModelListener.SELECTION_CHANGED, listener.getEventType());
        assertEquals("source", listener.getEvent().getSource());
        assertEquals(4, ((ListSelectionEvent) listener.getEvent()).getFirstIndex());
        assertEquals(7, ((ListSelectionEvent) listener.getEvent()).getLastIndex());
    }

    public void testRecalcWidthCache() throws Exception {
        assertEquals(-1, model.totalColumnWidth);
        assertEquals(0, model.getTotalColumnWidth());
        assertEquals(0, model.totalColumnWidth);
        model.addColumn(new TableColumn());
        assertEquals(-1, model.totalColumnWidth);
        model.recalcWidthCache();
        assertEquals(75, model.totalColumnWidth);
        model.removeColumn(model.getColumn(0));
        assertEquals(-1, model.totalColumnWidth);
        model.addColumn(new TableColumn());
        model.addColumn(new TableColumn());
        model.totalColumnWidth = -1;
        model.moveColumn(0, 1);
        assertEquals(-1, model.totalColumnWidth);
    }

    private class TestTableColumnModelListener implements TableColumnModelListener {
        public static final int COLUMN_ADDED = 0;

        public static final int COLUMN_REMOVED = 1;

        public static final int COLUMN_MOVED = 2;

        public static final int MARGIN_CHANGED = 3;

        public static final int SELECTION_CHANGED = 4;

        private EventObject event;

        private int eventType = -1;

        public void columnMarginChanged(final ChangeEvent e) {
            event = e;
            eventType = MARGIN_CHANGED;
        }

        public void columnSelectionChanged(final ListSelectionEvent e) {
            event = e;
            eventType = SELECTION_CHANGED;
        }

        public void columnAdded(final TableColumnModelEvent e) {
            event = e;
            eventType = COLUMN_ADDED;
        }

        public void columnMoved(final TableColumnModelEvent e) {
            event = e;
            eventType = COLUMN_MOVED;
        }

        public void columnRemoved(final TableColumnModelEvent e) {
            event = e;
            eventType = COLUMN_REMOVED;
        }

        public EventObject getEvent() {
            return event;
        }

        public int getEventType() {
            return eventType;
        }

        public boolean eventOccured() {
            return eventType != -1;
        }

        public void reset() {
            event = null;
            eventType = -1;
        }
    }

    private class TestListSelectionListener implements ListSelectionListener {
        private ListSelectionEvent event;

        public void valueChanged(ListSelectionEvent e) {
            event = e;
        }

        public ListSelectionEvent getEvent() {
            return event;
        }

        public boolean eventOccured() {
            return event != null;
        }

        public void reset() {
            event = null;
        }
    }
}
TOP

Related Classes of javax.swing.table.DefaultTableColumnModelTest$TestTableColumnModelListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.