Device Template: implement create, modify, clone functions
authorjihye424.kim <jihye424.kim@samsung.com>
Tue, 13 Oct 2015 07:20:23 +0000 (16:20 +0900)
committerjihye424.kim <jihye424.kim@samsung.com>
Tue, 13 Oct 2015 07:20:23 +0000 (16:20 +0900)
- make create, modify, clone function of device template table viewer
- add 'DIALOG_MODE' type (CREATE, CLONE, MODIFY)

Change-Id: I334f596ed6fa7ae2aaea2f2f6be5f9db61584ba3
Signed-off-by: jihye424.kim <jihye424.kim@samsung.com>
src/org/tizen/emulator/manager/ui/renewal/dialog/DIALOG_MODE.java [new file with mode: 0644]
src/org/tizen/emulator/manager/ui/renewal/dialog/Dialog.java
src/org/tizen/emulator/manager/ui/renewal/dialoghandler/DeviceTemplateDialogHandler.java [moved from src/org/tizen/emulator/manager/dialoghandler/renewal/DeviceTemplateDialogHandler.java with 75% similarity]
src/org/tizen/emulator/manager/ui/renewal/dialoghandler/VMModifyHandler.java [moved from src/org/tizen/emulator/manager/dialoghandler/renewal/VMModifyHandler.java with 95% similarity]
src/org/tizen/emulator/manager/ui/renewal/item/modify/common/TextInputBoxItem.java
src/org/tizen/emulator/manager/ui/renewal/item/modify/template/CameraItem.java
src/org/tizen/emulator/manager/ui/renewal/tableviewer/DeviceTemplateTableViewer.java
src/org/tizen/emulator/manager/ui/renewal/tableviewer/VMListTable.java
src/org/tizen/emulator/manager/ui/table/TableItem.java

diff --git a/src/org/tizen/emulator/manager/ui/renewal/dialog/DIALOG_MODE.java b/src/org/tizen/emulator/manager/ui/renewal/dialog/DIALOG_MODE.java
new file mode 100644 (file)
index 0000000..98b1711
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * 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 <sangho.p@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.dialog;
+
+public enum DIALOG_MODE {
+       CREATE, MODIFY, CLONE;
+}
index a444820..0be525b 100644 (file)
@@ -61,7 +61,7 @@ public class Dialog {
        private int returnValue = SWT.CANCEL;
 
        // create / modify mode
-       private boolean isCreateMode = true;
+       private DIALOG_MODE mode = DIALOG_MODE.CREATE;
 
        private GrayButton okButton;
 
@@ -191,12 +191,20 @@ public class Dialog {
                bodyComp.setLayoutData(gridData);
        }
 
-       public boolean isCreateMode() {
-               return isCreateMode;
+       public DIALOG_MODE getDialogMode() {
+               return mode;
+       }
+
+       public void setDialogMode(DIALOG_MODE mode) {
+               this.mode = mode;
        }
 
-       public void setCreateMode(boolean isCreateMode) {
-               this.isCreateMode = isCreateMode;
+       public boolean isCreateMode() {
+               if (mode == DIALOG_MODE.CREATE) {
+                       return true;
+               } else {
+                       return false;
+               }
        }
 
 }
 
 
 
-package org.tizen.emulator.manager.dialoghandler.renewal;
+package org.tizen.emulator.manager.ui.renewal.dialoghandler;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.swt.SWT;
-import org.tizen.emulator.manager.devices.DeviceTemplateCreator;
 import org.tizen.emulator.manager.devices.DeviceTemplateValue;
 import org.tizen.emulator.manager.ui.renewal.MainDialog;
+import org.tizen.emulator.manager.ui.renewal.dialog.DIALOG_MODE;
 import org.tizen.emulator.manager.ui.renewal.dialog.DeviceTemplateModifyDialog;
 import org.tizen.emulator.manager.ui.renewal.item.modify.common.DeviceItem;
 import org.tizen.emulator.manager.ui.renewal.item.modify.common.DisplayItem;
@@ -58,69 +58,58 @@ public class DeviceTemplateDialogHandler {
        public static final String TITLE_CLONE = "Clone Template";
 
 
-       public static void create(DeviceTemplateValue value) {
-
+       public static DeviceTemplateValue create(DeviceTemplateValue value) {
                if (value == null) {
                        value = new DeviceTemplateValue(null);
                }
 
                DeviceTemplateValue itemValue = value.clone();
-               DeviceTemplateModifyDialog dialog = createDialog(TITLE_CREATE, true, itemValue);
+               return createDialog(TITLE_CREATE, DIALOG_MODE.CREATE, itemValue);
+       }
 
-               int retValue = dialog.open();
 
-               if (retValue == SWT.OK) {
-                       dialog.saveDataInto(itemValue);
-                       DeviceTemplateCreator.create(itemValue);
-
-                       // TODO for test
-                       System.out.println(itemValue.getPrintValue());
+       public static DeviceTemplateValue clone(DeviceTemplateValue value) {
+               if (value == null) {
+                       return null;
                }
-       }
-
 
-       public static void clone(DeviceTemplateValue value) {
                DeviceTemplateValue newValue = value.clone();
-               int retValue = createDialog(TITLE_CLONE, true, newValue).open();
-               if (retValue == SWT.OK) {
-                       // TODO do clone
-               }
+
+               return createDialog(TITLE_CLONE, DIALOG_MODE.CLONE, newValue);
        }
 
 
-       public static void modify(DeviceTemplateValue value) {
+       public static DeviceTemplateValue modify(DeviceTemplateValue value) {
                if (value == null) {
-                       value = new DeviceTemplateValue(null);
+                       // TODO
+                       return null;
                }
 
                DeviceTemplateValue itemValue = value.clone();
-               DeviceTemplateModifyDialog dialog = createDialog(TITLE_MODIFY, false, itemValue);
 
-               int retValue = dialog.open();
-
-               if (retValue == SWT.OK) {
-                       dialog.saveDataInto(itemValue);
-
-                       // TODO for test
-                       System.out.println(itemValue.getPrintValue());
-
-                       // TODO do modify
-               }
+               return createDialog(TITLE_MODIFY, DIALOG_MODE.MODIFY, itemValue);
        }
 
 
 
-       private static DeviceTemplateModifyDialog createDialog(
-                       String dialogTitle, boolean isCreateMode, DeviceTemplateValue value) {
+       private static DeviceTemplateValue createDialog(
+                       String dialogTitle, DIALOG_MODE mode, DeviceTemplateValue value) {
 
                // open dialog
                DeviceTemplateModifyDialog dialog =
                                new DeviceTemplateModifyDialog(MainDialog.getShell(), dialogTitle);
-               dialog.setCreateMode(isCreateMode);
+               dialog.setDialogMode(mode);
                dialog.create(value, getItemList(null));
 
-               return dialog;
+               int retValue = dialog.open();
+               if (retValue == SWT.OK) {
+                       dialog.saveDataInto(value);
+                       // TODO for test
+                       System.out.println(value.getPrintValue());
+                       return value;
+               }
 
+               return null;
        }
 
        private static List<ModifyDialogItem> getItemList(VMProperty property) {
@@ -129,7 +118,6 @@ public class DeviceTemplateDialogHandler {
 
        }
 
-
        // FOR TES
        public static List<ModifyDialogItem> getTmpItemList() {
                List<ModifyDialogItem> itemList = new ArrayList<ModifyDialogItem>();
  */
 
 
-package org.tizen.emulator.manager.dialoghandler.renewal;
+package org.tizen.emulator.manager.ui.renewal.dialoghandler;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.swt.SWT;
 import org.tizen.emulator.manager.ui.renewal.MainDialog;
+import org.tizen.emulator.manager.ui.renewal.dialog.DIALOG_MODE;
 import org.tizen.emulator.manager.ui.renewal.dialog.VMModifyDialog;
 import org.tizen.emulator.manager.ui.renewal.item.modify.common.DeviceItem;
 import org.tizen.emulator.manager.ui.renewal.item.modify.common.DisplayItem;
@@ -55,7 +56,7 @@ public class VMModifyHandler {
 
                // open modify dialog
                VMModifyDialog dialog = new VMModifyDialog(MainDialog.getShell());
-               dialog.setCreateMode(false);
+               dialog.setDialogMode(DIALOG_MODE.MODIFY);
                dialog.create(property.getPropertyValue(), getItemList(property));
 
                // TODO set display value to dialog
index f883ed8..1e5f261 100644 (file)
@@ -39,6 +39,7 @@ import org.eclipse.swt.widgets.Canvas;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Text;
 import org.tizen.emulator.manager.renewal.resources.ImageResources;
+import org.tizen.emulator.manager.ui.renewal.dialog.DIALOG_MODE;
 import org.tizen.emulator.manager.ui.renewal.item.modify.comp.IconItemTitle;
 import org.tizen.emulator.manager.ui.renewal.item.modify.comp.ModifyItem;
 import org.tizen.emulator.manager.ui.renewal.widgets.TextInputBox;
@@ -79,15 +80,13 @@ public abstract class TextInputBoxItem extends ModifyDialogItem {
        protected void makeBody(int textBoxWidth) {
                item.setBodyLayoutDefault();
 
-               if (getDialog().isCreateMode()) {
-                       createTextBox(textBoxWidth);
-
-               } else {
+               if (getDialog().getDialogMode() == DIALOG_MODE.MODIFY) {
                        createTextLabel();
+               } else {
+                       createTextBox(textBoxWidth);
                }
        }
 
-
        // for create mode
        private void createTextBox(int textBoxWidth) {
                GridData data = new GridData();
index d9e2f4d..d26a0d0 100644 (file)
@@ -49,8 +49,9 @@ public class CameraItem extends CheckBoxItem {
        private static final int NUM_COLUMN = 2;
 
        // TODO load from xml
-       private static final List<CheckItemData> dataList =
+       private final List<CheckItemData> dataList =
                        new ArrayList<CheckItemData>();
+
        private void initDataList() {
                dataList.add(new CheckItemData("rear", "Rear"));
                dataList.add(new CheckItemData("front", "Front"));
index 55aa7ce..cece42a 100644 (file)
@@ -46,7 +46,7 @@ import org.eclipse.swt.widgets.Shell;
 import org.tizen.emulator.manager.EmulatorManager;
 import org.tizen.emulator.manager.devices.DeviceTemplate;
 import org.tizen.emulator.manager.devices.DeviceTemplateValue;
-import org.tizen.emulator.manager.dialoghandler.renewal.DeviceTemplateDialogHandler;
+import org.tizen.emulator.manager.devices.DeviceWorkerException;
 import org.tizen.emulator.manager.logging.EMLogger;
 import org.tizen.emulator.manager.platform.Profile;
 import org.tizen.emulator.manager.platform.ProfileList;
@@ -55,13 +55,13 @@ 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.ui.renewal.MainDialog;
+import org.tizen.emulator.manager.ui.renewal.dialoghandler.DeviceTemplateDialogHandler;
 import org.tizen.emulator.manager.ui.renewal.widgets.Hyperlink;
 import org.tizen.emulator.manager.ui.renewal.widgets.ImageButton;
 import org.tizen.emulator.manager.ui.renewal.widgets.NinePatchResourceInfo;
 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.helper.VMWorkerException;
 
 public class DeviceTemplateTableViewer extends AbstractTableViewer {
        private static final int BACK_BUTTON_WIDTH      = 124;
@@ -379,8 +379,7 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
                        @Override
                        public void handleEvent(Event event) {
                                if (event.type == SWT.Selection) {
-                                       // TODO
-                                       DeviceTemplateDialogHandler.create(null);
+                                       createDeviceTemplate(null);
                                }
                        }
                });
@@ -396,7 +395,10 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
                        @Override
                        public void handleEvent(Event event) {
                                if (event.type == SWT.Selection) {
-                                       // TODO
+                                       TableItem[] items = table.getSelection();
+                                       if (items != null && items.length > 0) {
+                                               createDeviceTemplate(items[0]);
+                                       }
                                }
                        }
                });
@@ -412,11 +414,10 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
                        @Override
                        public void handleEvent(Event event) {
                                if (event.type == SWT.Selection) {
-
-                                       // TODO check please
                                        TableItem[] items = table.getSelection();
-                                       DeviceTemplate deviceTemplate = (DeviceTemplate)items[0].getData();
-                                       DeviceTemplateDialogHandler.modify(deviceTemplate.getValue());
+                                       if (items != null && items.length > 0) {
+                                               modifyDeviceTemplate(items[0]);
+                                       }
 
                                }
                        }
@@ -435,9 +436,7 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
                                if (event.type == SWT.Selection) {
                                        TableItem[] items = table.getSelection();
                                        if (items != null && items.length > 0) {
-                                               TableItem item = items[0];
-
-                                               deleteDeviceTemplate(item);
+                                               deleteDeviceTemplate(items[0]);
                                        }
                                }
                        }
@@ -448,6 +447,97 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
                cloneButton.setEnabled(false);
        }
 
+       private void createDeviceTemplate(TableItem item) {
+               DeviceTemplateValue value = null;
+               if (item != null) {
+                       DeviceTemplate template = (DeviceTemplate)item.getData();
+                       value = template.getValue();
+               }
+
+               // open create dialog
+               DeviceTemplateValue newValue = null;
+               if (value == null) {
+                       newValue = DeviceTemplateDialogHandler.create(value);
+               } else {
+                       newValue = DeviceTemplateDialogHandler.clone(value);
+               }
+
+               if (newValue == null) {
+                       return;
+               } else {
+                       newValue.setType("custom");
+               }
+
+               ProfileButton pButton = null;
+               for (ProfileButton p : profileButtonList) {
+                       if (p.getProfileName().equals(newValue.getProfile())) {
+                               pButton = p;
+                               break;
+                       }
+               }
+
+               DeviceTemplate template = new DeviceTemplate();
+
+               try {
+                       template.create(newValue);
+
+                       // for table viewer
+                       addTableItem(pButton, template, 0);
+                       table.setSelection(0);
+
+               } catch (DeviceWorkerException e) {
+                       EMLogger.getLogger().warning(e.getMessage());
+                       // open message box
+                       MessageBox.openMessageBox(e.getMessage());
+
+                       if (e.isNeedRefresh()) {
+                               refreshDeviceTemplateList();
+                       }
+               }
+       }
+
+       private void modifyDeviceTemplate(TableItem item) {
+               if (item == null) {
+                       return;
+               }
+
+               DeviceTemplate deviceTemplate = (DeviceTemplate)item.getData();
+
+               // open modify dialog
+               DeviceTemplateValue newValue =
+                               DeviceTemplateDialogHandler.modify(deviceTemplate.getValue());
+
+               if (newValue == null) {
+                       return;
+               }
+
+               ProfileButton pButton = null;
+               for (ProfileButton p : profileButtonList) {
+                       if (p.getProfileName().equals(deviceTemplate.getValue().getProfile())) {
+                               pButton = p;
+                               break;
+                       }
+               }
+
+               try {
+                       newValue.updateVersion();
+                       deviceTemplate.modify(newValue);
+
+                       // for table viewer
+                       setTableItemProperty(pButton, item, deviceTemplate);
+                       table.redraw();
+                       table.setSelection(item);
+               } catch (DeviceWorkerException e) {
+                       EMLogger.getLogger().warning(e.getMessage());
+                       // open message box
+                       MessageBox.openMessageBox(e.getMessage());
+
+                       if (e.isNeedRefresh()) {
+                               refreshDeviceTemplateList();
+                       }
+               }
+       }
+
        private void deleteDeviceTemplate(TableItem item) {
                if (item == null) {
                        return;
@@ -457,7 +547,7 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
                try {
                        template.delete();
                        table.remove(table.indexOf(item));
-               } catch (VMWorkerException e) {
+               } catch (DeviceWorkerException e) {
                        EMLogger.getLogger().warning(e.getMessage());
                        // open message box
                        MessageBox.openMessageBox(e.getMessage());
index 9f22916..de11287 100644 (file)
@@ -42,11 +42,11 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
-import org.tizen.emulator.manager.dialoghandler.renewal.VMModifyHandler;
 import org.tizen.emulator.manager.platform.Profile;
 import org.tizen.emulator.manager.platform.ProfileList;
 import org.tizen.emulator.manager.renewal.resources.ImageResources;
 import org.tizen.emulator.manager.ui.renewal.MainDialog;
+import org.tizen.emulator.manager.ui.renewal.dialoghandler.VMModifyHandler;
 import org.tizen.emulator.manager.ui.renewal.widgets.CreateVMCombo;
 import org.tizen.emulator.manager.ui.renewal.widgets.ImageButton;
 import org.tizen.emulator.manager.ui.table.Table;
index 3e7d695..52b4db7 100644 (file)
@@ -493,6 +493,7 @@ public class TableItem extends Canvas {
                        if (!text.equals(dataList[index].text)) {
                                dataList[index].text = text;
                                dataList[index].textWidth = TextSizeUtil.textExtent(font, text);
+                               dataList[index].needRedrawingText = true;
                                if (parent.getColumnCount() == 0) {
                                        parent.updateScrollBars(true);
                                }