skin: no need to create toggle button 28/16628/4
authorGiWoong Kim <giwoong.kim@samsung.com>
Thu, 20 Feb 2014 03:22:17 +0000 (12:22 +0900)
committerSangho Park <sangho1206.park@samsung.com>
Fri, 21 Feb 2014 04:11:00 +0000 (20:11 -0800)
no need to create toggle button when HW key
does not exist on General Purpose skin.
& clean up some codes

Change-Id: I3d04e488ef7b27b9550b5305b155e903bc81e97a
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/layout/GeneralPurposeSkinComposer.java
tizen/src/skin/client/src/org/tizen/emulator/skin/layout/ProfileSpecificSkinComposer.java

index b5ec0c17854dec9aae4635a4ca2ca87228c8189b..6acf04c2dc93b2f595c0e874bc45d260fe55e01f 100755 (executable)
@@ -269,14 +269,8 @@ public class EmulatorSkin {
                /* build a skin layout */
                if (skinInfo.isGeneralPurposeSkin() == false) {
                        skinComposer = new ProfileSpecificSkinComposer(config, this);
-
-                       ((ProfileSpecificSkinComposer) skinComposer)
-                                       .addProfileSpecificListener(shell);
                } else { /* general purpose skin */
                        skinComposer = new GeneralPurposeSkinComposer(config, this);
-
-                       ((GeneralPurposeSkinComposer) skinComposer)
-                                       .addGeneralPurposeListener(shell);
                }
 
                lcdCanvas = skinComposer.compose(displayCanvasStyle);
index 0443ccf2999bf232e2c16b9dac942baef60168a7..637a47d1559e2919cb05f1e080de5c8b28502ddc 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * General-Purpose Skin Layout
  *
- * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (C) 2011 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
  *
  * Contact:
  * GiWoong Kim <giwoong.kim@samsung.com>
@@ -28,6 +28,7 @@
 
 package org.tizen.emulator.skin.layout;
 
+import java.util.List;
 import java.util.logging.Logger;
 
 import org.eclipse.swt.SWT;
@@ -55,6 +56,7 @@ import org.tizen.emulator.skin.custom.ColorTag;
 import org.tizen.emulator.skin.custom.CustomButton;
 import org.tizen.emulator.skin.custom.CustomProgressBar;
 import org.tizen.emulator.skin.custom.SkinWindow;
+import org.tizen.emulator.skin.dbi.KeyMapType;
 import org.tizen.emulator.skin.image.GeneralSkinImageRegistry;
 import org.tizen.emulator.skin.image.GeneralSkinImageRegistry.GeneralSkinImageName;
 import org.tizen.emulator.skin.image.ImageRegistry.IconName;
@@ -150,42 +152,14 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                                        .getIcon(IconName.EMULATOR_TITLE));
                }
 
-               /* load image for toggle button of key window */
-               Image imageNormal = imageRegistry.getSkinImage(
-                               GeneralSkinImageName.TOGGLE_BUTTON_NORMAL);
-               Image imageHover = imageRegistry.getSkinImage(
-                               GeneralSkinImageName.TOGGLE_BUTTON_HOVER);
-               Image imagePushed = imageRegistry.getSkinImage(
-                               GeneralSkinImageName.TOGGLE_BUTTON_PUSHED);
-
                /* create a toggle button of key window */
-               toggleButton = new CustomButton(shell, SWT.DRAW_TRANSPARENT | SWT.NO_FOCUS,
-                               imageNormal, imageHover, imagePushed);
-               toggleButton.setBackground(backgroundColor);
-
-               toggleButton.addMouseListener(new MouseListener() {
-                       @Override
-                       public void mouseDown(MouseEvent e) {
-                               if (skin.isKeyWindow == true) {
-                                       skin.getKeyWindowKeeper().closeKeyWindow();
-                                       skin.getKeyWindowKeeper().setRecentlyDocked(
-                                                       KeyWindowKeeper.DEFAULT_DOCK_POSITION);
-                               } else {
-                                       skin.getKeyWindowKeeper().openKeyWindow(
-                                                       KeyWindowKeeper.DEFAULT_DOCK_POSITION, true);
-                               }
-                       }
-
-                       @Override
-                       public void mouseUp(MouseEvent e) {
-                               /* do nothing */
-                       }
+               List<KeyMapType> keyMapList = SkinUtil.getHWKeyMapList(
+                               skin.getEmulatorSkinState().getCurrentRotationId());
 
-                       @Override
-                       public void mouseDoubleClick(MouseEvent e) {
-                               /* do nothing */
-                       }
-               });
+               if (keyMapList.isEmpty() == false) {
+                       toggleButton = createToggleButton();
+                       toggleButton.setBackground(backgroundColor);
+               }
 
                /* make a pair tag circle */
                pairTag = new ColorTag(shell, SWT.NO_FOCUS, skin.getColorVM());
@@ -197,6 +171,16 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
 
                arrangeSkin(scale, rotationId);
 
+               if (currentState.getCurrentImage() == null) {
+                       logger.severe("Failed to load initial skin image. Kill this skin process.");
+                       SkinUtil.openMessage(shell, null,
+                                       "Failed to load Skin image file.", SWT.ICON_ERROR, config);
+
+                       EmulatorSkinMain.terminateImmediately(-1);
+               }
+
+               addListeners();
+
                /* open the key window if key window menu item was enabled */
                PopupMenu popupMenu = skin.getPopupMenu();
 
@@ -267,9 +251,13 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                displayCanvas.setBounds(displayBounds);
 
                /* arrange the toggle button of key window */
-               toggleButton.setBounds(displayBounds.x + displayBounds.width + 4,
-                               displayBounds.y + ((displayBounds.height - toggleButton.getImageSize().y) / 2),
-                               toggleButton.getImageSize().x, toggleButton.getImageSize().y);
+               if (toggleButton != null) {
+                       int centerY = ((displayBounds.height - toggleButton.getImageSize().y) / 2);
+
+                       toggleButton.setBounds(displayBounds.x + displayBounds.width + 4,
+                                       displayBounds.y + centerY,
+                                       toggleButton.getImageSize().x, toggleButton.getImageSize().y);
+               }
 
                /* arrange the progress bar */
                if (skin.bootingProgress != null) {
@@ -395,7 +383,47 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                });
        }
 
-       public void addGeneralPurposeListener(final Shell shell) {
+       private CustomButton createToggleButton() {
+               /* load image for toggle button of key window */
+               Image imageNormal = imageRegistry.getSkinImage(
+                               GeneralSkinImageName.TOGGLE_BUTTON_NORMAL);
+               Image imageHover = imageRegistry.getSkinImage(
+                               GeneralSkinImageName.TOGGLE_BUTTON_HOVER);
+               Image imagePushed = imageRegistry.getSkinImage(
+                               GeneralSkinImageName.TOGGLE_BUTTON_PUSHED);
+
+               CustomButton toggle = new CustomButton(shell,
+                               SWT.DRAW_TRANSPARENT | SWT.NO_FOCUS,
+                               imageNormal, imageHover, imagePushed);
+
+               toggle.addMouseListener(new MouseListener() {
+                       @Override
+                       public void mouseDown(MouseEvent e) {
+                               if (skin.isKeyWindow == true) {
+                                       skin.getKeyWindowKeeper().closeKeyWindow();
+                                       skin.getKeyWindowKeeper().setRecentlyDocked(
+                                                       KeyWindowKeeper.DEFAULT_DOCK_POSITION);
+                               } else {
+                                       skin.getKeyWindowKeeper().openKeyWindow(
+                                                       KeyWindowKeeper.DEFAULT_DOCK_POSITION, true);
+                               }
+                       }
+
+                       @Override
+                       public void mouseUp(MouseEvent e) {
+                               /* do nothing */
+                       }
+
+                       @Override
+                       public void mouseDoubleClick(MouseEvent e) {
+                               /* do nothing */
+                       }
+               });
+
+               return toggle;
+       }
+
+       private void addListeners() {
                shellPaintListener = new PaintListener() {
                        @Override
                        public void paintControl(final PaintEvent e) {
index 3d387bfaea934a60d6b14efa74df547970875cf7..5a85ff5fa19b7861941053318ca3c639c32a9ad3 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * Profile-Specific Skin Layout
  *
- * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (C) 2011 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
  *
  * Contact:
  * GiWoong Kim <giwoong.kim@samsung.com>
@@ -151,13 +151,15 @@ public class ProfileSpecificSkinComposer implements ISkinComposer {
                arrangeSkin(scale, rotationId);
 
                if (currentState.getCurrentImage() == null) {
-                       logger.severe("Failed to load initial skin image file. Kill this skin process.");
+                       logger.severe("Failed to load initial skin image. Kill this skin process.");
                        SkinUtil.openMessage(shell, null,
                                        "Failed to load Skin image file.", SWT.ICON_ERROR, config);
 
                        EmulatorSkinMain.terminateImmediately(-1);
                }
 
+               addListeners();
+
                /* open the key window if key window menu item was enabled */
                PopupMenu popupMenu = skin.getPopupMenu();
 
@@ -344,7 +346,7 @@ public class ProfileSpecificSkinComposer implements ISkinComposer {
                /* do nothing */
        }
 
-       public void addProfileSpecificListener(final Shell shell) {
+       private void addListeners() {
                shellPaintListener = new PaintListener() {
                        @Override
                        public void paintControl(final PaintEvent e) {