Revision 41611 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/fmap/mapcontrol/dal/feature/swing/FeatureTablePanel.java
FeatureTablePanel.java | ||
---|---|---|
28 | 28 |
package org.gvsig.fmap.mapcontrol.dal.feature.swing; |
29 | 29 |
|
30 | 30 |
import java.awt.BorderLayout; |
31 |
import static java.awt.BorderLayout.CENTER; |
|
32 |
import java.awt.Component; |
|
33 |
import javax.swing.AbstractListModel; |
|
34 |
import javax.swing.JButton; |
|
31 | 35 |
|
32 | 36 |
import javax.swing.JLabel; |
37 |
import javax.swing.JList; |
|
33 | 38 |
import javax.swing.JPanel; |
34 | 39 |
import javax.swing.JScrollPane; |
40 |
import javax.swing.JTable; |
|
41 |
import javax.swing.ListCellRenderer; |
|
42 |
import javax.swing.ListModel; |
|
43 |
import javax.swing.UIManager; |
|
44 |
import javax.swing.table.JTableHeader; |
|
35 | 45 |
|
36 | 46 |
import org.gvsig.fmap.dal.DataStoreNotification; |
37 | 47 |
import org.gvsig.fmap.dal.exception.DataException; |
... | ... | |
226 | 236 |
*/ |
227 | 237 |
private JScrollPane getJScrollPane() throws DataException { |
228 | 238 |
if (jScrollPane == null) { |
239 |
FeatureTable theTable = getTable(); |
|
229 | 240 |
jScrollPane = new JScrollPane(); |
230 |
jScrollPane.setViewportView(getTable()); |
|
241 |
jScrollPane.setViewportView(theTable); |
|
242 |
jScrollPane.setRowHeaderView(getRowHeader(theTable)); |
|
231 | 243 |
} |
232 | 244 |
return jScrollPane; |
233 | 245 |
} |
234 | 246 |
|
247 |
private static class RowHeaderRenderer extends JButton implements ListCellRenderer { |
|
248 |
|
|
249 |
RowHeaderRenderer(JTable table) { |
|
250 |
JTableHeader header = table.getTableHeader(); |
|
251 |
setOpaque(true); |
|
252 |
setBorder(UIManager.getBorder("TableHeader.cellBorder")); |
|
253 |
setHorizontalAlignment(CENTER); |
|
254 |
setForeground(header.getForeground()); |
|
255 |
setBackground(header.getBackground()); |
|
256 |
setFont(header.getFont()); |
|
257 |
} |
|
258 |
|
|
259 |
public Component getListCellRendererComponent(JList list, Object value, |
|
260 |
int index, boolean isSelected, boolean cellHasFocus) { |
|
261 |
setText((value == null) ? "" : value.toString()); |
|
262 |
return this; |
|
263 |
} |
|
264 |
} |
|
265 |
|
|
266 |
private JList getRowHeader(final FeatureTable theTable) { |
|
267 |
|
|
268 |
ListModel lm = new AbstractListModel() { |
|
269 |
public int getSize() { |
|
270 |
return theTable.getRowCount(); |
|
271 |
} |
|
272 |
|
|
273 |
public Object getElementAt(int index) { |
|
274 |
return String.valueOf(index+1); |
|
275 |
} |
|
276 |
}; |
|
277 |
JList rowHeader = new JList(lm); |
|
278 |
rowHeader.setCellRenderer(new RowHeaderRenderer(theTable)); |
|
279 |
rowHeader.setFixedCellWidth(50); |
|
280 |
rowHeader.setFixedCellHeight(table.getRowHeight()); //+ table.getRowMargin()); |
|
281 |
return rowHeader; |
|
282 |
} |
|
283 |
|
|
235 | 284 |
public void update(Observable observable, Object notification) { |
236 | 285 |
// If selection changes from nothing selected to anything selected |
237 | 286 |
// or the reverse, update selection info |
Also available in: Unified diff