From: Atanas Gegov <atanas.ge...@bmw-carit.de> A target profile is a combination of yocto settings identified by a user-defined name. This UI element allows the user to add new profiles and to rename or delete existing ones.
Signed-off-by: Timo Mueller <timo.muel...@bmw-carit.de> --- .../src/org/yocto/sdk/ide/YoctoProfileElement.java | 104 +++++++++++++++++++++ .../src/org/yocto/sdk/ide/YoctoProfileSetting.java | 98 +++++++++++++++++++ .../org/yocto/sdk/ide/YoctoSDKMessages.properties | 5 + .../sdk/ide/preferences/PreferenceConstants.java | 1 + 4 files changed, 208 insertions(+) create mode 100644 plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoProfileElement.java create mode 100644 plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoProfileSetting.java diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoProfileElement.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoProfileElement.java new file mode 100644 index 0000000..02626ad --- /dev/null +++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoProfileElement.java @@ -0,0 +1,104 @@ +/******************************************************************************* + * Copyright (c) 2012 BMW Car IT GmbH. + * 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BMW Car IT - initial API and implementation + *******************************************************************************/ +package org.yocto.sdk.ide; + +import java.util.Comparator; +import java.util.StringTokenizer; +import java.util.TreeSet; + +import org.yocto.sdk.ide.preferences.PreferenceConstants; + +public class YoctoProfileElement { + private TreeSet<String> profiles = new TreeSet<String>(new Comparator<String>() { + + @Override + public int compare(String o1, String o2) { + int strcompare = o1.compareTo(o2); + + if (strcompare == 0) { + return strcompare; + } + + // Standard profile always less than anything else + if (o1.equals(PreferenceConstants.STANDARD_PROFILE_NAME)) { + return -1; + } + + if (o2.equals(PreferenceConstants.STANDARD_PROFILE_NAME)) { + return 1; + } + + return strcompare; + } + }); + + private String selectedProfile; + + public YoctoProfileElement(String profilesString, String selectedProfile) { + setProfilesFromString(profilesString); + this.selectedProfile = selectedProfile; + } + + public void addProfile(String profile) { + this.profiles.add(profile); + } + + public boolean contains(String newText) { + return profiles.contains(newText); + } + + public TreeSet<String> getProfiles() { + return profiles; + } + + public String getProfilesAsString() { + String profileString = ""; + + for (String profile : profiles) { + profileString += "\"" + profile + "\","; + } + return profileString.substring(0, profileString.length() - 1); + } + + public String getSelectedProfile() { + return selectedProfile; + } + + public void remove(String profile) { + this.profiles.remove(profile); + } + + public void rename(String oldProfileName, String newProfileName) { + this.remove(oldProfileName); + this.addProfile(newProfileName); + + if (selectedProfile.equals(oldProfileName)) { + selectedProfile = newProfileName; + } + } + + public void setProfiles(TreeSet<String> profiles) { + this.profiles = profiles; + } + + public void setProfilesFromString(String profilesString) { + StringTokenizer tokenizer = new StringTokenizer(profilesString, ","); + + while (tokenizer.hasMoreElements()) { + String config = (String) tokenizer.nextElement(); + profiles.add(config.replace("\"", "")); + } + } + + public void setSelectedProfile(String selectedProfile) { + this.selectedProfile = selectedProfile; + } +} diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoProfileSetting.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoProfileSetting.java new file mode 100644 index 0000000..7476bd3 --- /dev/null +++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoProfileSetting.java @@ -0,0 +1,98 @@ +/******************************************************************************* + * Copyright (c) 2012 BMW Car IT GmbH. + * 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BMW Car IT - initial API and implementation + *******************************************************************************/ +package org.yocto.sdk.ide; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; + +public class YoctoProfileSetting { + private static final String PROFILES_TITLE = "Preferences.Profiles.Title"; + private static final String NEW_PROFILE_TITLE = "Preferences.Profile.New.Title"; + private static final String RENAME_PROFILE_TITLE = "Preferences.Profile.Rename.Title"; + private static final String REMOVE_PROFILE_TITLE = "Preferences.Profile.Remove.Title"; + + private Combo sdkConfigsCombo; + private Button btnConfigRename; + private Button btnConfigRemove; + private Button btnConfigSaveAs; + + private YoctoProfileElement profileElement; + + public YoctoProfileSetting(YoctoProfileElement profileElement) { + this.profileElement = profileElement; + } + + public void createComposite(Composite composite) { + GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false); + GridLayout layout = new GridLayout(2, false); + composite.setLayout(layout); + + Group storeYoctoConfigurationsGroup = new Group (composite, SWT.NONE); + layout = new GridLayout(3, false); + storeYoctoConfigurationsGroup.setLayout(layout); + gd = new GridData(SWT.FILL, SWT.CENTER, true, false); + gd.horizontalSpan = 2; + storeYoctoConfigurationsGroup.setLayoutData(gd); + storeYoctoConfigurationsGroup.setText(YoctoSDKMessages.getString(PROFILES_TITLE)); + + sdkConfigsCombo = new Combo(storeYoctoConfigurationsGroup, SWT.READ_ONLY); + addConfigs(sdkConfigsCombo); + sdkConfigsCombo.select(sdkConfigsCombo.indexOf(profileElement.getSelectedProfile())); + sdkConfigsCombo.setLayout(new GridLayout(2, false)); + sdkConfigsCombo.setLayoutData(new GridData(SWT.FILL, SWT.LEFT, true, false)); + + createSaveAsProfileButton(storeYoctoConfigurationsGroup); + createRenameButton(storeYoctoConfigurationsGroup); + createRemoveButton(storeYoctoConfigurationsGroup); + } + + private void createSaveAsProfileButton(Group storeYoctoConfigurationsGroup) { + btnConfigSaveAs = new Button(storeYoctoConfigurationsGroup, SWT.PUSH | SWT.LEAD); + btnConfigSaveAs.setText(YoctoSDKMessages.getString(NEW_PROFILE_TITLE)); + } + + private void createRemoveButton(Group storeYoctoConfigurationsGroup) { + btnConfigRemove = new Button(storeYoctoConfigurationsGroup, SWT.PUSH | SWT.LEAD); + btnConfigRemove.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, true, false, 3, 1)); + btnConfigRemove.setText(YoctoSDKMessages.getString(REMOVE_PROFILE_TITLE)); + } + + private void createRenameButton(Group storeYoctoConfigurationsGroup) { + btnConfigRename = new Button(storeYoctoConfigurationsGroup, SWT.PUSH | SWT.LEAD); + btnConfigRename.setText(YoctoSDKMessages.getString(RENAME_PROFILE_TITLE)); + } + + private void addConfigs(Combo combo) { + for (String profile : profileElement.getProfiles()) { + combo.add(profile); + } + } + + public void setUIFormEnabledState(boolean isEnabled) { + setButtonsEnabledState(isEnabled); + sdkConfigsCombo.setEnabled(isEnabled); + } + + public YoctoProfileElement getCurrentInput() { + return profileElement; + } + + public void setButtonsEnabledState(boolean isEnabled) { + btnConfigRename.setEnabled(isEnabled); + btnConfigRemove.setEnabled(isEnabled); + btnConfigSaveAs.setEnabled(isEnabled); + } +} 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 17240e9..7200741 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 @@ -7,6 +7,7 @@ * * Contributors: * Intel - initial API and implementation + * BMW Car IT - added keys for target profiles *******************************************************************************/ Wizard.SDK.Warning.Title = Invalid Yocto Project ADT Location @@ -45,6 +46,10 @@ Preferences.SDK.Target.name = Target Preferences: Preferences.SDK.Informing.Title = Yocto Project ADT has been successfully set up. Preferences.SDK.Informing.Message = You might need to reconfigure your existing Yocto Project Autotools Projects to use the Yocto Project ADT. Do this from Project > Reconfigure Project! +Preferences.Profiles.Title = Target profiles: +Preferences.Profile.New.Title = Save as ... +Preferences.Profile.Rename.Title = Rename +Preferences.Profile.Remove.Title = Remove Console.SDK.Name = Yocto Project Console diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/PreferenceConstants.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/PreferenceConstants.java index cf79578..d6ca41f 100644 --- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/PreferenceConstants.java +++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/preferences/PreferenceConstants.java @@ -33,4 +33,5 @@ public class PreferenceConstants { public static final String IP_ADDR = "IPAddr"; + public static final String STANDARD_PROFILE_NAME = "Standard Profile"; } -- 1.7.11.7 _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto