import java.io.File;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
-import org.tizen.emulator.manager.logging.EMLogger;
import org.tizen.emulator.manager.resources.FilePathResources;
import org.tizen.emulator.manager.resources.StringResources;
import org.tizen.emulator.manager.vms.EmulatorVMList;
// for sort VM list
private SortBy sortType = SortBy.DateAsc;
- private boolean isSort = false;
+ private boolean isSortVMList = false;
+
+ private boolean isSortPlatformList = false;
public Profile(String name) {
this.name = name;
return image;
}
}
- /*
- // return custom base image
- Platform platform = ProfileList.getProfile(createProperty.getImageProfile()).
- getPlatformByVersion(createProperty.getImageVersion());
- if (platform != null) {
- return new BaseImage(platform, createProperty.getBaseImagePath());
- }
- */
return null;
}
return getPlatformByName(name + "-" + version);
}
-
public Platform getPlatformByLatestVersion() {
- Platform latest = null;
- for (Platform platform :platformList){
- if (latest == null) {
- latest = platform;
- } else if ((platform.getVersion().compareTo(latest.getVersion()) > 0)) {
- latest = platform;
- }
+ if (!isSortPlatformList) {
+ sortPlatformList();
}
- return latest;
+ return platformList.size() != 0
+ ? platformList.get(0)
+ : null;
}
public String getLatestPlatformVersion() {
- float latest = 0;
- float version;
- for (Platform plt : platformList) {
- try {
- version = Float.parseFloat(plt.getVersion());
- if (version >= latest) {
- latest = version;
- }
- } catch (NumberFormatException e) {
- EMLogger.getLogger().warning(e.getMessage());
- EMLogger.getLogger().warning("Wrong platform version : " + plt.getVersion());
- }
+ if (getPlatformByLatestVersion() != null) {
+ return getPlatformByLatestVersion().getVersion();
+ } else {
+ return "";
}
- return String.valueOf(latest);
}
public void addEmulator(VMProperty vm) {
if (vm.getImageType().equals(FSImageType.standard)) {
for (BaseImage b : imageList) {
if (vm.getBaseImagePath().equals(b.getPath())) {
- vm.getPropertyValue().baseImage = b;
+ vm.getPropertyValue().setBaseImage(b);
break;
}
}
} else {
for (Platform p : platformList) {
if (vm.getImagePlatform().equals(p.getName())) {
- vm.getPropertyValue().baseImage
- = new BaseImage(p, vm.getBaseImagePath());
+ vm.getPropertyValue().setBaseImage(
+ new BaseImage(p, vm.getBaseImagePath()));
}
}
}
public void clearVMsList() {
vmList.clear();
- isSort = false;
+ isSortVMList = false;
}
public List<VMProperty> getEmulatorList() {
- if (!isSort) {
+ if (!isSortVMList) {
sortVMList(sortType);
- isSort = true;
+ isSortVMList = true;
}
return vmList;
}
}
public void addBaseImage(BaseImage base) {
- imageList.add(base);
+ if (base.getType().equals("default")) {
+ imageList.add(0, base);
+ } else {
+ imageList.add(base);
+ }
}
public List<BaseImage> getImageList() {
public void setImageList(List<BaseImage> imageList) {
this.imageList = imageList;
}
+
+ public void sortPlatformList() {
+ isSortPlatformList = true;
+ PlatformPair[] pairs = new PlatformPair[platformList.size()];
+ for (int i = 0; i < platformList.size(); i++) {
+ pairs[i] = new PlatformPair(platformList.get(i));
+ }
+
+ Arrays.sort(pairs);
+
+ for (int i = 0; i < platformList.size(); i++) {
+ platformList.set(i, pairs[i].prop);
+ }
+ }
+
+ public void sortBaseImageList() {
+ ImagePair[] pairs = new ImagePair[imageList.size()];
+ for (int i = 0; i < imageList.size(); i++) {
+ pairs[i] = new ImagePair(imageList.get(i));
+ }
+
+ Arrays.sort(pairs);
+
+ for (int i = 0; i < imageList.size(); i++) {
+ imageList.set(i, pairs[i].prop);
+ }
+ }
+
+ static class PlatformPair implements Comparable<Object> {
+ Platform prop;
+
+ public PlatformPair(Platform platform) {
+ this.prop = platform;
+ }
+
+ public int compareTo(Object o) {
+ String u = ((PlatformPair) o).prop.getVersion();
+ return u.compareTo(this.prop.getVersion());
+ }
+ }
+
+ static class ImagePair implements Comparable<Object> {
+ BaseImage prop;
+
+ public ImagePair(BaseImage base) {
+ this.prop = base;
+ }
+
+ public int compareTo(Object o) {
+ String u = ((ImagePair) o).prop.getVersion();
+ return u.compareTo(this.prop.getVersion());
+ }
+ };
}
}
}
+ for (Profile profile : profileList) {
+ profile.sortBaseImageList();
+ profile.sortPlatformList();
+ // setting base image id and information
+ for (BaseImage b : profile.getImageList()) {
+ b.setID(imageID++);
+ }
+ }
+
// Check base image version()
checkingBaseImageBinaryVersion();
// Make emulator list
}
}
}
-
- // setting base image id and information
- for (BaseImage b : profile.getImageList()) {
- b.setID(imageID++);
- }
}
public static void settingVMPropertyList() {
if (image.getItemList() != null && image.getPlatform().getPlugin() != null) {
detailView.drawCreateVM(
new VMPropertyValue(image));
+ break;
}
}
} else {
package org.tizen.emulator.manager.ui.detail;
import java.util.ArrayList;
-import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
infoItemList = new ArrayList<InfoViewItemList>();
ExtensionItem item = null;
for (Profile profile : ProfileList.getProfileList()) {
- for (Platform platform : profile.getPlatformList()) {
- if (platform.getPlugin() != null) {
- item = platform.getPlugin().getExtensionItem(PluginStringResources.ItemFactory);
- if (item != null) {
- List<ItemList> templateList = new ArrayList<ItemList>();
- for (BaseImage image : profile.getImageList()) {
- if (!image.getPlatform().equals(platform)) {
- continue;
- }
- ItemList template = image.getItemList();
- if (template != null) {
- templateList.add(template);
- infoItemList.add(new InfoViewItemList(item, this.getItemListComposite(),
- template, platform, image.getName(), false));
- }
- }
- // add item list for custom.
- infoItemList.add(new InfoViewItemList(item, this.getItemListComposite(),
- platform.getCustomItemList(), platform, null, true));
+ for (BaseImage base : profile.getImageList()) {
+ if (base.getPlatform().getPlugin() == null) {
+ continue;
+ }
+ item = base.getPlatform().getPlugin().getExtensionItem(
+ PluginStringResources.ItemFactory);
+ if (item == null) {
+ continue;
+ }
+ ItemList template = base.getItemList();
+ if (template == null) {
+ continue;
+ }
+
+ if (template != null) {
+ infoItemList.add(new InfoViewItemList(item, this.getItemListComposite(),
+ template, base.getPlatform(), base.getName(), false));
+ }
+ }
+ // add item list for custom
+ InfoViewItemList customItemList = null;
+ Platform platform = profile.getPlatformByLatestVersion();
+ if (platform.getPlugin() != null
+ && platform.getCustomItemList() != null) {
+ item = platform.getPlugin().getExtensionItem(
+ PluginStringResources.ItemFactory);
+ customItemList = new InfoViewItemList(item, this.getItemListComposite(),
+ profile.getPlatformByLatestVersion().getCustomItemList(),
+ profile.getPlatformByLatestVersion(), null, true);
+ } else {
+ for (Platform p : profile.getPlatformList()) {
+ if (p.getPlugin() != null && p.getCustomItemList() != null) {
+ item = p.getPlugin().getExtensionItem(
+ PluginStringResources.ItemFactory);
+ customItemList = new InfoViewItemList(item, this.getItemListComposite(),
+ p.getCustomItemList(), p, null, true);
}
}
}
+ if (customItemList != null) {
+ infoItemList.add(customItemList);
+ }
}
}
deleteButton.setEnabled(false);
resetButton.setEnabled(false);
} else {
- modifyButton.setEnabled(true);
+ modifyButton.setEnabled(property.isAvailable());
exportButton.setEnabled(true);
deleteButton.setEnabled(true);
resetButton.setEnabled(true);
package org.tizen.emulator.manager.ui.detail;
import java.util.ArrayList;
-import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
private ArrayList<ModifyViewItemList> modifyItemList;
private TextDetailBox emptyView;
+
private void makeModifyView() {
emptyView = new TextDetailBox(this.getItemListComposite(),
"Failed to load template");
+
modifyItemList = new ArrayList<ModifyViewItemList>();
ExtensionItem item = null;
for(Profile profile : ProfileList.getProfileList()) {
- for (Platform platform : profile.getPlatformList()) {
- if (platform.getPlugin() != null) {
- item = platform.getPlugin().getExtensionItem(PluginStringResources.ItemFactory);
- if (item != null) {
- List<ItemList> templateList = new ArrayList<ItemList>();
- for (BaseImage image : profile.getImageList()) {
- if (!image.getPlatform().equals(platform)) {
- continue;
- }
- ItemList template = image.getItemList();
- if (template != null) {
- templateList.add(template);
- modifyItemList.add(new ModifyViewItemList(item, this,
- template, platform, image.getName(), false));
- }
- }
- // add item list for custom.
- modifyItemList.add(new ModifyViewItemList(item, this,
- platform.getCustomItemList(), platform, null, true));
+ for (BaseImage base : profile.getImageList()) {
+ if (base.getPlatform().getPlugin() == null) {
+ continue;
+ }
+ item = base.getPlatform().getPlugin().getExtensionItem(
+ PluginStringResources.ItemFactory);
+ if (item == null) {
+ continue;
+ }
+ ItemList template = base.getItemList();
+ if (template == null) {
+ continue;
+ }
+
+ if (template != null) {
+ modifyItemList.add(new ModifyViewItemList(item, this,
+ template, base.getPlatform(), base.getName(), false));
+ }
+ }
+
+ // add item list for custom
+ ModifyViewItemList customItemList = null;
+ Platform platform = profile.getPlatformByLatestVersion();
+ if (platform.getPlugin() != null
+ && platform.getCustomItemList() != null) {
+ item = platform.getPlugin().getExtensionItem(
+ PluginStringResources.ItemFactory);
+ customItemList = new ModifyViewItemList(item, this,
+ profile.getPlatformByLatestVersion().getCustomItemList(),
+ profile.getPlatformByLatestVersion(), null, true);
+ } else {
+ for (Platform p : profile.getPlatformList()) {
+ if (p.getPlugin() != null && p.getCustomItemList() != null) {
+ item = p.getPlugin().getExtensionItem(
+ PluginStringResources.ItemFactory);
+ customItemList = new ModifyViewItemList(item, this,
+ p.getCustomItemList(), p, null, true);
}
}
}
+ if (customItemList != null) {
+ modifyItemList.add(customItemList);
+ }
}
}
if (errorItem == null || !errorItem.getItemState().isError()) {
errorItem = viewItem;
}
-
} else if (viewItem.getItemState().isWarning()) {
if (errorItem == null || errorItem.getItemState().isNormal()) {
errorItem = viewItem;
}
private void makeItemList(PModifyViewPage page, ItemList deviceItemList, boolean isCustom) {
- IItemListFactory f = (IItemListFactory)(exItem.getInstance());
- itemList = new ArrayList<IModifyViewItem>();
-// itemList = f.getModifyItemList(deviceItemList);
- if (f != null) {
- f.makeItemList(itemList, deviceItemList, isCustom);
+ if (exItem == null) {
+ // TODO
+ } else {
+ IItemListFactory f = (IItemListFactory)(exItem.createInstance());
+ itemList = new ArrayList<IModifyViewItem>();
+ if (f != null) {
+ f.makeItemList(itemList, deviceItemList, isCustom);
+ }
}
}
packAll(); // FIXME: Need second pack avoid column becomes too narrow... why ???
if (currentItem == null) {
- currentItem = vmsTree.getItem(0);
+ if (vmsTree.getItemCount() > 0) {
+ currentItem = vmsTree.getItem(0);
+ }
}
setSelectProperty();
}
public void setImage() {
- if (property.isRunning()) {
+ if (property.isRunning() || !property.isAvailable()) {
item.setImage(0, ImageResources.LAUNCH_DISABLE.getImage());
} else {
item.setImage(0, ImageResources.LAUNCH.getImage());
}
public void launchVM() {
- if (property != null && !property.isRunning()) {
+ if (property != null && !property.isRunning() && property.isAvailable()) {
VMsMainView.getInstance().launchEmulator(property);
// add cool time
}
if (button.getProperty() != null) {
- if (button.getProperty().isRunning()) {
+ if (button.getProperty().isRunning()
+ || !button.getProperty().isAvailable()) {
button.getLaunchButton().setEnabled(false);
} else {
button.getLaunchButton().setEnabled(true);
.getImage(button.getPlatformName(), skinShape);
}
}
- }
-
- if (image == null) {
- return;
+ if (image == null) {
+ return;
+ }
}
Rectangle rect = ((Canvas) e.widget).getClientArea();
}
public void clickLaunchButton() {
- if (property != null && !property.isRunning()) {
+ if (property != null && !property.isRunning() && property.isAvailable()) {
VMsMainView.getInstance().launchEmulator(property);
// add cool time
synchronized(this) {
}
if (getProperty() != null) {
- if (getProperty().isRunning()) {
- getLaunchButton().setEnabled(false);
- } else {
- getLaunchButton().setEnabled(true);
+ getLaunchButton().setEnabled(false);
+
+ // If VM is custom,
+ if (!button.getProperty().getPropertyValue().baseImage.isStandard()) {
+ if (state == WSTATE.HOVER || state == WSTATE.SELECTED_HOVER) {
+ image = PluginImageResources.VM_IMAGE_CUSTOM_HOVER
+ .getImage(button.getPlatformName(), skinShape);
+ } else {
+ image = PluginImageResources.VM_IMAGE_CUSTOM_NORMAL
+ .getImage(button.getPlatformName(), skinShape);
+ }
+ }
+ if (image == null) {
+ return;
}
}
private VMPropertyValue value = null;
private boolean isRunning = false;
+ // Is it possible to launch emulator or not?
+ private boolean isAvailable = true;
@Override
public boolean equals(Object obj) {
}
}
+ public boolean isAvailable() {
+ return isAvailable;
+ }
+
+ public void setAvailable(boolean isAvailable) {
+ this.isAvailable = isAvailable;
+ }
+
public enum Architecture {
x86("x86"), ARM("arm");
return;
}
- this.baseImage = image;
this.template = template;
-
- baseImagePath = image.getPath();
+ this.setBaseImage(image);
settingConfigure(template);
}
}
}
+ public void setBaseImage(BaseImage image) {
+ if (image == null) {
+ template.setAvailable(false);
+ return;
+ }
+
+ this.baseImage = image;
+
+ baseImagePath = image.getPath();
+ if (image.getPlatform().getPlugin() == null
+ || image.getItemList() == null) {
+ template.setAvailable(false);
+ }
+ }
+
@Override
public VMPropertyValue clone() {
VMPropertyValue dest = new VMPropertyValue();