[yocto] [RFC v1 1/5] plugins/sdk.ide: Allow storage of yocto settings in project preferences
Timo Mueller
mail at timomueller.eu
Fri Feb 8 05:28:16 PST 2013
From: Timo Mueller <timo.mueller at bmw-carit.de>
The added functions allow storing the yocto settings in the
preferences store of a project. Project-specific yocto settings as
well as the used profiles can be stored.
Signed-off-by: Timo Mueller <timo.mueller at bmw-carit.de>
---
.../src/org/yocto/sdk/ide/YoctoSDKUtils.java | 110 +++++++++++++++++++++
1 file changed, 110 insertions(+)
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 12af7e3..857928c 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
@@ -32,9 +32,13 @@ import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.jface.preference.IPreferenceStore;
+import org.osgi.service.prefs.BackingStoreException;
import org.yocto.sdk.ide.preferences.PreferenceConstants;
public class YoctoSDKUtils {
@@ -62,6 +66,7 @@ public class YoctoSDKUtils {
Other
};
+ private static final String PROJECT_SCOPE = "org.yocto.sdk.ide";
private static final String POKY_DEVICE_EMPTY = "Poky.SDK.Device.Empty";
private static final String TOOLCHAIN_LOCATION_EMPTY = "Poky.SDK.Location.Empty";
private static final String SDK_TARGET_EMPTY = "Poky.SDK.Target.Empty";
@@ -397,6 +402,74 @@ public class YoctoSDKUtils {
}
+ /* Get POKY Preference settings from project's preference store */
+ public static YoctoUIElement getElemFromProjectPreferences(IProject project)
+ {
+ IScopeContext projectScope = new ProjectScope(project);
+ IEclipsePreferences projectNode = projectScope.getNode(PROJECT_SCOPE);
+ if (projectNode == null)
+ {
+ return getElemFromProjectEnv(project);
+ }
+
+ YoctoUIElement elem = new YoctoUIElement();
+ elem.setStrToolChainRoot(projectNode.get(PreferenceConstants.TOOLCHAIN_ROOT,""));
+ elem.setStrTarget(projectNode.get(PreferenceConstants.TOOLCHAIN_TRIPLET,""));
+ elem.setStrQemuKernelLoc(projectNode.get(PreferenceConstants.QEMU_KERNEL,""));
+ elem.setStrSysrootLoc(projectNode.get(PreferenceConstants.SYSROOT,""));
+ elem.setStrQemuOption(projectNode.get(PreferenceConstants.QEMU_OPTION,""));
+ String sTemp = projectNode.get(PreferenceConstants.TARGET_ARCH_INDEX,"");
+ if (!sTemp.isEmpty())
+ elem.setIntTargetIndex(Integer.valueOf(sTemp).intValue());
+ if (projectNode.get(PreferenceConstants.SDK_MODE,"").equalsIgnoreCase(IPreferenceStore.TRUE))
+ {
+ elem.setEnumPokyMode(YoctoUIElement.PokyMode.POKY_SDK_MODE);
+ }
+ else
+ elem.setEnumPokyMode(YoctoUIElement.PokyMode.POKY_TREE_MODE);
+
+ if(projectNode.get(PreferenceConstants.TARGET_MODE,"").equalsIgnoreCase(IPreferenceStore.TRUE))
+ elem.setEnumDeviceMode(YoctoUIElement.DeviceMode.QEMU_MODE);
+ else
+ elem.setEnumDeviceMode(YoctoUIElement.DeviceMode.DEVICE_MODE);
+ return elem;
+ }
+
+ /* Save POKY Preference settings to project's preference store */
+ public static void saveElemToProjectPreferences(YoctoUIElement elem, IProject project)
+ {
+ IScopeContext projectScope = new ProjectScope(project);
+ IEclipsePreferences projectNode = projectScope.getNode(PROJECT_SCOPE);
+ if (projectNode == null)
+ {
+ return;
+ }
+
+ projectNode.putInt(PreferenceConstants.TARGET_ARCH_INDEX, elem.getIntTargetIndex());
+ if (elem.getEnumPokyMode() == YoctoUIElement.PokyMode.POKY_SDK_MODE)
+ projectNode.put(PreferenceConstants.SDK_MODE, IPreferenceStore.TRUE);
+ else
+ projectNode.put(PreferenceConstants.SDK_MODE, IPreferenceStore.FALSE);
+ projectNode.put(PreferenceConstants.QEMU_KERNEL, elem.getStrQemuKernelLoc());
+ projectNode.put(PreferenceConstants.QEMU_OPTION, elem.getStrQemuOption());
+ projectNode.put(PreferenceConstants.SYSROOT, elem.getStrSysrootLoc());
+ if (elem.getEnumDeviceMode() == YoctoUIElement.DeviceMode.QEMU_MODE)
+ projectNode.put(PreferenceConstants.TARGET_MODE, IPreferenceStore.TRUE);
+ else
+ projectNode.put(PreferenceConstants.TARGET_MODE, IPreferenceStore.FALSE);
+ projectNode.put(PreferenceConstants.TOOLCHAIN_ROOT, elem.getStrToolChainRoot());
+ projectNode.put(PreferenceConstants.TOOLCHAIN_TRIPLET, elem.getStrTarget());
+
+ try
+ {
+ projectNode.flush();
+ } catch (BackingStoreException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
/* Get POKY Preference settings from project's environment */
public static YoctoUIElement getElemFromProjectEnv(IProject project)
{
@@ -689,6 +762,27 @@ public class YoctoSDKUtils {
saveProfilesToStore(profileElement, YoctoSDKPlugin.getDefault().getPreferenceStore());
}
+ /* Save profiles and selected profile to the project's preference store */
+ public static void saveProfilesToProjectPreferences(YoctoProfileElement profileElement, IProject project) {
+ IScopeContext projectScope = new ProjectScope(project);
+ IEclipsePreferences projectPreferences = projectScope.getNode(PROJECT_SCOPE);
+ if (projectPreferences == null) {
+ return;
+ }
+
+ projectPreferences.put(PreferenceConstants.PROFILES, profileElement.getProfilesAsString());
+ projectPreferences.put(PreferenceConstants.SELECTED_PROFILE, profileElement.getSelectedProfile());
+
+ try
+ {
+ projectPreferences.flush();
+ } catch (BackingStoreException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
/* Save profiles and selected profile to a specific preference store */
public static void saveProfilesToStore(YoctoProfileElement profileElement, IPreferenceStore store)
{
@@ -710,4 +804,20 @@ public class YoctoSDKUtils {
return new YoctoProfileElement(profiles, selectedProfile);
}
+
+ /* Get profiles and selected profile from the project's preference store */
+ public static YoctoProfileElement getProfilesFromProjectPreferences(IProject project)
+ {
+ IScopeContext projectScope = new ProjectScope(project);
+ IEclipsePreferences projectNode = projectScope.getNode(PROJECT_SCOPE);
+ if (projectNode == null)
+ {
+ return getProfilesFromDefaultStore();
+ }
+
+ String profiles = projectNode.get(PreferenceConstants.PROFILES, "");
+ String selectedProfile = projectNode.get(PreferenceConstants.SELECTED_PROFILE, "");
+
+ return new YoctoProfileElement(profiles, selectedProfile);
+ }
}
--
1.7.11.7
More information about the yocto
mailing list