From cc082b8245b6845799e8f1c1c5ed0a5445266b13 Mon Sep 17 00:00:00 2001 From: "minkee.lee" Date: Fri, 11 Dec 2015 19:17:29 +0900 Subject: [PATCH] combo-box: fix combo-box corner color In windows, color of some combobox's right corner is not same with parent's background. To solve this issue, set parentBackground to comboBox and use it when draw 9 patch image. Change-Id: I7830c8b3b4a4cf9547dbe369f51a004d85f6bbcc Signed-off-by: minkee.lee --- .../renewal/resources/PatchImageResources.java | 25 ++++++++++++++++++ .../ui/renewal/item/modify/common/ComboItem.java | 6 ++++- .../item/modify/common/ResolutionSubItem.java | 2 ++ .../renewal/tableviewer/CreateVMTopComposite.java | 4 ++- .../manager/ui/renewal/widgets/ComboBox.java | 30 ++++++++++++++++++++++ .../manager/ui/renewal/widgets/NinePatchBox.java | 6 ++--- 6 files changed, 68 insertions(+), 5 deletions(-) diff --git a/src/org/tizen/emulator/manager/renewal/resources/PatchImageResources.java b/src/org/tizen/emulator/manager/renewal/resources/PatchImageResources.java index 1f3f128..c8e6826 100644 --- a/src/org/tizen/emulator/manager/renewal/resources/PatchImageResources.java +++ b/src/org/tizen/emulator/manager/renewal/resources/PatchImageResources.java @@ -101,6 +101,31 @@ public class PatchImageResources { /** Image should be disposed by caller */ + public static Image getNinePatchButtonImage(int width, int height, NinePatchResourceInfo ninePatchImagesInfo + , ColorResources parentBackground) { + + if (ninePatchImagesInfo == null) { + return null; + } + + Image image = new Image(Display.getCurrent(), width, height); + GC gc = new GC(image); + gc.setInterpolation(SWT.NONE); + + // First, fill background with parent background + Color transparentColor = parentBackground.getColor(); + gc.setBackground(transparentColor); + gc.fillRectangle(0, 0, width, height); + + + // Draw Image + drawNinePatchImage(gc, width, height, ninePatchImagesInfo); + gc.dispose(); + + return image; + } + + /** Image should be disposed by caller */ public static Image getBlueButtonImage(Image icon, int width, int height, NinePatchResourceInfo ninePatchImagesInfo) { return PatchImageResources.getBlueButtonImage(icon, width, height, SWT.CENTER, ninePatchImagesInfo); } diff --git a/src/org/tizen/emulator/manager/ui/renewal/item/modify/common/ComboItem.java b/src/org/tizen/emulator/manager/ui/renewal/item/modify/common/ComboItem.java index a4521ea..bead0d7 100644 --- a/src/org/tizen/emulator/manager/ui/renewal/item/modify/common/ComboItem.java +++ b/src/org/tizen/emulator/manager/ui/renewal/item/modify/common/ComboItem.java @@ -35,6 +35,7 @@ import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; +import org.tizen.emulator.manager.renewal.resources.ColorResources; import org.tizen.emulator.manager.ui.renewal.item.modify.comp.ModifyItem; import org.tizen.emulator.manager.ui.renewal.widgets.ComboBox; @@ -102,14 +103,17 @@ public abstract class ComboItem extends ModifyDialogItem { protected void createCombo(ModifyItem item, int width) { + createCombo(item, width, ColorResources.WHITE); + } + protected void createCombo(ModifyItem item, int width, ColorResources parentBackground) { item.setBodyLayoutForm(); comboBox = new ComboBox(getItemListComp().getShell(), item.getBody(), SWT.NONE); + comboBox.setParentBackground(parentBackground); comboBox.setLayoutData(getItemFormData(width)); addSelectionListener(); } - private void addSelectionListener() { Listener listener = new Listener() { @Override diff --git a/src/org/tizen/emulator/manager/ui/renewal/item/modify/common/ResolutionSubItem.java b/src/org/tizen/emulator/manager/ui/renewal/item/modify/common/ResolutionSubItem.java index 8f683ad..3c30944 100644 --- a/src/org/tizen/emulator/manager/ui/renewal/item/modify/common/ResolutionSubItem.java +++ b/src/org/tizen/emulator/manager/ui/renewal/item/modify/common/ResolutionSubItem.java @@ -44,6 +44,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.tizen.emulator.manager.logging.EMLogger; +import org.tizen.emulator.manager.renewal.resources.ColorResources; import org.tizen.emulator.manager.ui.renewal.item.modify.comp.ModifyItem; import org.tizen.emulator.manager.ui.renewal.item.modify.comp.PropertyValue; import org.tizen.emulator.manager.ui.renewal.widgets.ComboBox; @@ -98,6 +99,7 @@ public class ResolutionSubItem { data.width = DisplayItem.COMBO_WIDTH; data.height = ModifyItem.WIDGET_HEIGHT; resolutionCombo = new ComboBox(displayItem.getItemListComp().getShell(), comp, SWT.NONE); + resolutionCombo.setParentBackground(ColorResources.MODIFY_ITEM_TITLE_SUB_BACKGROUND); resolutionCombo.setLayoutData(data); addResolutionComboListener(); diff --git a/src/org/tizen/emulator/manager/ui/renewal/tableviewer/CreateVMTopComposite.java b/src/org/tizen/emulator/manager/ui/renewal/tableviewer/CreateVMTopComposite.java index 3b32fc5..0ad973d 100644 --- a/src/org/tizen/emulator/manager/ui/renewal/tableviewer/CreateVMTopComposite.java +++ b/src/org/tizen/emulator/manager/ui/renewal/tableviewer/CreateVMTopComposite.java @@ -47,6 +47,7 @@ import org.tizen.emulator.manager.platform.BaseImage; import org.tizen.emulator.manager.platform.Profile; import org.tizen.emulator.manager.platform.baseimage.CustomBaseImageValue; import org.tizen.emulator.manager.platform.baseimage.CustomBaseImageWorker; +import org.tizen.emulator.manager.renewal.resources.ColorResources; import org.tizen.emulator.manager.renewal.resources.FontResources; import org.tizen.emulator.manager.renewal.resources.ImageResources; import org.tizen.emulator.manager.resources.StringResources; @@ -63,7 +64,7 @@ public class CreateVMTopComposite extends Composite { private static final int INPUT_BOX_WIDTH = 250; private static final int INPUT_BOX_HEIGHT = 24; - private CreateVMTableViewer viewer; + private final CreateVMTableViewer viewer; private Profile profile; private BaseImage baseImage; @@ -98,6 +99,7 @@ public class CreateVMTopComposite extends Composite { vmNameText.getTextWidget().setTextLimit(20); baseImageCombo = new ComboBox(this.getShell(), this, SWT.NONE); + baseImageCombo.setParentBackground(ColorResources.TABLE_VIEWER_BG); baseImageCombo.addListener(SWT.Selection, imageComboListener); addCustomImageBtn = new BlueButton(this, SWT.PUSH); diff --git a/src/org/tizen/emulator/manager/ui/renewal/widgets/ComboBox.java b/src/org/tizen/emulator/manager/ui/renewal/widgets/ComboBox.java index 2c11e1e..a3258ef 100644 --- a/src/org/tizen/emulator/manager/ui/renewal/widgets/ComboBox.java +++ b/src/org/tizen/emulator/manager/ui/renewal/widgets/ComboBox.java @@ -52,6 +52,7 @@ import org.eclipse.swt.widgets.Shell; import org.tizen.emulator.manager.renewal.resources.ColorResources; import org.tizen.emulator.manager.renewal.resources.FontResources; import org.tizen.emulator.manager.renewal.resources.ImageResources; +import org.tizen.emulator.manager.renewal.resources.PatchImageResources; public class ComboBox extends NinePatchBox { @@ -73,6 +74,8 @@ public class ComboBox extends NinePatchBox { private String selectedItem = ""; private Object selectedData; + private ColorResources parentBackground = ColorResources.WHITE; + // This decide whether widget is modifiable or not. // This is distinguished from disabled. private boolean isFixed = false; @@ -87,7 +90,10 @@ public class ComboBox extends NinePatchBox { initBox(); createText(); addMouseListener(); + } + public void setParentBackground(ColorResources parentBackground) { + this.parentBackground = parentBackground; } public void clear() { @@ -255,6 +261,30 @@ public class ComboBox extends NinePatchBox { drawArrow(e); } + + @Override + protected void drawBox(PaintEvent e) { + // get box image + Image image = imageMap.get(state); + if (image == null) { + NinePatchResourceMap map = getNinePatchResourceMap(); + if (map == null) { + return; + } + Rectangle rect = ((Canvas) e.widget).getClientArea(); + image = PatchImageResources.getNinePatchButtonImage( + rect.width, rect.height, map.get(state), parentBackground); + imageMap.put(state, image); + } + + // draw box image + if (image != null) { + GC gc = e.gc; + Rectangle imgRect = image.getBounds(); + gc.drawImage(image, imgRect.x, imgRect.y); + } + } + @Override public void setEnabled(boolean enabled) { if (enabled) { diff --git a/src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchBox.java b/src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchBox.java index 9d3bbef..1dc1717 100644 --- a/src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchBox.java +++ b/src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchBox.java @@ -47,8 +47,8 @@ public abstract class NinePatchBox extends Canvas{ public abstract NinePatchResourceMap getNinePatchResourceMap(); - private final Map imageMap = new HashMap(); - private WSTATE state = WSTATE.NORMAL; + protected final Map imageMap = new HashMap(); + protected WSTATE state = WSTATE.NORMAL; protected void draw(PaintEvent e) { @@ -98,7 +98,7 @@ public abstract class NinePatchBox extends Canvas{ } - private void drawBox(PaintEvent e) { + protected void drawBox(PaintEvent e) { // get box image Image image = imageMap.get(state); if (image == null) { -- 2.7.4