[yocto] [PATCH 7/8] plugins/sdk.ide: Show yocto ui setting widget in project property page

mail at timomueller.eu mail at timomueller.eu
Tue Dec 4 01:22:22 PST 2012


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

The yocto property page in a project's properties dialog will now show
the yocto settings that are also used in the global yocto preferences
dialog.  On save the defined values will be stored to the project's
environment.
---
 .../preferences/YoctoSDKProjectPropertyPage.java   |   88 +++++++++++++++++++-
 1 files changed, 85 insertions(+), 3 deletions(-)

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 265c8dc..92d476a 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
@@ -1,5 +1,6 @@
 /*******************************************************************************
  * Copyright (c) 2012 BMW Car IT GmbH.
+ * Copyright (c) 2010 Intel.
  * 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
@@ -7,23 +8,104 @@
  *
  * Contributors:
  * BMW Car IT GmbH - initial implementation
+ * Intel - initial API implementation (copied from YoctoSDKPreferencePage)
  *******************************************************************************/
 package org.yocto.sdk.ide.preferences;
 
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.swt.SWT;
 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.YoctoSDKUtils;
+import org.yocto.sdk.ide.YoctoSDKUtils.SDKCheckRequestFrom;
+import org.yocto.sdk.ide.YoctoUIElement;
+import org.yocto.sdk.ide.YoctoUISetting;
 
 public class YoctoSDKProjectPropertyPage extends PropertyPage implements
 		IWorkbenchPropertyPage {
 
-	public YoctoSDKProjectPropertyPage() {
-	}
+	private YoctoUISetting yoctoUISetting;
+	private IProject project = null;
 
 	@Override
 	protected Control createContents(Composite parent) {
-		return null;
+		YoctoUIElement uiElement = loadUIElement();
+		this.yoctoUISetting = new YoctoUISetting(uiElement);
+
+		initializeDialogUnits(parent);
+		final Composite result = new Composite(parent, SWT.NONE);
+
+		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;
+		}
+	}
+
+	private IProject getProject() {
+		if (project != null) {
+			return project;
+		}
+
+		IAdaptable adaptable = getElement();
+		if (adaptable == null) {
+			throw new IllegalStateException("Project can only be retrieved after properties page has been set up.");
+		}
+
+		project = (IProject) adaptable.getAdapter(IProject.class);
+		return project;
+	}
+
+	private YoctoUIElement loadUIElement() {
+		YoctoUIElement uiElement = YoctoSDKUtils.getElemFromProjectEnv(getProject());
+
+		if (uiElement.getStrToolChainRoot().isEmpty()
+				|| uiElement.getStrTarget().isEmpty()) {
+			// No project environment has been set yet, use the Preference
+			// values
+			uiElement = YoctoSDKUtils.getElemFromStore();
+		}
+
+		return uiElement;
+	}
+
+	/*
+	 * @see PreferencePage#performDefaults()
+	 */
+	@Override
+	protected void performDefaults() {
+		YoctoUIElement defaultElement = YoctoSDKUtils.getDefaultElemFromStore();
+		yoctoUISetting.setCurrentInput(defaultElement);
+		super.performDefaults();
 	}
 
+	/*
+	 * @see IPreferencePage#performOk()
+	 */
+	@Override
+	public boolean performOk() {
+		try {
+			yoctoUISetting.validateInput(SDKCheckRequestFrom.Preferences, true);
+
+			YoctoUIElement elem = yoctoUISetting.getCurrentInput();
+			YoctoSDKUtils.saveElemToProjectEnv(getProject(), elem);
+
+			return super.performOk();
+		} catch (YoctoGeneralException e) {
+			// TODO Auto-generated catch block
+			System.out.println(e.getMessage());
+			return false;
+		}
+	}
 }
-- 
1.7.7.6




More information about the yocto mailing list