conf.getDisplay().getScreenSize().setValue(value.getDisplaySize());
conf.getDisplay().setSkin(factory.createDisplaySkin());
- if (value.getSkin() != null) {
+ if (value.getSkin() != null && !value.isSettingSkinByManager()) {
conf.getDisplay().getSkin().setName(value.getSkinName());
conf.getDisplay().getSkin().setPath(value.getSkinPath());
conf.getDisplay().getSkin().setShape(value.getSkinShape().toString());
private String skinPath = "";
private SKIN_SHAPE skinShape = SKIN_SHAPE.SQUARE;
private Skin skin;
+ private boolean settingSkinByManager = false;
private String ramSizeUnit = "MB";
private int ramSize = 512;
}
public void setSkin(Skin skin) {
+ setSkin(skin, false);
+ }
+
+ public void setSkin(Skin skin, boolean isSettingByManager) {
+ // if manager set skin value, this skin will be not saved to configuration file
+ // this value will be only used while running emulator manager.
+ settingSkinByManager = isSettingByManager;
this.skin = skin;
+ skinName = skin.getName();
+ skinPath = skin.getPath();
+ skinShape = skin.getSkinShape();
+ }
+
+ public boolean isSettingSkinByManager() {
+ return settingSkinByManager;
}
public int getRamSize() {
public void addEmulator(VMProperty vm) {
//setting BaseImage
- BaseImage image = null;
- if (vm.getPropertyValue().baseImage == null) {
+ BaseImage image = vm.getPropertyValue().baseImage;
+ if (image == null) {
if (vm.getImageType().equals(FSImageType.standard)) {
for (BaseImage b : imageList) {
if (b.isStandard() && vm.getBaseImagePath().equals(b.getPath())) {
image.setPath(value.getFilePath());
image.setPlatform(value.getPlatform());
image.setDescription(value.getDescription());
- return CustomBaseImageLoader.createBaseImageConfiguration(image);
+ return CustomBaseImageLoader.modfiyBaseImageConfiguration(image);
}
public boolean deleteBaseImageConfiguration(boolean needDeleteFile) {
MESSAGE_BOX_CONTENTS_BOLD("msg_box_contetns_bold", setDefaultFontStyleAndSize(SWT.BOLD, 9)),
DEFAULT_FONT_10("default_font_10", resizeDefaultFont(10)),
DEFAULT_FONT_9("default_font_9", resizeDefaultFont(9)),
- DEFAULT_FONT_8("default_font_8", resizeDefaultFont(8));
+ DEFAULT_FONT_8("default_font_8", resizeDefaultFont(8)),
+ DEFAULT_BOLD_FONT_10("default_font_10", setDefaultFontStyleAndSize(SWT.BOLD, 10)),
+ DEFAULT_BOLD_FONT_9("default_font_9", setDefaultFontStyleAndSize(SWT.BOLD, 9)),
+ DEFAULT_BOLD_FONT_8("default_font_8", setDefaultFontStyleAndSize(SWT.BOLD, 8));
public static FontResources MODIFY_ITEM_TITLE = DEFAULT_FONT_9;
public static FontResources CONTENT = DEFAULT_FONT_9;
VMLIST_TITLE_IMAGE("img_title_yourvmlist"),
TEMPLATE_LIST_TITLE_IMAGE("img_title_templates"),
BASEIMAGE_LIST_TITLE_IMAGE("img_title_baseimages"),
+ CREATE_VIEW_TITLE_IMAGE("img_title_creatnewdevice"),
BUTTON_INFO_HOVER("btn_info_hover"),
BUTTON_INFO_NML("btn_info_nml"),
BUTTON_REFRESH_HOVER("btn_refreshlist_hover"),
ICON_TITLE_TREE_CLOSED("icon_title_tree_closed"),
ICON_TITILE_DESCRIPTION("icon_title_description"),
ICON_BLUE_BUTTON_OPEN("icon_blue_btn_open"),
+ ICON_BLUE_BUTTON_PLUS("icon_blue_btn_plus"),
// profile select button
BTN_PROFILE_MOBILE_SELECTED("btn_profile_mobile_selected"),
--- /dev/null
+/*
+ * Emulator Manager
+ *
+ * Copyright (C) 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * JiHye Kim <jihye424.kim@samsung.com>
+ * Minkee Lee <minkee.lee@samsung.com>
+ * SeokYeon Hwang <syeon.hwang@samsung.com>
+ * Sangho Park <sangho1206.park@samsung.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.emulator.manager.ui.renewal.tableviewer;
+
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.tizen.emulator.manager.devices.DeviceTemplate;
+import org.tizen.emulator.manager.devices.DeviceTemplateValue;
+import org.tizen.emulator.manager.platform.BaseImage;
+import org.tizen.emulator.manager.platform.Profile;
+import org.tizen.emulator.manager.platform.Skin;
+import org.tizen.emulator.manager.resources.StringResources;
+import org.tizen.emulator.manager.ui.table.Table;
+import org.tizen.emulator.manager.ui.table.TableColumn;
+import org.tizen.emulator.manager.ui.table.TableItem;
+import org.tizen.emulator.manager.vms.SKIN_SHAPE;
+
+public class CreateVMTable {
+ private Table table;
+
+ private CreateVMTableViewer viewer;
+
+ private BaseImage image;
+
+ public CreateVMTable(CreateVMTableViewer viewer) {
+ this.viewer = viewer;
+ }
+
+ public Table getTable() {
+ return table;
+ }
+
+ private final String[] titles = {"Name", "Resolution", "Display Size", "Skin", "RAM Size", "Processors"};
+ public void makeTable(Composite form) {
+ table = new Table(form, SWT.BORDER | SWT.SINGLE);
+
+ for (String t : titles) {
+ TableColumn column = new TableColumn(table, SWT.None);
+ column.setText(t);
+ column.setAlignment(SWT.CENTER);
+ }
+
+ table.setSelectedItemHeight(table.getItemHeight());
+ table.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (e.type == SWT.Selection) {
+ tableSelected();
+ }
+ }
+ });
+
+ settingSortingPair();
+ }
+
+ public void showTable() {
+ // reset table
+ table.removeAll();
+ image = null;
+
+ Profile profile = viewer.getProfile();
+ image = viewer.getBaseImage();
+ if (profile != null && image != null) {
+ System.out.println("show table");
+ SKIN_SHAPE shape = image.getSkinShape();
+
+ for (DeviceTemplate template : profile.getTemplateList()) {
+ // TODO: custom base image can use any shape's skin
+ if (shape == SKIN_SHAPE.NONE) {
+ addTableItem(template);
+ } else if (shape == template.getValue().getSkinShape()) {
+ addTableItem(template);
+ }
+ }
+ }
+
+ for (int i = 0; i < titles.length; i++) {
+ table.getColumn(i).pack();
+ }
+ }
+
+ private void settingSortingPair() {
+ table.getColumn(0).addListener(SWT.Selection, table.getDefaultSortListener());
+ table.getColumn(1).addListener(SWT.Selection, table.getDefaultSortListener());
+ table.getColumn(5).addListener(SWT.Selection, table.getDefaultSortListener());
+ table.getColumn(2).addListener(SWT.Selection, new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ TableColumn column = (TableColumn)event.widget;
+ // set column
+ table.settingSortColumn(column);
+ // make comparable item list
+ int dir = table.getSortDirection();
+ DoubleTypeItemPair[] pairs = new DoubleTypeItemPair[table.getItemCount()];
+ for (int i = 0; i < table.getItemCount(); i++) {
+ DeviceTemplate t = (DeviceTemplate)table.getItem(i).getData();
+ pairs[i] = new DoubleTypeItemPair(table.getItem(i), 1, dir,
+ t.getValue().getDisplaySize());
+ }
+ column.setTableItemPairs(pairs);
+ // sort table item
+ table.defaultSortTableItem(column);
+ }
+
+ });
+
+ table.getColumn(4).addListener(SWT.Selection, new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ TableColumn column = (TableColumn)event.widget;
+ // set column
+ table.settingSortColumn(column);
+ // make comparable item list
+ int dir = table.getSortDirection();
+ IntegerTypeItemPair[] pairs = new IntegerTypeItemPair[table.getItemCount()];
+ for (int i = 0; i < table.getItemCount(); i++) {
+ DeviceTemplate t = (DeviceTemplate)table.getItem(i).getData();
+ pairs[i] = new IntegerTypeItemPair(table.getItem(i), 1, dir,
+ t.getValue().getRamSize());
+ }
+ column.setTableItemPairs(pairs);
+ // sort table item
+ table.defaultSortTableItem(column);
+ }
+ });
+ }
+
+ private void addTableItem(DeviceTemplate template) {
+ addTableItem(template, -1);
+ }
+
+ private void addTableItem(DeviceTemplate template, int index) {
+ TableItem item = null;
+ if (index >= 0) {
+ item = new TableItem(table, SWT.NULL, index);
+ } else {
+ item = new TableItem(table, SWT.NULL);
+ }
+
+ DeviceTemplateValue value = template.getValue();
+ // set default skin
+ Skin skin = null;
+ List<Skin> skins = image.getPlatform().findSkinList(value.getResolution(), value.getSkinShape());
+ if (!skins.isEmpty()) {
+ skin = skins.get(0);
+ value.setSkin(skin, true);
+ }
+
+ // set table item property
+ item.setText(0, value.getName());
+ item.setText(1, value.getResolution().toString());
+ if (value.getProfile().equals("tv")) {
+ item.setText(2, "");
+ } else {
+ item.setText(2, String.valueOf(value.getDisplaySize()) + " " + value.getDisplaySizeUnit());
+ }
+ item.setText(3, skin == null ? "" : skin.getName());
+ item.setText(4, String.valueOf(value.getRamSize()) + " " + value.getRamSizeUnit());
+ item.setText(5, String.valueOf(value.getCpuCount()));
+ item.setData(template);
+
+ // setting tool tip
+ String info = "Profile: " + value.getProfile()
+ + (value.getExtenstion() == null
+ ? ""
+ : StringResources.NEW_LINE + "Extension: " + value.getExtenstion())
+ + StringResources.NEW_LINE
+ + "Type: " + value.getType();
+ item.setToolTipText(0, info);
+
+ if (value.getProfile().equals("tv")) {
+ // TOOO
+ } else {
+ String displayInfo = "DPI: " + value.getDisplayDPI()
+ + (value.getSkinShape() != SKIN_SHAPE.SQUARE
+ ? StringResources.NEW_LINE + "Skin Shape: " + value.getSkinShape().toString()
+ : "");
+ item.setToolTipText(1, displayInfo);
+ item.setToolTipText(2, displayInfo);
+ item.setToolTipText(3, displayInfo);
+ }
+ }
+
+ private void tableSelected() {
+ DeviceTemplate template = (DeviceTemplate)table.getSelection()[0].getData();
+ viewer.setTemplate(template);
+ }
+}
--- /dev/null
+/*
+ * Emulator Manager
+ *
+ * Copyright (C) 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * JiHye Kim <jihye424.kim@samsung.com>
+ * Minkee Lee <minkee.lee@samsung.com>
+ * SeokYeon Hwang <syeon.hwang@samsung.com>
+ * Sangho Park <sangho1206.park@samsung.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.emulator.manager.ui.renewal.tableviewer;
+
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.emulator.manager.EmulatorManager;
+import org.tizen.emulator.manager.devices.DeviceTemplate;
+import org.tizen.emulator.manager.logging.EMLogger;
+import org.tizen.emulator.manager.platform.BaseImage;
+import org.tizen.emulator.manager.platform.Profile;
+import org.tizen.emulator.manager.platform.Skin;
+import org.tizen.emulator.manager.renewal.resources.ColorResources;
+import org.tizen.emulator.manager.renewal.resources.FontResources;
+import org.tizen.emulator.manager.renewal.resources.ImageResources;
+import org.tizen.emulator.manager.renewal.resources.PatchImageResources;
+import org.tizen.emulator.manager.resources.StringResources;
+import org.tizen.emulator.manager.ui.Messages;
+import org.tizen.emulator.manager.ui.renewal.MainDialog;
+import org.tizen.emulator.manager.ui.renewal.widgets.BlueButton;
+import org.tizen.emulator.manager.ui.renewal.widgets.GrayButton;
+import org.tizen.emulator.manager.ui.renewal.widgets.ImageButton;
+import org.tizen.emulator.manager.ui.renewal.widgets.NinePatchResourceInfo;
+import org.tizen.emulator.manager.vms.Creator;
+import org.tizen.emulator.manager.vms.EmulatorVMList;
+import org.tizen.emulator.manager.vms.VMProperty;
+import org.tizen.emulator.manager.vms.VMPropertyValue;
+import org.tizen.emulator.manager.vms.helper.VMWorkerException;
+
+public class CreateVMTableViewer extends AbstractTableViewer {
+ private static final int BACK_BUTTON_WIDTH = 124;
+ private static final int BACK_BUTTON_HEIGHT = 26;
+
+ private Composite comp;
+ private CreateVMTopComposite topComp;
+ private SashForm form;
+ private CreateVMTable table;
+
+ private Profile profile;
+
+ // top menu
+ private ImageButton backVMListBtn;
+ private GrayButton confirmBtn;
+
+ // sash form menu
+ private Label profileLabel;
+ private BlueButton advanceBtn;
+
+ // emulator properties
+ private String vmName = "";
+ private BaseImage baseImage;
+ private DeviceTemplate template;
+ private VMPropertyValue newValue;
+
+ public CreateVMTableViewer(Shell shell, String key) {
+ super(shell, key);
+ }
+
+ @Override
+ void setTitleImage() {
+ setTtileBackgroundImage(ImageResources.CREATE_VIEW_TITLE_IMAGE.getImage());
+ }
+
+ @Override
+ void setLinkerMenu() {
+ // TODO: not used
+ }
+
+ @Override
+ void setIconMenu() {
+ // TODO: not used
+ }
+
+ @Override
+ void makeTableComposite() {
+ if (table != null) {
+ return;
+ }
+
+ comp = getTableComp();
+
+ makeTopComposite();
+
+ // make sash form menu
+ // TODO
+ advanceBtn = new BlueButton(comp, SWT.PUSH);
+ advanceBtn.setText(" Advance");
+ profileLabel = new Label(comp, SWT.NONE);
+ profileLabel.setFont(FontResources.DEFAULT_BOLD_FONT_9.getFont());
+
+ form = new SashForm(comp, SWT.NONE);
+ form.SASH_WIDTH = 0;
+ form.setBackground(ColorResources.BLUE.getColor());
+
+ table = new CreateVMTable(this);
+ table.makeTable(form);
+
+ setLayout();
+ }
+
+ @Override
+ void showTableComposite() {
+ // how to add profile
+ if (profile == null) {
+ return;
+ }
+
+ // setting label
+ profileLabel.setText(profile == null
+ ? ""
+ : (profile.getName().toUpperCase() + " ")
+ + "Devices");
+
+ // reset value
+ resetVMProperties();
+
+ topComp.showComposite();
+ // TODO
+ // select base image -> drawing table
+ //table.showTable();
+ }
+
+ private void resetVMProperties() {
+ vmName = "";
+ baseImage = null;
+ template = null;
+ newValue = null;
+ }
+
+ public Profile getProfile() {
+ return profile;
+ }
+
+ public void setProfile(Profile profile) {
+ this.profile = profile;
+
+ if (profileLabel != null) {
+ profileLabel.setText(profile == null
+ ? ""
+ : (profile.getName().toUpperCase() + " ")
+ + "Devices");
+ }
+
+ if (topComp != null) {
+ topComp.setProfile(profile);
+ }
+ }
+
+ public String getVmName() {
+ return vmName;
+ }
+
+ public void setVmName(String vmName) {
+ this.vmName = vmName;
+ checkValid();
+ }
+
+ public BaseImage getBaseImage() {
+ return baseImage;
+ }
+
+ public void setBaseImage(BaseImage baseImage) {
+ boolean needRedrawingTable = false;
+ if (this.baseImage == null
+ || this.baseImage.getSkinShape() != baseImage.getSkinShape()) {
+ needRedrawingTable = true;
+ }
+
+ this.baseImage = baseImage;
+ if (needRedrawingTable) {
+ System.out.println("need redrawing");
+ table.showTable();
+ }
+
+ checkValid();
+ }
+
+ public DeviceTemplate getTemplate() {
+ return template;
+ }
+
+ public void setTemplate(DeviceTemplate template) {
+ this.template = template;
+ checkValid();
+ }
+
+ public VMPropertyValue getNewValue() {
+ return newValue;
+ }
+
+ public void setNewValue(VMPropertyValue newValue) {
+ this.newValue = newValue;
+ checkValid();
+ }
+
+ private void makeTopComposite() {
+ backVMListBtn = new ImageButton(comp, SWT.PUSH);
+ Image hover = PatchImageResources.getThreePatchButtonImage(BACK_BUTTON_WIDTH, hoverInfo);
+ Image normal = PatchImageResources.getThreePatchButtonImage(BACK_BUTTON_WIDTH, normalInfo);
+
+ backVMListBtn.setText(" Back to VM List");
+ backVMListBtn.setFont(FontResources.DEFAULT_FONT_9.getFont());
+ backVMListBtn.setFontColor(ColorResources.DEFAULT_FONT.getColor());
+ backVMListBtn.setImages(normal, hover, hover, normal);
+ backVMListBtn.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ if (event.type == SWT.Selection) {
+ MainDialog mainDialog = EmulatorManager.getMainDialog();
+ AbstractTableViewer viewer = mainDialog.findViewer("vmList");
+ if (viewer != null) {
+ mainDialog.setStackTop(viewer);
+ }
+ }
+ }
+ });
+
+ confirmBtn = new GrayButton(comp, SWT.PUSH);
+ confirmBtn.setText("Confirm");
+ confirmBtn.addListener(SWT.Selection, new Listener(){
+ @Override
+ public void handleEvent(Event event) {
+ if (event.type == SWT.Selection) {
+ createEmulator();
+ }
+ }
+ });
+
+ topComp = new CreateVMTopComposite(this);
+ topComp.makeComposite();
+ }
+
+ public void checkValid() {
+ confirmBtn.setEnabled(true);
+
+ if (!topComp.isValid()) {
+ confirmBtn.setEnabled(false);
+ }
+
+ if (template == null) {
+ confirmBtn.setEnabled(false);
+ }
+
+ // TODO: check vm proerty value
+ }
+
+ private void createEmulator() {
+ // TODO
+ VMProperty lastCreateProperty = profile.getLastCreatedProperty();
+ VMPropertyValue value = lastCreateProperty.getPropertyValue();
+
+ value.vmsName = vmName;
+ value.setBaseImage(baseImage);
+ value.setDeviceTemplate(template);
+
+ // TODO
+ if (value.skin == null) {
+ List<Skin> skins = baseImage.getPlatform().findSkinList(value.resolution, baseImage.getSkinShape());
+ if (!skins.isEmpty()) {
+ value.skin = skins.get(0);
+ value.skinPath = value.skin.getPath();
+ }
+ }
+
+ VMProperty prop = null;
+ try {
+ prop = Creator.create(value);
+ } catch (VMWorkerException e) {
+ String msg = Messages.getString("VMsMainView.FailedToCreate.0") //$NON-NLS-1$
+ + value.vmsName + ") " //$NON-NLS-1$
+ + StringResources.NEW_LINE
+ + e.getMessage();
+ EMLogger.getLogger().warning(msg);
+ // TODO
+ }
+
+ EmulatorVMList.getInstance().addProperty(prop);
+ profile.addEmulator(prop);
+
+ MainDialog mainDialog = EmulatorManager.getMainDialog();
+ VMListTableViewer viewer = (VMListTableViewer)mainDialog.findViewer("vmList");
+ if (viewer != null) {
+ viewer.setRedrawing(true);
+ viewer.setCreatedEmulator(prop);
+ mainDialog.setStackTop(viewer);
+ }
+ }
+
+ private void setLayout() {
+ // composite is form layout
+ FormData backButtonData;
+ backButtonData = new FormData();
+ backButtonData.left = new FormAttachment(0, 10);
+ backButtonData.top = new FormAttachment(0, 13);
+ backButtonData.width = BACK_BUTTON_WIDTH;
+ backButtonData.height = BACK_BUTTON_HEIGHT;
+ backVMListBtn.setLayoutData(backButtonData);
+
+ FormData data;
+ data = new FormData();
+ data.top = new FormAttachment(0, 13);
+ data.right = new FormAttachment(100, -10);
+ data.width = 106;
+ data.height = 26;
+ confirmBtn.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(0, 39);
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, 0);
+ data.height = 71;
+ topComp.setLayoutData(data);
+
+ // Profile Devices
+ data = new FormData();
+ data.top = new FormAttachment(topComp, 12);
+ data.left = new FormAttachment(0, 18);
+ data.width = 150;
+ data.height = 20;
+ profileLabel.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(topComp, 2);
+ data.right = new FormAttachment(100, -10);
+ data.width = 90;
+ data.height = BACK_BUTTON_HEIGHT;
+ advanceBtn.setLayoutData(data);
+
+ FormData sashData = new FormData();
+ sashData.top = new FormAttachment(0, 142);
+ sashData.left = new FormAttachment(0, 10);
+ sashData.right = new FormAttachment(100, -10);
+ sashData.bottom = new FormAttachment(100, -10);
+ form.setLayoutData(sashData);
+
+ //form.setWeights(new int[]{1,0});
+ }
+
+ private final NinePatchResourceInfo normalInfo = new NinePatchResourceInfo(ColorResources.TABLE_VIEWER_BG,
+ ColorResources.TABLE_VIEWER_BG,
+ null, //left top
+ ImageResources.BACK_BTN_NORMAL_C, // top -> center
+ null, // right top
+ ImageResources.BACK_BTN_NORMAL_R, // right
+ null, // right bottom
+ null, // bottom
+ null, // left bottom
+ ImageResources.BACK_BTN_NORMAL_L); // left
+
+ private final NinePatchResourceInfo hoverInfo = new NinePatchResourceInfo(ColorResources.TABLE_VIEWER_BG,
+ ColorResources.TABLE_VIEWER_BG,
+ null, //left top
+ ImageResources.BACK_BTN_HOVER_C, // top -> center
+ null, // right top
+ ImageResources.BACK_BTN_HOVER_R, // right
+ null, // right bottom
+ null, // bottom
+ null, // left bottom
+ ImageResources.BACK_BTN_HOVER_L); // left
+
+}
--- /dev/null
+/*
+ * Emulator Manager
+ *
+ * Copyright (C) 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * JiHye Kim <jihye424.kim@samsung.com>
+ * Minkee Lee <minkee.lee@samsung.com>
+ * SeokYeon Hwang <syeon.hwang@samsung.com>
+ * Sangho Park <sangho1206.park@samsung.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.emulator.manager.ui.renewal.tableviewer;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.tizen.emulator.manager.platform.BaseImage;
+import org.tizen.emulator.manager.platform.Profile;
+import org.tizen.emulator.manager.renewal.resources.FontResources;
+import org.tizen.emulator.manager.renewal.resources.ImageResources;
+import org.tizen.emulator.manager.resources.StringResources;
+import org.tizen.emulator.manager.ui.renewal.item.modify.common.NameItem;
+import org.tizen.emulator.manager.ui.renewal.widgets.BlueButton;
+import org.tizen.emulator.manager.ui.renewal.widgets.ComboBox;
+import org.tizen.emulator.manager.ui.renewal.widgets.TextInputBox;
+import org.tizen.emulator.manager.vms.helper.HelperClass;
+
+public class CreateVMTopComposite extends Composite {
+ private static final int LABEL_WIDTH = 90;
+ private static final int INPUT_BOX_WIDTH = 250;
+ private static final int INPUT_BOX_HEIGHT = 24;
+
+ private CreateVMTableViewer viewer;
+ private Profile profile;
+ private BaseImage baseImage;
+
+ private TextInputBox vmNameText;
+ private ComboBox baseImageCombo;
+ private BlueButton addCustomImageBtn;
+
+ private Label errorImageLabel;
+ private Label errorMsgLabel;
+
+ private boolean isNameValid = false;
+
+ public CreateVMTopComposite(CreateVMTableViewer viewer) {
+ super(viewer.getTableComp(), SWT.NONE);
+
+ this.viewer = viewer;
+ this.setLayout(new FormLayout());
+ }
+
+ public void makeComposite() {
+ vmNameText = new TextInputBox(this, SWT.NONE);
+ vmNameText.getTextWidget().addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ vmNameModified();
+ }
+ });
+ vmNameText.getTextWidget().setTextLimit(20);
+
+ baseImageCombo = new ComboBox(this.getShell(), this, SWT.NONE);
+ baseImageCombo.addListener(SWT.Selection, imageComboListener);
+
+ addCustomImageBtn = new BlueButton(this, SWT.PUSH);
+ addCustomImageBtn.setIcon(ImageResources.ICON_BLUE_BUTTON_PLUS);
+ addCustomImageBtn.addListener(SWT.Selection, customImageListener);
+ addCustomImageBtn.setToolTipText("add new custom base image");
+
+ errorMsgLabel = new Label(this, SWT.NONE);
+ errorImageLabel = new Label(this, SWT.NONE);
+ errorMsgLabel.setFont(FontResources.DEFAULT_FONT_10.getFont());
+ errorImageLabel.setFont(FontResources.DEFAULT_FONT_10.getFont());
+
+ setLayout();
+ }
+
+ public void showComposite() {
+ // reset viewer
+ vmNameText.setText("");
+ baseImageCombo.clear();
+
+ if (profile == null) {
+ profile = viewer.getProfile();
+ if (profile == null) {
+ setErrorMessage("You need to select profile!!");
+ return;
+ }
+ }
+
+ // setting base image list
+ for (BaseImage image : profile.getImageList()) {
+ if (!image.isFilePathExist() || image.isDeleted()) {
+ continue;
+ }
+
+ if (image.isStandard()) {
+ baseImageCombo.addItem(image.getName(), image);
+ } else {
+ String text = image.getName() + " (Version: " + image.getVersion() + ")";
+ baseImageCombo.addItem(text, image);
+ }
+ }
+
+ if (!baseImageCombo.getItemList().isEmpty()) {
+ baseImageCombo.select(0);
+ }
+
+ // setting default emulator name
+ vmNameText.setText(getDefaultName());
+
+
+ }
+
+ public void setProfile(Profile profile) {
+ this.profile = profile;
+ }
+
+ public boolean isValid() {
+ return isNameValid && (baseImage !=null);
+ }
+
+ Listener customImageListener = new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ switch(event.type) {
+ case SWT.Selection:
+ //TODO
+ default:
+ break;
+ }
+
+ }
+ };
+
+ Listener imageComboListener = new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ switch(event.type) {
+ case SWT.Selection:
+ baseImage = (BaseImage)baseImageCombo.getSelectedData();
+ String toolTip = "Type: " + (baseImage.isStandard() ? "standard" : "cusotm")
+ + StringResources.NEW_LINE
+ + "Platform: " + baseImage.getPlatformName()
+ + StringResources.NEW_LINE
+ + "Skin shape: " + baseImage.getSkinShape().toString()
+ + StringResources.NEW_LINE
+ + "Path: " + baseImage.getPath();
+ baseImageCombo.setToolTipText(toolTip);
+ vmNameText.setText(getDefaultName());
+ viewer.setBaseImage(baseImage);
+ default:
+ break;
+ }
+ }
+ };
+
+ private void vmNameModified() {
+ String name = vmNameText.getTextWidget().getText();
+
+ setErrorMessage(NameItem.checkVMName(name));
+
+ viewer.setVmName(name);
+ }
+
+ private void setErrorMessage(String err) {
+ if (!err.isEmpty()) {
+ System.out.println(err);
+ errorImageLabel.setImage(ImageResources.ICON_STATE_ERROR.getImage());
+ errorMsgLabel.setText("Error: " + err);
+ isNameValid = false;
+ } else {
+ errorImageLabel.setText("");
+ errorMsgLabel.setText("");
+ isNameValid = true;
+ }
+ }
+
+ private String getDefaultName() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(profile.getName().substring(0,1).toLowerCase());
+ if (!baseImage.isStandard()) {
+ sb.append("c"); //$NON-NLS-1$
+ }
+ sb.append("-"); //$NON-NLS-1$
+
+ SimpleDateFormat formatter = new SimpleDateFormat ("MMdd"); //$NON-NLS-1$
+ Date currentTime = new Date( );
+ String timeStr = formatter.format(currentTime);
+ sb.append(timeStr);
+ sb.append("-"); //$NON-NLS-1$
+
+ int count=1;
+ String prefix = sb.toString();
+ StringBuilder vmName = null;
+ do {
+ vmName = new StringBuilder();
+ vmName.append(prefix).append(Integer.toString(count++));
+ } while (HelperClass.checkDupulicateName(vmName.toString()) != null) ;
+
+ return vmName.toString();
+ }
+
+ private void setLayout() {
+ // separator
+ Label label = new Label(this, SWT.HORIZONTAL | SWT.SEPARATOR);
+ FormData data = new FormData();
+ data.top = new FormAttachment(0, 6);
+ data.left = new FormAttachment(0, 13);
+ data.right = new FormAttachment(100, -10);
+ label.setLayoutData(data);
+
+ // VM Name
+ label = new Label(this, SWT.NONE);
+ label.setText("VM Name");
+ label.setFont(FontResources.DEFAULT_BOLD_FONT_9.getFont());
+ data = new FormData();
+ data.top = new FormAttachment(0, 16);
+ data.left = new FormAttachment(0, 18);
+ data.width = LABEL_WIDTH;
+ data.height = INPUT_BOX_HEIGHT;
+ label.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(0, 11);
+ data.left = new FormAttachment(label, 0);
+ data.width = INPUT_BOX_WIDTH;
+ data.height = INPUT_BOX_HEIGHT;
+ vmNameText.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(0, 12);
+ data.left = new FormAttachment(vmNameText, 10);
+ data.width = 20;
+ data.height = 20;
+ errorImageLabel.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(0, 14);
+ data.left = new FormAttachment(errorImageLabel, 0);
+ data.width = 300;
+ errorMsgLabel.setLayoutData(data);
+
+ // Base Image
+ label = new Label(this, SWT.NONE);
+ label.setText("Base Image");
+ label.setFont(FontResources.DEFAULT_BOLD_FONT_9.getFont());
+ data = new FormData();
+ data.top = new FormAttachment(vmNameText, 14);
+ data.left = new FormAttachment(0, 18);
+ data.width = LABEL_WIDTH;
+ data.height = INPUT_BOX_HEIGHT;
+ label.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(vmNameText, 8);
+ data.left = new FormAttachment(label, 0);
+ data.width = INPUT_BOX_WIDTH;
+ data.height = 24;
+ baseImageCombo.setLayoutData(data);
+
+ data = new FormData();
+ data.top = new FormAttachment(vmNameText, 7);
+ data.left = new FormAttachment(baseImageCombo, 6);
+ data.width = 30;
+ data.height = 26;
+ addCustomImageBtn.setLayoutData(data);
+ }
+}
@Override
public void widgetSelected(SelectionEvent e) {
- //TODO
+ ProfileButton pButton = (ProfileButton)e.data;
+ MainDialog mainDialog = EmulatorManager.getMainDialog();
+ CreateVMTableViewer viewer = (CreateVMTableViewer)mainDialog.findViewer("createVM");
+ if (viewer == null) {
+ viewer = new CreateVMTableViewer(MainDialog.getShell(), "createVM");
+ mainDialog.addViewer(viewer);
+ }
+ viewer.setProfile(pButton.getProfile());
+ mainDialog.setStackTop(viewer);
}
@Override
this.lastModified = propertyFile.lastModified();
this.configuration = element;
- File logFile = new File(VMLogUtil.getEmulatorLogPath(configuration.getBaseInformation().getName()));
- if (logFile.exists()) {
- lastLaunched = logFile.lastModified();
- } else {
- lastLaunched = 0;
+ if (configuration.getBaseInformation() != null) {
+ File logFile = new File(VMLogUtil.getEmulatorLogPath(configuration.getBaseInformation().getName()));
+ if (logFile.exists()) {
+ lastLaunched = logFile.lastModified();
+ } else {
+ lastLaunched = 0;
+ }
}
}
import org.tizen.emulator.manager.devices.DeviceTemplate;
import org.tizen.emulator.manager.devices.DeviceTemplateList;
+import org.tizen.emulator.manager.devices.DeviceTemplateValue;
import org.tizen.emulator.manager.logging.EMLogger;
import org.tizen.emulator.manager.platform.BaseImage;
import org.tizen.emulator.manager.platform.Skin;
}
}
+ public void setDeviceTemplate(DeviceTemplate device) {
+ if (device == null) {
+ return;
+ }
+
+ this.device = device;
+ DeviceTemplateValue value = device.getValue();
+
+ if (value.getSkin() != null) {
+ this.skin = value.getSkin();
+ this.skinPath = value.getSkinPath();
+ }
+ this.resolution = value.getResolution();
+ this.dpi = value.getDisplayDPI();
+ this.screenSize = value.getDisplaySize();
+
+ this.cpu = value.getCpuCount();
+ this.ramSize = value.getRamSize();
+
+ // TODO
+ // setting sensor ...
+ }
+
public OptionType getAdvancedOption(String optionName) {
for (OptionType option : advancedOptionList) {
if (option.getName().equals(optionName)) {