From: Timo Mueller <timo.muel...@bmw-carit.de>

If the last validation resulted in an error and the user made changes
to the settings the error message is replaced by a message asking the
user to revalidate.

Signed-off-by: Timo Mueller <timo.muel...@bmw-carit.de>
---
 .../org/yocto/sdk/ide/YoctoSDKMessages.properties  |  1 +
 .../src/org/yocto/sdk/ide/YoctoUISetting.java      |  1 +
 .../ide/preferences/YoctoSDKPreferencePage.java    | 26 ++++++++++++++++++-
 .../preferences/YoctoSDKProjectPropertyPage.java   | 30 +++++++++++++++++++++-
 4 files changed, 56 insertions(+), 2 deletions(-)

diff --git 
a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties 
b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties
index 07a0009..e6d8fa1 100644
--- 
a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties
+++ 
b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKMessages.properties
@@ -37,6 +37,7 @@ Poky.Toolchain.Host.Mismatch = Toolchain and host arch 
mismatch.
 Poky.Toolchain.Host.Mismatch.Advice = Make sure you use 32bit toolchain for 
32bit host and same for 64bit machines!
 
 Default.Advice = \nDo IDE-wide settings from Window > Preferences > Yocto 
Project ADT\nOr do Project-wide settings from Project > Change Yocto Project 
Settings.
+Poky.SDK.Revalidation.Message = Please apply the changes to revalidate.
 
 Poky.SDK.Error.Origin.Wizard = Yocto Wizard Configuration Error:
 Poky.SDK.Error.Origin.Menu = Yocto Menu Configuration Error:
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 95209b6..e5a7897 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
@@ -300,6 +300,7 @@ public class YoctoUISetting {
                btnPokyRoot.addSelectionListener(fSelectionListener);
                btnQemu.addSelectionListener(fSelectionListener);
                btnDevice.addSelectionListener(fSelectionListener);
+               targetArchCombo.addSelectionListener(fSelectionListener);
                textRootLoc.addModifyListener(fModifyListener);
                textKernelLoc.addModifyListener(fModifyListener);
                textQemuOption.addModifyListener(fModifyListener);
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 97c602b..f013cf8 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
@@ -25,6 +25,8 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 import org.yocto.sdk.ide.YoctoProfileElement;
@@ -44,10 +46,13 @@ public class YoctoSDKPreferencePage extends PreferencePage 
implements IWorkbench
        private static final String NEW_DIALOG_MESSAGE = 
"Preferences.Profile.New.Dialog.Message";
        private static final String UPDATE_DIALOG_TITLE = 
"Preferences.Profile.Update.Dialog.Title";
        private static final String UPDATE_DIALOG_MESSAGE = 
"Preferences.Profile.Update.Dialog.Message";
+       private static final String REVALIDATION_MESSAGE = 
"Poky.SDK.Revalidation.Message";
 
        private YoctoProfileSetting yoctoProfileSetting;
        private YoctoUISetting yoctoUISetting;
 
+       private Listener changeListener;
+
        public YoctoSDKPreferencePage() {
                //super(GRID);
                IPreferenceStore defaultStore = 
YoctoSDKPlugin.getDefault().getPreferenceStore();
@@ -66,6 +71,16 @@ public class YoctoSDKPreferencePage extends PreferencePage 
implements IWorkbench
 
                YoctoProfileElement profileElement = new 
YoctoProfileElement(profiles, selectedProfile);
                this.yoctoProfileSetting = new 
YoctoProfileSetting(profileElement, this, true);
+
+               changeListener = new Listener() {
+                       @Override
+                       public void handleEvent(Event event) {
+                               if (getErrorMessage() != null) {
+                                       setErrorMessage(null);
+                                       
setMessage(YoctoSDKMessages.getString(REVALIDATION_MESSAGE), INFORMATION);
+                               }
+                       }
+               };
        }
 
        /*
@@ -82,6 +97,9 @@ public class YoctoSDKPreferencePage extends PreferencePage 
implements IWorkbench
                yoctoProfileSetting.createComposite(composite);
                yoctoUISetting.createComposite(composite);
 
+               composite.addListener(SWT.Modify, changeListener);
+               composite.addListener(SWT.Selection, changeListener);
+
                SDKCheckResults result = 
yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, false);
                if (result != SDKCheckResults.SDK_PASS) {
                }
@@ -94,7 +112,7 @@ public class YoctoSDKPreferencePage extends PreferencePage 
implements IWorkbench
         * @see IPreferencePage#performOk()
         */
        public boolean performOk() {
-               setErrorMessage(null);
+               clearMessages();
 
                SDKCheckResults result = 
yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, false);
                if (result != SDKCheckResults.SDK_PASS) {
@@ -130,6 +148,12 @@ public class YoctoSDKPreferencePage extends PreferencePage 
implements IWorkbench
                return super.performOk();
        }
 
+       private void clearMessages() {
+               setErrorMessage(null);
+               setMessage(null);
+               setTitle(getTitle());
+       }
+
        /*
         * @see PreferencePage#performDefaults()
         */
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 effd432..34c497b 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
@@ -19,6 +19,8 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
 import org.eclipse.ui.IWorkbenchPropertyPage;
 import org.eclipse.ui.dialogs.PropertyPage;
 import org.yocto.sdk.ide.YoctoProfileElement;
@@ -26,6 +28,7 @@ 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.YoctoSDKMessages;
 import org.yocto.sdk.ide.YoctoSDKPlugin;
 import org.yocto.sdk.ide.YoctoSDKUtils;
 import org.yocto.sdk.ide.YoctoUIElement;
@@ -34,11 +37,27 @@ import org.yocto.sdk.ide.YoctoUISetting;
 public class YoctoSDKProjectPropertyPage extends PropertyPage implements
                IWorkbenchPropertyPage {
 
+       private static final String REVALIDATION_MESSAGE = 
"Poky.SDK.Revalidation.Message";
+
        private YoctoProfileSetting yoctoProfileSetting;
        private YoctoProjectSpecificSetting yoctoProjectSpecificSetting;
        private YoctoUISetting yoctoUISetting;
        private IProject project = null;
 
+       private Listener changeListener;
+
+       public YoctoSDKProjectPropertyPage() {
+               changeListener = new Listener() {
+                       @Override
+                       public void handleEvent(Event event) {
+                               if (getErrorMessage() != null) {
+                                       setErrorMessage(null);
+                                       
setMessage(YoctoSDKMessages.getString(REVALIDATION_MESSAGE), INFORMATION);
+                               }
+                       }
+               };
+       }
+
        @Override
        protected Control createContents(Composite parent) {
                IProject project = getProject();
@@ -86,6 +105,9 @@ public class YoctoSDKProjectPropertyPage extends 
PropertyPage implements
                        yoctoUISetting.setUIFormEnabledState(false);
                }
 
+               composite.addListener(SWT.Modify, changeListener);
+               composite.addListener(SWT.Selection, changeListener);
+
                Dialog.applyDialogFont(composite);
                return composite;
        }
@@ -120,7 +142,7 @@ public class YoctoSDKProjectPropertyPage extends 
PropertyPage implements
         */
        @Override
        public boolean performOk() {
-               setErrorMessage(null);
+               clearMessages();
 
                IProject project = getProject();
 
@@ -144,6 +166,12 @@ public class YoctoSDKProjectPropertyPage extends 
PropertyPage implements
                return super.performOk();
        }
 
+       private void clearMessages() {
+               setErrorMessage(null);
+               setMessage(null);
+               setTitle(getTitle());
+       }
+
        public void switchProfile(String selectedProfile)
        {
                YoctoUIElement profileElement = 
YoctoSDKUtils.getElemFromStore(YoctoSDKPlugin.getProfilePreferenceStore(selectedProfile));
-- 
1.7.11.7

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

Reply via email to