/******************************************************************************* * Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com) * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt ******************************************************************************/ package com.opendoorlogistics.studio.controls; import java.util.ArrayList; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; final public class ColumnSelectorComboBox extends JComboBox<ColumnSelectorComboBox.SelectedColumn> { private static String getColumnName(int col){ class TmpCls extends AbstractTableModel{ @Override public int getRowCount() { // TODO Auto-generated method stub return 0; } @Override public int getColumnCount() { // TODO Auto-generated method stub return 0; } @Override public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub return null; } } TmpCls cls = new TmpCls(); return cls.getColumnName(col); } /** * */ private static final long serialVersionUID = 1L; public ColumnSelectorComboBox(){ this(null,0); } public ColumnSelectorComboBox(TableModel table, int skipFirstNColumns){ // get names, using first row if we have one int nbCols=table.getColumnCount(); ArrayList<SelectedColumn> cols = new ArrayList<>(); cols.add(undefined); for(int i =skipFirstNColumns ; i < nbCols ; i++){ String name = table.getColumnName(i); if(name==null || name.length()==0){ name = getColumnName(i); } cols.add(new SelectedColumn(name ,i)); } setModel(new DefaultComboBoxModel<SelectedColumn>( cols.toArray(new SelectedColumn[cols.size()]))); } public static class SelectedColumn{ public SelectedColumn(String name, int colIndx) { super(); this.name = name; this.colIndx = colIndx; } private String name; private int colIndx; public String getName() { return name; } public int getColIndx() { return colIndx; } @Override public String toString(){ return name; } } private static SelectedColumn undefined = new SelectedColumn("- undefined - ", -1); }