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

Reply via email to