vm button: replace with a new function that not use SWT
authorjihye424.kim <jihye424.kim@samsung.com>
Thu, 14 Jan 2016 02:37:25 +0000 (11:37 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Wed, 20 Jan 2016 05:07:14 +0000 (14:07 +0900)
- to build emulator manager resources without SWT lib
-- remove Canvas, GC., Color class ...
-- use wrapper class

Change-Id: I376c6e923530364c9b44be0b006795f96e0b75fb
Signed-off-by: jihye424.kim <jihye424.kim@samsung.com>
src/org/tizen/emulator/manager/ui/widgets/CommonVMButtonPainter.java
src/org/tizen/emulator/manager/ui/widgets/IVMButtonPainter.java
src/org/tizen/emulator/manager/ui/widgets/PaintGC.java [new file with mode: 0644]
src/org/tizen/emulator/manager/ui/widgets/VMButton.java

index 461f62c..6387c09 100644 (file)
 
 package org.tizen.emulator.manager.ui.widgets;
 
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-import org.tizen.emulator.manager.platform.Skin;
-import org.tizen.emulator.manager.plugin.PluginImageResources;
-import org.tizen.emulator.manager.vms.SKIN_SHAPE;
+import org.tizen.emulator.manager.vms.VMProperty;
+import org.tizen.emulator.manager.vms.VMPropertyValue;
 
 public abstract class CommonVMButtonPainter implements IVMButtonPainter {
 
@@ -53,54 +47,28 @@ public abstract class CommonVMButtonPainter implements IVMButtonPainter {
        protected int TITLE_X_OFFSET = 9;
 
        @Override
-       public void paintControl(PaintEvent e) {
-               VMButton button = (VMButton) e.widget;
-               WSTATE state = button.currentState();
-               Image image = button.getImage(state);
-
-               if (image == null) {
+       public void drawButtonText(PaintGC gc, VMProperty property) {
+               // this is temporary source code
+               if (property == null) {
                        return;
                }
 
-               SKIN_SHAPE skinShape = null;
-               if (button.getProperty() != null) {
-                       Skin skin = button.getProperty().getPropertyValue().skin;
-                       if (skin != null) {
-                               skinShape = skin.getSkinShape();
-                       }
-               }
-
-               if (button.getProperty() != null) {
-                       // 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;
-                       }
-               }
-
-               Rectangle rect = ((Canvas) e.widget).getClientArea();
-               GC gc = e.gc;
+               VMPropertyValue value = property.getPropertyValue();
+               String version = value.baseImage.isStandard() ?
+                               property.getImageVersion() : "custom";
 
-               gc.setBackground(button.getBackgroundColor(button.currentState()));
-               gc.fillRectangle(rect);
-               gc.drawImage(image, rect.x + BUTTON_X_OFFSET, rect.y + BUTTON_Y_OFFSET);
-               if (button.isSelection()) {
-                       Image selectionImage = PluginImageResources.VM_IMAGE_SELECTED
-                                       .getImage(button.getPlatformName(), skinShape);
-                       if (selectionImage == null) {
-                               return;
-                       }
-                       gc.drawImage(selectionImage, rect.x, rect.y);
+               if (value.baseImage.getProfile().equals("tv")) {
+                       gc.drawString(version, TEXT_X_POINT, TEXT_Y_POINT, true);
+                       gc.drawString(property.getArch().name(), TEXT_X_POINT + 72, TEXT_Y_POINT, true);
+                       gc.drawString(Integer.toString(value.ramSize), TEXT_X_POINT, TEXT_Y_POINT + TEXT_Y_GAP, true);
+                       gc.drawString(value.resolution.getStrValue(), TEXT_X_POINT + 52, TEXT_Y_POINT + TEXT_Y_GAP, true);
+               } else {
+                       gc.drawString(version, TEXT_X_POINT, TEXT_Y_POINT + 2, true);
+                       gc.drawString(property.getArch().name(), TEXT_X_POINT, TEXT_Y_POINT + TEXT_Y_GAP + 1, true);
+                       gc.drawString(Integer.toString(value.ramSize), TEXT_X_POINT, TEXT_Y_POINT + TEXT_Y_GAP * 2, true);
+                       gc.drawString(value.resolution.getStrValue(), TEXT_RE_X_POINT, TEXT_Y_POINT + TEXT_Y_GAP * 3, true);
                }
-               drawButtonText(gc, rect, button);
+               //
        }
 
        @Override
@@ -117,4 +85,29 @@ public abstract class CommonVMButtonPainter implements IVMButtonPainter {
        public int getTitleOffset() {
                return TITLE_X_OFFSET;
        }
+       @Override
+       public int getTitleYOffset() {
+               return TITLE_Y_OFFSET;
+       }
+
+       @Override
+       public int getButtonXOffset() {
+               return BUTTON_X_OFFSET;
+       }
+
+       @Override
+       public int getButtonYOffset() {
+               return BUTTON_Y_OFFSET;
+       }
+
+       @Override
+       public int getTextXPoint() {
+               return TEXT_X_POINT;
+       }
+
+       @Override
+       public int getTextYPoint() {
+               return TEXT_Y_POINT;
+       }
+
 }
index 4223d53..4a3f0e1 100644 (file)
 
 package org.tizen.emulator.manager.ui.widgets;
 
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Rectangle;
+import org.tizen.emulator.manager.vms.VMProperty;
 
-public interface IVMButtonPainter extends PaintListener {
-       public void drawButtonText(GC gc, Rectangle rect, VMButton button);
+public interface IVMButtonPainter {
+       public void drawButtonText(PaintGC gc, VMProperty property);
        // Offset in VMButton.
        public int getLaunchButtonBottomOffset();
        public int getLaunchButtonLeftOffset();
+       // title x offset
        public int getTitleOffset();
+       public int getTitleYOffset();
+       public int getButtonXOffset();
+       public int getButtonYOffset();
+       public int getTextXPoint();
+       public int getTextYPoint();
 }
diff --git a/src/org/tizen/emulator/manager/ui/widgets/PaintGC.java b/src/org/tizen/emulator/manager/ui/widgets/PaintGC.java
new file mode 100644 (file)
index 0000000..e77cf19
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * 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.widgets;
+
+import org.eclipse.swt.graphics.GC;
+
+/**
+ * This class is used for separate SWT library from resources file
+ * This is wrapper class of SWT GC class
+ * @author jihye kim
+ *
+ */
+public class PaintGC {
+       private GC gc;
+       public PaintGC(GC gc) {
+               this.gc = gc;
+       }
+       public GC getGC() {
+               return gc;
+       }
+       public void setGC(GC gc) {
+               this.gc = gc;
+       }
+
+       public void drawString(String text, int x, int y, boolean isTransparent) {
+               gc.drawString(text, x, y, isTransparent);
+       }
+}
index 74138f1..44abc2b 100644 (file)
@@ -81,10 +81,18 @@ public class VMButton extends ImageButton {
        private int LAUNCH_BUTTON_WIDTH = 40;
        private int LAUNCH_BUTTON_HEIGHT =14;
 
-       private int launchButtonLeftOffset;
-       private int launchButtonBottomOffset;
+       private IVMButtonPainter vmPainter = null;
 
-       private int titleOffset;
+       private int LAUNCH_BUTTON_LEFT_OFFSET = 13;
+       private int LAUNCH_BUTTON_BOTTOM_OFFSET = 13;
+
+       private int BUTTON_X_OFFSET = 2;
+       private int BUTTON_Y_OFFSET = 3;
+       private int TEXT_X_POINT = 50 + BUTTON_X_OFFSET;
+       private int TEXT_Y_POINT = 36 + BUTTON_Y_OFFSET;
+       private int TEXT_Y_GAP = 18;
+       private int TITLE_X_OFFSET = 9;
+       private int TITLE_Y_OFFSET = 6;
 
        public VMButton(Composite parent, int style, Platform platform, VMProperty property) {
                super(parent, style);
@@ -104,18 +112,21 @@ public class VMButton extends ImageButton {
                        platformName = ""; //$NON-NLS-1$
                }
 
-               if (item != null) {
-                       this.setPainListener((PaintListener)item.getInstance());
-                       launchButtonLeftOffset = ((CommonVMButtonPainter)item.getInstance()).getLaunchButtonLeftOffset();
-                       launchButtonBottomOffset = ((CommonVMButtonPainter)item.getInstance()).getLaunchButtonBottomOffset();
-                       titleOffset = ((CommonVMButtonPainter)item.getInstance()).getTitleOffset();
-               } else {
-                       this.setPainListener(VMButtonPaintListener);
-                       launchButtonLeftOffset = 13;
-                       launchButtonBottomOffset = 13;
-                       titleOffset = 9;
+               // loading plugin's text painter
+               vmPainter = (IVMButtonPainter)item.getInstance();;
+               if (vmPainter != null) {
+                       LAUNCH_BUTTON_LEFT_OFFSET = vmPainter.getLaunchButtonLeftOffset();
+                       LAUNCH_BUTTON_BOTTOM_OFFSET = vmPainter.getLaunchButtonBottomOffset();
+                       TITLE_X_OFFSET = vmPainter.getTitleOffset();
+                       TITLE_Y_OFFSET = vmPainter.getTitleYOffset();
+                       TEXT_X_POINT = vmPainter.getTextXPoint();
+                       TEXT_Y_POINT = vmPainter.getTextYPoint();
+                       BUTTON_X_OFFSET = vmPainter.getButtonXOffset();
+                       BUTTON_Y_OFFSET = vmPainter.getButtonYOffset();
                }
 
+               this.setPainListener(VMButtonPaintListener);
+
                settingImage();
                settingLaunchButton();
                addListener(SWT.MouseEnter, mouseListener);
@@ -176,8 +187,8 @@ public class VMButton extends ImageButton {
 
                FormData data = new FormData();
                //data.top      = new FormAttachment(0, 119 + H_OFFSET);
-               data.bottom = new FormAttachment(100, - launchButtonBottomOffset);
-               data.left       = new FormAttachment(0, + launchButtonLeftOffset);
+               data.bottom = new FormAttachment(100, - LAUNCH_BUTTON_BOTTOM_OFFSET);
+               data.left       = new FormAttachment(0, + LAUNCH_BUTTON_LEFT_OFFSET);
                data.width      = LAUNCH_BUTTON_WIDTH;
                data.height     = LAUNCH_BUTTON_HEIGHT;
 
@@ -196,6 +207,7 @@ public class VMButton extends ImageButton {
                                // TODO Auto-generated method stub
                        }
                });
+
                changeLaunchButtonState();
 
        }
@@ -266,13 +278,13 @@ public class VMButton extends ImageButton {
                Point p = null;
                p = gc.textExtent(property.getName(), SWT.DRAW_MNEMONIC);
 
-               if (p.x < (BUTTON_WIDTH - (titleOffset * 2))) {
+               if (p.x < (BUTTON_WIDTH - (TITLE_X_OFFSET * 2))) {
                        title_x = ((BUTTON_WIDTH - p.x) / 2);
                        title = property.getName();
                } else {
-                       title_x = titleOffset;
+                       title_x = TITLE_X_OFFSET;
                        String name = property.getName();
-                       while (p.x > ((BUTTON_WIDTH - (titleOffset * 2)) - omitLen)) {
+                       while (p.x > ((BUTTON_WIDTH - (TITLE_X_OFFSET * 2)) - omitLen)) {
                                name = name.substring(0, name.length() - 1);
                                p = gc.textExtent(name, SWT.DRAW_MNEMONIC);
                        }
@@ -311,21 +323,23 @@ public class VMButton extends ImageButton {
        }
 
        private PaintListener VMButtonPaintListener = new PaintListener() {
-               private int W_OFFSET = 2;
-               private int H_OFFSET = 3;
-               private int X_POINT = 40 + W_OFFSET;
-               private int Y_POINT = 27 + H_OFFSET;
-               private int Y_GAP = 23;
 
                @Override
                public void paintControl(PaintEvent e) {
-                       Image image = images.get(state.getId());
+                       VMButton button = (VMButton) e.widget;
+                       WSTATE state = button.currentState();
+                       Image image = button.getImage(state);
+
                        if (image == null) {
                                return;
                        }
 
-                       if (getProperty() != null) {
-                               getLaunchButton().setEnabled(false);
+                       SKIN_SHAPE skinShape = null;
+                       if (button.getProperty() != null) {
+                               Skin skin = button.getProperty().getPropertyValue().skin;
+                               if (skin != null) {
+                                       skinShape = skin.getSkinShape();
+                               }
 
                                // If VM is custom,
                                if (!button.getProperty().getPropertyValue().baseImage.isStandard()) {
@@ -345,31 +359,39 @@ public class VMButton extends ImageButton {
                        Rectangle rect = ((Canvas) e.widget).getClientArea();
                        GC gc = e.gc;
 
-                       gc.setBackground(colors.get(state.getId()));
+                       gc.setBackground(button.getBackgroundColor(button.currentState()));
                        gc.fillRectangle(rect);
-                       gc.drawImage(image, rect.x + W_OFFSET, rect.y + H_OFFSET);
-                       if (isSelection()) {
-                               gc.drawImage(PluginImageResources.VM_IMAGE_SELECTED.getImage(platformName, null), rect.x, rect.y);
+                       gc.drawImage(image, rect.x + BUTTON_X_OFFSET, rect.y + BUTTON_Y_OFFSET);
+                       if (button.isSelection()) {
+                               Image selectionImage = PluginImageResources.VM_IMAGE_SELECTED
+                                               .getImage(button.getPlatformName(), skinShape);
+                               if (selectionImage == null) {
+                                       return;
+                               }
+                               gc.drawImage(selectionImage, rect.x, rect.y);
                        }
-                       drawButtonText(gc, rect);
-               }
 
-               private void drawButtonText(GC gc, Rectangle rect) {
-                       if (getProperty() == null) {
-                               return;
-                       }
+                       drawButtonText(gc, rect, button);
+               }
 
+               private void drawButtonText(GC gc, Rectangle rect, VMButton button) {
                        // drawing Title
+                       gc.setForeground(button.getFontColor(button.currentState()));
                        gc.setFont(FontResources.VM_BUTTON_TITLE_FONT.getFont());
-                       gc.setForeground(fontColors.get(state.getId()));
-                       gc.drawString(title, title_x, 8, true);
 
-                       // reset font color
-                       gc.setForeground(fontColors.get(WSTATE.NORMAL.getId()));
+                       gc.setBackground(button.getBackgroundColor(button.currentState()));
+                       gc.drawString(button.getTitle(), button.getTitle_x(), TITLE_Y_OFFSET, true);
 
-                       gc.drawString(Messages.getString("VMButton.FailedToLoad.0"), X_POINT, Y_POINT, true); //$NON-NLS-1$
-                       gc.drawString(Messages.getString("VMButton.FailedToLoad.1"), X_POINT, Y_POINT + Y_GAP, true); //$NON-NLS-1$
-                       gc.drawString(Messages.getString("VMButton.FailedToLoad.2"), X_POINT, Y_POINT + Y_GAP * 2, true); //$NON-NLS-1$
+                       gc.setForeground(button.getFontColor(WSTATE.NORMAL));
+
+                       // drawing information
+                       if (vmPainter != null) {
+                               vmPainter.drawButtonText(new PaintGC(gc), button.getProperty());
+                       } else {
+                               gc.drawString(Messages.getString("VMButton.FailedToLoad.0"), TEXT_X_POINT, TEXT_Y_POINT, true);
+                               gc.drawString(Messages.getString("VMButton.FailedToLoad.1"), TEXT_X_POINT, TEXT_Y_POINT + TEXT_Y_GAP, true);
+                               gc.drawString(Messages.getString("VMButton.FailedToLoad.2"), TEXT_X_POINT, TEXT_Y_POINT + TEXT_Y_GAP * 2, true);
+                       }
                }
        };