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);
}
}