[yocto] [PATCH 6/8] plugins/sdk.ide: Move modification of yocto project settings to utils class

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


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

Saving yocto project settings is currently only used by the "Change
Yocto Project Settings" command. To allow other UI elements
(e.g. project property pages) to modify the yocto settings of a
project the functionality has been extraced to a separate method and
moved to the utils class.
---
 .../src/org/yocto/sdk/ide/YoctoSDKUtils.java       |   42 ++++++++++++++++++++
 .../yocto/sdk/ide/actions/ReconfigYoctoAction.java |   41 ++-----------------
 2 files changed, 46 insertions(+), 37 deletions(-)

diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKUtils.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKUtils.java
index 16035fd..7ea4262 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKUtils.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoSDKUtils.java
@@ -22,10 +22,12 @@ import java.util.HashMap;
 import java.util.Iterator;
 
 import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ConsoleOutputStream;
 import org.eclipse.cdt.core.envvar.IContributedEnvironment;
 import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
 import org.eclipse.cdt.core.envvar.IEnvironmentVariableManager;
 import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.resources.IConsole;
 import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
 import org.eclipse.cdt.core.settings.model.ICProjectDescription;
 import org.eclipse.core.resources.IProject;
@@ -75,6 +77,7 @@ public class YoctoSDKUtils {
 	private static final String DEFAULT_SYSROOT_PREFIX = "--sysroot=";
 	private static final String LIBTOOL_SYSROOT_PREFIX = "--with-libtool-sysroot=";
 	private static final String SYSROOTS_DIR = "sysroots";
+	private static final String CONSOLE_MESSAGE  = "Menu.SDK.Console.Configure.Message";
 
 	public static SDKCheckResults checkYoctoSDK(YoctoUIElement elem) {		
 		
@@ -418,6 +421,45 @@ public class YoctoSDKUtils {
 			elem.setEnumDeviceMode(YoctoUIElement.DeviceMode.DEVICE_MODE);
 		return elem;
 	}
+	
+	/* Save YoctoUIElement to project settings */
+	public static void saveElemToProjectEnv(IProject project, YoctoUIElement elem)
+	{
+		ConsoleOutputStream consoleOutStream = null;
+		
+		try {
+			YoctoSDKProjectNature.setEnvironmentVariables(project, elem);
+			YoctoSDKProjectNature.configureAutotoolsOptions(project);
+			IConsole console = CCorePlugin.getDefault().getConsole("org.yocto.sdk.ide.YoctoConsole");
+			console.start(project);
+			consoleOutStream = console.getOutputStream();
+			String messages = YoctoSDKMessages.getString(CONSOLE_MESSAGE);
+			consoleOutStream.write(messages.getBytes());
+		}
+		catch (CoreException e)
+		{
+			System.out.println(e.getMessage());
+		}
+		catch (IOException e)
+		{
+			System.out.println(e.getMessage());
+		}
+		catch (YoctoGeneralException e)
+		{
+			System.out.println(e.getMessage());
+		}
+		finally {
+			if (consoleOutStream != null) {
+				try {
+					consoleOutStream.flush();
+					consoleOutStream.close();
+				}
+				catch (IOException e) {
+					// ignore
+				}
+			}
+		}
+	}
 
 	/* Load IDE wide POKY Preference settings into Preference Store */
 	public static void saveElemToStore(YoctoUIElement elem)
diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/actions/ReconfigYoctoAction.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/actions/ReconfigYoctoAction.java
index f68b552..d7021be 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/actions/ReconfigYoctoAction.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/actions/ReconfigYoctoAction.java
@@ -10,29 +10,19 @@
  *******************************************************************************/
 package org.yocto.sdk.ide.actions;
 
-import java.io.IOException;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.ConsoleOutputStream;
-import org.eclipse.cdt.core.resources.IConsole;
+import org.eclipse.cdt.internal.autotools.ui.actions.InvokeAction;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jface.action.IAction;
-import org.eclipse.cdt.internal.autotools.ui.actions.InvokeAction;
 import org.eclipse.swt.widgets.Shell;
-
-import org.yocto.sdk.ide.YoctoGeneralException;
-import org.yocto.sdk.ide.YoctoSDKUtils;
 import org.yocto.sdk.ide.YoctoSDKMessages;
-import org.yocto.sdk.ide.YoctoSDKProjectNature;
+import org.yocto.sdk.ide.YoctoSDKUtils;
 import org.yocto.sdk.ide.YoctoUIElement;
 
 
 @SuppressWarnings("restriction")
 public class ReconfigYoctoAction extends InvokeAction {
     private static final String DIALOG_TITLE  = "Menu.SDK.Dialog.Title";
-    private static final String CONSOLE_MESSAGE  = "Menu.SDK.Console.Configure.Message";
 
 	
 	public void run(IAction action) {
@@ -52,31 +42,8 @@ public class ReconfigYoctoAction extends InvokeAction {
 		SDKLocationDialog optionDialog = new SDKLocationDialog(new Shell(), YoctoSDKMessages.getString(DIALOG_TITLE), elem);
 		optionDialog.open();
 		elem = optionDialog.getElem();
-		if (elem.getStrToolChainRoot() != null) {			
-			try {
-				YoctoSDKProjectNature.setEnvironmentVariables(project, elem);
-				YoctoSDKProjectNature.configureAutotoolsOptions(project);
-				IConsole console = CCorePlugin.getDefault().getConsole("org.yocto.sdk.ide.YoctoConsole");
-				console.start(project);
-				ConsoleOutputStream consoleOutStream;
-				consoleOutStream = console.getOutputStream();
-				String messages = YoctoSDKMessages.getString(CONSOLE_MESSAGE);
-				consoleOutStream.write(messages.getBytes());
-				consoleOutStream.flush();
-				consoleOutStream.close();
-			}
-			catch (CoreException e)
-			{
-				System.out.println(e.getMessage());
-			}
-			catch (IOException e)
-			{
-				System.out.println(e.getMessage());
-			}
-			catch (YoctoGeneralException e)
-			{
-				System.out.println(e.getMessage());
-			}
+		if (elem.getStrToolChainRoot() != null) {
+			YoctoSDKUtils.saveElemToProjectEnv(project, elem);
 		}
 	}
 
-- 
1.7.7.6




More information about the yocto mailing list