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/08/01 03:45:30 UTC

svn commit: r799784 - in /incubator/pivot/trunk: demos/src/org/apache/pivot/demos/lists/ wtk/src/org/apache/pivot/wtk/ wtk/test/org/apache/pivot/wtk/test/

Author: gbrown
Date: Sat Aug  1 01:45:30 2009
New Revision: 799784

URL: http://svn.apache.org/viewvc?rev=799784&view=rev
Log:
Restore baseline multi-select functionality; resolve issue PIVOT-195.

Modified:
    incubator/pivot/trunk/demos/src/org/apache/pivot/demos/lists/MultiSelect.java
    incubator/pivot/trunk/demos/src/org/apache/pivot/demos/lists/multi_select.wtkx
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListSelection.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListView.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/TableView.java
    incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/CheckedListViewTest.java

Modified: incubator/pivot/trunk/demos/src/org/apache/pivot/demos/lists/MultiSelect.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/demos/src/org/apache/pivot/demos/lists/MultiSelect.java?rev=799784&r1=799783&r2=799784&view=diff
==============================================================================
--- incubator/pivot/trunk/demos/src/org/apache/pivot/demos/lists/MultiSelect.java (original)
+++ incubator/pivot/trunk/demos/src/org/apache/pivot/demos/lists/MultiSelect.java Sat Aug  1 01:45:30 2009
@@ -60,6 +60,14 @@
 
         window.open(display);
         dataListView.requestFocus();
+
+        dataListView.clearSelection();
+        dataListView.addSelectedRange(0, 4);
+        dataListView.addSelectedRange(8, 12);
+        dataListView.addSelectedRange(4, 7);
+
+        dataListView.removeSelectedRange(1, 1);
+        dataListView.removeSelectedRange(0, 0);
     }
 
     @Override

Modified: incubator/pivot/trunk/demos/src/org/apache/pivot/demos/lists/multi_select.wtkx
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/demos/src/org/apache/pivot/demos/lists/multi_select.wtkx?rev=799784&r1=799783&r2=799784&view=diff
==============================================================================
--- incubator/pivot/trunk/demos/src/org/apache/pivot/demos/lists/multi_select.wtkx (original)
+++ incubator/pivot/trunk/demos/src/org/apache/pivot/demos/lists/multi_select.wtkx Sat Aug  1 01:45:30 2009
@@ -33,9 +33,7 @@
                         <content>
                             <ScrollPane horizontalScrollBarPolicy="fill">
                                 <view>
-                                    <ListView wtkx:id="dataListView" selectMode="multi"
-                                        selectedRanges="[{start:0, end:1}, {start:3, end:7}, {start:10, end:15},
-                                            {start:25, end:30}, {start:4, end:19}]">
+                                    <ListView wtkx:id="dataListView" selectMode="multi">
                                         <listData>
                                             <content:NumericSpinnerData lowerBound="0" upperBound="31"
                                                 increment="1"/>

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListSelection.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListSelection.java?rev=799784&r1=799783&r2=799784&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListSelection.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListSelection.java Sat Aug  1 01:45:30 2009
@@ -183,7 +183,9 @@
                     removed.add(range);
                 } else {
                     if (range.start > lowerRange.start) {
-                        // TODO Remove the tail of this range; add to removed list
+                        // Remove the tail of this range
+                        // TODO Add removed tail to removed list
+                        selectedRanges.update(i, new Span(lowerRange.start, range.start - 1));
                         i++;
                     }
 
@@ -198,15 +200,15 @@
                     Span upperRange = selectedRanges.get(j - 1);
 
                     if (range.end < upperRange.end) {
-                        // TODO Remove the head of this range; add to removed list
+                        // Remove the head of this range;
+                        // TODO Add removed head to removed list
+                        selectedRanges.update(j, new Span(range.end + 1, upperRange.end));
                         j--;
                     }
 
                     // Remove all cleared ranges
                     // TODO Add the removed ranges to the removed list
-                    if (i < j) {
-                        selectedRanges.remove(i + 1, j - i - 1);
-                    }
+                    selectedRanges.remove(i, j - i);
                 }
             }
         }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListView.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListView.java?rev=799784&r1=799783&r2=799784&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListView.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ListView.java Sat Aug  1 01:45:30 2009
@@ -290,15 +290,22 @@
             // Decrement selected ranges
             listSelection.removeIndexes(index, count);
 
-            int i, n;
-
-            // Decrement checked indexes
-            i = ArrayList.binarySearch(checkedIndexes, index);
+            // Remove and decrement checked indexes
+            int i = ArrayList.binarySearch(checkedIndexes, index);
             if (i < 0) {
                 i = -(i + 1);
             }
 
-            n = checkedIndexes.getLength();
+            int j = ArrayList.binarySearch(checkedIndexes, index + count - 1);
+            if (j < 0) {
+                j = -(j + 1);
+            } else {
+                j++;
+            }
+
+            checkedIndexes.remove(i, j - i);
+
+            int n = checkedIndexes.getLength();
             while (i < n) {
                 checkedIndexes.update(i, checkedIndexes.get(i) - count);
                 i++;
@@ -672,10 +679,14 @@
 
         Sequence<Span> added = listSelection.addRange(start, end);
 
+        // TODO
+        listViewSelectionListeners.selectedRangeAdded(this, start, end);
+        /*
         for (int i = 0, n = added.getLength(); i < n; i++) {
             Span addedRange = added.get(i);
             listViewSelectionListeners.selectedRangeAdded(this, addedRange.start, addedRange.end);
         }
+        */
     }
 
     /**
@@ -722,10 +733,15 @@
 
         Sequence<Span> removed = listSelection.removeRange(start, end);
 
+        // TODO
+        listViewSelectionListeners.selectedRangeRemoved(this, start, end);
+
+        /*
         for (int i = 0, n = removed.getLength(); i < n; i++) {
             Span removedRange = removed.get(i);
             listViewSelectionListeners.selectedRangeRemoved(this, removedRange.start, removedRange.end);
         }
+        */
     }
 
     /**

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/TableView.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/TableView.java?rev=799784&r1=799783&r2=799784&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/TableView.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/TableView.java Sat Aug  1 01:45:30 2009
@@ -1132,10 +1132,15 @@
 
         Sequence<Span> added = tableSelection.addRange(start, end);
 
+        // TODO
+        tableViewSelectionListeners.selectedRangeAdded(this, start, end);
+
+        /*
         for (int i = 0, n = added.getLength(); i < n; i++) {
             Span addedRange = added.get(i);
             tableViewSelectionListeners.selectedRangeAdded(this, addedRange.start, addedRange.end);
         }
+        */
     }
 
     /**
@@ -1182,10 +1187,15 @@
 
         Sequence<Span> removed = tableSelection.removeRange(start, end);
 
+        // TODO
+        tableViewSelectionListeners.selectedRangeRemoved(this, start, end);
+
+        /*
         for (int i = 0, n = removed.getLength(); i < n; i++) {
             Span removedRange = removed.get(i);
             tableViewSelectionListeners.selectedRangeRemoved(this, removedRange.start, removedRange.end);
         }
+        */
     }
 
     /**

Modified: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/CheckedListViewTest.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/CheckedListViewTest.java?rev=799784&r1=799783&r2=799784&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/CheckedListViewTest.java (original)
+++ incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/CheckedListViewTest.java Sat Aug  1 01:45:30 2009
@@ -27,6 +27,7 @@
 import org.apache.pivot.wtk.Display;
 import org.apache.pivot.wtk.Keyboard;
 import org.apache.pivot.wtk.ListView;
+import org.apache.pivot.wtk.Span;
 import org.apache.pivot.wtk.Window;
 
 
@@ -48,9 +49,10 @@
                 if (keyCode == Keyboard.KeyCode.DELETE) {
                     List<Object> listData = (List<Object>)listView.getListData();
 
-                    Sequence<Object> selectedItems = listView.getSelectedItems();
-                    for (int i = 0, n = selectedItems.getLength(); i < n; i++) {
-                        listData.remove(selectedItems.get(i));
+                    Sequence<Span> selectedRanges = listView.getSelectedRanges();
+                    for (int i = selectedRanges.getLength() - 1; i >= 0; i--) {
+                        Span selectedRange = selectedRanges.get(i);
+                        listData.remove(selectedRange.start, selectedRange.end - selectedRange.start + 1);
                     }
                 }