ui/src/main/java/ucar/nc2/ui/table/HidableTableColumnModel.java
public void setColumnVisible(TableColumn column, boolean visible) {
        if (isColumnVisible(column) == visible) {
            return;  // Visibility status did not change.
        }

        if (!visible) {
            super.removeColumn(column);
        } else {
            // find the visible index of the column:
            // iterate through both collections of visible and all columns, counting
            // visible columns up to the one that's about to be shown again
            int noVisibleColumns = tableColumns.size();
            int noInvisibleColumns = allTableColumns.size();
            int visibleIndex = 0;

            for (int invisibleIndex = 0; invisibleIndex < noInvisibleColumns; ++invisibleIndex) {
                TableColumn visibleColumn =
                        (visibleIndex < noVisibleColumns ? tableColumns.get(visibleIndex) : null);
                TableColumn testColumn = allTableColumns.get(invisibleIndex);

                if (testColumn == column) {
                    if (visibleColumn != column) {
                        super.addColumn(column);
                        super.moveColumn(tableColumns.size() - 1, visibleIndex);
                    }
                    return; // ####################
                }
                if (testColumn == visibleColumn) {
                    ++visibleIndex;
                }
            }
        }
    }
public void setColumnVisible(TableColumn column, boolean visible) {
        if (isColumnVisible(column) == visible) {
            return;  // Visibility status did not change.
        }

        if (!visible) {
            super.removeColumn(column);
        } else {
            // find the visible index of the column:
            // iterate through both collections of visible and all columns, counting
            // visible columns up to the one that's about to be shown again
            int noVisibleColumns = tableColumns.size();
            int noInvisibleColumns = allTableColumns.size();
            int visibleIndex = 0;

            for (int invisibleIndex = 0; invisibleIndex < noInvisibleColumns; ++invisibleIndex) {
                TableColumn visibleColumn =
                        (visibleIndex < noVisibleColumns ? tableColumns.get(visibleIndex) : null);
                TableColumn testColumn = allTableColumns.get(invisibleIndex);

                if (testColumn == column) {
                    if (visibleColumn != column) {
                        super.addColumn(column);
                        super.moveColumn(tableColumns.size() - 1, visibleIndex);
                    }
                    return; // ####################
                }
                if (testColumn == visibleColumn) {
                    ++visibleIndex;
                }
            }
        }
    }
public void setColumnVisible ( TableColumn column , boolean visible ) { if ( isColumnVisible ( column ) == visible ) { return ; // Visibility status did not change. } if ( ! visible ) { super . removeColumn ( column ) ; } else { // find the visible index of the column: // iterate through both collections of visible and all columns, counting // visible columns up to the one that's about to be shown again int noVisibleColumns = tableColumns . size ( ) ; int noInvisibleColumns = allTableColumns . size ( ) ; int visibleIndex = 0 ; for ( int invisibleIndex = 0 ; invisibleIndex < noInvisibleColumns ; ++ invisibleIndex ) { TableColumn visibleColumn = ( visibleIndex < noVisibleColumns ? tableColumns . get ( visibleIndex ) : null ) ; TableColumn testColumn = allTableColumns . get ( invisibleIndex ) ; if ( testColumn == column ) { if ( visibleColumn != column ) { super . addColumn ( column ) ; super . moveColumn ( tableColumns . size ( ) - 1 , visibleIndex ) ; } return ; // #################### } if ( testColumn == visibleColumn ) { ++ visibleIndex ; } } } }
listeners will receive columnAdded()/columnRemoved() event
listeners will receive columnAdded () / columnRemoved () event