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() {