Mercurial > projects > dwt-addons
diff dwtx/jface/viewers/StructuredViewer.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/StructuredViewer.d Sun Aug 03 17:01:51 2008 +0200 +++ b/dwtx/jface/viewers/StructuredViewer.d Thu Aug 07 15:01:33 2008 +0200 @@ -41,9 +41,6 @@ import dwtx.jface.viewers.StructuredSelection; import dwtx.jface.viewers.IStructuredSelection; -import tango.util.collection.ArraySeq; -import tango.util.collection.model.Seq; -import tango.util.collection.model.SeqView; import dwt.custom.TableTreeItem; import dwt.dnd.DragSource; @@ -69,6 +66,7 @@ import dwtx.jface.util.SafeRunnable; import dwt.dwthelper.utils; +import dwtx.dwtxhelper.Collection; import dwt.dwthelper.Runnable; /** @@ -109,7 +107,7 @@ * This viewer's filters (element type: <code>ViewerFilter</code>). * <code>null</code> means there are no filters. */ - private Seq!(ViewerFilter) filters; + private List filters; /** * Indicates whether a selection change is in progress on this viewer. @@ -597,9 +595,9 @@ */ public void addFilter(ViewerFilter filter) { if (filters is null) { - filters = new ArraySeq!(ViewerFilter); + filters = new ArrayList(); } - filters.append(filter); + filters.add(filter); refresh(); } @@ -732,8 +730,7 @@ */ protected Object[] filter(Object[] elements) { if (filters !is null) { - ArraySeq!(Object) filtered = new ArraySeq!(Object); - filtered.capacity(elements.length); + ArrayList filtered = new ArrayList(elements.length); Object root = getRoot(); for (int i = 0; i < elements.length; i++) { bool add = true; @@ -744,7 +741,7 @@ } } if (add) { - filtered.append(elements[i]); + filtered.add(elements[i]); } } return filtered.toArray(); @@ -830,17 +827,9 @@ protected void fireDoubleClick(DoubleClickEvent event) { Object[] listeners = doubleClickListeners.getListeners(); for (int i = 0; i < listeners.length; ++i) { - SafeRunnable.run(new class(cast(IDoubleClickListener) listeners[i], event) SafeRunnable { - IDoubleClickListener l; - DoubleClickEvent event_; - this(IDoubleClickListener a,DoubleClickEvent b){ - l = a; - event_=b; - } - public void run() { - l.doubleClick(event_); - } - }); + SafeRunnable.run( dgSafeRunnable( (IDoubleClickListener l, DoubleClickEvent event_){ + l.doubleClick(event_); + }, cast(IDoubleClickListener) listeners[i], event)); } } package void fireDoubleClick_package(DoubleClickEvent event) { @@ -859,17 +848,9 @@ protected void fireOpen(OpenEvent event) { Object[] listeners = openListeners.getListeners(); for (int i = 0; i < listeners.length; ++i) { - SafeRunnable.run(new class(cast(IOpenListener) listeners[i],event) SafeRunnable { - IOpenListener l; - OpenEvent event_; - this(IOpenListener a, OpenEvent b){ - l = a; - event_=b; - } - public void run() { - l.open(event_); - } - }); + SafeRunnable.run( dgSafeRunnable( (IOpenListener l,OpenEvent event_){ + l.open(event_); + }, cast(IOpenListener) listeners[i],event)); } } package void fireOpen_package(OpenEvent event) { @@ -889,17 +870,9 @@ protected void firePostSelectionChanged(SelectionChangedEvent event) { Object[] listeners = postSelectionChangedListeners.getListeners(); for (int i = 0; i < listeners.length; ++i) { - SafeRunnable.run(new class(cast(ISelectionChangedListener) listeners[i],event) SafeRunnable { - ISelectionChangedListener l; - SelectionChangedEvent event_; - this(ISelectionChangedListener a,SelectionChangedEvent b){ - l = a; - event_=b; - } - public void run() { - l.selectionChanged(event_); - } - }); + SafeRunnable.run( dgSafeRunnable( (ISelectionChangedListener l, SelectionChangedEvent event_){ + l.selectionChanged(event_); + },cast(ISelectionChangedListener) listeners[i],event)); } } @@ -928,7 +901,8 @@ protected Object[] getFilteredChildren(Object parent) { Object[] result = getRawChildren(parent); if (filters !is null) { - foreach (f;filters) { + for (Iterator iter = filters.iterator(); iter.hasNext();) { + ViewerFilter f = cast(ViewerFilter) iter.next(); result = f.filter(this, parent, result); } } @@ -945,7 +919,7 @@ if (filters is null) { return new ViewerFilter[0]; } - return filters.toArray(); + return arraycast!(ViewerFilter)(filters.toArray()); } /** @@ -1024,7 +998,7 @@ if (control is null || control.isDisposed()) { return StructuredSelection.EMPTY; } - auto list = getSelectionFromWidget(); + List list = getSelectionFromWidget(); return new StructuredSelection(list, comparer); } @@ -1034,8 +1008,8 @@ * * @return the list of selected elements */ - protected abstract SeqView!(Object) getSelectionFromWidget(); - package SeqView!(Object) getSelectionFromWidget_package(){ + protected abstract List getSelectionFromWidget(); + package List getSelectionFromWidget_package(){ return getSelectionFromWidget(); } @@ -1310,19 +1284,13 @@ } } else { Widget[] widgets = (cast(ArrayWrapperT!(Widget)) widgetOrWidgets).array; - int indexOfItem = -1; - foreach( idx, w; widgets ){ - if( w == item ){ - indexOfItem = idx; - break; - } - } + int indexOfItem = Arrays.asList(widgets).indexOf(item); if (indexOfItem is -1) { int length_ = widgets.length; System.arraycopy(widgets, 0, widgets = new Widget[length_ + 1], 0, length_); widgets[length_] = item; - elementMap.put(element, new ArrayWrapperT!(Widget)(widgets)); + elementMap.put(element, new ArrayWrapperObject(widgets)); } } } @@ -1349,7 +1317,8 @@ } if (filters !is null) { - foreach( filter; filters ){ + for (int i = 0, n = filters.size(); i < n; ++i) { + ViewerFilter filter = cast(ViewerFilter) filters.get(i); if (filter.isFilterProperty(element, property)) { return true; } @@ -1490,15 +1459,9 @@ * the element */ public void refresh(Object element) { - preservingSelection(new class(element) Runnable { - Object element_; - this(Object a){ - element_ = a; - } - public void run() { - internalRefresh(element_); - } - }); + preservingSelection( dgRunnable( (Object element_){ + internalRefresh(element_); + }, element )); } /** @@ -1521,17 +1484,9 @@ * @since 2.0 */ public void refresh(Object element, bool updateLabels) { - preservingSelection(new class(element, updateLabels) Runnable { - Object element_; - bool updateLabels_; - this(Object a, bool b){ - element_ = a; - updateLabels_ = b; - } - public void run() { - internalRefresh(element_, updateLabels_); - } - }); + preservingSelection( dgRunnable( (Object element_, bool updateLabels_){ + internalRefresh(element_, updateLabels_); + },element, updateLabels)); } /** @@ -1595,17 +1550,16 @@ if (filters !is null) { // Note: can't use List.remove(Object). Use identity comparison // instead. - int delIdx = 0; - foreach( o; filters ){ + for (Iterator i = filters.iterator(); i.hasNext();) { + Object o = i.next(); if (o is filter) { - filters.removeAt(delIdx); + i.remove(); refresh(); if (filters.size() is 0) { filters = null; } return; } - delIdx++; } } } @@ -1622,11 +1576,7 @@ if (filters.length is 0) { resetFilters(); } else { - auto tmp = new ArraySeq!(ViewerFilter); - foreach( f; filters ){ - tmp.append(f); - } - this.filters = tmp; + this.filters = new ArrayList(Arrays.asList(filters)); refresh(); } } @@ -1738,7 +1688,7 @@ * <code>true</code> if the selection is to be made visible, * and <code>false</code> otherwise */ - protected abstract void setSelectionToWidget(SeqView!(Object) l, bool reveal); + protected abstract void setSelectionToWidget(List l, bool reveal); /** * Converts the selection to a <code>List</code> and calls @@ -1759,7 +1709,7 @@ if ( auto ss = cast(IStructuredSelection) selection ) { setSelectionToWidget(ss.toList(), reveal); } else { - setSelectionToWidget(cast(SeqView!(Object)) null, reveal); + setSelectionToWidget(cast(List) null, reveal); } } @@ -1915,13 +1865,7 @@ } } else { Widget[] widgets = ( cast(ArrayWrapperT!(Widget)) widgetOrWidgets).array; - int indexOfItem = -1; - foreach( idx, w; widgets ){ - if( w == item ){ - indexOfItem = idx; - break; - } - } + int indexOfItem = Arrays.asList(widgets).indexOf(item); if (indexOfItem is -1) { return; } @@ -1932,13 +1876,13 @@ } else { Widget[] updatedWidgets = new Widget[length - 1]; System.arraycopy(widgets, 1, updatedWidgets, 0, length -1 ); - elementMap.put(element, new ArrayWrapperT!(Widget)( updatedWidgets)); + elementMap.put(element, new ArrayWrapperObject( updatedWidgets)); } } else { Widget[] updatedWidgets = new Widget[length - 1]; System.arraycopy(widgets, 0, updatedWidgets, 0, indexOfItem); System.arraycopy(widgets, indexOfItem + 1, updatedWidgets, indexOfItem, length - indexOfItem - 1); - elementMap.put(element, new ArrayWrapperT!(Widget)(updatedWidgets)); + elementMap.put(element, new ArrayWrapperObject(updatedWidgets)); } } } @@ -1946,7 +1890,7 @@ // flag to indicate that a full refresh took place. See bug 102440. private bool refreshOccurred; - + /** * Updates the given elements' presentation when one or more of their * properties change. Only the given elements are updated. @@ -2048,7 +1992,7 @@ for (int i = 0; i < items.length; i++) { internalUpdate(items[i], element, properties); if (mayExitEarly && refreshOccurred) { - // detected a change from refreshOccurred is false to refreshOccurred is true + // detected a change from refreshOccurred is false to refreshOccurred is true return; } } @@ -2084,12 +2028,10 @@ } } if (needsRefilter_) { - preservingSelection(new class Runnable { - public void run() { - internalRefresh(getRoot()); - refreshOccurred = true; - } - }); + preservingSelection(dgRunnable( { + internalRefresh(getRoot()); + refreshOccurred = true; + })); return; }