Device Template: add sorting routine to device template list
authorjihye424.kim <jihye424.kim@samsung.com>
Thu, 15 Oct 2015 07:12:11 +0000 (16:12 +0900)
committerjihye424.kim <jihye424.kim@samsung.com>
Thu, 15 Oct 2015 08:10:24 +0000 (17:10 +0900)
- if device template has manufacturer, that will have upper priority than other templates
- add sorting routine using integer, double value to table column

Change-Id: I4405b962a834585c6c1aa696bae4927d1d5caa2d
Signed-off-by: jihye424.kim <jihye424.kim@samsung.com>
src/org/tizen/emulator/manager/platform/Profile.java
src/org/tizen/emulator/manager/platform/ProfileList.java
src/org/tizen/emulator/manager/ui/renewal/tableviewer/DeviceTemplateTableViewer.java
src/org/tizen/emulator/manager/ui/renewal/tableviewer/DoubleTypeItemPair.java [new file with mode: 0644]
src/org/tizen/emulator/manager/ui/renewal/tableviewer/IntegerTypeItemPair.java [moved from src/org/tizen/emulator/manager/ui/renewal/tableviewer/ItemProfilePair.java with 88% similarity]
src/org/tizen/emulator/manager/ui/renewal/tableviewer/VMListTable.java

index 0257275..6dd226d 100644 (file)
@@ -59,6 +59,8 @@ public class Profile {
        private boolean isSortPlatformList = false;
        private int priority = 10;
 
+       private boolean isSortTemplateList = false;
+
        public Profile(String name) {
                this.name = name;
                initLastCreatedPropertyPath();
@@ -272,11 +274,29 @@ public class Profile {
                this.priority = priority;
        }
 
+       public void sortTemplateList() {
+               TemplatePair[] pairs = new TemplatePair[templateList.size()];
+               for (int i = 0; i < templateList.size(); i++) {
+                       pairs[i] = new TemplatePair(templateList.get(i));
+               }
+
+               Arrays.sort(pairs);
+
+               for (int i = 0; i < templateList.size(); i++) {
+                       templateList.set(i, pairs[i].template);
+               }
+       }
+
        public void clearTemplateList() {
+               isSortTemplateList = false;
                templateList.clear();
        }
 
        public List<DeviceTemplate> getTemplateList() {
+               if (!isSortTemplateList) {
+                       sortTemplateList();
+                       isSortTemplateList = true;
+               }
                return templateList;
        }
 
@@ -381,4 +401,40 @@ public class Profile {
                        }
                }
        };
+
+       static class TemplatePair implements Comparable<Object> {
+               DeviceTemplate template;
+
+               public TemplatePair(DeviceTemplate template) {
+                       this.template = template;
+               }
+
+               @Override
+               public int compareTo(Object o) {
+                       DeviceTemplate src = this.template;
+                       DeviceTemplate target = ((TemplatePair)o).template;
+
+                       // check standard
+                       if (target.getValue().getType().equals("standard")) {
+                               if (!src.getValue().getType().equals("standard")) {
+                                       return 1;
+                               }
+                       } else { // target is custom template
+                               if (src.getValue().getType().equals("standard")) {
+                                       return -1;
+                               }
+                       }
+
+                       // check manufacturer
+                       if (target.getValue().getManufacturer() != null
+                                       && !target.getValue().getManufacturer().isEmpty()) {
+                               if (src.getValue().getManufacturer() == null
+                                       || src.getValue().getManufacturer().isEmpty()) {
+                                       return 1;
+                               }
+                       }
+
+                       return -1;
+               }
+       };
 }
index e639770..c7616ac 100644 (file)
@@ -323,6 +323,7 @@ public class ProfileList {
                        for (Profile profile : profileList) {
                                if (profile.getName().equals(template.getValue().getProfile())) {
                                        profile.addDeviceTemplate(template);
+                                       break;
                                }
                        }
                }
index 7676d77..8cf86d8 100644 (file)
@@ -67,6 +67,7 @@ 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.SKIN_SHAPE;
 
 public class DeviceTemplateTableViewer extends AbstractTableViewer {
        private static final int BACK_BUTTON_WIDTH      = 124;
@@ -251,9 +252,55 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
 
                table.getColumn(1).addListener(SWT.Selection, table.getDefaultSortListener());
                table.getColumn(2).addListener(SWT.Selection, table.getDefaultSortListener());
-               table.getColumn(3).addListener(SWT.Selection, table.getDefaultSortListener());
-               table.getColumn(4).addListener(SWT.Selection, table.getDefaultSortListener());
                table.getColumn(5).addListener(SWT.Selection, table.getDefaultSortListener());
+               settingSortingPair();
+       }
+
+       private void settingSortingPair() {
+               table.getColumn(3).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);
+                       }
+
+               });
+
                table.getColumn(0).addListener(SWT.Selection, new Listener() {
 
                        @Override
@@ -263,7 +310,7 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
                                table.settingSortColumn(column);
                                // make comparable item list
                                int dir = table.getSortDirection();
-                               ItemProfilePair[] pairs = new ItemProfilePair[table.getItemCount()];
+                               IntegerTypeItemPair[] pairs = new IntegerTypeItemPair[table.getItemCount()];
                                for (int i = 0; i < table.getItemCount(); i++) {
                                        DeviceTemplate t = (DeviceTemplate)table.getItem(i).getData();
                                        Profile p = ProfileList.getProfile(t.getValue().getProfile());
@@ -271,7 +318,7 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
                                        if (!t.getValue().isStandard()) {
                                                priority += 1;
                                        }
-                                       pairs[i] = new ItemProfilePair(table.getItem(i), 1, dir, priority);
+                                       pairs[i] = new IntegerTypeItemPair(table.getItem(i), 1, dir, priority);
                                }
                                column.setTableItemPairs(pairs);
                                // sort table item
@@ -279,7 +326,6 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
                        }
 
                });
-
        }
 
        private void setTemplateListTable() {
@@ -358,7 +404,10 @@ public class DeviceTemplateTableViewer extends AbstractTableViewer {
                                + "Type: " + value.getType();
                item.setToolTipText(0, info);
                item.setToolTipText(1, info);
-               item.setToolTipText(3, "DPI: " + value.getDisplayDPI());
+               item.setToolTipText(3, "DPI: " + value.getDisplayDPI()
+                               + (value.getSkinShape() != SKIN_SHAPE.SQUARE
+                               ? StringResources.NEW_LINE + "Skin Shape: " + value.getSkinShape().toString()
+                               : ""));
        }
 
        private void setTableItemMenu(TableItem item, DeviceTemplate template) {
diff --git a/src/org/tizen/emulator/manager/ui/renewal/tableviewer/DoubleTypeItemPair.java b/src/org/tizen/emulator/manager/ui/renewal/tableviewer/DoubleTypeItemPair.java
new file mode 100644 (file)
index 0000000..1306348
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * 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.tableviewer;
+
+import org.eclipse.swt.SWT;
+import org.tizen.emulator.manager.ui.table.TableItem;
+import org.tizen.emulator.manager.ui.table.TableItemComparable;
+
+public class DoubleTypeItemPair extends TableItemComparable {
+       private double value;
+       public DoubleTypeItemPair(TableItem item, int index, int direction, double value) {
+               super(item, index, direction);
+               this.value = value;
+       }
+
+       @Override
+       public int compareTo(Object o) {
+               double targetValue = ((DoubleTypeItemPair)o).value;
+
+               if (direction == SWT.UP) {
+                       return value > targetValue ? -1 : 1;
+               } else {
+                       return value < targetValue ? -1 : 1;
+               }
+       }
+
+}
@@ -33,16 +33,16 @@ import org.eclipse.swt.SWT;
 import org.tizen.emulator.manager.ui.table.TableItem;
 import org.tizen.emulator.manager.ui.table.TableItemComparable;
 
-public class ItemProfilePair extends TableItemComparable {
+public class IntegerTypeItemPair extends TableItemComparable {
        private int priority;
-       public ItemProfilePair(TableItem item, int index, int direction, int priority) {
+       public IntegerTypeItemPair(TableItem item, int index, int direction, int priority) {
                super(item, index, direction);
                this.priority = priority;
        }
 
        @Override
        public int compareTo(Object o) {
-               int targetPriority = ((ItemProfilePair)o).priority;
+               int targetPriority = ((IntegerTypeItemPair)o).priority;
 
                if (direction == SWT.UP) {
                        return priority > targetPriority ? -1 : 1;
index de11287..b90069d 100644 (file)
@@ -148,10 +148,10 @@ public class VMListTable {
                                table.settingSortColumn(column);
                                // make item compareable list
                                int dir = table.getSortDirection();
-                               ItemProfilePair[] pairs = new ItemProfilePair[table.getItemCount()];
+                               IntegerTypeItemPair[] pairs = new IntegerTypeItemPair[table.getItemCount()];
                                for (int i = 0; i < table.getItemCount(); i++) {
                                        Profile profile = ((VMProperty)table.getItem(i).getData()).getPropertyValue().baseImage.getPlatform().getProfileClass();
-                                       pairs[i] = new ItemProfilePair(table.getItem(i), 1, dir, profile.getPriority());
+                                       pairs[i] = new IntegerTypeItemPair(table.getItem(i), 1, dir, profile.getPriority());
                                }
                                column.setTableItemPairs(pairs);
                                // sort table item