From 3ecdb0a3a5f4859e8bc0030f0875447fb14151ad Mon Sep 17 00:00:00 2001 From: Uwe Stieber Date: Tue, 13 Feb 2007 09:52:50 +0000 Subject: [PATCH] [fix] API inconsitency in ISystemPromptDialog --- .../rse/ui/dialogs/ISystemPromptDialog.java | 41 ++-- .../rse/ui/dialogs/SystemPromptDialog.java | 62 +++--- .../rse/ui/dialogs/SystemWizardDialog.java | 202 ++++++++---------- 3 files changed, 151 insertions(+), 154 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/ISystemPromptDialog.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/ISystemPromptDialog.java index 7c204f143a6..0612638ff30 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/ISystemPromptDialog.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/ISystemPromptDialog.java @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (c) 2002, 2006 IBM Corporation. All rights reserved. + * Copyright (c) 2002, 2007 IBM Corporation and others. All rights reserved. * This program and the accompanying materials are made available under the terms * of the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html @@ -11,7 +11,7 @@ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. * * Contributors: - * {Name} (company) - description of contribution. + * {Uwe Stieber} (Wind River) - API consistency. ********************************************************************************/ package org.eclipse.rse.ui.dialogs; @@ -20,38 +20,43 @@ package org.eclipse.rse.ui.dialogs; /** * Suggested interface for dialogs used in actions in remote system framework. */ -public interface ISystemPromptDialog -{ +public interface ISystemPromptDialog { /** * For explicitly setting input object */ public void setInputObject(Object inputObject); - + /** * For explicitly getting input object */ public Object getInputObject(); - + /** * For explicitly getting output object after dialog is dismissed. Set by the * dialog's processOK method. */ public Object getOutputObject(); - + + /** + * For explicitly setting output object after wizard is dismissed. Called in the + * wizard's processFinish method, typically. + */ + public void setOutputObject(Object outputObject); + /** * Allow caller to determine if window was cancelled or not. */ public boolean wasCancelled(); - - /** - * Expose inherited protected method convertWidthInCharsToPixels as a publicly - * excessible method - */ - public int publicConvertWidthInCharsToPixels(int chars); - /** - * Expose inherited protected method convertHeightInCharsToPixels as a publicly - * excessible method - */ - public int publicConvertHeightInCharsToPixels(int chars); + /** + * Expose inherited protected method convertWidthInCharsToPixels as a publicly + * excessible method + */ + public int publicConvertWidthInCharsToPixels(int chars); + + /** + * Expose inherited protected method convertHeightInCharsToPixels as a publicly + * excessible method + */ + public int publicConvertHeightInCharsToPixels(int chars); } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemPromptDialog.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemPromptDialog.java index 012b6deccaf..6b5e9a688ec 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemPromptDialog.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemPromptDialog.java @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (c) 2002, 2006 IBM Corporation. All rights reserved. + * Copyright (c) 2002, 2007 IBM Corporation and others.. All rights reserved. * This program and the accompanying materials are made available under the terms * of the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html @@ -11,7 +11,7 @@ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. * * Contributors: - * {Name} (company) - description of contribution. + * {Uwe Stieber} (Wind River) - API consistency. ********************************************************************************/ package org.eclipse.rse.ui.dialogs; @@ -354,33 +354,32 @@ public abstract class SystemPromptDialog //helpIdPerControl.put(c, helpId); } - /** - * For explicitly setting input object. Called by SystemDialogAction - */ + /* (non-Javadoc) + * @see org.eclipse.rse.ui.dialogs.ISystemPromptDialog#setInputObject(java.lang.Object) + */ public void setInputObject(Object inputObject) { this.inputObject = inputObject; } - /** - * For explicitly getting input object + + /* (non-Javadoc) + * @see org.eclipse.rse.ui.dialogs.ISystemPromptDialog#getInputObject() */ public Object getInputObject() { return inputObject; } - - /** - * For explicitly getting output object after dialog is dismissed. Set by the - * dialog's processOK method. + + /* (non-Javadoc) + * @see org.eclipse.rse.ui.dialogs.ISystemPromptDialog#getOutputObject() */ public Object getOutputObject() { return outputObject; } - - /** - * Allow caller to determine if window was cancelled or not. - * Will return false if Cancel All was pressed. + + /* (non-Javadoc) + * @see org.eclipse.rse.ui.dialogs.ISystemPromptDialog#wasCancelled() */ public boolean wasCancelled() { @@ -415,21 +414,28 @@ public abstract class SystemPromptDialog { return fMessageLine; } - - /** - * For explicitly setting output object. Call this in your processOK method. - * If an output object validator has been set via setOutputObjectValidator, then - * this will call its isValid method on the outputObject and will return the error - * message if any that it issues. A return of null always means no errors and - * hence it is ok to dismiss the dialog. + + /* (non-Javadoc) + * @see org.eclipse.rse.ui.dialogs.ISystemPromptDialog#setOutputObject(java.lang.Object) + *

+ * Note: Signature has changed to ensure overall API consistency!!! If used with return + * value in specific product code (open source code does not reference this method!), + * replace the old code:

+	 * 
+	 *          String xyz = "output object";
+	 *          SystemMessage message = systemPromptDialog.setOutputObject(xyz);
+	 * 
+	 * 
with the new code:
+	 * 
+	 *          String xyz = "output object";
+	 *          systemPromptDialog.setOutputObject(xyz);
+	 *          if (systemPromptDialog.getOutputObjectValidator() != null)
+	 *          	SystemMessage message = systemPromptDialog.getOutputObjectValidator().validate((String)systemPromptDialog.getOutputObject()); 
+	 * 
+ * */ - protected SystemMessage setOutputObject(Object outputObject) - { + public void setOutputObject(Object outputObject) { this.outputObject = outputObject; - if ((outputObjectValidator != null) && (outputObject instanceof String)) - return outputObjectValidator.validate((String)outputObject); - else - return null; } /** diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemWizardDialog.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemWizardDialog.java index c299f1ee95d..20d5701b56c 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemWizardDialog.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/dialogs/SystemWizardDialog.java @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (c) 2002, 2006 IBM Corporation. All rights reserved. + * Copyright (c) 2002, 2007 IBM Corporation. All rights reserved. * This program and the accompanying materials are made available under the terms * of the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html @@ -11,11 +11,12 @@ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. * * Contributors: - * {Name} (company) - description of contribution. + * {Uwe Stieber} (Wind River) - API consistency. ********************************************************************************/ package org.eclipse.rse.ui.dialogs; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.wizard.IWizard; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.ProgressMonitorPart; import org.eclipse.jface.wizard.WizardDialog; @@ -57,137 +58,122 @@ import org.eclipse.swt.widgets.Shell; * @see org.eclipse.rse.ui.wizards.AbstractSystemWizard * @see org.eclipse.rse.ui.actions.SystemBaseWizardAction */ -public class SystemWizardDialog - extends WizardDialog - implements ISystemPromptDialog -{ - protected ISystemWizard wizard; +public class SystemWizardDialog extends WizardDialog implements ISystemPromptDialog { protected String helpId; - + /** * Constructor */ - public SystemWizardDialog(Shell shell, ISystemWizard wizard) - { - super(shell, wizard); - this.wizard = wizard; - wizard.setSystemWizardDialog(this); + public SystemWizardDialog(Shell shell, IWizard wizard) { + this(shell, wizard, null); } + /** * Constructor two. Use when you have an input object at instantiation time. */ - public SystemWizardDialog(Shell shell, ISystemWizard wizard, Object inputObject) - { - super(shell,wizard); - this.wizard = wizard; - setInputObject(inputObject); - wizard.setSystemWizardDialog(this); + public SystemWizardDialog(Shell shell, IWizard wizard, Object inputObject) { + super(shell, wizard); + if (wizard instanceof ISystemWizard) { + ((ISystemWizard)wizard).setSystemWizardDialog(this); + setInputObject(inputObject); + } } - - /** - * For explicitly setting input object. Called by SystemDialogAction + + /* (non-Javadoc) + * @see org.eclipse.rse.ui.dialogs.ISystemPromptDialog#setInputObject(java.lang.Object) */ - public void setInputObject(Object inputObject) - { - wizard.setInputObject(inputObject); + public void setInputObject(Object inputObject) { + if (getWizard() instanceof ISystemWizard) ((ISystemWizard)getWizard()).setInputObject(inputObject); } - /** - * For explicitly getting input object. + + /* (non-Javadoc) + * @see org.eclipse.rse.ui.dialogs.ISystemPromptDialog#getInputObject() */ - public Object getInputObject() - { - return wizard.getInputObject(); + public Object getInputObject() { + return getWizard() instanceof ISystemWizard ? ((ISystemWizard)getWizard()).getInputObject() : null; + } + + /* (non-Javadoc) + * @see org.eclipse.rse.ui.dialogs.ISystemPromptDialog#getOutputObject() + */ + public Object getOutputObject() { + return getWizard() instanceof ISystemWizard ? ((ISystemWizard)getWizard()).getOutputObject() : null; + } + + /* (non-Javadoc) + * @see org.eclipse.rse.ui.dialogs.ISystemPromptDialog#setOutputObject(java.lang.Object) + */ + public void setOutputObject(Object outputObject) { + if (getWizard() instanceof ISystemWizard) ((ISystemWizard)getWizard()).setOutputObject(outputObject); } - /** - * For explicitly getting output object after wizard is dismissed. Set by the - * dialog's processOK method. + /* (non-Javadoc) + * @see org.eclipse.rse.ui.dialogs.ISystemPromptDialog#wasCancelled() */ - public Object getOutputObject() - { - - return wizard.getOutputObject(); - } - - /** - * Allow caller to determine if wizard was cancelled or not. - */ - public boolean wasCancelled() - { + public boolean wasCancelled() { //System.out.println("Inside wasCancelled of SystemWizardDialog: " + wizard.wasCancelled()); - return wizard.wasCancelled(); + return getWizard() instanceof ISystemWizard ? ((ISystemWizard)getWizard()).wasCancelled() : false; } - - /** - * Set the help context id for this wizard dialog - */ - public void setHelp(String id) - { - helpId = id; - if (wizard != null) { - wizard.setHelp(id); - } - } - + + /** + * Set the help context id for this wizard dialog + */ + public void setHelp(String id) { + helpId = id; + if (getWizard() instanceof ISystemWizard) ((ISystemWizard)getWizard()).setHelp(id); + } + /** * Get the help context id for this wizard dialog, as set in setHelp */ - public String getHelpContextId() - { + public String getHelpContextId() { return helpId; } - + /** * Intercept of parent method so we can automatically register the wizard's progress monitor * with the SystemRegistry for all framework progress monitor requests, if user has specified * they need a progress monitor for this wizard. */ - protected Control createDialogArea(Composite parent) - { - boolean needsMonitor = wizard.needsProgressMonitor(); - Control ctrl = super.createDialogArea(parent); - if (!needsMonitor) - { - IProgressMonitor pm = getProgressMonitor(); - ((ProgressMonitorPart)pm).dispose(); - } - if (needsMonitor && RSEUIPlugin.isTheSystemRegistryActive()) - { - RSEUIPlugin.getTheSystemRegistry().setRunnableContext(getShell(), this); - // add a dispose listener - getShell().addDisposeListener(new DisposeListener() - { - public void widgetDisposed(DisposeEvent e) - { - RSEUIPlugin.getTheSystemRegistry().clearRunnableContext(); - } - }); - } - return ctrl; - } - - /** - * Exposes this nice new 2.0 capability to the public. - */ - public void updateSize(IWizardPage page) - { - super.updateSize(page); - } - - /** - * Expose inherited protected method convertWidthInCharsToPixels as a publicly - * excessible method - */ - public int publicConvertWidthInCharsToPixels(int chars) - { - return convertWidthInCharsToPixels(chars); - } - /** - * Expose inherited protected method convertHeightInCharsToPixels as a publicly - * excessible method - */ - public int publicConvertHeightInCharsToPixels(int chars) - { - return convertHeightInCharsToPixels(chars); - } + protected Control createDialogArea(Composite parent) { + boolean needsMonitor = getWizard().needsProgressMonitor(); + Control ctrl = super.createDialogArea(parent); + if (!needsMonitor) { + IProgressMonitor pm = getProgressMonitor(); + ((ProgressMonitorPart)pm).dispose(); + } + if (needsMonitor && RSEUIPlugin.isTheSystemRegistryActive()) { + RSEUIPlugin.getTheSystemRegistry().setRunnableContext(getShell(), this); + // add a dispose listener + getShell().addDisposeListener(new DisposeListener() { + public void widgetDisposed(DisposeEvent e) { + RSEUIPlugin.getTheSystemRegistry().clearRunnableContext(); + } + }); + } + return ctrl; + } + + /** + * Exposes this nice new 2.0 capability to the public. + */ + public void updateSize(IWizardPage page) { + super.updateSize(page); + } + + /** + * Expose inherited protected method convertWidthInCharsToPixels as a publicly + * excessible method + */ + public int publicConvertWidthInCharsToPixels(int chars) { + return convertWidthInCharsToPixels(chars); + } + + /** + * Expose inherited protected method convertHeightInCharsToPixels as a publicly + * excessible method + */ + public int publicConvertHeightInCharsToPixels(int chars) { + return convertHeightInCharsToPixels(chars); + } } \ No newline at end of file