jdk/src/share/classes/javax/swing/plaf/basic/BasicTableHeaderUI.java
changeset 5590 3ec077d7e893
parent 4394 92a8ec883f5d
child 5595 27cbc0c6ba34
equal deleted inserted replaced
5589:5e4f59f34eea 5590:3ec077d7e893
    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 //