From: jihye424.kim Date: Thu, 14 Jan 2016 02:37:25 +0000 (+0900) Subject: vm button: replace with a new function that not use SWT X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=44c68844292a470b314edfec944da68fc5f3a2ac;p=sdk%2Femulator%2Femulator-manager.git vm button: replace with a new function that not use SWT - to build emulator manager resources without SWT lib -- remove Canvas, GC., Color class ... -- use wrapper class Change-Id: I376c6e923530364c9b44be0b006795f96e0b75fb Signed-off-by: jihye424.kim --- diff --git a/src/org/tizen/emulator/manager/ui/widgets/CommonVMButtonPainter.java b/src/org/tizen/emulator/manager/ui/widgets/CommonVMButtonPainter.java index 461f62c..6387c09 100644 --- a/src/org/tizen/emulator/manager/ui/widgets/CommonVMButtonPainter.java +++ b/src/org/tizen/emulator/manager/ui/widgets/CommonVMButtonPainter.java @@ -30,14 +30,8 @@ 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; + } + } diff --git a/src/org/tizen/emulator/manager/ui/widgets/IVMButtonPainter.java b/src/org/tizen/emulator/manager/ui/widgets/IVMButtonPainter.java index 4223d53..4a3f0e1 100644 --- a/src/org/tizen/emulator/manager/ui/widgets/IVMButtonPainter.java +++ b/src/org/tizen/emulator/manager/ui/widgets/IVMButtonPainter.java @@ -29,14 +29,18 @@ 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 index 0000000..e77cf19 --- /dev/null +++ b/src/org/tizen/emulator/manager/ui/widgets/PaintGC.java @@ -0,0 +1,56 @@ +/* + * 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.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); + } +} diff --git a/src/org/tizen/emulator/manager/ui/widgets/VMButton.java b/src/org/tizen/emulator/manager/ui/widgets/VMButton.java index 74138f1..44abc2b 100644 --- a/src/org/tizen/emulator/manager/ui/widgets/VMButton.java +++ b/src/org/tizen/emulator/manager/ui/widgets/VMButton.java @@ -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); + } } };