1 // 2 // Neuros Database Manipulator 3 // Copyright (C) 2003 Neuros Database Manipulator 4 // 5 // This program is free software; you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation; either version 2 of the License, or 8 // (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with this program; if not, write to the Free Software 17 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 // 19 // For information about Neuros Database Manipulator and its authors, 20 // please contact the Neuros Database Manipulator Web Site at 21 // http://neurosdbm.sourceforge.net 22 // 23 // 24 25 package net.sourceforge.neurosdbm; 26 27 28 import java.awt.GridBagLayout; 29 import java.awt.GridBagConstraints; 30 import java.awt.Insets; 31 import java.awt.event.ActionListener; 32 import java.awt.event.ActionEvent; 33 import javax.swing.JDialog; 34 import javax.swing.JScrollPane; 35 import javax.swing.JTable; 36 import javax.swing.JButton; 37 import javax.swing.event.ChangeEvent; 38 import javax.swing.table.TableModel; 39 import javax.swing.table.AbstractTableModel; 40 import net.sourceforge.neurosdbm.db.FullTrackInfo; 41 42 43 class ColumnChooser extends JDialog implements ActionListener { 44 45 private Boolean enabled[]; 46 47 private ColumnTable columnTable; 48 private JButton okButton; 49 private JButton cancelButton; 50 51 ColumnChooser(MainFrame parent) { 52 super(parent, true); 53 54 enabled = NeurosProperties.getColumnChooser(); 55 56 setTitle("Select Table Columns To Be Displayed"); 57 58 GridBagLayout layout = new GridBagLayout(); 59 getContentPane().setLayout(layout); 60 GridBagConstraints constraints; 61 62 constraints = new GridBagConstraints(); 63 constraints.fill = GridBagConstraints.BOTH; 64 constraints.gridwidth = GridBagConstraints.REMAINDER; 65 constraints.weightx = 1.0; 66 constraints.weighty = 1.0; 67 constraints.insets = new Insets(5, 5, 5, 5); 68 columnTable = new ColumnTable(new ColumnTableModel()); 69 columnTable.setCellSelectionEnabled(false); 70 JScrollPane columnTableScrollPane = new JScrollPane(columnTable); 71 layout.setConstraints(columnTableScrollPane, constraints); 72 getContentPane().add(columnTableScrollPane); 73 74 constraints = new GridBagConstraints(); 75 constraints.anchor = GridBagConstraints.EAST; 76 constraints.insets = new Insets(5, 5, 5, 5); 77 constraints.weightx = 1.0; 78 okButton = new JButton("OK"); 79 okButton.addActionListener(this); 80 layout.setConstraints(okButton, constraints); 81 getContentPane().add(okButton); 82 83 constraints = new GridBagConstraints(); 84 constraints.anchor = GridBagConstraints.EAST; 85 constraints.gridwidth = GridBagConstraints.REMAINDER; 86 constraints.insets = new Insets(5, 5, 5, 5); 87 cancelButton = new JButton("Cancel"); 88 cancelButton.addActionListener(this); 89 layout.setConstraints(cancelButton, constraints); 90 getContentPane().add(cancelButton); 91 92 setLocationRelativeTo(parent); 93 pack(); 94 95 enabled = NeurosProperties.getColumnChooser(); 96 } 97 98 99 public void actionPerformed(ActionEvent evt) { 100 if (evt.getSource() == okButton) { 101 NeurosProperties.setColumnChooser(enabled); 102 NeurosProperties.save(); 103 dispose(); 104 } 105 if (evt.getSource() == cancelButton) { 106 dispose(); 107 } 108 } 109 110 111 private class ColumnTable extends JTable { 112 ColumnTable(TableModel model) { 113 super(model); 114 } 115 116 public void editingStopped(ChangeEvent e) { 117 int rowEdited = getEditingRow(); 118 enabled[rowEdited] = new Boolean(!enabled[rowEdited].booleanValue()); 119 ((AbstractTableModel)getModel()).fireTableDataChanged(); 120 super.editingStopped(e); 121 } 122 } 123 124 private class ColumnTableModel extends AbstractTableModel { 125 126 public int getRowCount() { 127 return FullTrackInfo.NUMBER_COLUMNS; 128 } 129 130 public int getColumnCount() { 131 return 2; 132 } 133 134 public String getColumnName(int column) { 135 switch (column) { 136 case 0: 137 return "Table Column Name"; 138 case 1: 139 return "Enabled"; 140 } 141 return null; 142 } 143 144 public Class getColumnClass(int column) { 145 switch (column) { 146 case 0: 147 return String.class; 148 case 1: 149 return Boolean.class; 150 } 151 return null; 152 } 153 154 public boolean isCellEditable(int rowIndex, int columnIndex) { 155 switch (columnIndex) { 156 case 0: 157 return false; 158 case 1: 159 return true; 160 } 161 return false; 162 } 163 164 public Object getValueAt(int row, int column) { 165 switch (column) { 166 case 0: 167 return FullTrackInfo.columnHeaders[row]; 168 case 1: 169 return enabled[row]; 170 } 171 return null; 172 } 173 174 } 175 }