From e8cb2cef4fa0f8f47b7d4d893f9b29a265c51dbb Mon Sep 17 00:00:00 2001 From: "jihye424.kim" Date: Thu, 15 Oct 2015 16:12:11 +0900 Subject: [PATCH] Device Template: add sorting routine to device template list - 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 --- .../tizen/emulator/manager/platform/Profile.java | 56 ++++++++++++++++++++ .../emulator/manager/platform/ProfileList.java | 1 + .../tableviewer/DeviceTemplateTableViewer.java | 61 +++++++++++++++++++--- .../ui/renewal/tableviewer/DoubleTypeItemPair.java | 54 +++++++++++++++++++ ...emProfilePair.java => IntegerTypeItemPair.java} | 6 +-- .../ui/renewal/tableviewer/VMListTable.java | 4 +- 6 files changed, 171 insertions(+), 11 deletions(-) create mode 100644 src/org/tizen/emulator/manager/ui/renewal/tableviewer/DoubleTypeItemPair.java rename src/org/tizen/emulator/manager/ui/renewal/tableviewer/{ItemProfilePair.java => IntegerTypeItemPair.java} (88%) diff --git a/src/org/tizen/emulator/manager/platform/Profile.java b/src/org/tizen/emulator/manager/platform/Profile.java index 0257275..6dd226d 100644 --- a/src/org/tizen/emulator/manager/platform/Profile.java +++ b/src/org/tizen/emulator/manager/platform/Profile.java @@ -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 getTemplateList() { + if (!isSortTemplateList) { + sortTemplateList(); + isSortTemplateList = true; + } return templateList; } @@ -381,4 +401,40 @@ public class Profile { } } }; + + static class TemplatePair implements Comparable { + 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; + } + }; } diff --git a/src/org/tizen/emulator/manager/platform/ProfileList.java b/src/org/tizen/emulator/manager/platform/ProfileList.java index e639770..c7616ac 100644 --- a/src/org/tizen/emulator/manager/platform/ProfileList.java +++ b/src/org/tizen/emulator/manager/platform/ProfileList.java @@ -323,6 +323,7 @@ public class ProfileList { for (Profile profile : profileList) { if (profile.getName().equals(template.getValue().getProfile())) { profile.addDeviceTemplate(template); + break; } } } diff --git a/src/org/tizen/emulator/manager/ui/renewal/tableviewer/DeviceTemplateTableViewer.java b/src/org/tizen/emulator/manager/ui/renewal/tableviewer/DeviceTemplateTableViewer.java index 7676d77..8cf86d8 100644 --- a/src/org/tizen/emulator/manager/ui/renewal/tableviewer/DeviceTemplateTableViewer.java +++ b/src/org/tizen/emulator/manager/ui/renewal/tableviewer/DeviceTemplateTableViewer.java @@ -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 index 0000000..1306348 --- /dev/null +++ b/src/org/tizen/emulator/manager/ui/renewal/tableviewer/DoubleTypeItemPair.java @@ -0,0 +1,54 @@ +/* + * Emulator Manager + * + * Copyright (C) 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * JiHye Kim + * Minkee Lee + * SeokYeon Hwang + * Sangho Park + * + * 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; + } + } + +} diff --git a/src/org/tizen/emulator/manager/ui/renewal/tableviewer/ItemProfilePair.java b/src/org/tizen/emulator/manager/ui/renewal/tableviewer/IntegerTypeItemPair.java similarity index 88% rename from src/org/tizen/emulator/manager/ui/renewal/tableviewer/ItemProfilePair.java rename to src/org/tizen/emulator/manager/ui/renewal/tableviewer/IntegerTypeItemPair.java index 0466480..2c27e91 100644 --- a/src/org/tizen/emulator/manager/ui/renewal/tableviewer/ItemProfilePair.java +++ b/src/org/tizen/emulator/manager/ui/renewal/tableviewer/IntegerTypeItemPair.java @@ -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; diff --git a/src/org/tizen/emulator/manager/ui/renewal/tableviewer/VMListTable.java b/src/org/tizen/emulator/manager/ui/renewal/tableviewer/VMListTable.java index de11287..b90069d 100644 --- a/src/org/tizen/emulator/manager/ui/renewal/tableviewer/VMListTable.java +++ b/src/org/tizen/emulator/manager/ui/renewal/tableviewer/VMListTable.java @@ -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 -- 2.7.4