diff dwtx/jface/viewers/AbstractListViewer.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 46a6e0e6ccd4
children
line wrap: on
line diff
--- a/dwtx/jface/viewers/AbstractListViewer.d	Sun Aug 03 17:01:51 2008 +0200
+++ b/dwtx/jface/viewers/AbstractListViewer.d	Thu Aug 07 15:01:33 2008 +0200
@@ -22,15 +22,13 @@
 import dwtx.jface.viewers.ViewerComparator;
 import dwtx.jface.viewers.IElementComparer;
 
-import tango.util.collection.ArraySeq;
-import tango.util.collection.model.Seq;
-import tango.util.collection.model.SeqView;
 
 import dwt.widgets.Control;
 import dwt.widgets.Widget;
 import dwtx.core.runtime.Assert;
 
 import dwt.dwthelper.utils;
+import dwtx.dwtxhelper.Collection;
 import dwt.dwthelper.Runnable;
 
 /**
@@ -50,7 +48,7 @@
     /**
      * A list of viewer elements (element type: <code>Object</code>).
      */
-    private Seq!(Object) listMap;
+    private dwtx.dwtxhelper.Collection.List listMap;
 
     /**
      * Adds the given string to the underlying widget at the given index
@@ -132,7 +130,7 @@
     protected abstract void listDeselectAll();
 
     public this(){
-        listMap = new ArraySeq!(Object);
+        listMap = new ArrayList();
     }
 
     /**
@@ -160,7 +158,7 @@
 
     private void insertItem(ILabelProvider labelProvider, Object element, int index) {
         listAdd(getLabelProviderText(labelProvider, element), index);
-        listMap.addAt(index, element);
+        listMap.add(index, element);
         mapElement(element, getControl()); // must map it, since findItem only looks in map, if enabled
     }
 
@@ -294,14 +292,13 @@
     /* (non-Javadoc)
      * Method declared on StructuredViewer.
      */
-    protected override SeqView!(Object) getSelectionFromWidget() {
+    protected override List getSelectionFromWidget() {
         int[] ixs = listGetSelectionIndices();
-        ArraySeq!(Object) list = new ArraySeq!(Object);
-        list.capacity(ixs.length);
+        ArrayList list = new ArrayList(ixs.length);
         for (int i = 0; i < ixs.length; i++) {
             Object e = getElementAt(ixs[i]);
             if (e !is null) {
-                list.append(e);
+                list.add(e);
             }
         }
         return list;
@@ -356,7 +353,7 @@
         for (int i = 0; i < size; i++) {
             Object el = children[i];
             labels[i] = getLabelProviderText(cast(ILabelProvider) getLabelProvider(),el);
-            listMap.append(el);
+            listMap.add(el);
             mapElement(el, getControl()); // must map it, since findItem only looks in map, if enabled
         }
         listSetItems(labels);
@@ -373,10 +370,10 @@
                 listMap.clear();
             }
             unmapAllElements();
-            auto selection = getSelectionFromWidget();
+            List selection = getSelectionFromWidget();
 
             int topIndex = -1;
-            if (selection is null || selection.drained()) {
+            if (selection is null || selection.isEmpty()) {
                 topIndex = listGetTopIndex();
             }
 
@@ -384,19 +381,19 @@
             list.setRedraw(false);
             try {
                 listRemoveAll();
-                
+
                 children = getSortedChildren(getRoot());
                 String[] items = new String[children.length];
-                
+
                 ILabelProvider labelProvider = cast(ILabelProvider) getLabelProvider();
-                
+
                 for (int i = 0; i < items.length; i++) {
                     Object el = children[i];
                     items[i] = getLabelProviderText(labelProvider, el);
-                    listMap.append(el);
+                    listMap.add(el);
                     mapElement(el, list); // must map it, since findItem only looks in map, if enabled
                 }
-                
+
                 listSetItems(items);
             } finally {
                 list.setRedraw(true);
@@ -450,7 +447,7 @@
             int ix = getElementIndex(elements[i]);
             if (ix >= 0) {
                 listRemove(ix);
-                listMap.removeAt(ix);
+                listMap.remove(ix);
                 unmapElement(elements[i], getControl());
             }
         }
@@ -472,15 +469,9 @@
         if (elements.length is 0) {
             return;
         }
-        preservingSelection(new class(elements) Runnable {
-            Object[] elements_;
-            this(Object[] a){
-                elements_= a;
-            }
-            public void run() {
-                internalRemove(elements_);
-            }
-        });
+        preservingSelection( dgRunnable( (Object[] elements_){
+            internalRemove(elements_);
+        }, elements));
     }
 
     /**
@@ -516,7 +507,7 @@
     /* (non-Javadoc)
      * Method declared on StructuredViewer.
      */
-    protected override void setSelectionToWidget(SeqView!(Object) in_, bool reveal) {
+    protected override void setSelectionToWidget(List in_, bool reveal) {
         if (in_ is null || in_.size() is 0) { // clear selection
             listDeselectAll();
         } else {
@@ -550,14 +541,7 @@
     int getElementIndex(Object element) {
         IElementComparer comparer = getComparer();
         if (comparer is null) {
-            int idx = 0;
-            foreach( e; listMap ){
-                if( e == element ){
-                    return idx;
-                }
-                idx++;
-            }
-            return -1;
+            return listMap.indexOf(element);
         }
         int size = listMap.size();
         for (int i = 0; i < size; i++) {