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;