diff dwtx/jface/viewers/AbstractTableViewer.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 7ffeace6c47f
children
line wrap: on
line diff
--- a/dwtx/jface/viewers/AbstractTableViewer.d	Sun Aug 03 17:01:51 2008 +0200
+++ b/dwtx/jface/viewers/AbstractTableViewer.d	Thu Aug 07 15:01:33 2008 +0200
@@ -25,9 +25,6 @@
 import dwtx.jface.viewers.ViewerComparator;
 import dwtx.jface.viewers.IStructuredContentProvider;
 
-import tango.util.collection.model.SeqView;
-import tango.util.collection.ArraySeq;
-import tango.util.collection.HashSet;
 
 import dwt.DWT;
 import dwt.widgets.Control;
@@ -38,6 +35,7 @@
 import dwtx.core.runtime.Assert;
 
 import dwt.dwthelper.utils;
+import dwtx.dwtxhelper.Collection;
 import dwt.dwthelper.Runnable;
 import tango.core.Array;
 
@@ -74,32 +72,29 @@
          * Add the listener for SetData on the table
          */
         private void addTableListener() {
-            getControl().addListener(DWT.SetData, new class Listener {
+            getControl().addListener(DWT.SetData, dgListener( (Event event){
                 /*
                  * (non-Javadoc)
                  *
                  * @see dwt.widgets.Listener#handleEvent(dwt.widgets.Event)
                  */
-                public void handleEvent(Event event) {
-                    Item item = cast(Item) event.item;
-                    final int index = doIndexOf(item);
-                    Object element = resolveElement(index);
-                    if (element is null) {
-                        // Didn't find it so make a request
-                        // Keep looking if it is not in the cache.
-                        IContentProvider contentProvider = getContentProvider();
-                        // If we are building lazily then request lookup now
-                        if (auto lcp = cast(ILazyContentProvider)contentProvider ) {
-                            lcp.updateElement(index);
-                            return;
-                        }
+                Item item = cast(Item) event.item;
+                final int index = doIndexOf(item);
+                Object element = resolveElement(index);
+                if (element is null) {
+                    // Didn't find it so make a request
+                    // Keep looking if it is not in the cache.
+                    IContentProvider contentProvider = getContentProvider();
+                    // If we are building lazily then request lookup now
+                    if (auto lcp = cast(ILazyContentProvider)contentProvider ) {
+                        lcp.updateElement(index);
+                        return;
                     }
-
-                    associate(element, item);
-                    updateItem(item, element);
                 }
 
-            });
+                associate(element, item);
+                updateItem(item, element);
+            }));
         }
 
         /**
@@ -479,18 +474,17 @@
      *
      * @see dwtx.jface.viewers.StructuredViewer#getSelectionFromWidget()
      */
-    protected override SeqView!(Object) getSelectionFromWidget() {
+    protected override List getSelectionFromWidget() {
         if (virtualManager !is null) {
             return getVirtualSelection();
         }
         Widget[] items = doGetSelection();
-        auto 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;
@@ -503,9 +497,9 @@
      * @return List of Object
      */
 
-    private SeqView!(Object) getVirtualSelection() {
+    private List getVirtualSelection() {
 
-        auto result = new ArraySeq!(Object);
+        List result = new ArrayList();
         int[] selectionIndices = doGetSelectionIndices();
         if (auto lazy_ = cast(ILazyContentProvider) getContentProvider() ) {
             for (int i = 0; i < selectionIndices.length; i++) {
@@ -516,7 +510,7 @@
                 // If this is done deferred the selection will
                 // be incomplete until selection is finished.
                 if (element !is null) {
-                    result.append(element);
+                    result.add(element);
                 }
             }
         } else {
@@ -533,7 +527,7 @@
                     element = item.getData();
                 }
                 if (element !is null) {
-                    result.append(element);
+                    result.add(element);
                 }
             }
 
@@ -587,11 +581,9 @@
     protected override void inputChanged(Object input, Object oldInput) {
         getControl().setRedraw(false);
         try {
-            preservingSelection(new class Runnable {
-                public void run() {
-                    internalRefresh(getRoot());
-                }
-            });
+            preservingSelection(dgRunnable( {
+                internalRefresh(getRoot());
+            }));
         } finally {
             getControl().setRedraw(true);
         }
@@ -828,15 +820,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));
     }
 
     /**
@@ -878,7 +864,7 @@
      * @see dwtx.jface.viewers.StructuredViewer#setSelectionToWidget(java.util.List,
      *      bool)
      */
-    protected override void setSelectionToWidget(SeqView!(Object) list, bool reveal) {
+    protected override void setSelectionToWidget(List list, bool reveal) {
         if (list is null) {
             doDeselectAll();
             return;
@@ -895,7 +881,8 @@
             int size = list.size();
             Item[] items = new Item[size];
             int count = 0;
-            foreach( o; list ) {
+            for (int i = 0; i < size; ++i) {
+                Object o = list.get(i);
                 Widget w = findItem(o);
                 if (auto item = cast(Item)w ) {
                     items[count++] = item;
@@ -907,13 +894,16 @@
             doSetSelection(items);
         } else {
             doDeselectAll(); // Clear the selection
-            if( ! list.drained() ) {
+            if( ! list.isEmpty() ) {
                 int[] indices = new int[list.size()];
 
+                Iterator it = list.iterator();
                 Item[] items = doGetItems();
+                Object modelElement;
 
                 int count = 0;
-                foreach( modelElement; list ){
+                while( it.hasNext() ) {
+                    modelElement = it.next();
                     bool found = false;
                     for (int i = 0; i < items.length && !found; i++) {
                         if (opEquals(modelElement, items[i].getData())) {
@@ -940,14 +930,15 @@
      * @param reveal
      *            Whether or not reveal the first item.
      */
-    private void virtualSetSelectionToWidget(SeqView!(Object) list, bool reveal) {
+    private void virtualSetSelectionToWidget(List list, bool reveal) {
         int size = list.size();
         int[] indices = new int[list.size()];
 
         Item firstItem = null;
         int count = 0;
-        auto virtualElements = new HashSet!(Object);
-        foreach( o; list ){
+        HashSet virtualElements = new HashSet();
+        for (int i = 0; i < size; ++i) {
+            Object o = list.get(i);
             Widget w = findItem(o);
             if (auto item = cast(Item)w ) {
                 indices[count++] = doIndexOf(item);
@@ -1040,11 +1031,11 @@
      * Replace the element at the given index with the given element. This
      * method will not call the content provider to verify. <strong>Note that
      * this method will materialize a TableItem the given index.</strong>.
-     * 
+     *
      * @param element
      * @param index
      * @see ILazyContentProvider
-     * 
+     *
      * @since 3.1
      */
     public void replace(Object element, int index) {