Mercurial > projects > dwt-addons
comparison dwtx/jface/preference/PreferenceDialog.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 | c3583c6ec027 |
comparison
equal
deleted
inserted
replaced
103:2d6540440fe6 | 104:04b47443bb01 |
---|---|
83 import dwtx.jface.viewers.ViewerComparator; | 83 import dwtx.jface.viewers.ViewerComparator; |
84 import dwtx.jface.viewers.ViewerFilter; | 84 import dwtx.jface.viewers.ViewerFilter; |
85 | 85 |
86 import dwt.dwthelper.utils; | 86 import dwt.dwthelper.utils; |
87 import dwt.dwthelper.Runnable; | 87 import dwt.dwthelper.Runnable; |
88 import dwtx.dwtxhelper.Collection; | |
88 | 89 |
89 /** | 90 /** |
90 * A preference dialog is a hierarchical presentation of preference pages. Each | 91 * A preference dialog is a hierarchical presentation of preference pages. Each |
91 * page is represented by a node in the tree shown on the left hand side of the | 92 * page is represented by a node in the tree shown on the left hand side of the |
92 * dialog; when a node is selected, the corresponding page is shown on the right | 93 * dialog; when a node is selected, the corresponding page is shown on the right |
262 * | 263 * |
263 * @see dwtx.jface.dialogs.Dialog#cancelPressed() | 264 * @see dwtx.jface.dialogs.Dialog#cancelPressed() |
264 */ | 265 */ |
265 protected override void cancelPressed() { | 266 protected override void cancelPressed() { |
266 // Inform all pages that we are cancelling | 267 // Inform all pages that we are cancelling |
267 foreach( e; preferenceManager.getElements(PreferenceManager.PRE_ORDER)){ | 268 Iterator nodes = preferenceManager.getElements(PreferenceManager.PRE_ORDER).iterator(); |
268 IPreferenceNode node = cast(IPreferenceNode) e; | 269 while (nodes.hasNext()) { |
270 IPreferenceNode node = cast(IPreferenceNode) nodes.next(); | |
269 if (getPage(node) !is null) { | 271 if (getPage(node) !is null) { |
270 | 272 |
271 // this_: strange workaround for compiler error with dmd 1.028 in run() | 273 // this_: strange workaround for compiler error with dmd 1.028 in run() |
272 SafeRunnable.run(new class(this,node) SafeRunnable { | 274 SafeRunnable.run(dgSafeRunnable((IPreferenceNode node_, PreferenceDialog this_) { |
273 IPreferenceNode node_; | 275 if (!this_.getPage(node_).performCancel()) { |
274 PreferenceDialog this_; | 276 return; |
275 this(PreferenceDialog pd, IPreferenceNode b){ | |
276 this_=pd; | |
277 node_=b; | |
278 } | 277 } |
279 public void run() { | 278 }, cast(IPreferenceNode)node, this )); |
280 if (!this_.getPage(node_).performCancel()) { | |
281 return; | |
282 } | |
283 } | |
284 }); | |
285 } | 279 } |
286 } | 280 } |
287 setReturnCode(CANCEL); | 281 setReturnCode(CANCEL); |
288 close(); | 282 close(); |
289 } | 283 } |
789 * the id to search for. | 783 * the id to search for. |
790 * @return <code>IPreferenceNode</code> or <code>null</code> if not | 784 * @return <code>IPreferenceNode</code> or <code>null</code> if not |
791 * found. | 785 * found. |
792 */ | 786 */ |
793 protected IPreferenceNode findNodeMatching(String nodeId) { | 787 protected IPreferenceNode findNodeMatching(String nodeId) { |
794 foreach( e; preferenceManager.getElements(PreferenceManager.POST_ORDER)){ | 788 List nodes = preferenceManager.getElements(PreferenceManager.POST_ORDER); |
795 IPreferenceNode node = cast(IPreferenceNode) e; | 789 for (Iterator i = nodes.iterator(); i.hasNext();) { |
790 IPreferenceNode node = cast(IPreferenceNode) i.next(); | |
796 if (node.getId().equals(nodeId)) { | 791 if (node.getId().equals(nodeId)) { |
797 return node; | 792 return node; |
798 } | 793 } |
799 } | 794 } |
800 return null; | 795 return null; |
869 * <p> | 864 * <p> |
870 * Subclasses may override. | 865 * Subclasses may override. |
871 * </p> | 866 * </p> |
872 */ | 867 */ |
873 protected void handleSave() { | 868 protected void handleSave() { |
874 foreach( e; preferenceManager.getElements(PreferenceManager.PRE_ORDER)){ | 869 Iterator nodes = preferenceManager.getElements(PreferenceManager.PRE_ORDER).iterator(); |
875 IPreferenceNode node = cast(IPreferenceNode) e; | 870 while (nodes.hasNext()) { |
871 IPreferenceNode node = cast(IPreferenceNode) nodes.next(); | |
876 IPreferencePage page = node.getPage(); | 872 IPreferencePage page = node.getPage(); |
877 if (cast(PreferencePage)page ) { | 873 if (cast(PreferencePage)page ) { |
878 // Save now in case tbe workbench does not shutdown cleanly | 874 // Save now in case tbe workbench does not shutdown cleanly |
879 IPreferenceStore store = (cast(PreferencePage) page).getPreferenceStore(); | 875 IPreferenceStore store = (cast(PreferencePage) page).getPreferenceStore(); |
880 if (store !is null && store.needsSaving() | 876 if (store !is null && store.needsSaving() |
966 getButton(IDialogConstants.OK_ID).setEnabled(false); | 962 getButton(IDialogConstants.OK_ID).setEnabled(false); |
967 errorOccurred = false; | 963 errorOccurred = false; |
968 bool hasFailedOK = false; | 964 bool hasFailedOK = false; |
969 try { | 965 try { |
970 // Notify all the pages and give them a chance to abort | 966 // Notify all the pages and give them a chance to abort |
971 foreach( e; preferenceManager.getElements(PreferenceManager.PRE_ORDER)){ | 967 Iterator nodes = preferenceManager.getElements(PreferenceManager.PRE_ORDER) |
972 IPreferenceNode node = cast(IPreferenceNode) e; | 968 .iterator(); |
969 while (nodes.hasNext()) { | |
970 IPreferenceNode node = cast(IPreferenceNode) nodes.next(); | |
973 IPreferencePage page = node.getPage(); | 971 IPreferencePage page = node.getPage(); |
974 if (page !is null) { | 972 if (page !is null) { |
975 if (!page.performOk()){ | 973 if (!page.performOk()){ |
976 hasFailedOK = true; | 974 hasFailedOK = true; |
977 return; | 975 return; |