skin: manage a state flag of key window
authorgiwoong.kim <giwoong.kim@samsung.com>
Fri, 11 Jan 2013 10:04:58 +0000 (19:04 +0900)
committergiwoong.kim <giwoong.kim@samsung.com>
Fri, 11 Jan 2013 10:16:45 +0000 (19:16 +0900)
manage a state flag of key window

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/custom/KeyWindow.java
tizen/src/skin/client/src/org/tizen/emulator/skin/layout/GeneralPurposeSkinComposer.java

index 8948e4b..ae00ddb 100644 (file)
@@ -139,7 +139,7 @@ public class EmulatorSkin {
        private boolean isShutdownRequested;
        private boolean isAboutToReopen;
        private boolean isOnTop;
-       private boolean isControlPanel;
+       private boolean isKeyWindow;
        private boolean isOnKbd;
 
        private Menu contextMenu;
@@ -182,7 +182,7 @@ public class EmulatorSkin {
                this.config = config;
                this.skinInfo = skinInfo;
                this.isOnTop = isOnTop;
-               this.isControlPanel = false;
+               this.isKeyWindow = false;
                this.pressedKeyEventList = new LinkedList<KeyEventData>();
 
                int style = SWT.NO_TRIM | SWT.DOUBLE_BUFFERED;
@@ -361,16 +361,11 @@ public class EmulatorSkin {
                                                }
 
                                                /* close the Key Window */
-                                               if (null != keyWindow) {
-                                                       Shell keyWindowShell = keyWindow.getShell();
-                                                       if (!keyWindowShell.isDisposed()) {
-                                                               keyWindowShell.close();
-                                                       }
-                                                       keyWindow = null;
+                                               closeKeyWindow();
 
-                                                       if (colorPairTag != null) {
-                                                               colorPairTag.dispose();
-                                                       }
+                                               /* dispose the color tag */
+                                               if (colorPairTag != null) {
+                                                       colorPairTag.dispose();
                                                }
 
                                                /* save config only for emulator close */
@@ -470,7 +465,7 @@ public class EmulatorSkin {
                        public void focusGained(FocusEvent event) {
                                logger.info("gain focus");
 
-                               if (isOnTop == false && isControlPanel == true) {
+                               if (isOnTop == false && isKeyWindow == true) {
                                        if (keyWindow != null &&
                                                        keyWindow.getDockPosition() != SWT.NONE) {
                                                keyWindow.getShell().moveAbove(shell);
@@ -479,6 +474,7 @@ public class EmulatorSkin {
                                }
                        }
 
+                       @Override
                        public void focusLost(FocusEvent event) {
                                logger.info("lost focus");
 
@@ -941,23 +937,19 @@ public class EmulatorSkin {
                //TODO: abstract
        }
 
-       /* toggle a key window */
-       public void setIsControlPanel(boolean value) {
-               isControlPanel = value;
-               keyWindowItem.setSelection(isControlPanel);
-               logger.info("Select Key Window : " + isControlPanel);
-       }
-
-       public boolean getIsControlPanel() {
-               return isControlPanel;
+       public boolean isSelectKeyWindow() {
+               return keyWindowItem.getSelection();
        }
 
        public void openKeyWindow(int dockValue) {
                if (keyWindow != null) {
+                       /* show the key window */
+                       keyWindowItem.setSelection(isKeyWindow = true);
+                       pairTagCanvas.setVisible(true);
+
                        keyWindow.getShell().setVisible(true);
                        SkinUtil.setTopMost(keyWindow.getShell(), isOnTop);
 
-                       pairTagCanvas.setVisible(true);
                        return;
                }
 
@@ -966,9 +958,11 @@ public class EmulatorSkin {
                                SkinUtil.getHWKeyMapList(currentState.getCurrentRotationId());
 
                if (keyMapList == null) {
+                       keyWindowItem.setSelection(isKeyWindow = false);
                        logger.info("keyMapList is null");
                        return;
                } else if (keyMapList.isEmpty() == true) {
+                       keyWindowItem.setSelection(isKeyWindow = false);
                        logger.info("keyMapList is empty");
                        return;
                }
@@ -976,6 +970,8 @@ public class EmulatorSkin {
                try {
                        keyWindow = new KeyWindow(this, shell, colorPairTag,
                                        communicator, keyMapList);
+
+                       keyWindowItem.setSelection(isKeyWindow = true);
                        SkinUtil.setTopMost(keyWindow.getShell(), isOnTop);
 
                        //colorPairTag = keyWindow.getPairTagColor();
@@ -989,8 +985,22 @@ public class EmulatorSkin {
        }
 
        public void hideKeyWindow() {
-               keyWindow.getShell().setVisible(false);
+               keyWindowItem.setSelection(isKeyWindow = false);
                pairTagCanvas.setVisible(false);
+
+               if (keyWindow != null) {
+                       keyWindow.getShell().setVisible(false);
+               }
+       }
+
+       public void closeKeyWindow() {
+               keyWindowItem.setSelection(isKeyWindow = false);
+               pairTagCanvas.setVisible(false);
+
+               if (keyWindow != null) {
+                       keyWindow.getShell().close();
+                       keyWindow = null;
+               }
        }
 
        private void addMenuItems(final Shell shell, final Menu menu) {
@@ -1062,23 +1072,21 @@ public class EmulatorSkin {
                if (skinInfo.isPhoneShape() == false) { //TODO:
                keyWindowItem = new MenuItem(menu, SWT.CHECK);
                keyWindowItem.setText("&Key Window");
-               keyWindowItem.setSelection(isControlPanel);
+               keyWindowItem.setSelection(isKeyWindow);
 
                keyWindowItem.addSelectionListener(new SelectionAdapter() {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
-                               final boolean isControlPanel = keyWindowItem.getSelection();
+                               final boolean selectKeyWindow = keyWindowItem.getSelection();
 
-                               setIsControlPanel(isControlPanel);
-                               if (isControlPanel == true) {
+                               if (selectKeyWindow == true) {
                                        openKeyWindow((keyWindow == null) ?
                                                        SWT.RIGHT | SWT.CENTER : keyWindow.getDockPosition());
                                } else { /* hide a key window */
                                        if (keyWindow != null &&
                                                        keyWindow.getDockPosition() != SWT.NONE) {
-                                               /* Close the Key Window if it is docked to Main Window */
-                                               pairTagCanvas.setVisible(false);
-                                               keyWindow.getShell().close();
+                                               /* close the Key Window if it is docked to Main Window */
+                                               closeKeyWindow();
                                        } else {
                                                hideKeyWindow();
                                        }
index b62deda..5e6d10c 100644 (file)
@@ -352,8 +352,6 @@ public class KeyWindow extends SkinWindow {
                                if (skin.pairTagCanvas != null) {
                                        skin.pairTagCanvas.setVisible(false);
                                }
-                               skin.setIsControlPanel(false);
-                               skin.keyWindow = null;
 
                                if (null != shellPaintListener) {
                                        shell.removePaintListener(shellPaintListener);
index 8218469..ead109a 100644 (file)
@@ -157,22 +157,10 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                toggleButton.addMouseListener(new MouseListener() {
                        @Override
                        public void mouseDown(MouseEvent e) {
-                               if (skin.getIsControlPanel() == true) {
-                                       if (skin.keyWindow != null) {
-                                               skin.keyWindow.getShell().close();
-                                       }
-
-                                       skin.setIsControlPanel(false);
-                                       skin.pairTagCanvas.setVisible(false);
+                               if (skin.isSelectKeyWindow() == true) {
+                                       skin.closeKeyWindow();
                                } else {
-                                       skin.setIsControlPanel(true);
                                        skin.openKeyWindow(SWT.RIGHT | SWT.CENTER);
-
-                                       /* move a key window to right of the emulator window */
-                                       if (skin.keyWindow != null) {
-                                               skin.keyWindow.dock(
-                                                               SWT.RIGHT | SWT.CENTER, true, false);
-                                       }
                                }
                        }
 
@@ -215,7 +203,6 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                shell.getDisplay().asyncExec(new Runnable() {
                        @Override
                        public void run() {
-                               skin.setIsControlPanel(true);
                                skin.openKeyWindow(SWT.RIGHT | SWT.CENTER);
                        }
                });