Statistics
| Revision:

root / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / gui / legendmanager / panels / FSymbolTable.java @ 470

History | View | Annotate | Download (6.9 KB)

1
/*
2
 * Created on 27-abr-2004
3
 *
4
 * To change the template for this generated file go to
5
 * Window>Preferences>Java>Code Generation>Code and Comments
6
 */
7
package com.iver.cit.gvsig.gui.legendmanager.panels;
8

    
9
/**
10
 * @author fjp
11
 *
12
 * To change the template for this generated type comment go to
13
 * Window>Preferences>Java>Code Generation>Code and Comments
14
 */
15

    
16
/*
17
 * TableRenderDemo.java is a 1.4 application that requires no other files.
18
 */
19

    
20
import java.awt.Component;
21
import java.awt.Dimension;
22
import java.awt.GridLayout;
23
import java.util.Iterator;
24
import java.util.Set;
25
import java.util.TreeMap;
26

    
27
import javax.swing.JPanel;
28
import javax.swing.JScrollPane;
29
import javax.swing.JTable;
30
import javax.swing.table.DefaultTableModel;
31
import javax.swing.table.TableCellRenderer;
32
import javax.swing.table.TableColumn;
33

    
34
import com.iver.cit.gvsig.fmap.core.v02.FSymbol;
35
import com.iver.mdiApp.Utilities;
36

    
37

    
38

    
39
public class FSymbolTable extends JPanel {
40

    
41
        private boolean DEBUG = true;
42
        
43
        // private  MyTableModel m_TableModel;
44
        
45
        private JTable table;
46
        
47
        
48
        public void addRow(Object[] vector)
49
        {
50
                MyTableModel m = (MyTableModel) table.getModel();
51
                m.addRow(vector); 
52
        }
53
        public void removeSelectedRows()
54
        {
55
                MyTableModel m = (MyTableModel) table.getModel();
56
                int [] selectedRows = table.getSelectedRows();
57
                for (int i=selectedRows.length-1; i >= 0; i--)
58
                {
59
                        m.removeRow(selectedRows[i]);
60
                }
61
        }
62
        
63
        public void fillTableFromSymbolList(FSymbol[] symbols, Object[] values, String[] descriptions)
64
        {        
65
                // Object clave;
66
                FSymbol theSymbol; 
67

    
68
                for (int i=0; i < symbols.length; i++)
69
                { 
70
                        theSymbol = symbols[i];
71
                        Object[] theRow = new Object[3];
72
                        theRow[0] = theSymbol;
73
                        theRow[1] = values[i];
74
                        theRow[2] = descriptions[i];
75
                        addRow(theRow);
76
                }
77
                
78
        }
79
        
80
        
81
        public Object getFieldValue(int row, int col)
82
        {
83
                MyTableModel m = (MyTableModel) table.getModel();
84
                return m.getValueAt(row, col); 
85
        }
86
        public int getRowCount()
87
        {
88
                MyTableModel m = (MyTableModel) table.getModel();
89
                return m.getRowCount(); 
90
        }
91
        
92
        public void removeAllItems()
93
        {
94
                table.setModel(new MyTableModel());
95
                setUpSymbolColumn(table, table.getColumnModel().getColumn(0));                
96
        }
97

    
98
        public FSymbolTable() {
99
                super(new GridLayout(1,0));
100
                
101

    
102
                table = new JTable(new MyTableModel());
103
                table.setPreferredScrollableViewportSize(new Dimension(500, 70));
104

    
105
                //Create the scroll pane and add the table to it.
106
                JScrollPane scrollPane = new JScrollPane(table);
107

    
108
                //Set up column sizes.
109
                initColumnSizes(table);
110
                
111
                setUpSymbolColumn(table, table.getColumnModel().getColumn(0));
112

    
113
                //Add the scroll pane to this panel.
114
                add(scrollPane);
115
                
116
                table.setRowSelectionAllowed(true);
117
        }
118

    
119
        /*
120
         * This method picks good column sizes.
121
         * If all column heads are wider than the column's cells'
122
         * contents, then you can just use column.sizeWidthToFit().
123
         */
124
        private void initColumnSizes(JTable table) {
125
                MyTableModel model = (MyTableModel)table.getModel();
126
                TableColumn column = null;
127
                Component comp = null;
128
                int headerWidth = 0;
129
                int cellWidth = 0;
130
                TableCellRenderer headerRenderer =
131
                        table.getTableHeader().getDefaultRenderer();
132

    
133
                /* for (int i = 0; i < table.getColumnCount(); i++) {
134
                        column = table.getColumnModel().getColumn(i);
135

136
                        comp = headerRenderer.getTableCellRendererComponent(
137
                                                                 null, column.getHeaderValue(),
138
                                                                 false, false, 0, 0);
139
                        headerWidth = comp.getPreferredSize().width;
140

141
                        comp = table.getDefaultRenderer(model.getColumnClass(i)).
142
                                                         getTableCellRendererComponent(
143
                                                                 table, longValues[i],
144
                                                                 false, false, 0, i);
145
                        cellWidth = comp.getPreferredSize().width;
146

147
                        if (DEBUG) {
148
                                System.out.println("Initializing width of column "
149
                                                                   + i + ". "
150
                                                                   + "headerWidth = " + headerWidth
151
                                                                   + "; cellWidth = " + cellWidth);
152
                        }
153

154
                        //XXX: Before Swing 1.1 Beta 2, use setMinWidth instead.
155
                        column.setPreferredWidth(Math.max(headerWidth, cellWidth));
156
                } */
157
        }
158

    
159
        public void setUpSymbolColumn(JTable table,
160
                                                                 TableColumn m_FSymbolComlumn) {
161
                //Set up the editor 
162
                /* JComboBox comboBox = new JComboBox();
163
                comboBox.addItem("Snowboarding");
164
                comboBox.addItem("Rowing");
165
                comboBox.addItem("Knitting");
166
                comboBox.addItem("Speed reading");
167
                comboBox.addItem("Pool");
168
                comboBox.addItem("None of the above");
169
                sportColumn.setCellEditor(new DefaultCellEditor(comboBox));
170

171
                //Set up tool tips 
172
                DefaultTableCellRenderer renderer =
173
                                new DefaultTableCellRenderer();
174
                renderer.setToolTipText("Click for combo box"); */
175
                
176
                
177
                m_FSymbolComlumn.setMaxWidth(100);
178
                m_FSymbolComlumn.setWidth(60);
179
                m_FSymbolComlumn.setPreferredWidth(60);
180
                m_FSymbolComlumn.setMinWidth(50);
181
                
182
                FCellEditor editor = new FCellEditor();
183
                m_FSymbolComlumn.setCellEditor(editor);
184
                
185
                FCellRenderer renderer = new FCellRenderer(true);
186
                m_FSymbolComlumn.setCellRenderer(renderer);
187
        }
188

    
189
        class MyTableModel extends DefaultTableModel { //  AbstractTableModel {
190
        
191
                private String[] columnNames = {Utilities.getMessage(this,"Simbolo"),
192
                                                Utilities.getMessage(this,"Valor"),
193
                                                Utilities.getMessage(this,"Etiqueta") };
194

    
195
                public int getColumnCount() {
196
                        return columnNames.length;
197
                }
198

    
199
                public String getColumnName(int col) {
200
                        return columnNames[col];
201
                }
202

    
203
                /*
204
                 * JTable uses this method to determine the default renderer/
205
                 * editor for each cell.  If we didn't implement this method,
206
                 * then the last column would contain text ("true"/"false"),
207
                 * rather than a check box.
208
                 */
209
                public Class getColumnClass(int c) {
210
                        return getValueAt(0, c).getClass();
211
                }
212

    
213
                /*
214
                 * Don't need to implement this method unless your table's
215
                 * editable.
216
                 */
217
                public boolean isCellEditable(int row, int col) {
218
                        //Note that the data/cell address is constant,
219
                        //no matter where the cell appears onscreen.
220
                        //if (col > 0) {
221
                                return true;
222
                        /* } else {
223
                                return false;
224
                        } */
225
                }
226

    
227
                /*
228
                 * Don't need to implement this method unless your table's
229
                 * data can change.
230
                 */
231
                /* public void setValueAt(Object value, int row, int col) {
232
                        if (DEBUG) {
233
                                System.out.println("Setting value at " + row + "," + col
234
                                                                   + " to " + value
235
                                                                   + " (an instance of "
236
                                                                   + value.getClass() + ")");
237
                        }
238
                        // FSymbol theSymbol;
239
                        switch (col)
240
                        {
241
                                case 0: // Simbolo
242
                                        // m_FRenderer.setValueSymbol(row,(FSymbol) value);
243
                                        break;
244
                                case 1: // Clave
245
                                        FInterval newInterval = FInterval.parseString((String) value);
246
                                        this.setValueAt(newInterval,row,col);
247
                                        break;
248
                                case 2: // Etiqueta
249
                                        // theSymbol = m_FRenderer.getSymbolByID(row);
250
                                        // theSymbol.m_Descrip = (String) value;
251
                                        
252
                        }
253
                        // data[row][col] = value;
254
                        fireTableCellUpdated(row, col); 
255

256
                }  */
257

    
258
                /* private void printDebugData() {
259
                        int numRows = getRowCount();
260
                        int numCols = getColumnCount();
261

262
                        for (int i=0; i < numRows; i++) {
263
                                System.out.print("    row " + i + ":");
264
                                for (int j=0; j < numCols; j++) {
265
                                        System.out.print("  " + data[i][j]);
266
                                }
267
                                System.out.println();
268
                        }
269
                        System.out.println("--------------------------");
270
                } */
271
        }
272

    
273
}