This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 227588
Collapse All | Expand All

(-)a/db.dataview/src/org/netbeans/modules/db/dataview/table/JXTableRowHeader.java (-23 / +45 lines)
Lines 149-155 Link Here
149
        }
149
        }
150
    }
150
    }
151
151
152
    private PropertyChangeListener tableSorterListener = new PropertyChangeListener() {
152
    private PropertyChangeListener backingTableListener = new PropertyChangeListener() {
153
        @Override
153
        @Override
154
        public void propertyChange(PropertyChangeEvent pce) {
154
        public void propertyChange(PropertyChangeEvent pce) {
155
            JTable t = (JTable) pce.getSource();
155
            JTable t = (JTable) pce.getSource();
Lines 161-176 Link Here
161
                    backingSorter = (RowSorter) pce.getNewValue();
161
                    backingSorter = (RowSorter) pce.getNewValue();
162
                    backingSorter.addRowSorterListener(rowSorterListener);
162
                    backingSorter.addRowSorterListener(rowSorterListener);
163
                }
163
                }
164
                updateRowCount();
164
            } else if (pce.getPropertyName().equals("rowHeight")) {
165
            } else if (pce.getPropertyName().equals("rowHeight")) {
165
                headerTable.setRowHeight((Integer) pce.getNewValue());
166
                headerTable.setRowHeight((Integer) pce.getNewValue());
167
            } else if ("model".equals(pce.getPropertyName())) {
168
                if(backingTableModel != null) {
169
                    backingTableModel.removeTableModelListener(
170
                            tableModelListener);
171
                }
172
                backingTableModel = (TableModel) pce.getNewValue();
173
                if(backingTableModel != null) {
174
                    backingTableModel.addTableModelListener(tableModelListener);
175
                }
176
                updateRowCount();
166
            }
177
            }
167
        }
178
        }
168
    };
179
    };
180
181
    private void updateRowCount() {
182
        ctm.setCount(backingTable.getRowCount());
183
    }
184
185
    private TableModelListener tableModelListener = new TableModelListener() {
186
        @Override
187
        public void tableChanged(TableModelEvent e) {
188
            updateRowCount();
189
        }
190
    };
169
    
191
    
170
    private RowSorterListener rowSorterListener = new RowSorterListener() {
192
    private RowSorterListener rowSorterListener = new RowSorterListener() {
171
        @Override
193
        @Override
172
        public void sorterChanged(RowSorterEvent rse) {
194
        public void sorterChanged(RowSorterEvent rse) {
173
            ctm.setCount(rse.getSource().getViewRowCount());
195
            updateRowCount();
174
        }
196
        }
175
    };
197
    };
176
    
198
    
Lines 243-248 Link Here
243
    private final CountingTableModel ctm = new CountingTableModel();
265
    private final CountingTableModel ctm = new CountingTableModel();
244
    private final JXTable headerTable;
266
    private final JXTable headerTable;
245
    private JXTable backingTable;
267
    private JXTable backingTable;
268
    private TableModel backingTableModel;
246
    private RowSorter<?> backingSorter;
269
    private RowSorter<?> backingSorter;
247
270
248
    /**
271
    /**
Lines 254-267 Link Here
254
     *            the table for which to produce a row header.
277
     *            the table for which to produce a row header.
255
     */
278
     */
256
    public JXTableRowHeader(JXTable table) {
279
    public JXTableRowHeader(JXTable table) {
280
        assert table != null: "JXTableRowHeader needs to be instanciated with a JXTable";
281
       
282
        this.backingTable = table;
283
        this.backingTableModel = table.getModel();
284
        this.backingTableModel.addTableModelListener(tableModelListener);
285
        
286
        headerTable = new JXTableDecorator(ctm,
287
                new JXTableRowHeader.InternalTableColumnModel());
257
288
258
        headerTable = new JXTableDecorator(ctm, new JXTableRowHeader.InternalTableColumnModel());
289
        ctm.setCount(backingTable.getRowCount());
259
290
        backingTable.addPropertyChangeListener(backingTableListener);
260
        setTable(table);
291
        headerTable.setRowHeight(backingTable.getRowHeight());
261
292
        headerTable.setSelectionModel(backingTable.getSelectionModel());
293
        
262
        setLayout(new GridLayout(1, 1));
294
        setLayout(new GridLayout(1, 1));
263
295
264
        this.headerTable.getModel().addTableModelListener(new JXTableRowHeader.HeaderResizeListener());
296
        this.headerTable.getModel().addTableModelListener(
297
                new JXTableRowHeader.HeaderResizeListener());
265
        this.headerTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
298
        this.headerTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
266
        this.headerTable.getTableHeader().setReorderingAllowed(false);
299
        this.headerTable.getTableHeader().setReorderingAllowed(false);
267
        this.headerTable.getTableHeader().setResizingAllowed(false);
300
        this.headerTable.getTableHeader().setResizingAllowed(false);
Lines 280-287 Link Here
280
        this.headerTable.setInheritsPopupMenu(true);
313
        this.headerTable.setInheritsPopupMenu(true);
281
        this.headerTable.setShowGrid(true, true);
314
        this.headerTable.setShowGrid(true, true);
282
        this.headerTable.setGridColor(ResultSetJXTable.GRID_COLOR);
315
        this.headerTable.setGridColor(ResultSetJXTable.GRID_COLOR);
283
        this.headerTable.setHighlighters(HighlighterFactory.createAlternateStriping(ResultSetJXTable.ROW_COLOR, ResultSetJXTable.ALTERNATE_ROW_COLOR));
316
        this.headerTable.setHighlighters(
284
            }
317
                HighlighterFactory.createAlternateStriping(
318
                ResultSetJXTable.ROW_COLOR, ResultSetJXTable.ALTERNATE_ROW_COLOR));
319
    }
285
320
286
    /**
321
    /**
287
     * Returns a default renderer to be used when no row header renderer is
322
     * Returns a default renderer to be used when no row header renderer is
Lines 295-315 Link Here
295
        return new JXTableRowHeader.RowHeaderColumnRenderer();
330
        return new JXTableRowHeader.RowHeaderColumnRenderer();
296
    }
331
    }
297
332
298
    public void setTable(JXTable table) {
299
        if(backingTable != null) {
300
            backingTable.removePropertyChangeListener(tableSorterListener);
301
    }
302
        backingTable = table;
303
        if(backingTable != null) {
304
            ctm.setCount(backingTable.getRowCount());
305
            backingTable.addPropertyChangeListener(tableSorterListener);
306
            headerTable.setRowHeight(backingTable.getRowHeight());
307
            headerTable.setSelectionModel(backingTable.getSelectionModel());
308
    }
309
    }
310
311
    @Override
333
    @Override
312
    public String getToolTipText(MouseEvent event) {
334
    public String getToolTipText(MouseEvent event) {
313
        return headerTable.getToolTipText(event);
335
        return headerTable.getToolTipText(event);
314
    }
336
    }
315
    }
337
}

Return to bug 227588