96 |
96 |
97 private int mouseXOffset; |
97 private int mouseXOffset; |
98 private Cursor otherCursor = resizeCursor; |
98 private Cursor otherCursor = resizeCursor; |
99 |
99 |
100 public void mouseClicked(MouseEvent e) { |
100 public void mouseClicked(MouseEvent e) { |
|
101 if (SwingUtilities2.shouldIgnore(e, header)) { |
|
102 return; |
|
103 } |
101 if (e.getClickCount() % 2 == 1 && |
104 if (e.getClickCount() % 2 == 1 && |
102 SwingUtilities.isLeftMouseButton(e)){ |
105 SwingUtilities.isLeftMouseButton(e)) { |
103 JTable table = header.getTable(); |
106 JTable table = header.getTable(); |
104 RowSorter sorter; |
107 RowSorter sorter; |
105 if (table != null && (sorter = table.getRowSorter()) != null) { |
108 if (table != null && (sorter = table.getRowSorter()) != null) { |
106 int columnIndex = header.columnAtPoint(e.getPoint()); |
109 int columnIndex = header.columnAtPoint(e.getPoint()); |
107 if (columnIndex != -1) { |
110 if (columnIndex != -1) { |
108 columnIndex = table.convertColumnIndexToModel( |
111 columnIndex = table.convertColumnIndexToModel( |
109 columnIndex); |
112 columnIndex); |
110 sorter.toggleSortOrder(columnIndex); |
113 sorter.toggleSortOrder(columnIndex); |
111 } |
114 } |
112 } |
115 } |
113 } |
116 } |
114 } |
117 } |
138 } |
141 } |
139 return header.getColumnModel().getColumn(columnIndex); |
142 return header.getColumnModel().getColumn(columnIndex); |
140 } |
143 } |
141 |
144 |
142 public void mousePressed(MouseEvent e) { |
145 public void mousePressed(MouseEvent e) { |
|
146 if (SwingUtilities2.shouldIgnore(e, header)) { |
|
147 return; |
|
148 } |
143 header.setDraggedColumn(null); |
149 header.setDraggedColumn(null); |
144 header.setResizingColumn(null); |
150 header.setResizingColumn(null); |
145 header.setDraggedDistance(0); |
151 header.setDraggedDistance(0); |
146 |
152 |
147 Point p = e.getPoint(); |
153 Point p = e.getPoint(); |
180 header.setCursor(otherCursor); |
186 header.setCursor(otherCursor); |
181 otherCursor = tmp; |
187 otherCursor = tmp; |
182 } |
188 } |
183 |
189 |
184 public void mouseMoved(MouseEvent e) { |
190 public void mouseMoved(MouseEvent e) { |
|
191 if (SwingUtilities2.shouldIgnore(e, header)) { |
|
192 return; |
|
193 } |
185 if (canResize(getResizingColumn(e.getPoint()), header) != |
194 if (canResize(getResizingColumn(e.getPoint()), header) != |
186 (header.getCursor() == resizeCursor)) { |
195 (header.getCursor() == resizeCursor)) { |
187 swapCursor(); |
196 swapCursor(); |
188 } |
197 } |
189 updateRolloverColumn(e); |
198 updateRolloverColumn(e); |
190 } |
199 } |
191 |
200 |
192 public void mouseDragged(MouseEvent e) { |
201 public void mouseDragged(MouseEvent e) { |
|
202 if (SwingUtilities2.shouldIgnore(e, header)) { |
|
203 return; |
|
204 } |
193 int mouseX = e.getX(); |
205 int mouseX = e.getX(); |
194 |
206 |
195 TableColumn resizingColumn = header.getResizingColumn(); |
207 TableColumn resizingColumn = header.getResizingColumn(); |
196 TableColumn draggedColumn = header.getDraggedColumn(); |
208 TableColumn draggedColumn = header.getDraggedColumn(); |
197 |
209 |
215 int columnIndex = viewIndexForColumn(draggedColumn); |
227 int columnIndex = viewIndexForColumn(draggedColumn); |
216 int newColumnIndex = columnIndex + (headerLeftToRight ? direction : -direction); |
228 int newColumnIndex = columnIndex + (headerLeftToRight ? direction : -direction); |
217 if (0 <= newColumnIndex && newColumnIndex < cm.getColumnCount()) { |
229 if (0 <= newColumnIndex && newColumnIndex < cm.getColumnCount()) { |
218 int width = cm.getColumn(newColumnIndex).getWidth(); |
230 int width = cm.getColumn(newColumnIndex).getWidth(); |
219 if (Math.abs(draggedDistance) > (width / 2)) { |
231 if (Math.abs(draggedDistance) > (width / 2)) { |
220 JTable table = header.getTable(); |
|
221 |
232 |
222 mouseXOffset = mouseXOffset + direction * width; |
233 mouseXOffset = mouseXOffset + direction * width; |
223 header.setDraggedDistance(draggedDistance - direction * width); |
234 header.setDraggedDistance(draggedDistance - direction * width); |
224 |
235 |
225 //Cache the selected column. |
236 //Cache the selected column. |
226 int selectedIndex = table.convertColumnIndexToModel( |
237 int selectedIndex = |
227 getSelectedColumnIndex()); |
238 SwingUtilities2.convertColumnIndexToModel( |
|
239 header.getColumnModel(), |
|
240 getSelectedColumnIndex()); |
228 |
241 |
229 //Now do the move. |
242 //Now do the move. |
230 cm.moveColumn(columnIndex, newColumnIndex); |
243 cm.moveColumn(columnIndex, newColumnIndex); |
231 |
244 |
232 //Update the selected index. |
245 //Update the selected index. |
233 selectColumn( |
246 selectColumn( |
234 table.convertColumnIndexToView(selectedIndex), |
247 SwingUtilities2.convertColumnIndexToView( |
|
248 header.getColumnModel(), selectedIndex), |
235 false); |
249 false); |
236 |
250 |
237 return; |
251 return; |
238 } |
252 } |
239 } |
253 } |
242 |
256 |
243 updateRolloverColumn(e); |
257 updateRolloverColumn(e); |
244 } |
258 } |
245 |
259 |
246 public void mouseReleased(MouseEvent e) { |
260 public void mouseReleased(MouseEvent e) { |
|
261 if (SwingUtilities2.shouldIgnore(e, header)) { |
|
262 return; |
|
263 } |
247 setDraggedDistance(0, viewIndexForColumn(header.getDraggedColumn())); |
264 setDraggedDistance(0, viewIndexForColumn(header.getDraggedColumn())); |
248 |
265 |
249 header.setResizingColumn(null); |
266 header.setResizingColumn(null); |
250 header.setDraggedColumn(null); |
267 header.setDraggedColumn(null); |
251 |
268 |
252 updateRolloverColumn(e); |
269 updateRolloverColumn(e); |
253 } |
270 } |
254 |
271 |
255 public void mouseEntered(MouseEvent e) { |
272 public void mouseEntered(MouseEvent e) { |
|
273 if (SwingUtilities2.shouldIgnore(e, header)) { |
|
274 return; |
|
275 } |
256 updateRolloverColumn(e); |
276 updateRolloverColumn(e); |
257 } |
277 } |
258 |
278 |
259 public void mouseExited(MouseEvent e) { |
279 public void mouseExited(MouseEvent e) { |
|
280 if (SwingUtilities2.shouldIgnore(e, header)) { |
|
281 return; |
|
282 } |
260 int oldRolloverColumn = rolloverColumn; |
283 int oldRolloverColumn = rolloverColumn; |
261 rolloverColumn = -1; |
284 rolloverColumn = -1; |
262 rolloverColumnUpdated(oldRolloverColumn, rolloverColumn); |
285 rolloverColumnUpdated(oldRolloverColumn, rolloverColumn); |
263 } |
286 } |
264 // |
287 // |