combo-box: fix combo-box corner color
authorminkee.lee <minkee.lee@samsung.com>
Fri, 11 Dec 2015 10:17:29 +0000 (19:17 +0900)
committerminkee.lee <minkee.lee@samsung.com>
Fri, 11 Dec 2015 10:17:29 +0000 (19:17 +0900)
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 <minkee.lee@samsung.com>
src/org/tizen/emulator/manager/renewal/resources/PatchImageResources.java
src/org/tizen/emulator/manager/ui/renewal/item/modify/common/ComboItem.java
src/org/tizen/emulator/manager/ui/renewal/item/modify/common/ResolutionSubItem.java
src/org/tizen/emulator/manager/ui/renewal/tableviewer/CreateVMTopComposite.java
src/org/tizen/emulator/manager/ui/renewal/widgets/ComboBox.java
src/org/tizen/emulator/manager/ui/renewal/widgets/NinePatchBox.java

index 1f3f128..c8e6826 100644 (file)
@@ -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);
        }
index a4521ea..bead0d7 100644 (file)
@@ -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
index 8f683ad..3c30944 100644 (file)
@@ -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();
 
index 3b32fc5..0ad973d 100644 (file)
@@ -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);
index 2c11e1e..a3258ef 100644 (file)
@@ -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) {
index 9d3bbef..1dc1717 100644 (file)
@@ -47,8 +47,8 @@ public abstract class NinePatchBox extends Canvas{
 
        public abstract NinePatchResourceMap getNinePatchResourceMap();
 
-       private final Map<WSTATE, Image> imageMap = new HashMap<WSTATE, Image>();
-       private WSTATE state = WSTATE.NORMAL;
+       protected final Map<WSTATE, Image> imageMap = new HashMap<WSTATE, Image>();
+       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) {