From: Timo Mueller <timo.muel...@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.muel...@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

_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to