[yocto] [PATCH 3/5] plugins/sdk.ide: Show SDK check errors in message area

Timo Mueller mail at timomueller.eu
Wed Feb 27 06:37:14 PST 2013


From: Timo Mueller <timo.mueller at bmw-carit.de>

If settings made by the user do not pass the SDK check the error
message was not shown in eclipse but was printed to system out which
was never visible by the user.

The error is now shown in the message area of the property or preference
page if the check fails.

Signed-off-by: Timo Mueller <timo.mueller at bmw-carit.de>
---
 .../src/org/yocto/sdk/ide/YoctoUISetting.java      | 43 ++++-------
 .../ide/preferences/YoctoSDKPreferencePage.java    | 84 ++++++++++-----------
 .../preferences/YoctoSDKProjectPropertyPage.java   | 85 +++++++++++-----------
 3 files changed, 97 insertions(+), 115 deletions(-)

diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoUISetting.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoUISetting.java
index 74cfd69..2affe82 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoUISetting.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoUISetting.java
@@ -336,40 +336,29 @@ public class YoctoUISetting {
 		textQemuOption.setText(elem.getStrQemuOption());
 		textSysrootLoc.setText(elem.getStrSysrootLoc());
 
-		try {
-			validateInput(SDKCheckRequestFrom.Preferences, false);
-		} catch (YoctoGeneralException e) {
+		SDKCheckResults result = validateInput(SDKCheckRequestFrom.Preferences, false);
+		if (result != SDKCheckResults.SDK_PASS) {
 			System.out.println("Have you ever set Yocto Project Reference before?");
-			System.out.println(e.getMessage());
+			System.out.println(YoctoSDKChecker.getErrorMessage(result, SDKCheckRequestFrom.Other));
 		}
 	}
 
-	public boolean validateInput(SDKCheckRequestFrom from, boolean bPrompt) throws YoctoGeneralException {
-		YoctoUIElement elem = getCurrentInput();
-		boolean pass = true;
-		String strErrorMessage;
-
-		SDKCheckResults result = YoctoSDKChecker.checkYoctoSDK(elem);
+	public SDKCheckResults validateInput(SDKCheckRequestFrom from, boolean showErrorDialog) {
+		SDKCheckResults result = YoctoSDKChecker.checkYoctoSDK(getCurrentInput());
 
 		//Show Error Message on the Label to help users.
-		if (result != SDKCheckResults.SDK_PASS) {
-			strErrorMessage = YoctoSDKChecker.getErrorMessage(result, from);
-			pass = false;
-			if (bPrompt)
-			{
-				Display display = Display.getCurrent();
-				Shell shell = new Shell(display);
-				MessageBox msgBox = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
-				msgBox.setText("Yocto Project Configuration Error");
-				msgBox.setMessage(strErrorMessage);
-				msgBox.open();
-				if (shell != null)
-					shell.dispose();
-			}
-
-			throw new YoctoGeneralException(strErrorMessage);
+		if ((result != SDKCheckResults.SDK_PASS) && showErrorDialog) {
+			Display display = Display.getCurrent();
+			Shell shell = new Shell(display);
+			MessageBox msgBox = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
+			msgBox.setText("Yocto Project Configuration Error");
+			msgBox.setMessage(YoctoSDKChecker.getErrorMessage(result, from));
+			msgBox.open();
+			if (shell != null)
+				shell.dispose();
 		}
-		return pass;
+
+		return result;
 	}
 
 	public void setUIFormEnabledState(boolean isEnabled) {
diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/YoctoSDKPreferencePage.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/YoctoSDKPreferencePage.java
index ef681a4..1a8c8ca 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/YoctoSDKPreferencePage.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/YoctoSDKPreferencePage.java
@@ -26,14 +26,14 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.yocto.sdk.ide.YoctoGeneralException;
 import org.yocto.sdk.ide.YoctoProfileElement;
 import org.yocto.sdk.ide.YoctoProfileSetting;
+import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckRequestFrom;
+import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckResults;
 import org.yocto.sdk.ide.YoctoSDKMessages;
 import org.yocto.sdk.ide.YoctoSDKPlugin;
 import org.yocto.sdk.ide.YoctoSDKProjectNature;
 import org.yocto.sdk.ide.YoctoSDKUtils;
-import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckRequestFrom;
 import org.yocto.sdk.ide.YoctoUIElement;
 import org.yocto.sdk.ide.YoctoUISetting;
 
@@ -75,60 +75,57 @@ public class YoctoSDKPreferencePage extends PreferencePage implements IWorkbench
 
 	protected Control createContents(Composite parent) {
 		initializeDialogUnits(parent);
-		final Composite result= new Composite(parent, SWT.NONE);
-
-		yoctoProfileSetting.createComposite(result);
-
-		try {
-			yoctoUISetting.createComposite(result);
-			yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, false);
-			Dialog.applyDialogFont(result);
-			return result;
-		} catch (YoctoGeneralException e) {
-			System.out.println("Have you ever set Yocto Project Reference before?");
-			System.out.println(e.getMessage());
-			return result;
+		final Composite composite= new Composite(parent, SWT.NONE);
+
+		yoctoProfileSetting.createComposite(composite);
+		yoctoUISetting.createComposite(composite);
+
+		SDKCheckResults result = yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, false);
+		if (result != SDKCheckResults.SDK_PASS) {
 		}
+
+		Dialog.applyDialogFont(composite);
+		return composite;
 	}
 
 	/*
 	 * @see IPreferencePage#performOk()
 	 */
 	public boolean performOk() {
-		try {
-			yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, false);
+		setErrorMessage(null);
 
-			YoctoUIElement savedElement = YoctoSDKUtils.getElemFromStore(getPreferenceStore());
-			YoctoUIElement modifiedElement = yoctoUISetting.getCurrentInput();
+		SDKCheckResults result = yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, false);
+		if (result != SDKCheckResults.SDK_PASS) {
+			setErrorMessage(result.getMessage());
+			return false;
+		}
 
-			if (savedElement.equals(modifiedElement)) {
-				return true;
-			}
+		YoctoUIElement savedElement = YoctoSDKUtils.getElemFromStore(getPreferenceStore());
+		YoctoUIElement modifiedElement = yoctoUISetting.getCurrentInput();
 
-			YoctoProfileElement profileElement = yoctoProfileSetting.getCurrentInput();
-			HashSet<IProject> yoctoProjects = getAffectedProjects(profileElement.getSelectedProfile());
+		if (savedElement.equals(modifiedElement)) {
+			return true;
+		}
+
+		YoctoProfileElement profileElement = yoctoProfileSetting.getCurrentInput();
+		HashSet<IProject> yoctoProjects = getAffectedProjects(profileElement.getSelectedProfile());
 
-			if (!yoctoProjects.isEmpty()) {
-				boolean deleteConfirmed =
-						MessageDialog.openConfirm(null, YoctoSDKMessages.getString(UPDATE_DIALOG_TITLE),
-								YoctoSDKMessages.getFormattedString(UPDATE_DIALOG_MESSAGE, profileElement.getSelectedProfile()));
+		if (!yoctoProjects.isEmpty()) {
+			boolean deleteConfirmed =
+					MessageDialog.openConfirm(null, YoctoSDKMessages.getString(UPDATE_DIALOG_TITLE),
+							YoctoSDKMessages.getFormattedString(UPDATE_DIALOG_MESSAGE, profileElement.getSelectedProfile()));
 
-				if (!deleteConfirmed) {
-					return false;
-				}
+			if (!deleteConfirmed) {
+				return false;
 			}
+		}
 
-			YoctoSDKUtils.saveElemToStore(modifiedElement, getPreferenceStore());
-			YoctoSDKUtils.saveProfilesToDefaultStore(profileElement);
+		YoctoSDKUtils.saveElemToStore(modifiedElement, getPreferenceStore());
+		YoctoSDKUtils.saveProfilesToDefaultStore(profileElement);
 
-			updateProjects(yoctoProjects, modifiedElement);
+		updateProjects(yoctoProjects, modifiedElement);
 
-			return super.performOk();
-		} catch (YoctoGeneralException e) {
-			// TODO Auto-generated catch block
-			System.out.println(e.getMessage());
-			return false;
-		}
+		return super.performOk();
 	}
 
 	/*
@@ -144,10 +141,9 @@ public class YoctoSDKPreferencePage extends PreferencePage implements IWorkbench
 		YoctoProfileElement profileElement = yoctoProfileSetting.getCurrentInput();
 		YoctoUIElement uiElement = yoctoUISetting.getCurrentInput();
 
-		try {
-			yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, true);
-		} catch (YoctoGeneralException e) {
-			// just abort saving, validateInput will show an error dialog
+		SDKCheckResults result = yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, true);
+		if (result != SDKCheckResults.SDK_PASS) {
+			setErrorMessage(result.getMessage());
 			return;
 		}
 
diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/YoctoSDKProjectPropertyPage.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/YoctoSDKProjectPropertyPage.java
index 551d3bd..ca148af 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/YoctoSDKProjectPropertyPage.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/YoctoSDKProjectPropertyPage.java
@@ -20,11 +20,11 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.IWorkbenchPropertyPage;
 import org.eclipse.ui.dialogs.PropertyPage;
-import org.yocto.sdk.ide.YoctoGeneralException;
 import org.yocto.sdk.ide.YoctoProfileElement;
 import org.yocto.sdk.ide.YoctoProfileSetting;
 import org.yocto.sdk.ide.YoctoProjectSpecificSetting;
 import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckRequestFrom;
+import org.yocto.sdk.ide.YoctoSDKChecker.SDKCheckResults;
 import org.yocto.sdk.ide.YoctoSDKPlugin;
 import org.yocto.sdk.ide.YoctoSDKUtils;
 import org.yocto.sdk.ide.YoctoUIElement;
@@ -63,32 +63,29 @@ public class YoctoSDKProjectPropertyPage extends PropertyPage implements
 		yoctoProjectSpecificSetting = new YoctoProjectSpecificSetting(yoctoProfileSetting, yoctoUISetting, this);
 
 		initializeDialogUnits(parent);
-		final Composite result = new Composite(parent, SWT.NONE);
-
-		yoctoProfileSetting.createComposite(result);
-		yoctoProjectSpecificSetting.createComposite(result);
-
-		try {
-			yoctoUISetting.createComposite(result);
-
-			if (useProjectSpecificSetting) {
-				yoctoProfileSetting.setUIFormEnabledState(false);
-				yoctoProjectSpecificSetting.setUseProjectSpecificSettings(true);
-				yoctoUISetting.setUIFormEnabledState(true);
-				yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, false);
-			} else {
-				yoctoProfileSetting.setUIFormEnabledState(true);
-				yoctoProjectSpecificSetting.setUseProjectSpecificSettings(false);
-				yoctoUISetting.setUIFormEnabledState(false);
-			}
+		final Composite composite = new Composite(parent, SWT.NONE);
+
+		yoctoProfileSetting.createComposite(composite);
+		yoctoProjectSpecificSetting.createComposite(composite);
+		yoctoUISetting.createComposite(composite);
+
+		if (useProjectSpecificSetting) {
+			yoctoProfileSetting.setUIFormEnabledState(false);
+			yoctoProjectSpecificSetting.setUseProjectSpecificSettings(true);
+			yoctoUISetting.setUIFormEnabledState(true);
 
-			Dialog.applyDialogFont(result);
-			return result;
-		} catch (YoctoGeneralException e) {
-			System.out.println("Have you ever set Yocto Project Reference before?");
-			System.out.println(e.getMessage());
-			return result;
+			SDKCheckResults result = yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, false);
+			if (result != SDKCheckResults.SDK_PASS) {
+				setErrorMessage(result.getMessage());
+			}
+		} else {
+			yoctoProfileSetting.setUIFormEnabledState(true);
+			yoctoProjectSpecificSetting.setUseProjectSpecificSettings(false);
+			yoctoUISetting.setUIFormEnabledState(false);
 		}
+
+		Dialog.applyDialogFont(composite);
+		return composite;
 	}
 
 	private IProject getProject() {
@@ -121,28 +118,28 @@ public class YoctoSDKProjectPropertyPage extends PropertyPage implements
 	 */
 	@Override
 	public boolean performOk() {
-		try {
-			IProject project = getProject();
-
-			if (yoctoProjectSpecificSetting.isUsingProjectSpecificSettings()) {
-				yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, true);
-
-				YoctoSDKUtils.saveUseProjectSpecificOptionToProjectPreferences(project, true);
-				YoctoSDKUtils.saveProfilesToProjectPreferences(yoctoProfileSetting.getCurrentInput(), project);
-				YoctoSDKUtils.saveElemToProjectPreferences(yoctoUISetting.getCurrentInput(), project);
-			} else {
-				YoctoSDKUtils.saveUseProjectSpecificOptionToProjectPreferences(project, false);
-				YoctoSDKUtils.saveProfilesToProjectPreferences(yoctoProfileSetting.getCurrentInput(), project);
-			}
+		setErrorMessage(null);
+
+		IProject project = getProject();
 
-			YoctoSDKUtils.saveElemToProjectEnv(yoctoUISetting.getCurrentInput(), getProject());
+		if (yoctoProjectSpecificSetting.isUsingProjectSpecificSettings()) {
+			SDKCheckResults result = yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, false);
+			if (result != SDKCheckResults.SDK_PASS) {
+				setErrorMessage(result.getMessage());
+				return false;
+			}
 
-			return super.performOk();
-		} catch (YoctoGeneralException e) {
-			// TODO Auto-generated catch block
-			System.out.println(e.getMessage());
-			return false;
+			YoctoSDKUtils.saveUseProjectSpecificOptionToProjectPreferences(project, true);
+			YoctoSDKUtils.saveProfilesToProjectPreferences(yoctoProfileSetting.getCurrentInput(), project);
+			YoctoSDKUtils.saveElemToProjectPreferences(yoctoUISetting.getCurrentInput(), project);
+		} else {
+			YoctoSDKUtils.saveUseProjectSpecificOptionToProjectPreferences(project, false);
+			YoctoSDKUtils.saveProfilesToProjectPreferences(yoctoProfileSetting.getCurrentInput(), project);
 		}
+
+		YoctoSDKUtils.saveElemToProjectEnv(yoctoUISetting.getCurrentInput(), getProject());
+
+		return super.performOk();
 	}
 
 	public void switchProfile(String selectedProfile)
-- 
1.7.11.7




More information about the yocto mailing list