[yocto] [PATCH 5/5] plugins/sdk.ide: Inform user that the settings have to revalidated

Timo Mueller mail at timomueller.eu
Tue Mar 5 00:29:24 PST 2013


From: Timo Mueller <timo.mueller at 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.mueller at 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




More information about the yocto mailing list