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 {
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
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;
+ }
+
}
--- /dev/null
+/*
+ * 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);
+ }
+}
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);
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);
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;
// TODO Auto-generated method stub
}
});
+
changeLaunchButtonState();
}
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);
}
}
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()) {
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);
+ }
}
};