You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2009/10/14 18:49:20 UTC

svn commit: r825190 - /incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewHeaderSkin.java

Author: gbrown
Date: Wed Oct 14 16:49:20 2009
New Revision: 825190

URL: http://svn.apache.org/viewvc?rev=825190&view=rev
Log:
In TerraTableViewHeaderSkin, sort on all mouse clicks, not just when the click count is 1; resolve issue PIVOT-248.

Modified:
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewHeaderSkin.java

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewHeaderSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewHeaderSkin.java?rev=825190&r1=825189&r2=825190&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewHeaderSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewHeaderSkin.java Wed Oct 14 16:49:20 2009
@@ -26,6 +26,7 @@
 
 import org.apache.pivot.collections.ArrayList;
 import org.apache.pivot.collections.Dictionary;
+import org.apache.pivot.collections.List;
 import org.apache.pivot.collections.Sequence;
 import org.apache.pivot.wtk.Bounds;
 import org.apache.pivot.wtk.Component;
@@ -617,6 +618,11 @@
         TableView tableView = tableViewHeader.getTableView();
 
         if (tableView != null) {
+            if (resizeHeaderIndex != -1
+                && Mouse.getCapturer() != tableViewHeader) {
+                Mouse.capture(tableViewHeader);
+            }
+
             if (Mouse.getCapturer() == tableViewHeader) {
                 TableView.Column column = tableView.getColumns().get(resizeHeaderIndex);
                 Bounds headerBounds = getHeaderBounds(resizeHeaderIndex);
@@ -677,7 +683,6 @@
                         && column.getWidth() != -1
                         && x > headerBounds.x + headerBounds.width - RESIZE_HANDLE_SIZE) {
                         resizeHeaderIndex = headerIndex;
-                        Mouse.capture(tableViewHeader);
                     } else if (headersPressable) {
                         pressedHeaderIndex = headerIndex;
                         repaintComponent(getHeaderBounds(pressedHeaderIndex));
@@ -694,12 +699,13 @@
         boolean consumed = super.mouseUp(component, button, x, y);
 
         if (button == Mouse.Button.LEFT) {
-            if (Mouse.getCapturer() == component) {
-                Mouse.release();
-            } else {
-                if (pressedHeaderIndex != -1) {
-                    repaintComponent(getHeaderBounds(pressedHeaderIndex));
+            if (resizeHeaderIndex != -1) {
+                if (Mouse.getCapturer() == component) {
+                    Mouse.release();
+                    resizeHeaderIndex = -1;
                 }
+            } else if (pressedHeaderIndex != -1) {
+                repaintComponent(getHeaderBounds(pressedHeaderIndex));
             }
         }
 
@@ -714,9 +720,25 @@
             TableViewHeader tableViewHeader = (TableViewHeader)getComponent();
             TableView tableView = tableViewHeader.getTableView();
 
-            if (count == 1
-                && pressedHeaderIndex != -1
-                && headersPressable) {
+            if (resizeHeaderIndex != -1) {
+                if (count == 2) {
+                    // Calculate the maximum cell width
+                    int columnWidth = 0;
+
+                    TableView.Column column = tableView.getColumns().get(resizeHeaderIndex);
+                    TableView.CellRenderer cellRenderer = column.getCellRenderer();
+                    List<?> tableData = tableView.getTableData();
+
+                    int rowIndex = 0;
+                    for (Object rowData : tableData) {
+                        cellRenderer.render(rowData, rowIndex++, resizeHeaderIndex, tableView,
+                            column.getName(), false, false, false);
+                        columnWidth = Math.max(cellRenderer.getPreferredWidth(-1), columnWidth);
+                    }
+
+                    column.setWidth(columnWidth);
+                }
+            } else if (pressedHeaderIndex != -1) {
                 // Press the header
                 tableViewHeader.pressHeader(pressedHeaderIndex);
 
@@ -745,25 +767,9 @@
 
                     consumed = true;
                 }
-            } else if (count == 2
-                && columnsResizable) {
-                if (tableView != null) {
-                    int headerIndex = getHeaderAt(x);
-
-                    if (headerIndex != -1) {
-                        Bounds headerBounds = getHeaderBounds(headerIndex);
-                        TableView.Column column = tableView.getColumns().get(headerIndex);
-
-                        if (!column.isRelative()
-                            && column.getWidth() != -1
-                            && x > headerBounds.x + headerBounds.width - RESIZE_HANDLE_SIZE) {
-                            // TODO PIVOT-248
-                            consumed = true;
-                        }
-                    }
-                }
             }
 
+            resizeHeaderIndex = -1;
             pressedHeaderIndex = -1;
         }