From b4ed4ee8f1a8df875e0bfe5c31f7153ea132b3e3 Mon Sep 17 00:00:00 2001 From: "jihye424.kim" Date: Mon, 30 Nov 2015 16:21:11 +0900 Subject: [PATCH] widget: replace function that use SWT with a new function that not use SWT. - for success to build emulator manager resources without swt library -- remove Canvas, GC, Color, PaintListener, SelectionListner... -- replace wrapper class, other function that not use SWT Change-Id: I9964fdb9dd79e6873429281cbe78973142aa1cc6 Signed-off-by: jihye424.kim --- .../ui/detail/item/template/ComboSubViewItem.java | 13 ++- .../manager/ui/widgets/CommonVMButtonPainter.java | 116 +++++++++++++-------- .../manager/ui/widgets/IVMButtonPainter.java | 5 +- .../tizen/emulator/manager/ui/widgets/PaintGC.java | 56 ++++++++++ .../emulator/manager/ui/widgets/VMButton.java | 9 +- 5 files changed, 150 insertions(+), 49 deletions(-) create mode 100644 src/org/tizen/emulator/manager/ui/widgets/PaintGC.java diff --git a/src/org/tizen/emulator/manager/ui/detail/item/template/ComboSubViewItem.java b/src/org/tizen/emulator/manager/ui/detail/item/template/ComboSubViewItem.java index f2dae2a..18fc36e 100644 --- a/src/org/tizen/emulator/manager/ui/detail/item/template/ComboSubViewItem.java +++ b/src/org/tizen/emulator/manager/ui/detail/item/template/ComboSubViewItem.java @@ -117,11 +117,7 @@ public class ComboSubViewItem extends DetailSubViewItem { combo.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { - newValue = combo.getText(); - - if (!parentItem.isCreateMode()) { - parentItem.getListener().ChangeValue(parentItem.getThis()); - } + itemSelected(); } @Override @@ -132,6 +128,13 @@ public class ComboSubViewItem extends DetailSubViewItem { } + protected void itemSelected() { + newValue = combo.getText(); + + if (!parentItem.isCreateMode()) { + parentItem.getListener().ChangeValue(parentItem.getThis()); + } + } @Override public boolean settingDetailItem(VMPropertyValue value) { diff --git a/src/org/tizen/emulator/manager/ui/widgets/CommonVMButtonPainter.java b/src/org/tizen/emulator/manager/ui/widgets/CommonVMButtonPainter.java index ac92c1b..a61fd22 100644 --- a/src/org/tizen/emulator/manager/ui/widgets/CommonVMButtonPainter.java +++ b/src/org/tizen/emulator/manager/ui/widgets/CommonVMButtonPainter.java @@ -31,13 +31,16 @@ package org.tizen.emulator.manager.ui.widgets; import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; 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.resources.FontResources; import org.tizen.emulator.manager.vms.SKIN_SHAPE; +import org.tizen.emulator.manager.vms.VMProperty; public abstract class CommonVMButtonPainter implements IVMButtonPainter { @@ -53,61 +56,92 @@ 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); + public PaintListener getPaintListener() { + return paintListener; + } - if (image == null) { - return; - } + private PaintListener paintListener = new PaintListener() { + @Override + public void paintControl(PaintEvent e) { + VMButton button = (VMButton) e.widget; + WSTATE state = button.currentState(); + Image image = button.getImage(state); - SKIN_SHAPE skinShape = null; - if (button.getProperty() != null) { - Skin skin = button.getProperty().getPropertyValue().skin; - if (skin != null) { - skinShape = skin.getSkinShape(); + if (image == null) { + return; } - } - if (button.getProperty() != null) { - if (button.getProperty().isRunning() - || !button.getProperty().isAvailable()) { - button.getLaunchButton().setEnabled(false); - } else { - button.getLaunchButton().setEnabled(true); + 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()) { - if (state == WSTATE.HOVER || state == WSTATE.SELECTED_HOVER) { - image = PluginImageResources.VM_IMAGE_CUSTOM_HOVER - .getImage(button.getPlatformName(), skinShape); + if (button.getProperty() != null) { + if (button.getProperty().isRunning() + || !button.getProperty().isAvailable()) { + button.getLaunchButton().setEnabled(false); } else { - image = PluginImageResources.VM_IMAGE_CUSTOM_NORMAL - .getImage(button.getPlatformName(), skinShape); + button.getLaunchButton().setEnabled(true); + } + + // 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; } } - if (image == null) { - return; + + Rectangle rect = ((Canvas) e.widget).getClientArea(); + GC gc = e.gc; + + 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); } + + drawButtonText(gc, rect, button); + } - Rectangle rect = ((Canvas) e.widget).getClientArea(); - GC gc = e.gc; + }; + + @Override + public 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.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); - } - drawButtonText(gc, rect, button); + gc.drawString(button.getTitle(), button.getTitle_x(), TITLE_Y_OFFSET, true); + + gc.setForeground(button.getFontColor(WSTATE.NORMAL)); + + // drawing information + drawButtonText(new PaintGC(gc), button.getProperty()); + } + + @Override + public void drawButtonText(PaintGC gc, VMProperty property) { + // not to use + // override for compatibility (prevent build break) } @Override diff --git a/src/org/tizen/emulator/manager/ui/widgets/IVMButtonPainter.java b/src/org/tizen/emulator/manager/ui/widgets/IVMButtonPainter.java index 4223d53..babcda1 100644 --- a/src/org/tizen/emulator/manager/ui/widgets/IVMButtonPainter.java +++ b/src/org/tizen/emulator/manager/ui/widgets/IVMButtonPainter.java @@ -32,8 +32,11 @@ 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 interface IVMButtonPainter { + public PaintListener getPaintListener(); + public void drawButtonText(PaintGC gc, VMProperty property); public void drawButtonText(GC gc, Rectangle rect, VMButton button); // Offset in VMButton. public int getLaunchButtonBottomOffset(); 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 6b974d2..3954880 100644 --- a/src/org/tizen/emulator/manager/ui/widgets/VMButton.java +++ b/src/org/tizen/emulator/manager/ui/widgets/VMButton.java @@ -104,8 +104,13 @@ public class VMButton extends ImageButton { platformName = ""; //$NON-NLS-1$ } + PaintListener painterListener = null; if (item != null) { - this.setPainListener((PaintListener)item.getInstance()); + IVMButtonPainter painter = (IVMButtonPainter)item.getInstance(); + painterListener = painter.getPaintListener(); + } + if (painterListener != null) { + this.setPainListener(painterListener); launchButtonLeftOffset = ((CommonVMButtonPainter)item.getInstance()).getLaunchButtonLeftOffset(); launchButtonBottomOffset = ((CommonVMButtonPainter)item.getInstance()).getLaunchButtonBottomOffset(); titleOffset = ((CommonVMButtonPainter)item.getInstance()).getTitleOffset(); @@ -354,7 +359,7 @@ public class VMButton extends ImageButton { 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$ } - + }; -- 2.7.4