1 package fr.ifremer.quadrige2.ui.swing.common.table; 2 3 /*- 4 * #%L 5 * Quadrige2 Core :: Quadrige2 UI Common 6 * $Id:$ 7 * $HeadURL:$ 8 * %% 9 * Copyright (C) 2017 Ifremer 10 * %% 11 * This program is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Affero General Public License as published by 13 * the Free Software Foundation, either version 3 of the License, or 14 * (at your option) any later version. 15 * 16 * This program is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU General Public License for more details. 20 * 21 * You should have received a copy of the GNU Affero General Public License 22 * along with this program. If not, see <http://www.gnu.org/licenses/>. 23 * #L% 24 */ 25 26 27 import org.jdesktop.swingx.table.DefaultTableColumnModelExt; 28 29 import javax.swing.table.TableColumn; 30 31 /** 32 * The default table column model used for application 33 * <p/> 34 * The CheckTableColumn is not draggable 35 * <p/> 36 * Created by Ludovic on 13/05/2015. 37 */ 38 public class SwingTableColumnModel extends DefaultTableColumnModelExt { 39 40 boolean hasCheckTableColumn; 41 42 /** {@inheritDoc} */ 43 @Override 44 public void moveColumn(int columnIndex, int newIndex) { 45 46 // Prevent the CheckTableColumn to be moved 47 if (getColumn(columnIndex) instanceof CheckTableColumn) { 48 return; 49 } 50 51 // Prevent other column to be move before CheckTableColumn (if exists) 52 if (newIndex == CheckTableColumn.FIXED_VIEW_POSITION && hasCheckTableColumn) { 53 return; 54 } 55 56 super.moveColumn(columnIndex, newIndex); 57 } 58 59 /** {@inheritDoc} */ 60 @Override 61 public void addColumn(TableColumn aColumn) { 62 super.addColumn(aColumn); 63 64 // move CheckTableColumn to the first position 65 if (aColumn instanceof CheckTableColumn) { 66 super.moveColumn(aColumn.getModelIndex(), CheckTableColumn.FIXED_VIEW_POSITION); 67 hasCheckTableColumn = true; 68 } 69 } 70 }