package org.tizen.emulator.manager.ui.detail.item;
-import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import org.tizen.emulator.manager.EmulatorManager;
+import org.tizen.emulator.manager.EmulatorManager.ManagerModeType;
import org.tizen.emulator.manager.ui.detail.item.property.BaseImageViewItem;
+import org.tizen.emulator.manager.ui.detail.item.property.CameraViewItem;
import org.tizen.emulator.manager.ui.detail.item.property.DisplayViewItem;
import org.tizen.emulator.manager.ui.detail.item.property.FileShareViewItem;
import org.tizen.emulator.manager.ui.detail.item.property.HWSupportViewItem;
import org.tizen.emulator.manager.ui.detail.item.property.MaxTouchViewItem;
+import org.tizen.emulator.manager.ui.detail.item.property.NetConnectTypeViewItem;
+import org.tizen.emulator.manager.ui.detail.item.property.NetDnsViewItem;
+import org.tizen.emulator.manager.ui.detail.item.property.NetIPInfoViewItem;
+import org.tizen.emulator.manager.ui.detail.item.property.NetMacViewItem;
+import org.tizen.emulator.manager.ui.detail.item.property.NetProxyViewItem;
+import org.tizen.emulator.manager.ui.detail.item.property.NetTapDeviceViewItem;
+import org.tizen.emulator.manager.ui.detail.item.property.NetTapDeviceViewItemWin;
import org.tizen.emulator.manager.ui.detail.item.property.ProcessorViewItem;
import org.tizen.emulator.manager.ui.detail.item.property.RamSizeItem;
import org.tizen.emulator.manager.ui.detail.item.property.SuspendSupportViewItem;
import org.tizen.emulator.manager.ui.detail.item.template.LabelViewItem;
import org.tizen.emulator.manager.ui.detail.item.template.OnOffViewItem;
import org.tizen.emulator.manager.ui.detail.item.template.TextViewItem;
+import org.tizen.emulator.manager.vms.helper.CheckingRunningEmulator;
import org.tizen.emulator.manager.vms.xml.template.DeviceList;
import org.tizen.emulator.manager.vms.xml.template.Item;
-import org.tizen.emulator.manager.vms.xml.template.ItemList;
import org.tizen.emulator.manager.vms.xml.template.ObjectFactory;
import org.tizen.emulator.manager.vms.xml.template.Option;
import org.tizen.emulator.manager.vms.xml.template.PropertyList;
public static String ITEM_NET_IP_INFO = "netIpInfo";
public static String ITEM_NET_DNS = "netDns";
public static String ITEM_NET_MAC = "netMac";
+ public static String ITEM_EXPERIMENTAL = "experimental";
public static String ITEM_CAMERA = "camera";
public static ObjectFactory factory = new ObjectFactory();
- // Override if need.
- public void makePropertyItemList(List<? extends IViewItem> list, PropertyList propertyList,
- String profile, boolean isStandard) {
- if (propertyList != null) {
- @SuppressWarnings("unchecked")
- List<IViewItem> itemList = (List<IViewItem>)list;
- List<Item> propertyItemList = propertyList.getItem();
- LineLabelViewItem currentLineLabel = null; // Top categorizing item
+ protected LineLabelViewItem currentLineLabel = null; // Top categorizing item
+ protected boolean isExperimentalLabel = false;
- for (Item item : propertyItemList) {
- String type = item.getType();
- String itemName = item.getName();
+ // Override if need
+ public IViewItem findPropertyItem(Item item) {
+ if (item == null) {
+ return null;
+ }
- if (type.equals(ItemType.LINE_LABEL.getName())) { // Top categorizing item
- currentLineLabel = new LineLabelViewItem(item);
- itemList.add(currentLineLabel);
- continue;
- }
+ String type = item.getType();
+ String itemName = item.getName();
- if (checkExperimental(item) && !EmulatorManager.isInhouseMode()) {
- continue;
- }
+ if (type.equals(ItemType.LINE_LABEL.getName())) { // Top categorizing item
+ currentLineLabel = new LineLabelViewItem(item);
+ return currentLineLabel;
+ }
- if (itemName.equals(ITEM_VM_NAME)) {
- itemList.add(new VMNameViewItem(item, currentLineLabel));
+ if (itemName.equals(ITEM_VM_NAME)) {
+ return new VMNameViewItem(item, currentLineLabel);
- } else if (itemName.equals(ITEM_BASE_IMAGE)) {
- itemList.add(new BaseImageViewItem(item, currentLineLabel));
+ } else if (itemName.equals(ITEM_BASE_IMAGE)) {
+ return new BaseImageViewItem(item, currentLineLabel);
- } else if (itemName.equals(ITEM_DISPLAY)) {
- itemList.add(new DisplayViewItem(item, currentLineLabel));
+ } else if (itemName.equals(ITEM_DISPLAY)) {
+ return new DisplayViewItem(item, currentLineLabel);
- } else if (itemName.equals(ITEM_PROCESSORS)) {
- itemList.add(new ProcessorViewItem(item, currentLineLabel));
+ } else if (itemName.equals(ITEM_PROCESSORS)) {
+ return new ProcessorViewItem(item, currentLineLabel);
- } else if (itemName.equals(ITEM_RAM_SIZE)) {
- itemList.add(new RamSizeItem(item, currentLineLabel));
+ } else if (itemName.equals(ITEM_RAM_SIZE)) {
+ return new RamSizeItem(item, currentLineLabel);
- } else if (itemName.equals(ITEM_MAX_TOUCH)) {
- itemList.add(new MaxTouchViewItem(item, currentLineLabel));
+ } else if (itemName.equals(ITEM_MAX_TOUCH)) {
+ return new MaxTouchViewItem(item, currentLineLabel);
- } else if (itemName.equals(ITEM_SUSPEND_SUPPORT)) {
- itemList.add(new SuspendSupportViewItem(item, currentLineLabel));
+ } else if (itemName.equals(ITEM_FILE_SHARE)) {
+ return new FileShareViewItem(item, currentLineLabel);
- } else if (itemName.equals(ITEM_FILE_SHARE)) {
- itemList.add(new FileShareViewItem(item, currentLineLabel));
+ } else if (itemName.equals(ITEM_HW_SUPPORT)) {
+ return new HWSupportViewItem(item, currentLineLabel);
+
+ } else if (itemName.equals(ITEM_SUSPEND_SUPPORT)) {
+ return new SuspendSupportViewItem(item, currentLineLabel);
- } else if (itemName.equals(ITEM_HW_SUPPORT)) {
- itemList.add(new HWSupportViewItem(item, currentLineLabel));
- }
- }
}
+
+ return null;
}
// Override if need
- public void makeDeviceItemList(List<? extends IViewItem> list, DeviceList deviceList) {
-
- if (deviceList != null) {
- @SuppressWarnings("unchecked")
- List<IViewItem> itemList = (List<IViewItem>)list;
- List<Item> deviceItemList = deviceList.getItem();
- LineLabelViewItem currentLineLabel = null; // Top categorizing item
+ public IViewItem findDeviceItem (Item item) {
+ if (item == null) {
+ return null;
+ }
- for (Item item : deviceItemList) {
- String type = item.getType();
+ String name = item.getName();
+ String type = item.getType();
- if (type.equals(ItemType.LINE_LABEL.getName())) { // Top categorizing item
+ if (name.equals(CheckingRunningEmulator.OPTION_VIEWER)) {
+ if (EmulatorManager.isLinux()) {
+ return new LabelViewItem(item, currentLineLabel);
+ }
+ } else if (type.equals(ItemType.LINE_LABEL.getName())) { // Top categorizing item
+ if (name.equals(ITEM_EXPERIMENTAL)) {
+ isExperimentalLabel = true;
+ if (EmulatorManager.getManagerMode() == ManagerModeType.INHOUSE_MODE) {
currentLineLabel = new LineLabelViewItem(item);
- itemList.add(currentLineLabel);
-
- } else if (type.equals(ItemType.TOGGLE.getName())) {
- itemList.add(new OnOffViewItem(item, currentLineLabel));
-
- } else if (type.equals(ItemType.LABEL.getName())) {
- itemList.add(new LabelViewItem(item, currentLineLabel));
-
- } else if (type.equals(ItemType.COMBO.getName())) {
- itemList.add(new ComboViewItem(item, currentLineLabel));
-
- } else if (type.equals(ItemType.FILE.getName())) {
- itemList.add(new FileViewItem(item, currentLineLabel));
-
- } else if (type.equals(ItemType.CHECK_LABEL.getName())) {
- itemList.add(new CheckLabelViewItem(item, currentLineLabel));
-
- } else if (type.equals(ItemType.TEXT.getName())) {
- itemList.add(new TextViewItem(item, currentLineLabel));
+ return currentLineLabel;
}
+ } else {
+ currentLineLabel = new LineLabelViewItem(item);
+ isExperimentalLabel = false;
+ return currentLineLabel;
}
- }
- }
+ } else if (name.equals(ITEM_NET_CONNECT_TYPE)) {
+ return new NetConnectTypeViewItem(item, currentLineLabel);
- // Override if need
- public void makeCustomDeviceItemList(List<? extends IViewItem> list, List<ItemList> templateList) {
- if (templateList == null || templateList.size() == 0 ) {
- return;
- }
+ } else if (name.equals(ITEM_NET_TAP_DEVICE)) {
+ if (EmulatorManager.isWin()) {
+ return new NetTapDeviceViewItemWin(item, currentLineLabel);
- if (templateList.size() == 1) {
- ItemList item = templateList.get(0);
- makePropertyItemList(list, item.getPropertyList(), item.getProfile(), false);
- makeDeviceItemList(list, item.getDeviceList());
- return;
- }
+ } else {
+ return new NetTapDeviceViewItem(item, currentLineLabel);
- // Make union set
- if (templateList.size() > 1) {
- ItemList base = cloneTemplate(templateList.get(0));
- for (int i=1 ; i < templateList.size() ; i++) {
- addToBase(base,templateList.get(i));
}
- makePropertyItemList(list, base.getPropertyList(), base.getProfile(), false);
- makeDeviceItemList(list, base.getDeviceList());
- }
- }
+ } else if (name.equals(ITEM_NET_PROXY)) {
+ return new NetProxyViewItem(item, currentLineLabel);
- private void addToBase(ItemList base, ItemList newOne) {
- // Property list add
- PropertyList newPropertyList = newOne.getPropertyList();
- PropertyList basePropertyList = base.getPropertyList();
- if (newPropertyList != null) {
- if (basePropertyList == null) {
- basePropertyList = factory.createPropertyList();
- base.setPropertyList(basePropertyList);
- }
- for (Item newItem : newPropertyList.getItem()) {
- boolean itemExistInBase = false;
- for (Item baseItem : basePropertyList.getItem()) {
- if (baseItem.getName().equals(newItem.getName())) {
- itemExistInBase = true;
- joinItem(baseItem, newItem);
- }
- }
- if (!itemExistInBase) {
- basePropertyList.getItem().add(cloneItem(newItem));
- }
- }
- }
+ } else if (name.equals(ITEM_NET_IP_INFO)) {
+ return new NetIPInfoViewItem(item, currentLineLabel);
- // Device list add
- DeviceList newDeviceList = newOne.getDeviceList();
- DeviceList baseDeviceList = base.getDeviceList();
- if (newDeviceList != null) {
- if (baseDeviceList == null) {
- baseDeviceList = factory.createDeviceList();
- base.setDeviceList(baseDeviceList);
- }
- for (Item newItem : newDeviceList.getItem()) {
- boolean itemExistInBase = false;
- for (Item baseItem : baseDeviceList.getItem()) {
- if (baseItem.getName().equals(newItem.getName())) {
- itemExistInBase = true;
- joinItem(baseItem, newItem);
- }
- }
- if (!itemExistInBase) {
- baseDeviceList.getItem().add(cloneItem(newItem));
- }
- }
- }
- }
+ } else if (name.equals(ITEM_NET_DNS)) {
+ return new NetDnsViewItem(item, currentLineLabel);
+ } else if (name.equals(ITEM_NET_MAC)) {
+ return new NetMacViewItem(item, currentLineLabel);
- private void joinItem(Item baseItem, Item newItem) {
- // join sub items
- for (Item newSub : newItem.getItem()) {
- boolean itemExistInBase = false;
- for (Item baseSub : baseItem.getItem()) {
- if (baseSub.getName().equals(newSub.getName())) {
- itemExistInBase = true;
- joinItem(baseSub, newSub);
- }
- }
- if (!itemExistInBase) {
- baseItem.getItem().add(cloneItem(newSub));
- }
- }
- // join options
- for (Option newOption : newItem.getOption()) {
- boolean optionExistInBase = false;
- for (Option baseOption : baseItem.getOption()) {
- if (baseOption.getName().equals(newOption.getName())) {
- optionExistInBase = true;
- if (isListOption(baseOption, newOption)) {
- joinOption(baseOption, newOption);
- }
- }
- }
+ } else if (name.equals(ITEM_CAMERA)) {
+ return new CameraViewItem(item, currentLineLabel);
- if (!optionExistInBase) {
- baseItem.getOption().add(cloneOption(newOption));
- }
- }
+ } else if (type.equals(ItemType.TOGGLE.getName())) {
+ return new OnOffViewItem(item, currentLineLabel);
- }
+ } else if (type.equals(ItemType.LABEL.getName())) {
+ return new LabelViewItem(item, currentLineLabel);
- private void joinOption(Option baseOption, Option newOption) {
- baseOption.setValue(joinCommaString(baseOption.getValue(), newOption.getValue()));
- }
+ } else if (type.equals(ItemType.COMBO.getName())) {
+ return new ComboViewItem(item, currentLineLabel);
+ } else if (type.equals(ItemType.FILE.getName())) {
+ return new FileViewItem(item, currentLineLabel);
- private String joinCommaString(String base, String newOne) {
- List<String> optionList = new ArrayList<String>();
- if (base != null) {
- String[] split = base.split(",");
- for (String str : split) {
- optionList.add(str.trim());
- }
- }
- if (newOne != null) {
- String[] split = newOne.split(",");
- for (String str : split) {
- optionList.add(str.trim());
- }
- }
+ } else if (type.equals(ItemType.CHECK_LABEL.getName())) {
+ return new CheckLabelViewItem(item, currentLineLabel);
- if (optionList.size() > 0) {
- Set<String> optionSet = new HashSet<String>();
- optionSet.addAll(optionList);
- optionList.clear();
- optionList.addAll(optionSet);
-// Collections.sort(optionList);
- StringBuilder sb = new StringBuilder();
-
- for (int i=0 ; i<optionList.size() ; i++) {
- sb.append(optionList.get(i));
- if (i < optionList.size()-1) {
- sb.append(",");
- }
- }
+ } else if (type.equals(ItemType.TEXT.getName())) {
+ return new TextViewItem(item, currentLineLabel);
- return sb.toString();
}
return null;
}
- private ItemList cloneTemplate(ItemList template) {
- ItemList newTemplate = factory.createItemList();
- newTemplate.setProfile(template.getProfile());
- newTemplate.setImage(template.getImage());
-
- // clone property list
- PropertyList propertyList = template.getPropertyList();
+ // Override if need.
+ public void makePropertyItemList(List<? extends IViewItem> list, PropertyList propertyList) {
if (propertyList != null) {
- PropertyList newPropertyList = factory.createPropertyList();
- newTemplate.setPropertyList(newPropertyList);
+ @SuppressWarnings("unchecked")
+ List<IViewItem> itemList = (List<IViewItem>)list;
+ List<Item> propertyItemList = propertyList.getItem();
+ currentLineLabel = null;
+ IViewItem viewItem;
- for (Item item : propertyList.getItem()) {
- newPropertyList.getItem().add(cloneItem(item));
+ for (Item item : propertyItemList) {
+ if (checkExperimental(item)
+ && EmulatorManager.getManagerMode() != ManagerModeType.INHOUSE_MODE) {
+ continue;
+ }
+ viewItem = findPropertyItem(item);
+ if (viewItem != null) {
+ itemList.add(viewItem);
+ }
}
}
+ }
- // clone device list.
- DeviceList deviceList = template.getDeviceList();
+ // Override if need
+ public void makeDeviceItemList(List<? extends IViewItem> list, DeviceList deviceList) {
if (deviceList != null) {
- DeviceList newDeviceList = factory.createDeviceList();
- newTemplate.setDeviceList(newDeviceList);
+ @SuppressWarnings("unchecked")
+ List<IViewItem> itemList = (List<IViewItem>)list;
+ List<Item> deviceItemList = deviceList.getItem();
+ currentLineLabel = null;
+ isExperimentalLabel = false;
+ IViewItem viewItem;
- for (Item item : deviceList.getItem()) {
- newDeviceList.getItem().add(cloneItem(item));
+ for (Item item : deviceItemList) {
+ if (isExperimentalLabel
+ && EmulatorManager.getManagerMode() != ManagerModeType.INHOUSE_MODE) {
+ continue;
+ }
+ viewItem = findDeviceItem(item);
+ if (viewItem != null) {
+ itemList.add(viewItem);
+ }
}
}
-
- return newTemplate;
- }
-
- private Item cloneItem(Item item) {
- Item newItem = factory.createItem();
- newItem.setType(item.getType());
- newItem.setName(item.getName());
- newItem.setTitle(item.getTitle());
-
- for (Option option : item.getOption()) {
- newItem.getOption().add(cloneOption(option));
- }
-
- for (Item subItem : item.getItem()) {
- newItem.getItem().add(cloneItem(subItem));
- }
-
- return newItem;
- }
-
- private Option cloneOption(Option option) {
- Option newOption = factory.createOption();
- newOption.setName(option.getName());
- newOption.setValue(option.getValue());
- return newOption;
- }
-
- private boolean isListOption(Option baseOption, Option newOption) {
- if (baseOption.getName().equals(OptionType.COMBO_LIST.getName())
- && newOption.getName().equals(OptionType.COMBO_LIST.getName())) {
- return true;
- }
-
- return false;
}
private boolean checkExperimental(Item item) {