From: GiWoong Kim Date: Thu, 31 Oct 2013 07:55:33 +0000 (+0900) Subject: skin: define draw/remove hover function X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~670 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a842a598f79ad31c6d10fc9b469a26cfffdf9733;p=sdk%2Femulator%2Fqemu.git skin: define draw/remove hover function refined the parts of source code for ProfileSpecific Skin Change-Id: I3d93ef1fa9aedb10c51c9964c12e31eef017bfeb Signed-off-by: GiWoong Kim --- diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/layout/ProfileSpecificSkinComposer.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/layout/ProfileSpecificSkinComposer.java index afe649a9cd..2336cc3912 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/layout/ProfileSpecificSkinComposer.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/layout/ProfileSpecificSkinComposer.java @@ -66,6 +66,7 @@ import org.tizen.emulator.skin.image.ProfileSkinImageRegistry; import org.tizen.emulator.skin.image.ProfileSkinImageRegistry.SkinImageType; import org.tizen.emulator.skin.log.SkinLogger; import org.tizen.emulator.skin.menu.PopupMenu; +import org.tizen.emulator.skin.util.HWKeyRegion; import org.tizen.emulator.skin.util.SkinRotation; import org.tizen.emulator.skin.util.SkinUtil; import org.tizen.emulator.skin.util.SwtUtil; @@ -298,6 +299,46 @@ public class ProfileSpecificSkinComposer implements ISkinComposer { return displayBounds; } + private void drawHover(final HWKey hwKey) { + if (hwKey == null || hwKey.getRegion() == null + || hwKey.getRegion().width == 0 + || hwKey.getRegion().height == 0) { + return; + } + + currentHoveredHWKey = hwKey; + + shell.getDisplay().syncExec(new Runnable() { + public void run() { + GC gc = new GC(shell); + if (gc != null) { + gc.setLineWidth(1); + gc.setForeground(currentState.getHoverColor()); + gc.drawRectangle(currentHoveredHWKey.getRegion().x, + currentHoveredHWKey.getRegion().y, + currentHoveredHWKey.getRegion().width - 1, + currentHoveredHWKey.getRegion().height - 1); + + gc.dispose(); + } + } + }); + } + + private void removeHover() { + if (currentHoveredHWKey == null + || currentHoveredHWKey.getRegion() == null) { + return; + } + + shell.redraw(currentHoveredHWKey.getRegion().x, + currentHoveredHWKey.getRegion().y, + currentHoveredHWKey.getRegion().width, + currentHoveredHWKey.getRegion().height, false); + + currentHoveredHWKey = null; + } + public void addProfileSpecificListener(final Shell shell) { shellPaintListener = new PaintListener() { @Override @@ -355,17 +396,9 @@ public class ProfileSpecificSkinComposer implements ISkinComposer { public void mouseExit(MouseEvent e) { /* shell does not receive event only with MouseMoveListener in case that : hover hardkey -> mouse move into display area */ - HWKey hoveredHWKey = currentHoveredHWKey; - if (hoveredHWKey != null) { - shell.redraw(hoveredHWKey.getRegion().x, - hoveredHWKey.getRegion().y, - hoveredHWKey.getRegion().width, - hoveredHWKey.getRegion().height, false); - - currentHoveredHWKey = null; - shell.setToolTipText(null); - } + shell.setToolTipText(null); + removeHover(); } }; @@ -393,57 +426,34 @@ public class ProfileSpecificSkinComposer implements ISkinComposer { final HWKey hwKey = SkinUtil.getHWKey(e.x, e.y, currentState.getCurrentRotationId(), currentState.getCurrentScale()); - final HWKey hoveredHWKey = currentHoveredHWKey; if (hwKey == null) { - if (hoveredHWKey != null) { - /* remove hover */ - shell.redraw(hoveredHWKey.getRegion().x, - hoveredHWKey.getRegion().y, - hoveredHWKey.getRegion().width, - hoveredHWKey.getRegion().height, false); - - currentHoveredHWKey = null; - shell.setToolTipText(null); + shell.setToolTipText(null); + removeHover(); + } else { + /* enable tool tip */ + if (hwKey.getTooltip().isEmpty() == false) { + shell.setToolTipText(hwKey.getTooltip()); } - return; - } - - /* register a tooltip */ - if (hoveredHWKey == null && - hwKey.getTooltip().isEmpty() == false) { - shell.setToolTipText(hwKey.getTooltip()); - - currentHoveredHWKey = hwKey; - - /* draw hover */ - shell.getDisplay().syncExec(new Runnable() { - public void run() { - if (hwKey.getRegion().width != 0 && hwKey.getRegion().height != 0) { - GC gc = new GC(shell); - if (gc != null) { - gc.setLineWidth(1); - gc.setForeground(currentState.getHoverColor()); - gc.drawRectangle(hwKey.getRegion().x, hwKey.getRegion().y, - hwKey.getRegion().width - 1, hwKey.getRegion().height - 1); - - gc.dispose(); + if (hwKey.getRegion() != null) { + if (currentHoveredHWKey != null) { + HWKeyRegion keyBounds = currentHoveredHWKey.getRegion(); + + if (keyBounds != null) { + if (hwKey.getRegion().x == keyBounds.x + && hwKey.getRegion().y == keyBounds.y + && hwKey.getRegion().width == keyBounds.width + && hwKey.getRegion().height == keyBounds.height) { + /* already got hover rect */ + return; + } else { + removeHover(); } } } - }); - } else { - if (hwKey.getRegion().x != hoveredHWKey.getRegion().x || - hwKey.getRegion().y != hoveredHWKey.getRegion().y) { - /* remove hover */ - shell.redraw(hoveredHWKey.getRegion().x, - hoveredHWKey.getRegion().y, - hoveredHWKey.getRegion().width, - hoveredHWKey.getRegion().height, false); - - currentHoveredHWKey = null; - shell.setToolTipText(null); + + drawHover(hwKey); } } }