Mercurial > projects > dwt-addons
comparison dwtx/jface/viewers/StructuredViewer.d @ 54:a6683645b0d7
Fix ignored labelprovider for TreeViewer (See WrapperViewerLabelProvider.d), removed the debugging prints
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 12 Apr 2008 17:53:06 +0200 |
parents | ea8ff534f622 |
children | 46a6e0e6ccd4 |
comparison
equal
deleted
inserted
replaced
53:28f6c339768e | 54:a6683645b0d7 |
---|---|
68 import dwtx.jface.util.OpenStrategy; | 68 import dwtx.jface.util.OpenStrategy; |
69 import dwtx.jface.util.SafeRunnable; | 69 import dwtx.jface.util.SafeRunnable; |
70 | 70 |
71 import dwt.dwthelper.utils; | 71 import dwt.dwthelper.utils; |
72 import dwt.dwthelper.Runnable; | 72 import dwt.dwthelper.Runnable; |
73 import tango.util.log.Trace; | |
74 | 73 |
75 /** | 74 /** |
76 * Abstract base implementation for structure-oriented viewers (trees, lists, | 75 * Abstract base implementation for structure-oriented viewers (trees, lists, |
77 * tables). Supports custom sorting, filtering, and rendering. | 76 * tables). Supports custom sorting, filtering, and rendering. |
78 * <p> | 77 * <p> |
829 * @see IDoubleClickListener#doubleClick | 828 * @see IDoubleClickListener#doubleClick |
830 */ | 829 */ |
831 protected void fireDoubleClick(DoubleClickEvent event) { | 830 protected void fireDoubleClick(DoubleClickEvent event) { |
832 Object[] listeners = doubleClickListeners.getListeners(); | 831 Object[] listeners = doubleClickListeners.getListeners(); |
833 for (int i = 0; i < listeners.length; ++i) { | 832 for (int i = 0; i < listeners.length; ++i) { |
834 SafeRunnable.run(new class(cast(IDoubleClickListener) listeners[i]) SafeRunnable { | 833 SafeRunnable.run(new class(cast(IDoubleClickListener) listeners[i], event) SafeRunnable { |
835 IDoubleClickListener l; | 834 IDoubleClickListener l; |
836 this(IDoubleClickListener a){ | 835 DoubleClickEvent event_; |
836 this(IDoubleClickListener a,DoubleClickEvent b){ | |
837 l = a; | 837 l = a; |
838 event_=b; | |
838 } | 839 } |
839 public void run() { | 840 public void run() { |
840 l.doubleClick(event); | 841 l.doubleClick(event_); |
841 } | 842 } |
842 }); | 843 }); |
843 } | 844 } |
844 } | 845 } |
845 package void fireDoubleClick_package(DoubleClickEvent event) { | 846 package void fireDoubleClick_package(DoubleClickEvent event) { |
856 * @see IOpenListener#open(OpenEvent) | 857 * @see IOpenListener#open(OpenEvent) |
857 */ | 858 */ |
858 protected void fireOpen(OpenEvent event) { | 859 protected void fireOpen(OpenEvent event) { |
859 Object[] listeners = openListeners.getListeners(); | 860 Object[] listeners = openListeners.getListeners(); |
860 for (int i = 0; i < listeners.length; ++i) { | 861 for (int i = 0; i < listeners.length; ++i) { |
861 SafeRunnable.run(new class(cast(IOpenListener) listeners[i]) SafeRunnable { | 862 SafeRunnable.run(new class(cast(IOpenListener) listeners[i],event) SafeRunnable { |
862 IOpenListener l; | 863 IOpenListener l; |
863 this(IOpenListener a){ | 864 OpenEvent event_; |
865 this(IOpenListener a, OpenEvent b){ | |
864 l = a; | 866 l = a; |
867 event_=b; | |
865 } | 868 } |
866 public void run() { | 869 public void run() { |
867 l.open(event); | 870 l.open(event_); |
868 } | 871 } |
869 }); | 872 }); |
870 } | 873 } |
871 } | 874 } |
872 package void fireOpen_package(OpenEvent event) { | 875 package void fireOpen_package(OpenEvent event) { |
884 * @see #addPostSelectionChangedListener(ISelectionChangedListener) | 887 * @see #addPostSelectionChangedListener(ISelectionChangedListener) |
885 */ | 888 */ |
886 protected void firePostSelectionChanged(SelectionChangedEvent event) { | 889 protected void firePostSelectionChanged(SelectionChangedEvent event) { |
887 Object[] listeners = postSelectionChangedListeners.getListeners(); | 890 Object[] listeners = postSelectionChangedListeners.getListeners(); |
888 for (int i = 0; i < listeners.length; ++i) { | 891 for (int i = 0; i < listeners.length; ++i) { |
889 SafeRunnable.run(new class(cast(ISelectionChangedListener) listeners[i]) SafeRunnable { | 892 SafeRunnable.run(new class(cast(ISelectionChangedListener) listeners[i],event) SafeRunnable { |
890 ISelectionChangedListener l; | 893 ISelectionChangedListener l; |
891 this(ISelectionChangedListener a){ | 894 SelectionChangedEvent event_; |
895 this(ISelectionChangedListener a,SelectionChangedEvent b){ | |
892 l = a; | 896 l = a; |
897 event_=b; | |
893 } | 898 } |
894 public void run() { | 899 public void run() { |
895 l.selectionChanged(event); | 900 l.selectionChanged(event_); |
896 } | 901 } |
897 }); | 902 }); |
898 } | 903 } |
899 } | 904 } |
900 | 905 |
1299 Object widgetOrWidgets = elementMap.get(element); | 1304 Object widgetOrWidgets = elementMap.get(element); |
1300 if (widgetOrWidgets is null) { | 1305 if (widgetOrWidgets is null) { |
1301 elementMap.put(element, item); | 1306 elementMap.put(element, item); |
1302 } else if ( auto w = cast(Widget)widgetOrWidgets ) { | 1307 } else if ( auto w = cast(Widget)widgetOrWidgets ) { |
1303 if (widgetOrWidgets !is item) { | 1308 if (widgetOrWidgets !is item) { |
1304 elementMap.put(element, new ArrayWrapperObject([ cast(Object) | 1309 elementMap.put(element, new ArrayWrapperT!(Widget)( [ w, item ] )); |
1305 w, item ])); | |
1306 } | 1310 } |
1307 } else { | 1311 } else { |
1308 Widget[] widgets = (cast(ArrayWrapperT!(Widget)) widgetOrWidgets).array; | 1312 Widget[] widgets = (cast(ArrayWrapperT!(Widget)) widgetOrWidgets).array; |
1309 int indexOfItem = -1; | 1313 int indexOfItem = -1; |
1310 foreach( idx, w; widgets ){ | 1314 foreach( idx, w; widgets ){ |
1316 if (indexOfItem is -1) { | 1320 if (indexOfItem is -1) { |
1317 int length_ = widgets.length; | 1321 int length_ = widgets.length; |
1318 System.arraycopy(widgets, 0, | 1322 System.arraycopy(widgets, 0, |
1319 widgets = new Widget[length_ + 1], 0, length_); | 1323 widgets = new Widget[length_ + 1], 0, length_); |
1320 widgets[length_] = item; | 1324 widgets[length_] = item; |
1321 elementMap.put(element, new ArrayWrapperObject(widgets)); | 1325 elementMap.put(element, new ArrayWrapperT!(Widget)(widgets)); |
1322 } | 1326 } |
1323 } | 1327 } |
1324 } | 1328 } |
1325 } | 1329 } |
1326 | 1330 |
1518 * that labels for existing elements are unchanged. | 1522 * that labels for existing elements are unchanged. |
1519 * | 1523 * |
1520 * @since 2.0 | 1524 * @since 2.0 |
1521 */ | 1525 */ |
1522 public void refresh(Object element, bool updateLabels) { | 1526 public void refresh(Object element, bool updateLabels) { |
1523 preservingSelection(new class Runnable { | 1527 preservingSelection(new class(element, updateLabels) Runnable { |
1524 Object element_; | 1528 Object element_; |
1525 bool updateLabels_; | 1529 bool updateLabels_; |
1526 this(){ | 1530 this(Object a, bool b){ |
1527 element_ = element; | 1531 element_ = a; |
1528 updateLabels_ = updateLabels; | 1532 updateLabels_ = b; |
1529 } | 1533 } |
1530 public void run() { | 1534 public void run() { |
1531 internalRefresh(element_, updateLabels_); | 1535 internalRefresh(element_, updateLabels_); |
1532 } | 1536 } |
1533 }); | 1537 }); |
1619 */ | 1623 */ |
1620 public void setFilters(ViewerFilter[] filters) { | 1624 public void setFilters(ViewerFilter[] filters) { |
1621 if (filters.length is 0) { | 1625 if (filters.length is 0) { |
1622 resetFilters(); | 1626 resetFilters(); |
1623 } else { | 1627 } else { |
1624 this.filters = new ArraySeq!(ViewerFilter); | 1628 auto tmp = new ArraySeq!(ViewerFilter); |
1625 foreach( f; filters ){ | 1629 foreach( f; filters ){ |
1626 this.filters.append(f); | 1630 tmp.append(f); |
1627 } | 1631 } |
1632 this.filters = tmp; | |
1628 refresh(); | 1633 refresh(); |
1629 } | 1634 } |
1630 } | 1635 } |
1631 | 1636 |
1632 /** | 1637 /** |
1928 if(length is 1) { | 1933 if(length is 1) { |
1929 elementMap.remove(element); | 1934 elementMap.remove(element); |
1930 } else { | 1935 } else { |
1931 Widget[] updatedWidgets = new Widget[length - 1]; | 1936 Widget[] updatedWidgets = new Widget[length - 1]; |
1932 System.arraycopy(widgets, 1, updatedWidgets, 0, length -1 ); | 1937 System.arraycopy(widgets, 1, updatedWidgets, 0, length -1 ); |
1933 elementMap.put(element, new ArrayWrapperObject( updatedWidgets)); | 1938 elementMap.put(element, new ArrayWrapperT!(Widget)( updatedWidgets)); |
1934 } | 1939 } |
1935 } else { | 1940 } else { |
1936 Widget[] updatedWidgets = new Widget[length - 1]; | 1941 Widget[] updatedWidgets = new Widget[length - 1]; |
1937 System.arraycopy(widgets, 0, updatedWidgets, 0, indexOfItem); | 1942 System.arraycopy(widgets, 0, updatedWidgets, 0, indexOfItem); |
1938 System.arraycopy(widgets, indexOfItem + 1, updatedWidgets, indexOfItem, length - indexOfItem - 1); | 1943 System.arraycopy(widgets, indexOfItem + 1, updatedWidgets, indexOfItem, length - indexOfItem - 1); |
1939 elementMap.put(element, new ArrayWrapperObject(updatedWidgets)); | 1944 elementMap.put(element, new ArrayWrapperT!(Widget)(updatedWidgets)); |
1940 } | 1945 } |
1941 } | 1946 } |
1942 } | 1947 } |
1943 } | 1948 } |
1944 | 1949 |
2053 * @param properties | 2058 * @param properties |
2054 * the properties that have changed, or <code>null</code> to | 2059 * the properties that have changed, or <code>null</code> to |
2055 * indicate unknown | 2060 * indicate unknown |
2056 */ | 2061 */ |
2057 protected void internalUpdate(Widget widget, Object element, String[] properties) { | 2062 protected void internalUpdate(Widget widget, Object element, String[] properties) { |
2058 Trace.formatln( "{} {}:", __FILE__, __LINE__ ); | |
2059 bool needsRefilter_ = false; | 2063 bool needsRefilter_ = false; |
2060 if (properties !is null) { | 2064 if (properties !is null) { |
2061 for (int i = 0; i < properties.length; ++i) { | 2065 for (int i = 0; i < properties.length; ++i) { |
2062 needsRefilter_ = needsRefilter(element, properties[i]); | 2066 needsRefilter_ = needsRefilter(element, properties[i]); |
2063 if (needsRefilter_) { | 2067 if (needsRefilter_) { |
2161 * Build a label up for the element using the supplied label provider. | 2165 * Build a label up for the element using the supplied label provider. |
2162 * @param updateLabel The ViewerLabel to collect the result in | 2166 * @param updateLabel The ViewerLabel to collect the result in |
2163 * @param element The element being decorated. | 2167 * @param element The element being decorated. |
2164 */ | 2168 */ |
2165 protected void buildLabel(ViewerLabel updateLabel, Object element){ | 2169 protected void buildLabel(ViewerLabel updateLabel, Object element){ |
2166 Trace.formatln( "{} {}:", __FILE__, __LINE__ ); | |
2167 | 2170 |
2168 if ( auto vlp = cast(IViewerLabelProvider)getLabelProvider() ) { | 2171 if ( auto vlp = cast(IViewerLabelProvider)getLabelProvider() ) { |
2169 IViewerLabelProvider itemProvider = cast(IViewerLabelProvider) getLabelProvider(); | 2172 IViewerLabelProvider itemProvider = cast(IViewerLabelProvider) getLabelProvider(); |
2170 itemProvider.updateLabel(updateLabel, element); | 2173 itemProvider.updateLabel(updateLabel, element); |
2171 | 2174 |
2199 * @param updateLabel The ViewerLabel to collect the result in | 2202 * @param updateLabel The ViewerLabel to collect the result in |
2200 * @param element The element being decorated. | 2203 * @param element The element being decorated. |
2201 * @param labelProvider ILabelProvider the labelProvider for the receiver. | 2204 * @param labelProvider ILabelProvider the labelProvider for the receiver. |
2202 */ | 2205 */ |
2203 void buildLabel(ViewerLabel updateLabel, Object element, IViewerLabelProvider labelProvider){ | 2206 void buildLabel(ViewerLabel updateLabel, Object element, IViewerLabelProvider labelProvider){ |
2204 Trace.formatln( "{} {}:", __FILE__, __LINE__ ); | |
2205 | 2207 |
2206 labelProvider.updateLabel(updateLabel, element); | 2208 labelProvider.updateLabel(updateLabel, element); |
2207 | 2209 |
2208 colorAndFontCollector.setUsedDecorators(); | 2210 colorAndFontCollector.setUsedDecorators(); |
2209 | 2211 |
2226 * @param updateLabel The ViewerLabel to collect the result in | 2228 * @param updateLabel The ViewerLabel to collect the result in |
2227 * @param elementPath The path of the element being decorated. | 2229 * @param elementPath The path of the element being decorated. |
2228 * @param labelProvider ILabelProvider the labelProvider for the receiver. | 2230 * @param labelProvider ILabelProvider the labelProvider for the receiver. |
2229 */ | 2231 */ |
2230 void buildLabel(ViewerLabel updateLabel, TreePath elementPath,ITreePathLabelProvider labelProvider){ | 2232 void buildLabel(ViewerLabel updateLabel, TreePath elementPath,ITreePathLabelProvider labelProvider){ |
2231 Trace.formatln( "{} {}:", __FILE__, __LINE__ ); | |
2232 | 2233 |
2233 labelProvider.updateLabel(updateLabel, elementPath); | 2234 labelProvider.updateLabel(updateLabel, elementPath); |
2234 | 2235 |
2235 colorAndFontCollector.setUsedDecorators(); | 2236 colorAndFontCollector.setUsedDecorators(); |
2236 | 2237 |
2253 * @param updateLabel The ViewerLabel to collect the result in | 2254 * @param updateLabel The ViewerLabel to collect the result in |
2254 * @param element The element being decorated. | 2255 * @param element The element being decorated. |
2255 * @param labelProvider ILabelProvider the labelProvider for the receiver. | 2256 * @param labelProvider ILabelProvider the labelProvider for the receiver. |
2256 */ | 2257 */ |
2257 void buildLabel(ViewerLabel updateLabel, Object element,ILabelProvider labelProvider){ | 2258 void buildLabel(ViewerLabel updateLabel, Object element,ILabelProvider labelProvider){ |
2258 Trace.formatln( "{} {}:", __FILE__, __LINE__ ); | |
2259 updateLabel.setText(labelProvider.getText(element)); | 2259 updateLabel.setText(labelProvider.getText(element)); |
2260 updateLabel.setImage(labelProvider.getImage(element)); | 2260 updateLabel.setImage(labelProvider.getImage(element)); |
2261 } | 2261 } |
2262 | 2262 |
2263 /** | 2263 /** |