Mercurial > projects > dwt-addons
diff dwtx/jface/viewers/AbstractTreeViewer.d @ 104:04b47443bb01
Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
These new wrappers now use the tango.util.containers instead of the tango.util.collections.
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Thu, 07 Aug 2008 15:01:33 +0200 |
parents | 5df4896124c7 |
children |
line wrap: on
line diff
--- a/dwtx/jface/viewers/AbstractTreeViewer.d Sun Aug 03 17:01:51 2008 +0200 +++ b/dwtx/jface/viewers/AbstractTreeViewer.d Thu Aug 07 15:01:33 2008 +0200 @@ -43,10 +43,6 @@ import dwtx.jface.viewers.IBaseLabelProvider; import dwtx.jface.viewers.ITreePathLabelProvider; -import tango.util.collection.LinkSeq; -import tango.util.collection.ArraySeq; -import tango.util.collection.model.Seq; -import tango.util.collection.model.SeqView; import dwt.DWT; @@ -64,6 +60,7 @@ import dwtx.jface.util.SafeRunnable; import dwt.dwthelper.utils; +import dwtx.dwtxhelper.Collection; import dwt.dwthelper.Runnable; /** @@ -311,8 +308,7 @@ private Object[] filter(Object parentElementOrTreePath, Object[] elements) { ViewerFilter[] filters = getFilters(); if (filters !is null) { - auto filtered = new ArraySeq!(Object); - filtered.capacity(elements.length); + ArrayList filtered = new ArrayList(elements.length); for (int i = 0; i < elements.length; i++) { bool add = true; for (int j = 0; j < filters.length; j++) { @@ -323,7 +319,7 @@ } } if (add) { - filtered.append(elements[i]); + filtered.add(elements[i]); } } return filtered.toArray(); @@ -801,44 +797,35 @@ } } - BusyIndicator.showWhile(widget.getDisplay(), new class(widget,tis) Runnable { - Widget widget_; - Item[] tis_; - this( Widget a, Item[] b){ - widget_ = a; - tis_=b; - } - public void run() { - // fix for PR 1FW89L7: - // don't complain and remove all "dummies" ... - if (tis_ !is null) { - for (int i = 0; i < tis_.length; i++) { - if (tis_[i].getData() !is null) { - disassociate(tis_[i]); - Assert.isTrue(tis_[i].getData() is null, - "Second or later child is non -null");//$NON-NLS-1$ + BusyIndicator.showWhile(widget.getDisplay(), dgRunnable( (Widget widget_, Item[] tis_){ + // fix for PR 1FW89L7: + // don't complain and remove all "dummies" ... + if (tis_ !is null) { + for (int i = 0; i < tis_.length; i++) { + if (tis_[i].getData() !is null) { + disassociate(tis_[i]); + Assert.isTrue(tis_[i].getData() is null, + "Second or later child is non -null");//$NON-NLS-1$ - } - tis_[i].dispose(); } - } - Object d = widget_.getData(); - if (d !is null) { - Object parentElement = d; - Object[] children; - if (isTreePathContentProvider() && (null !is cast(Item)widget_) ) { - TreePath path = getTreePathFromItem(cast(Item) widget_); - children = getSortedChildren(path); - } else { - children = getSortedChildren(parentElement); - } - for (int i = 0; i < children.length; i++) { - createTreeItem(widget_, children[i], -1); - } + tis_[i].dispose(); } } - - }); + Object d = widget_.getData(); + if (d !is null) { + Object parentElement = d; + Object[] children; + if (isTreePathContentProvider() && (null !is cast(Item)widget_) ) { + TreePath path = getTreePathFromItem(cast(Item) widget_); + children = getSortedChildren(path); + } else { + children = getSortedChildren(parentElement); + } + for (int i = 0; i < children.length; i++) { + createTreeItem(widget_, children[i], -1); + } + } + }, widget,tis )); } finally { setBusy(oldBusy); } @@ -994,7 +981,7 @@ * * @since 3.1 in TreeViewer, moved to AbstractTreeViewer in 3.3 */ - protected bool isSameSelection(SeqView!(Item) items, Item[] current) { + protected bool isSameSelection(List items, Item[] current) { // If they are not the same size then they are not equivalent int n = items.size(); if (n !is current.length) { @@ -1002,7 +989,8 @@ } CustomHashtable itemSet = newHashtable(n * 2 + 1); - foreach( item; items ){ + for (Iterator i = items.iterator(); i.hasNext();) { + Item item = cast(Item) i.next(); Object element = item.getData(); itemSet.put(element, element); } @@ -1212,14 +1200,14 @@ * @see #setExpandedElements */ public Object[] getExpandedElements() { - auto items = new ArraySeq!(Item); + ArrayList items = new ArrayList(); internalCollectExpandedItems(items, getControl()); - auto result = new ArraySeq!(Object); - result.capacity(items.size()); - foreach ( item; items ) { + ArrayList result = new ArrayList(items.size()); + for (Iterator it = items.iterator(); it.hasNext();) { + Item item = cast(Item) it.next(); Object data = item.getData(); if (data !is null) { - result.append(data); + result.add(data); } } return result.toArray(); @@ -1414,15 +1402,14 @@ * * @see dwtx.jface.viewers.StructuredViewer#getSelectionFromWidget() */ - protected override SeqView!(Object) getSelectionFromWidget() { + protected override List getSelectionFromWidget() { Widget[] items = getSelection(getControl()); - ArraySeq!(Object) list = new ArraySeq!(Object); - list.capacity(items.length); + ArrayList list = new ArrayList(items.length); for (int i = 0; i < items.length; i++) { Widget item = items[i]; Object e = item.getData(); if (e !is null) { - list.append(e); + list.add(e); } } return list; @@ -1574,12 +1561,12 @@ * @param widget * the widget */ - private void internalCollectExpandedItems(Seq!(Item) result, Widget widget) { + private void internalCollectExpandedItems(List result, Widget widget) { Item[] items = getChildren(widget); for (int i = 0; i < items.length; i++) { Item item = items[i]; if (getExpanded(item)) { - result.append(item); + result.add(item); } internalCollectExpandedItems(result, item); } @@ -1621,12 +1608,14 @@ if (expand && null !is cast(Item)pw ) { // expand parent items top-down Item item = cast(Item) pw; - auto toExpandList = new LinkSeq!(Item); + LinkedList toExpandList = new LinkedList(); while (item !is null && !getExpanded(item)) { - toExpandList.prepend(item); + toExpandList.addFirst(item); item = getParentItem(item); } - foreach( toExpand; toExpandList ){ + for (Iterator it = toExpandList.iterator(); it + .hasNext();) { + Item toExpand = cast(Item) it.next(); setExpanded(toExpand, true); } } @@ -2176,15 +2165,9 @@ } if (checkBusy()) return; - preservingSelection(new class(elementsOrTreePaths) Runnable { - Object[] elementsOrTreePaths_; - this(Object[] a){ - elementsOrTreePaths_=a; - } - public void run() { - internalRemove(elementsOrTreePaths_); - } - }); + preservingSelection( dgRunnable( (Object[] elementsOrTreePaths_){ + internalRemove(elementsOrTreePaths_); + }, elementsOrTreePaths)); } /** @@ -2212,17 +2195,9 @@ } if (checkBusy()) return; - preservingSelection(new class(parent,elements) Runnable { - Object parent_; - Object[] elements_; - this(Object a,Object[] b){ - parent_=a; - elements_=b; - } - public void run() { - internalRemove(parent_, elements_); - } - }); + preservingSelection( dgRunnable( (Object parent_,Object[] elements_){ + internalRemove(parent_, elements_); + }, parent, elements )); } /** @@ -2479,34 +2454,33 @@ * list of items (element type: * <code>dwt.widgets.Item</code>) */ - protected abstract void setSelection(SeqView!(Item) items); + protected abstract void setSelection(List items); /** * This implementation of setSelectionToWidget accepts a list of elements or * a list of tree paths. */ - protected override void setSelectionToWidget(SeqView!(Object) v, bool reveal) { + protected override void setSelectionToWidget(List v, bool reveal) { if (v is null) { - setSelection(new ArraySeq!(Item)); + setSelection(new ArrayList(0)); return; } int size = v.size(); - auto newSelection = new ArraySeq!(Item); - newSelection.capacity(size); + List newSelection = new ArrayList(size); for (int i = 0; i < size; ++i) { Object elementOrTreePath = v.get(i); // Use internalExpand since item may not yet be created. See // 1G6B1AR. Widget w = internalExpand(elementOrTreePath, false); if ( auto it = cast(Item)w ) { - newSelection.append(it); + newSelection.add(it); } else if (w is null && null !is cast(TreePath)elementOrTreePath ) { TreePath treePath = cast(TreePath) elementOrTreePath; Object element = treePath.getLastSegment(); if (element !is null) { w = internalExpand(element, false); if ( auto it = cast(Item)w ) { - newSelection.append(it); + newSelection.add(it); } } } @@ -2836,19 +2810,19 @@ * @since 2.0 */ public Object[] getVisibleExpandedElements() { - auto v = new ArraySeq!(Object); + ArrayList v = new ArrayList(); internalCollectVisibleExpanded(v, getControl()); return v.toArray(); } - private void internalCollectVisibleExpanded(ArraySeq!(Object) result, Widget widget) { + private void internalCollectVisibleExpanded(ArrayList result, Widget widget) { Item[] items = getChildren(widget); for (int i = 0; i < items.length; i++) { Item item = items[i]; if (getExpanded(item)) { Object data = item.getData(); if (data !is null) { - result.append(data); + result.add(data); } // Only recurse if it is expanded - if // not then the children aren't visible @@ -2865,11 +2839,11 @@ * @since 3.2 */ protected TreePath getTreePathFromItem(Item item) { - auto segments = new LinkSeq!(Object); + LinkedList segments = new LinkedList(); while (item !is null) { Object segment = item.getData(); Assert.isNotNull(segment); - segments.prepend(segment); + segments.addFirst(segment); item = getParentItem(item); } return new TreePath(segments.toArray()); @@ -2890,26 +2864,20 @@ return TreeSelection.EMPTY; } Widget[] items = getSelection(getControl()); - auto list = new ArraySeq!(TreePath); - list.capacity(items.length); + ArrayList list = new ArrayList(items.length); for (int i = 0; i < items.length; i++) { Widget item = items[i]; if (item.getData() !is null) { - list.append(getTreePathFromItem(cast(Item) item)); + list.add(getTreePathFromItem(cast(Item) item)); } } - return new TreeSelection( list.toArray(), getComparer()); + return new TreeSelection( arraycast!(TreePath)(list.toArray()), getComparer()); } protected override void setSelectionToWidget(ISelection selection, bool reveal) { if ( auto treeSelection = cast(ITreeSelection)selection ) { - auto list = new ArraySeq!(Object); - auto paths = treeSelection.getPaths(); - list.capacity(paths.length); - foreach( path; paths ){ - list.append(path); - } - setSelectionToWidget(list, reveal); + setSelectionToWidget(Arrays.asList(treeSelection.getPaths()), + reveal); } else { super.setSelectionToWidget(selection, reveal); } @@ -2930,17 +2898,17 @@ * @since 3.2 */ public TreePath[] getExpandedTreePaths() { - auto items = new ArraySeq!(Item); + ArrayList items = new ArrayList(); internalCollectExpandedItems(items, getControl()); - auto result = new ArraySeq!(TreePath); - result.capacity(items.size()); - foreach( item; items ){ + ArrayList result = new ArrayList(items.size()); + for (Iterator it = items.iterator(); it.hasNext();) { + Item item = cast(Item) it.next(); TreePath treePath = getTreePathFromItem(item); if (treePath !is null) { - result.append(treePath); + result.add(treePath); } } - return result.toArray(); + return arraycast!(TreePath)(result.toArray()); } private bool isTreePathContentProvider() {