From: minkee.lee Date: Wed, 19 Aug 2015 07:56:57 +0000 (+0900) Subject: ui: added nine patch button widget. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=51571e787b8b4941693271cfb3d1baf6513e6157;p=sdk%2Femulator%2Femulator-manager.git ui: added nine patch button widget. - Gray button widget is Added. Change-Id: Iaec5498898ce2163941b106c439315ff94102774 Signed-off-by: minkee.lee --- diff --git a/resource/renewal/res/9p_btn_disable_b.png b/resource/renewal/res/9p_btn_disable_b.png new file mode 100644 index 0000000..e6d69cb Binary files /dev/null and b/resource/renewal/res/9p_btn_disable_b.png differ diff --git a/resource/renewal/res/9p_btn_disable_l.png b/resource/renewal/res/9p_btn_disable_l.png new file mode 100644 index 0000000..be4f1d2 Binary files /dev/null and b/resource/renewal/res/9p_btn_disable_l.png differ diff --git a/resource/renewal/res/9p_btn_disable_lb.png b/resource/renewal/res/9p_btn_disable_lb.png new file mode 100644 index 0000000..6208189 Binary files /dev/null and b/resource/renewal/res/9p_btn_disable_lb.png differ diff --git a/resource/renewal/res/9p_btn_disable_lt.png b/resource/renewal/res/9p_btn_disable_lt.png new file mode 100644 index 0000000..69c3d37 Binary files /dev/null and b/resource/renewal/res/9p_btn_disable_lt.png differ diff --git a/resource/renewal/res/9p_btn_disable_r.png b/resource/renewal/res/9p_btn_disable_r.png new file mode 100644 index 0000000..be4f1d2 Binary files /dev/null and b/resource/renewal/res/9p_btn_disable_r.png differ diff --git a/resource/renewal/res/9p_btn_disable_rb.png b/resource/renewal/res/9p_btn_disable_rb.png new file mode 100644 index 0000000..cab623b Binary files /dev/null and b/resource/renewal/res/9p_btn_disable_rb.png differ diff --git a/resource/renewal/res/9p_btn_disable_rt.png b/resource/renewal/res/9p_btn_disable_rt.png new file mode 100644 index 0000000..90953b5 Binary files /dev/null and b/resource/renewal/res/9p_btn_disable_rt.png differ diff --git a/resource/renewal/res/9p_btn_disable_t.png b/resource/renewal/res/9p_btn_disable_t.png new file mode 100644 index 0000000..e6d69cb Binary files /dev/null and b/resource/renewal/res/9p_btn_disable_t.png differ diff --git a/resource/renewal/res/9p_btn_hover_b.png b/resource/renewal/res/9p_btn_hover_b.png new file mode 100644 index 0000000..da83064 Binary files /dev/null and b/resource/renewal/res/9p_btn_hover_b.png differ diff --git a/resource/renewal/res/9p_btn_hover_l.png b/resource/renewal/res/9p_btn_hover_l.png new file mode 100644 index 0000000..786e413 Binary files /dev/null and b/resource/renewal/res/9p_btn_hover_l.png differ diff --git a/resource/renewal/res/9p_btn_hover_lb.png b/resource/renewal/res/9p_btn_hover_lb.png new file mode 100644 index 0000000..aab8e93 Binary files /dev/null and b/resource/renewal/res/9p_btn_hover_lb.png differ diff --git a/resource/renewal/res/9p_btn_hover_lt.png b/resource/renewal/res/9p_btn_hover_lt.png new file mode 100644 index 0000000..bec0d3e Binary files /dev/null and b/resource/renewal/res/9p_btn_hover_lt.png differ diff --git a/resource/renewal/res/9p_btn_hover_r.png b/resource/renewal/res/9p_btn_hover_r.png new file mode 100644 index 0000000..41f926c Binary files /dev/null and b/resource/renewal/res/9p_btn_hover_r.png differ diff --git a/resource/renewal/res/9p_btn_hover_rb.png b/resource/renewal/res/9p_btn_hover_rb.png new file mode 100644 index 0000000..ded407a Binary files /dev/null and b/resource/renewal/res/9p_btn_hover_rb.png differ diff --git a/resource/renewal/res/9p_btn_hover_rt.png b/resource/renewal/res/9p_btn_hover_rt.png new file mode 100644 index 0000000..f5f8860 Binary files /dev/null and b/resource/renewal/res/9p_btn_hover_rt.png differ diff --git a/resource/renewal/res/9p_btn_hover_t.png b/resource/renewal/res/9p_btn_hover_t.png new file mode 100644 index 0000000..5426b8a Binary files /dev/null and b/resource/renewal/res/9p_btn_hover_t.png differ diff --git a/resource/renewal/res/9p_btn_normal_b.png b/resource/renewal/res/9p_btn_normal_b.png new file mode 100644 index 0000000..4cf31ca Binary files /dev/null and b/resource/renewal/res/9p_btn_normal_b.png differ diff --git a/resource/renewal/res/9p_btn_normal_l.png b/resource/renewal/res/9p_btn_normal_l.png new file mode 100644 index 0000000..e30bf50 Binary files /dev/null and b/resource/renewal/res/9p_btn_normal_l.png differ diff --git a/resource/renewal/res/9p_btn_normal_lb.png b/resource/renewal/res/9p_btn_normal_lb.png new file mode 100644 index 0000000..04fa396 Binary files /dev/null and b/resource/renewal/res/9p_btn_normal_lb.png differ diff --git a/resource/renewal/res/9p_btn_normal_lt.png b/resource/renewal/res/9p_btn_normal_lt.png new file mode 100644 index 0000000..a139ada Binary files /dev/null and b/resource/renewal/res/9p_btn_normal_lt.png differ diff --git a/resource/renewal/res/9p_btn_normal_r.png b/resource/renewal/res/9p_btn_normal_r.png new file mode 100644 index 0000000..e30bf50 Binary files /dev/null and b/resource/renewal/res/9p_btn_normal_r.png differ diff --git a/resource/renewal/res/9p_btn_normal_rb.png b/resource/renewal/res/9p_btn_normal_rb.png new file mode 100644 index 0000000..ed2aea9 Binary files /dev/null and b/resource/renewal/res/9p_btn_normal_rb.png differ diff --git a/resource/renewal/res/9p_btn_normal_rt.png b/resource/renewal/res/9p_btn_normal_rt.png new file mode 100644 index 0000000..2e22619 Binary files /dev/null and b/resource/renewal/res/9p_btn_normal_rt.png differ diff --git a/resource/renewal/res/9p_btn_normal_t.png b/resource/renewal/res/9p_btn_normal_t.png new file mode 100644 index 0000000..4cf31ca Binary files /dev/null and b/resource/renewal/res/9p_btn_normal_t.png differ diff --git a/resource/renewal/res/9p_btn_push_b.png b/resource/renewal/res/9p_btn_push_b.png new file mode 100644 index 0000000..edd289e Binary files /dev/null and b/resource/renewal/res/9p_btn_push_b.png differ diff --git a/resource/renewal/res/9p_btn_push_l.png b/resource/renewal/res/9p_btn_push_l.png new file mode 100644 index 0000000..7a657a9 Binary files /dev/null and b/resource/renewal/res/9p_btn_push_l.png differ diff --git a/resource/renewal/res/9p_btn_push_lb.png b/resource/renewal/res/9p_btn_push_lb.png new file mode 100644 index 0000000..43f0242 Binary files /dev/null and b/resource/renewal/res/9p_btn_push_lb.png differ diff --git a/resource/renewal/res/9p_btn_push_lt.png b/resource/renewal/res/9p_btn_push_lt.png new file mode 100644 index 0000000..8faae96 Binary files /dev/null and b/resource/renewal/res/9p_btn_push_lt.png differ diff --git a/resource/renewal/res/9p_btn_push_r.png b/resource/renewal/res/9p_btn_push_r.png new file mode 100644 index 0000000..0871270 Binary files /dev/null and b/resource/renewal/res/9p_btn_push_r.png differ diff --git a/resource/renewal/res/9p_btn_push_rb.png b/resource/renewal/res/9p_btn_push_rb.png new file mode 100644 index 0000000..f581be3 Binary files /dev/null and b/resource/renewal/res/9p_btn_push_rb.png differ diff --git a/resource/renewal/res/9p_btn_push_rt.png b/resource/renewal/res/9p_btn_push_rt.png new file mode 100644 index 0000000..59c2e50 Binary files /dev/null and b/resource/renewal/res/9p_btn_push_rt.png differ diff --git a/resource/renewal/res/9p_btn_push_t.png b/resource/renewal/res/9p_btn_push_t.png new file mode 100644 index 0000000..fe030b7 Binary files /dev/null and b/resource/renewal/res/9p_btn_push_t.png differ diff --git a/src/org/tizen/emulator/manager/renewal/resources/ColorResources.java b/src/org/tizen/emulator/manager/renewal/resources/ColorResources.java new file mode 100644 index 0000000..479be35 --- /dev/null +++ b/src/org/tizen/emulator/manager/renewal/resources/ColorResources.java @@ -0,0 +1,72 @@ +/* + * 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.renewal.resources; + +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +public enum ColorResources { + // nine patch button + GRAY_BTN_NORMAL(149, 159, 164), + GRAY_BTN_HOVER(149, 159, 164), + GRAY_BTN_PUSH(100, 110, 144), + GRAY_BTN_DISABLE(208, 208, 208), + + GRAY_BTN_FONT(255, 255, 255); + + Color color; + int r,g,b; + + ColorResources(int r, int g, int b) { + this.r = r; + this.g = g; + this.b = b; + } + + public Color getColor() { + if (this.color == null) { + this.color = createColor(new RGB(r,g,b)); + } + return color; + } + + public Color getColorObject() { + return color; + } + + private Color createColor(RGB rgb) { + Display display = Display.getCurrent(); + if (display == null) { + throw new IllegalStateException(); + } + return new Color(display, rgb); + } +} diff --git a/src/org/tizen/emulator/manager/renewal/resources/FontResources.java b/src/org/tizen/emulator/manager/renewal/resources/FontResources.java new file mode 100644 index 0000000..f17cd20 --- /dev/null +++ b/src/org/tizen/emulator/manager/renewal/resources/FontResources.java @@ -0,0 +1,180 @@ +/* + * 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.renewal.resources; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.widgets.Display; +import org.tizen.emulator.manager.EmulatorManager; + +public enum FontResources { + GRAY_BTN_FONT("btn_font", resizeDefaultFont(10)), + + // * Toolbal Layout + // Main Title + TITLEBAR("titlebar", resizeDefaultFont(10)), //$NON-NLS-1$ + // Device Name + COMBO("combo", resizeDefaultFont(9)), //$NON-NLS-1$ + // Application Name + DROPDOWN("dropdown", resizeDefaultFont(9)), //$NON-NLS-1$ + // Timer + TIMER("timer", resizeDefaultFont(12)), //$NON-NLS-1$ + + // * Tab Layout + TAB_BUTTON_FONT("tab_button_font", setDefaultFontStyleAndSize(SWT.BOLD, 9)), //$NON-NLS-1$ + + // * List Layout + VM_BUTTON_TITLE_FONT("vm_button_title_font", setDefaultFontStyleAndSize(SWT.BOLD, 8)), //$NON-NLS-1$ + VM_BUTTON_FONT("vm_button_font", resizeDefaultFont(8)), //$NON-NLS-1$ + + // * Detail Layout + DETAIL_TOP_FONT("detail_top_font", setDefaultFontStyleAndSize(SWT.BOLD, 10)), //$NON-NLS-1$ + DETAIL_TITLE_FONT("detail_title_font", resizeDefaultFont(9)), //$NON-NLS-1$ + DETAIL_TITLE_FONT_BOLD("detail_title_font", setDefaultFontStyleAndSize(SWT.BOLD, 9)), //$NON-NLS-1$ + DETAIL_LABEL_FONT("datail_label_font", resizeDefaultFont(8)), //$NON-NLS-1$ + + // * Nomal button + BUTTON_FONT("button_font", resizeDefaultFont(9)), //$NON-NLS-1$ + + // * Combo button + COMBO_BUTTON_FONT("combo_button_font", resizeDefaultFont(8)), //$NON-NLS-1$ + + // * About Dlg. + ABOUT_TITLE("about_title", resizeDefaultFont(12)), //$NON-NLS-1$ + ABOUT_TEXT("about_text", resizeDefaultFont(9)), //$NON-NLS-1$ + DIALOG_BUTTON_FONT("dialog_button_font", resizeDefaultFont(10)), //$NON-NLS-1$ + + // * Status bar + STATUS_BAR_FONT("status_bar_font", resizeDefaultFont(9)), //$NON-NLS-1$ + STATUS_BAR_SUB_FONT("status_bar_sub_font", resizeDefaultFont(8)), //$NON-NLS-1$ + + // * Radio button + RADIO_BUTTON_FONT("radio_button_font", resizeDefaultFont(8)), //$NON-NLS-1$ + + // * Tree view + TREE_CREATE_FONT("tree_creaet_font", setDefaultFontStyleAndSize(SWT.BOLD, 9)), //$NON-NLS-1$ + TREE_HEADER_FONT("tree_header_font", resizeDefaultFont(9)), //$NON-NLS-1$ + TREE_ITEM_FONT("tree_item_font", resizeDefaultFont(8)), //$NON-NLS-1$ + + // * not support + TOOLTIP("tooltip", resizeDefaultFont(9)); //$NON-NLS-1$ + + String name; + Font font; + FontData[] data; + FontResources(String name, FontData[] data) { + this.name = name; + this.data = data; + } + + public Font getFont() { + return getFont(name, data); + } + + public Font getFont(String fontName, FontData[] fontData) { + if (this.font == null) { + this.font = new Font(Display.getCurrent(), fontData); + } + return font; + } + + //private static FontRegistry fontRegistry = new FontRegistry(); + private static Font defaultFont = null; + static { + defaultFont = getDADefaultFont(); + } + + public static FontData[] resizeDefaultFont(int size) { + if (defaultFont == null) { + defaultFont = getDADefaultFont(); + } + + if (EmulatorManager.isMac()) { + size = size + 2; + } + + FontData[] fontData = defaultFont.getFontData(); + for (int i = 0; i < fontData.length; i++) { + fontData[i].setHeight(size); + } + return fontData; + } + + public static FontData[] setDefaultFontStyle(int style) { + if (defaultFont == null) { + defaultFont = getDADefaultFont(); + } + FontData[] fontData = defaultFont.getFontData(); + for (int i = 0; i < fontData.length; i++) { + fontData[i].setStyle(style); + } + return fontData; + } + + public static FontData[] setDefaultFontStyleAndSize(int style, int size) { + if (defaultFont == null) { + defaultFont = getDADefaultFont(); + } + + if (EmulatorManager.isMac()) { + size = size + 2; + } + + FontData[] fontData = defaultFont.getFontData(); + for (int i = 0; i < fontData.length; i++) { + fontData[i].setStyle(style); + fontData[i].setHeight(size); + } + return fontData; + } + + public static Font getDADefaultFont() { + if (defaultFont == null) { + String fontName = null; + if (EmulatorManager.isLinux()) { + fontName = "Dejavu Sans"; //$NON-NLS-1$ + } else if (EmulatorManager.isWin()) { + fontName = "Verdana"; //$NON-NLS-1$ + } else if (EmulatorManager.isMac()) { + fontName = "Lucida Grande"; //$NON-NLS-1$ + } else { + defaultFont = Display.getCurrent().getSystemFont(); + return defaultFont; + } + defaultFont = EmulatorManager.isMac() + ? new Font(Display.getCurrent(), new FontData[] { new FontData(fontName, 11, SWT.NORMAL) }) + : new Font(Display.getCurrent(), new FontData[] { new FontData(fontName, 9, SWT.NORMAL) }); + } + + return defaultFont; + } +} \ No newline at end of file diff --git a/src/org/tizen/emulator/manager/renewal/resources/ImageResources.java b/src/org/tizen/emulator/manager/renewal/resources/ImageResources.java new file mode 100644 index 0000000..f15d759 --- /dev/null +++ b/src/org/tizen/emulator/manager/renewal/resources/ImageResources.java @@ -0,0 +1,202 @@ +/* + * 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.renewal.resources; + +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.graphics.ImageLoader; +import org.eclipse.swt.widgets.Display; +import org.tizen.emulator.manager.logging.EMLogger; + +public enum ImageResources { + + // gray 9 patch button + GRAY_BTN_DISABLE_B("9p_btn_disable_b"), + GRAY_BTN_DISABLE_L("9p_btn_disable_l"), + GRAY_BTN_DISABLE_LB("9p_btn_disable_lb"), + GRAY_BTN_DISABLE_LT("9p_btn_disable_lt"), + GRAY_BTN_DISABLE_R("9p_btn_disable_r"), + GRAY_BTN_DISABLE_RB("9p_btn_disable_rb"), + GRAY_BTN_DISABLE_RT("9p_btn_disable_rt"), + GRAY_BTN_DISABLE_T("9p_btn_disable_t"), + GRAY_BTN_HOVER_B("9p_btn_hover_b"), + GRAY_BTN_HOVER_L("9p_btn_hover_l"), + GRAY_BTN_HOVER_LB("9p_btn_hover_lb"), + GRAY_BTN_HOVER_LT("9p_btn_hover_lt"), + GRAY_BTN_HOVER_R("9p_btn_hover_r"), + GRAY_BTN_HOVER_RB("9p_btn_hover_rb"), + GRAY_BTN_HOVER_RT("9p_btn_hover_rt"), + GRAY_BTN_HOVER_T("9p_btn_hover_t"), + GRAY_BTN_NORMAL_B("9p_btn_normal_b"), + GRAY_BTN_NORMAL_L ("9p_btn_normal_l"), + GRAY_BTN_NORMAL_LB("9p_btn_normal_lb"), + GRAY_BTN_NORMAL_LT("9p_btn_normal_lt"), + GRAY_BTN_NORMAL_R("9p_btn_normal_r"), + GRAY_BTN_NORMAL_RB("9p_btn_normal_rb"), + GRAY_BTN_NORMAL_RT("9p_btn_normal_rt"), + GRAY_BTN_NORMAL_T("9p_btn_normal_t"), + GRAY_BTN_PUSH_B("9p_btn_push_b"), + GRAY_BTN_PUSH_L("9p_btn_push_l"), + GRAY_BTN_PUSH_LB("9p_btn_push_lb"), + GRAY_BTN_PUSH_LT("9p_btn_push_lt"), + GRAY_BTN_PUSH_R("9p_btn_push_r"), + GRAY_BTN_PUSH_RB("9p_btn_push_rb"), + GRAY_BTN_PUSH_RT("9p_btn_push_rt"), + GRAY_BTN_PUSH_T("9p_btn_push_t") + + +// TAB_SELECTED_LEFT("tab_selected_left",ImageType.GIF), //$NON-NLS-1$ +// TAB_SELECTED_MIDDLE("tab_selected_middle"), //$NON-NLS-1$ + + ; + + String name; + Image image; + ImageType type; + + ImageResources(String name) { + this.name = name; + this.type = ImageType.PNG; + } + + ImageResources(String name, ImageType type) { + this.name = name; + this.type = type; + } + + public Image getImageObject() { + return image; + } + + public Image getImage() { + if (this.image == null) { + switch(this.type) { + case GIF: + this.image = ImageRegistry.getGifImage(name); + break; + case PNG: + this.image = ImageRegistry.getPngImage(name); + } + } + return image; + } + + public static Image getImage(String name, String extension) { + return ImageRegistry.getImage(name, extension); + } + + // for gif animation + private ImageData[] frames = null; + public ImageData[] getImageData() { + if (this.frames == null) { + frames = ImageRegistry.getImageData(name, type.getType()); + } + + return frames; + } + + public static ImageData[] getImageData(String name, String extension) { + return ImageRegistry.getImageData(name, extension); + } + + @Override + public String toString() { + return name; + } + + public static void dispose() { + for (ImageResources r : ImageResources.values()) { + r.image = null; + } + ImageRegistry.dispose(); + } +} + +class ImageRegistry { + //private static final String ID = "org.tizen.dynamicanalyzer"; + private static Map map = new HashMap(); + + public static void dispose() { + for (Image i : map.values()) { + i.dispose(); + } + } + + public static Image getImage(String name, String extension) { + Image i = map.get(name); + if (i == null) { + ClassLoader loader = ImageRegistry.class.getClassLoader(); + if (loader != null) { + InputStream is = loader.getResourceAsStream("renewal/res/" + name + "." + extension); //$NON-NLS-1$ //$NON-NLS-2$ + if (is != null) { + i = new Image(Display.getCurrent(), is); + map.put(name, i); + try { + is.close(); + } catch (IOException e) { + EMLogger.getLogger().info(e.getMessage()); + } + } + } + } + return i; + } + + public static ImageData[] getImageData(String name, String extension) { + ClassLoader loader = ImageRegistry.class.getClassLoader(); + ImageData[] frames = null; + if (loader != null) { + InputStream is = loader.getResourceAsStream("res/" + name + "." + extension); //$NON-NLS-1$ //$NON-NLS-2$ + if (is != null) { + frames = new ImageLoader().load(is); + try { + is.close(); + } catch (IOException e) { + EMLogger.getLogger().info(e.getMessage()); + } + } + } + return frames; + } + + public static Image getPngImage(String name) { + return getImage(name, "png"); //$NON-NLS-1$ + } + + public static Image getGifImage(String name) { + return getImage(name, "gif"); //$NON-NLS-1$ + } +} diff --git a/src/org/tizen/emulator/manager/renewal/resources/ImageType.java b/src/org/tizen/emulator/manager/renewal/resources/ImageType.java new file mode 100644 index 0000000..02371e9 --- /dev/null +++ b/src/org/tizen/emulator/manager/renewal/resources/ImageType.java @@ -0,0 +1,44 @@ +/* + * 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.renewal.resources; + +public enum ImageType { + PNG("png"),GIF("gif"); //$NON-NLS-1$ //$NON-NLS-2$ + + private String type; + ImageType(String type){ + this.type = type; + } + + public String getType() { + return type; + } +} diff --git a/src/org/tizen/emulator/manager/renewal/resources/PatchImageResources.java b/src/org/tizen/emulator/manager/renewal/resources/PatchImageResources.java new file mode 100644 index 0000000..75f9f20 --- /dev/null +++ b/src/org/tizen/emulator/manager/renewal/resources/PatchImageResources.java @@ -0,0 +1,93 @@ +/* + * 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.renewal.resources; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; +import org.tizen.emulator.manager.ui.renewal.widgets.NinePatchResourceInfo; + +public class PatchImageResources { + + public static Image getButtonImage(int width, int height, NinePatchResourceInfo ninePatchImagesInfo) { + Image lt = ninePatchImagesInfo.getLeftTopImage().getImage(); + Image t = ninePatchImagesInfo.getTopImage().getImage(); + Image rt = ninePatchImagesInfo.getRightTopImage().getImage(); + Image r = ninePatchImagesInfo.getRightImage().getImage(); + Image rb = ninePatchImagesInfo.getRightBottomImage().getImage(); + Image b = ninePatchImagesInfo.getBottomImage().getImage(); + Image lb = ninePatchImagesInfo.getLeftBottomImage().getImage(); + Image l = ninePatchImagesInfo.getLeftImage().getImage(); + + Image image = new Image(Display.getCurrent(), width, height); + + GC gc = new GC(image); + gc.setInterpolation(SWT.NONE); + gc.setBackground(ninePatchImagesInfo.getBackground().getColor()); + gc.fillRectangle(l.getImageData().width, t.getImageData().height, + width - l.getImageData().width - r.getImageData().width, + height - t.getImageData().height - b.getImageData().height); + + // draw top + gc.drawImage(lt, 0, 0); + gc.drawImage(t, 0, 0, t.getImageData().width, t.getImageData().height, + lt.getImageData().width, + 0, + width - lt.getImageData().width - rt.getImageData().width, + rt.getImageData().height); + gc.drawImage(rt, width - rt.getImageData().width, 0); + + // draw middle + gc.drawImage(l, 0, 0, l.getImageData().width, l.getImageData().height, + 0, + lt.getImageData().height, + l.getImageData().width, + height - lt.getImageData().height - lb.getImageData().height); + gc.drawImage(r, 0, 0, r.getImageData().width, r.getImageData().height, + width - r.getImageData().width, + rt.getImageData().height, + r.getImageData().width, + height - rt.getImageData().height - rb.getImageData().height); + + // draw bottom + gc.drawImage(lb, 0, height - lb.getImageData().height); + gc.drawImage(b, 0, 0, b.getImageData().width, b.getImageData().height, + lb.getImageData().width, + height - b.getImageData().height, + width - lb.getImageData().width - rb.getImageData().width, + b.getImageData().height); + gc.drawImage(rb, width - rb.getImageData().width, height - rb.getImageData().height); + gc.dispose(); + return image; + } + +} diff --git a/src/org/tizen/emulator/manager/ui/renewal/widgets/ButtonResourceInfo.java b/src/org/tizen/emulator/manager/ui/renewal/widgets/ButtonResourceInfo.java new file mode 100644 index 0000000..a2d8830 --- /dev/null +++ b/src/org/tizen/emulator/manager/ui/renewal/widgets/ButtonResourceInfo.java @@ -0,0 +1,109 @@ +/* + * 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.widgets; + +import java.util.HashMap; +import java.util.Map; + +import org.tizen.emulator.manager.renewal.resources.ColorResources; +import org.tizen.emulator.manager.renewal.resources.ImageResources; + +public class ButtonResourceInfo { + + private final Map map + = new HashMap(); + + private final WSTATE disableState = WSTATE.DISABLE_ON; + + public void setNormalImage(ColorResources background, + ImageResources lt, ImageResources t, + ImageResources rt, ImageResources r, + ImageResources rb, ImageResources b, + ImageResources lb, ImageResources l) { + setImages(WSTATE.NORMAL, background, lt, t, rt, r, rb, b, lb, l); + } + + public void setHoverImage(ColorResources background, + ImageResources lt, ImageResources t, + ImageResources rt, ImageResources r, + ImageResources rb, ImageResources b, + ImageResources lb, ImageResources l) { + setImages(WSTATE.HOVER, background, lt, t, rt, r, rb, b, lb, l); + } + + public void setPushImage(ColorResources background, + ImageResources lt, ImageResources t, + ImageResources rt, ImageResources r, + ImageResources rb, ImageResources b, + ImageResources lb, ImageResources l) { + setImages(WSTATE.PUSH, background, lt, t, rt, r, rb, b, lb, l); + } + + public void setDisableImage(ColorResources background, + ImageResources lt, ImageResources t, + ImageResources rt, ImageResources r, + ImageResources rb, ImageResources b, + ImageResources lb, ImageResources l) { + setImages(disableState, background, lt, t, rt, r, rb, b, lb, l); + } + + private void setImages(WSTATE wState, ColorResources background, + ImageResources lt, ImageResources t, + ImageResources rt, ImageResources r, + ImageResources rb, ImageResources b, + ImageResources lb, ImageResources l) { + map.put(wState, new NinePatchResourceInfo(background, lt, t, rt, r, rb, b, lb, l)); + + } + + public NinePatchResourceInfo getNormalImages() { + return map.get(WSTATE.NORMAL); + } + + public NinePatchResourceInfo getHoverImages() { + return map.get(WSTATE.HOVER); + } + + public NinePatchResourceInfo getPushImages() { + return map.get(WSTATE.PUSH); + } + + public NinePatchResourceInfo getDisableImages() { + return map.get(disableState); + } + + public void dispose() { + for (WSTATE key : map.keySet()) { + NinePatchResourceInfo resource = map.get(key); + resource.dispose(); + } + } +} diff --git a/src/org/tizen/emulator/manager/ui/renewal/widgets/GrayButton.java b/src/org/tizen/emulator/manager/ui/renewal/widgets/GrayButton.java new file mode 100644 index 0000000..9c19094 --- /dev/null +++ b/src/org/tizen/emulator/manager/ui/renewal/widgets/GrayButton.java @@ -0,0 +1,103 @@ +/* + * 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.widgets; + +import org.eclipse.swt.widgets.Composite; +import org.tizen.emulator.manager.renewal.resources.ColorResources; +import org.tizen.emulator.manager.renewal.resources.FontResources; +import org.tizen.emulator.manager.renewal.resources.ImageResources; + +public class GrayButton extends NinePatchButton { + + static ButtonResourceInfo buttonResourceInfo; + static { + initButtonResourceInfo(); + } + + public GrayButton(Composite parent, int style) { + super(parent, style); + initFont(); + } + + protected void initFont() { + setButtonFont(FontResources.GRAY_BTN_FONT.getFont()); + setButtonFontColor(ColorResources.GRAY_BTN_FONT.getColor()); + } + + private static void initButtonResourceInfo() { + buttonResourceInfo = new ButtonResourceInfo(); + buttonResourceInfo.setNormalImage(ColorResources.GRAY_BTN_NORMAL, + ImageResources.GRAY_BTN_NORMAL_LT, + ImageResources.GRAY_BTN_NORMAL_T, + ImageResources.GRAY_BTN_NORMAL_RT, + ImageResources.GRAY_BTN_NORMAL_R, + ImageResources.GRAY_BTN_NORMAL_RB, + ImageResources.GRAY_BTN_NORMAL_B, + ImageResources.GRAY_BTN_NORMAL_LB, + ImageResources.GRAY_BTN_NORMAL_L); + + buttonResourceInfo.setHoverImage(ColorResources.GRAY_BTN_HOVER, + ImageResources.GRAY_BTN_HOVER_LT, + ImageResources.GRAY_BTN_HOVER_T, + ImageResources.GRAY_BTN_HOVER_RT, + ImageResources.GRAY_BTN_HOVER_R, + ImageResources.GRAY_BTN_HOVER_RB, + ImageResources.GRAY_BTN_HOVER_B, + ImageResources.GRAY_BTN_HOVER_LB, + ImageResources.GRAY_BTN_HOVER_L); + + buttonResourceInfo.setPushImage(ColorResources.GRAY_BTN_PUSH, + ImageResources.GRAY_BTN_PUSH_LT, + ImageResources.GRAY_BTN_PUSH_T, + ImageResources.GRAY_BTN_PUSH_RT, + ImageResources.GRAY_BTN_PUSH_R, + ImageResources.GRAY_BTN_PUSH_RB, + ImageResources.GRAY_BTN_PUSH_B, + ImageResources.GRAY_BTN_PUSH_LB, + ImageResources.GRAY_BTN_PUSH_L); + + buttonResourceInfo.setDisableImage(ColorResources.GRAY_BTN_DISABLE, + ImageResources.GRAY_BTN_DISABLE_LT, + ImageResources.GRAY_BTN_DISABLE_T, + ImageResources.GRAY_BTN_DISABLE_RT, + ImageResources.GRAY_BTN_DISABLE_R, + ImageResources.GRAY_BTN_DISABLE_RB, + ImageResources.GRAY_BTN_DISABLE_B, + ImageResources.GRAY_BTN_DISABLE_LB, + ImageResources.GRAY_BTN_DISABLE_L); + } + + @Override + public ButtonResourceInfo getButtonResourceInfo() { + return buttonResourceInfo; + } + +} diff --git a/src/org/tizen/emulator/manager/ui/renewal/widgets/ImageButton.java b/src/org/tizen/emulator/manager/ui/renewal/widgets/ImageButton.java new file mode 100644 index 0000000..6354640 --- /dev/null +++ b/src/org/tizen/emulator/manager/ui/renewal/widgets/ImageButton.java @@ -0,0 +1,496 @@ +/* + * Emulator Manager + * + * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * JiHye Kim + * YeongKyoon Lee + * SeokYeon Hwang + * + * 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.widgets; + +import java.util.ArrayList; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.DisposeEvent; +import org.eclipse.swt.events.DisposeListener; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.widgets.Canvas; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.TypedListener; +import org.tizen.emulator.manager.renewal.resources.ColorResources; +import org.tizen.emulator.manager.renewal.resources.FontResources; + +public class ImageButton extends Canvas { + private final Composite parent; + private int style = 0; + + protected WSTATE state = WSTATE.NORMAL; + // index of list is WSTATE + protected ArrayList images = null; + protected ArrayList colors = null; + protected ArrayList fontColors = null; + protected ArrayList fonts = null; + + private String text = ""; //$NON-NLS-1$ + protected boolean selected = false; + private boolean defaultPush = true; + + private final int RADIO_IMAGE_SIZE = 16; + public ImageButton(Composite parent, int style) { + super(parent, SWT.DOUBLE_BUFFERED | style); + this.parent = parent; + if (style == SWT.NONE) { + style = SWT.PUSH; + } + this.style = style; + + initButton(); + addListeners(); + } + + protected void initButton() { + images = new ArrayList(); + colors = new ArrayList(); + fontColors = new ArrayList(); + fonts = new ArrayList(); + + for (WSTATE s : WSTATE.values()) { + colors.add(s.getId(), ColorResources.GRAY_BTN_NORMAL.getColor()); + fontColors.add(s.getId(), ColorResources.GRAY_BTN_FONT.getColor()); + fonts.add(s.getId(), FontResources.BUTTON_FONT.getFont()); + images.add(s.getId(), null); + } + +// fontColors.set(WSTATE.DISABLE_ON.getId(), +// ColorResources.BUTTON_DISABLE_FONT_COLOR.getColor()); + +// if (checkStyle(style, SWT.RADIO)) { +// this.setImages(ImageResources.RADIO_OFF.getImage(), +// ImageResources.RADIO_OFF.getImage(), +// ImageResources.RADIO_OFF.getImage(), +// ImageResources.RADIO_ON.getImage(), +// ImageResources.RADIO_ON.getImage(), +// ImageResources.RADIO_ON.getImage(), +// ImageResources.RADIO_OFF.getImage()); +// } + } + + private void addListeners() { + addPaintListener(paintListener); + addListener(SWT.MouseDown, mouseListener); + addListener(SWT.MouseUp, mouseListener); + addListener(SWT.MouseEnter, mouseListener); + addListener(SWT.MouseExit, mouseListener); + addDisposeListener(disposeListener); + } + + public void setPainListener(PaintListener listener) { + removePaintListener(paintListener); + this.paintListener = listener; + addPaintListener(paintListener); + } + + private boolean checkStyle(int style, int bit) { + if ((style & bit) == 0) { + return false; + } + return true; + } + + public void setFont(WSTATE state, Font font) { + fonts.set(state.getId(), font); + } + + public void setFontColor(WSTATE state, Color color) { + fontColors.set(state.getId(), color); + } + + public void setImage(WSTATE state, Image image) { + images.set(state.getId(), image); + } + + @Override + public void setBackground(Color color) { + for (WSTATE s : WSTATE.values()) { + colors.set(s.getId(), color); + } + } + + public void setBackgroundColor(WSTATE state, Color color) { + colors.set(state.getId(), color); + } + + public void setText(String text) { + this.text = text; + this.redraw(); + } + + public String getText() { + return text; + } + + public Image getImage() { + return images.get(WSTATE.NORMAL.getId()); + } + + public Image getImage(WSTATE state) { + return images.get(state.getId()); + } + + public Color getBackgroundColor(WSTATE state) { + return colors.get(state.getId()); + } + + public Color getFontColor(WSTATE state) { + return fontColors.get(state.getId()); + } + + protected Image nomalImage = null; + protected Image hoverImage = null; + protected Image pushImage = null;; + protected Image disableImage = null; + public void drawPushImage(GC gc, WSTATE state, int width, int height) { + Image image = null; + switch(state) { + case HOVER: + if (hoverImage == null) { +// hoverImage = PatchImageResources.getHoverButton(width); + } + image = hoverImage; + break; + case PUSH: + if (pushImage == null) { +// pushImage = PatchImageResources.getPushedButton(width); + } + image = pushImage; + break; + default: + if (nomalImage == null) { +// nomalImage = PatchImageResources.getNomalButton(width); + } + image = nomalImage; + break; + } + + Rectangle rect = image.getBounds(); + gc.drawImage(image, rect.x, rect.y); + } + + public void setImages(Image normal, Image hover, Image pushed, Image disable) { + images.set(WSTATE.NORMAL.getId(), normal); + images.set(WSTATE.HOVER.getId(), hover); + images.set(WSTATE.PUSH.getId(), pushed); + images.set(WSTATE.DISABLE_ON.getId(), disable); + + if (checkStyle(style, SWT.PUSH)) { + defaultPush = false; + } + redraw(); + } + + public void setImages(Image normal, Image hover, Image pushed, + Image selected, Image selected_hover, Image selected_push, Image disable) { + images.set(WSTATE.NORMAL.getId(), normal); + images.set(WSTATE.HOVER.getId(), hover); + images.set(WSTATE.PUSH.getId(), pushed); + images.set(WSTATE.SELECTED.getId(), selected); + images.set(WSTATE.SELECTED_HOVER.getId(), selected_hover); + images.set(WSTATE.SELECTED_PUSH.getId(), selected_push); + images.set(WSTATE.DISABLE_ON.getId(), disable); + + if (checkStyle(style, SWT.PUSH)) { + defaultPush = false; + } + redraw(); + } + + public void setImages(Image normal, Image hover, Image pushed, + Image selected, Image selected_hover, Image selected_push, Image disable_on, Image disable_off) { + images.set(WSTATE.NORMAL.getId(), normal); + images.set(WSTATE.HOVER.getId(), hover); + images.set(WSTATE.PUSH.getId(), pushed); + images.set(WSTATE.SELECTED.getId(), selected); + images.set(WSTATE.SELECTED_HOVER.getId(), selected_hover); + images.set(WSTATE.SELECTED_PUSH.getId(), selected_push); + images.set(WSTATE.DISABLE_ON.getId(), disable_on); + images.set(WSTATE.DISABLE_OFF.getId(), disable_off); + + if (checkStyle(style, SWT.PUSH)) { + defaultPush = false; + } + redraw(); + } + + public void setForeground(Color normal, Color hover, Color pushed, Color disable) { + fontColors.set(WSTATE.NORMAL.getId(), normal); + fontColors.set(WSTATE.HOVER.getId(), hover); + fontColors.set(WSTATE.PUSH.getId(), pushed); + fontColors.set(WSTATE.DISABLE_ON.getId(), disable); + + redraw(); + } + + public void setForeground(Color normal, Color hover, Color pushed, + Color selected, Color selected_hover, Color selected_push, Color disable) { + fontColors.set(WSTATE.NORMAL.getId(), normal); + fontColors.set(WSTATE.HOVER.getId(), hover); + fontColors.set(WSTATE.PUSH.getId(), pushed); + fontColors.set(WSTATE.SELECTED.getId(), selected); + fontColors.set(WSTATE.SELECTED_HOVER.getId(), selected_hover); + fontColors.set(WSTATE.SELECTED_PUSH.getId(), selected_push); + fontColors.set(WSTATE.DISABLE_ON.getId(), disable); + + redraw(); + } + + @Override + public Point computeSize(int wHint, int hHint, boolean changed) { + int width = 0, height = 0; + + if (checkStyle(style, SWT.RADIO) + && images.get(WSTATE.NORMAL.getId()) != null) { + Rectangle bounds = images.get(WSTATE.NORMAL.getId()).getBounds(); + width = bounds.width + 14; + height = bounds.height; + } + + if (text != null) { + GC gc = new GC(this); + Point extent = gc.stringExtent(text); + gc.dispose(); + width += extent.x; + height = Math.max(height, extent.y); + } + + if (wHint != SWT.DEFAULT) + width = wHint; + + if (hHint != SWT.DEFAULT) + height = hHint; + + if (checkStyle(style, SWT.PUSH) && defaultPush) { + if (width < 13) { + width = 13; + } + if (height < 22) { + height = 22; + } + } + + return new Point(width, height); + } + + public void disposeWidget() { + + } + + private final DisposeListener disposeListener = new DisposeListener() { + + @Override + public void widgetDisposed(DisposeEvent arg0) { + int i = 0; + for (WSTATE s : WSTATE.values()) { + i = s.getId(); + WidgetHelper.tryDispose(images.get(i), colors.get(i), fontColors.get(i), fonts.get(i)); + } + WidgetHelper.tryDispose(nomalImage, hoverImage, pushImage, disableImage); + disposeWidget(); + } + }; + + private PaintListener paintListener = new PaintListener() { + + @Override + public void paintControl(PaintEvent e) { + Rectangle rect = ((Canvas) e.widget).getClientArea(); + Image img = images.get(state.getId()); + + if (colors.get(state.getId()) != null) { + e.gc.setBackground(colors.get(state.getId())); + e.gc.fillRectangle(rect); + } + + int x = rect.x; + int y = rect.y; + + if (checkStyle(style, SWT.RADIO)) { + y = rect.y + (rect.height - RADIO_IMAGE_SIZE) / 2; + + } else if (defaultPush && checkStyle(style, SWT.PUSH)) { + drawPushImage(e.gc, state, rect.width, rect.height); + defaultPush = true; + + } else if (img == null) { + return; + } + + if (null != img) { + e.gc.drawImage(img, x, y); + } + + if (checkStyle(style, SWT.RADIO)) { + x += RADIO_IMAGE_SIZE + 6; + } else { + Point extent = e.gc.stringExtent(text); + x += rect.x + ((rect.width - extent.x) / 2); + } + + int fontHeight = e.gc.getFontMetrics().getHeight(); + y = rect.y + (rect.height - fontHeight) / 2 - 1; + + if (fontColors.get(state.getId()) != null) { + e.gc.setForeground(fontColors.get(state.getId())); + } + + if (text != null) { + e.gc.drawText(text, x, y, true); + } + } + }; + + public void addSelectionListener(SelectionListener listener) { + addListener(SWT.Selection, new TypedListener(listener)); + addListener(SWT.DefaultSelection, new TypedListener(listener)); + } + + public void removeSelectionListener(SelectionListener listener) { + removeListener(SWT.Selection, listener); + removeListener(SWT.DefaultSelection, listener); + } + + protected Listener mouseListener = new Listener() { + + @Override + public void handleEvent(Event event) { + if (state == WSTATE.DISABLE_ON) { + return; + } + + ImageButton button = (ImageButton) event.widget; + if (event.type == SWT.MouseDown) { + button.setFocus(); + if (state != WSTATE.PUSH) { + if (state == WSTATE.SELECTED + || state == WSTATE.SELECTED_HOVER ) { + state = WSTATE.SELECTED_PUSH; + } else { + state = WSTATE.PUSH; + } + } + redraw(); + } else if (event.type == SWT.MouseUp) { + Rectangle rect = button.getClientArea(); + if (rect.contains(event.x, event.y)) { + if (checkStyle(style, SWT.RADIO)) { + selectRadio(); + } else if (checkStyle(style, SWT.PUSH)) { + if (state == WSTATE.PUSH) { + state = WSTATE.HOVER; + } else if (state == WSTATE.SELECTED_PUSH) { + state = WSTATE.SELECTED_HOVER; + } + redraw(); + } else if (checkStyle(style, SWT.TOGGLE)) { + if (isSelection()) { + setSelection(false); + state = WSTATE.HOVER; + } else { + setSelection(true); + state = WSTATE.SELECTED_HOVER; + } + redraw(); + } + notifyListeners(SWT.Selection, new Event()); + //notifyListeners(SWT.DefaultSelection, new Event()); + } + } else if (event.type == SWT.MouseEnter) { + if ((state != WSTATE.HOVER) && (state != WSTATE.SELECTED_HOVER)) { + if (selected) { + state = WSTATE.SELECTED_HOVER; + } else { + state = WSTATE.HOVER; + } + redraw(); + } + } else if (event.type == SWT.MouseExit) { + button.setSelection(selected); + } + } + }; + + public void setSelection(boolean selected) { + if (selected) { + state = (state == WSTATE.DISABLE_OFF) ? state : WSTATE.SELECTED; + this.selected = true; + } else { + state = state != WSTATE.DISABLE_ON ? WSTATE.NORMAL : WSTATE.DISABLE_ON; + this.selected = false; + } + redraw(); + } + + public boolean isSelection() { + return selected; + } + + private void selectRadio() { + Control[] children = parent.getChildren(); + for (int i = 0; i < children.length; i++) { + Control child = children[i]; + if (child instanceof ImageButton && child != this) { + ((ImageButton) child).setSelection(false); + } + } + setSelection(true); + } + + @Override + public void setEnabled(boolean enable) { + super.setEnabled(enable); + state = (enable ? WSTATE.NORMAL : WSTATE.DISABLE_ON); + redraw(); + } + + public void setEnabled(boolean enable, boolean isOn) { + super.setEnabled(enable); + if (enable) { + state = isOn ? WSTATE.NORMAL : WSTATE.SELECTED; + + } else { + state = isOn ? WSTATE.DISABLE_ON : WSTATE.DISABLE_OFF; + } + redraw(); + } +} diff --git a/src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchButton.java b/src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchButton.java new file mode 100644 index 0000000..133aa2d --- /dev/null +++ b/src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchButton.java @@ -0,0 +1,109 @@ +/* + * 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.widgets; + +import java.util.Arrays; +import java.util.List; + +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.widgets.Composite; +import org.tizen.emulator.manager.renewal.resources.PatchImageResources; + + +public abstract class NinePatchButton extends ImageButton { + + public final List BUTTON_STATE = + Arrays.asList(WSTATE.NORMAL, WSTATE.HOVER, WSTATE.PUSH, WSTATE.DISABLE_ON); + + public abstract ButtonResourceInfo getButtonResourceInfo(); + + public NinePatchButton(Composite parent, int style) { + super(parent, style); + } + + protected void setButtonFont(Font font) { + for (WSTATE wState : BUTTON_STATE) { + setFont(wState, font); + } + } + + protected void setButtonFontColor(Color color) { + for (WSTATE wState : BUTTON_STATE) { + setFontColor(wState, color); + } + } + + @Override + public void drawPushImage(GC gc, WSTATE state, int width, int height) { + Image image = null; + switch(state) { + case HOVER: + if (hoverImage == null) { + hoverImage = PatchImageResources.getButtonImage(width, height, + getButtonResourceInfo().getHoverImages()); + } + image = hoverImage; + break; + case PUSH: + if (pushImage == null) { + pushImage = PatchImageResources.getButtonImage(width, height, + getButtonResourceInfo().getPushImages()); + } + image = pushImage; + break; + case DISABLE_ON: + if (disableImage == null) { + disableImage = PatchImageResources.getButtonImage(width, height, + getButtonResourceInfo().getDisableImages()); + } + image = disableImage; + break; + default: + if (nomalImage == null) { + nomalImage = PatchImageResources.getButtonImage(width, height, + getButtonResourceInfo().getNormalImages()); + } + image = nomalImage; + break; + } + + Rectangle rect = image.getBounds(); + gc.drawImage(image, rect.x, rect.y); + } + + @Override + public void disposeWidget() { + getButtonResourceInfo().dispose(); + } +} diff --git a/src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchResourceInfo.java b/src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchResourceInfo.java new file mode 100644 index 0000000..5272492 --- /dev/null +++ b/src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchResourceInfo.java @@ -0,0 +1,128 @@ +/* + * 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.widgets; + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Image; +import org.tizen.emulator.manager.renewal.resources.ColorResources; +import org.tizen.emulator.manager.renewal.resources.ImageResources; + +public class NinePatchResourceInfo { + + private final Map map = new HashMap (); + private final ColorResources background; + + static final String LT = "lt"; + static final String T = "t"; + static final String RT = "rt"; + static final String R = "r"; + static final String RB = "rb"; + static final String B = "b"; + static final String LB = "lb"; + static final String L = "l"; + + NinePatchResourceInfo(ColorResources background, + ImageResources lt, ImageResources t, + ImageResources rt, ImageResources r, + ImageResources rb, ImageResources b, + ImageResources lb, ImageResources l) { + this.background = background; + map.put(LT, lt); + map.put(T, t); + map.put(RT, rt); + map.put(R, r); + map.put(RB, rb); + map.put(B, b); + map.put(LB, lb); + map.put(L, l); + } + + public ImageResources getLeftTopImage() { + return map.get(LT); + } + + public ImageResources getTopImage() { + return map.get(T); + } + + public ImageResources getRightTopImage() { + return map.get(RT); + } + + public ImageResources getRightImage() { + return map.get(R); + } + + public ImageResources getRightBottomImage() { + return map.get(RB); + } + + public ImageResources getBottomImage() { + return map.get(B); + } + + public ImageResources getLeftBottomImage() { + return map.get(LB); + } + + public ImageResources getLeftImage() { + return map.get(L); + } + + public ColorResources getBackground() { + return background; + } + + public void dispose() { + if (map != null) { + for (String key : map.keySet()) { + ImageResources ir = map.get(key); + if (ir != null) { + Image obj = ir.getImageObject(); + if (obj != null) { + obj.dispose(); + } + } + } + } + + if (background != null) { + Color obj = background.getColorObject(); + if (obj != null) { + obj.dispose(); + } + } + } + +} diff --git a/src/org/tizen/emulator/manager/ui/renewal/widgets/WSTATE.java b/src/org/tizen/emulator/manager/ui/renewal/widgets/WSTATE.java new file mode 100644 index 0000000..8c5e67f --- /dev/null +++ b/src/org/tizen/emulator/manager/ui/renewal/widgets/WSTATE.java @@ -0,0 +1,61 @@ +/* + * 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.widgets; + +public enum WSTATE { + NORMAL(0), + HOVER(1), + PUSH(2), + SELECTED(3), + SELECTED_HOVER(4), + SELECTED_PUSH(5), + DISABLE_ON(6), + DISABLE_OFF(7); + + private int id; + WSTATE(int id) { + this.id = id; + } + + public int getId() { + return id; + } + + public static WSTATE getState(int id) { + for (WSTATE state : WSTATE.values()) { + if (state.id == id) { + return state; + } + } + return WSTATE.NORMAL; + } + +} diff --git a/src/org/tizen/emulator/manager/ui/renewal/widgets/WidgetHelper.java b/src/org/tizen/emulator/manager/ui/renewal/widgets/WidgetHelper.java new file mode 100644 index 0000000..a306881 --- /dev/null +++ b/src/org/tizen/emulator/manager/ui/renewal/widgets/WidgetHelper.java @@ -0,0 +1,50 @@ +/* + * 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.widgets; + +import org.eclipse.swt.widgets.Widget; + +class WidgetHelper { + public static void tryDispose(final Object... Disposables) { + if (null == Disposables) { + return; + } + + for (Object obj : Disposables) { + if (null == obj) { + continue; + } + if (obj instanceof Widget) { + ((Widget) obj).dispose(); + } + } + } +}