skin: activate event handling
authorgiwoong.kim <giwoong.kim@samsung.com>
Thu, 17 Jan 2013 06:10:25 +0000 (15:10 +0900)
committergiwoong.kim <giwoong.kim@samsung.com>
Thu, 17 Jan 2013 06:10:25 +0000 (15:10 +0900)
activate event handling

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

index e5e8b6f..2b91009 100644 (file)
@@ -52,13 +52,13 @@ import org.eclipse.swt.events.MouseMoveListener;
 import org.eclipse.swt.events.MouseWheelListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.ShellEvent;
+import org.eclipse.swt.events.ShellListener;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.graphics.RGB;
 import org.eclipse.swt.widgets.Canvas;
 import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.swt.widgets.Shell;
@@ -69,8 +69,8 @@ import org.tizen.emulator.skin.comm.ICommunicator.Scale;
 import org.tizen.emulator.skin.comm.ICommunicator.SendCommand;
 import org.tizen.emulator.skin.comm.sock.SocketCommunicator;
 import org.tizen.emulator.skin.comm.sock.data.BooleanData;
-import org.tizen.emulator.skin.comm.sock.data.KeyEventData;
 import org.tizen.emulator.skin.comm.sock.data.DisplayStateData;
+import org.tizen.emulator.skin.comm.sock.data.KeyEventData;
 import org.tizen.emulator.skin.comm.sock.data.MouseEventData;
 import org.tizen.emulator.skin.config.EmulatorConfig;
 import org.tizen.emulator.skin.config.EmulatorConfig.ArgsConstants;
@@ -152,7 +152,7 @@ public class EmulatorSkin {
        public ScreenShotDialog screenShotDialog;
 
        protected SocketCommunicator communicator;
-       private Listener shellCloseListener;
+       private ShellListener shellListener;
        private MenuDetectListener shellMenuDetectListener;
 
        //private DragDetectListener canvasDragDetectListener;
@@ -235,7 +235,7 @@ public class EmulatorSkin {
                currentState.setHoverColor(loadHoverColor());
 
                /* added event handlers */
-               addShellListener(shell);
+               addMainWindowListener(shell);
                addCanvasListener(shell, lcdCanvas);
 
                setFocus();
@@ -348,11 +348,12 @@ public class EmulatorSkin {
                skinComposer.composerFinalize();
        }
 
-       private void addShellListener(final Shell shell) {
+       private void addMainWindowListener(final Shell shell) {
 
-               shellCloseListener = new Listener() {
+               shellListener = new ShellListener() {
                        @Override
-                       public void handleEvent(Event event) {
+                       public void shellClosed(ShellEvent event) {
+                               logger.info("Main Window is closed");
 
                                if (isShutdownRequested) {
                                        removeShellListeners();
@@ -414,12 +415,44 @@ public class EmulatorSkin {
                                                communicator.sendToQEMU(SendCommand.CLOSE, null);
                                        }
                                }
+                       }
+
+                       @Override
+                       public void shellActivated(ShellEvent event) {
+                               logger.info("activate");
+
+                               if (isOnTop == false && isKeyWindow == true) {
+                                       if (keyWindow != null) {
+                                               keyWindow.getShell().moveAbove(shell);
+
+                                               if (keyWindow.getDockPosition() != SWT.NONE) {
+                                                       shell.moveAbove(keyWindow.getShell());
+                                               }
+                                       }
+                               }
+                       }
+
+                       @Override
+                       public void shellDeactivated(ShellEvent arg0) {
+                               //logger.info("deactivate");
+
+                               /* do nothing */
+                       }
+
+                       @Override
+                       public void shellDeiconified(ShellEvent arg0) {
+                               /* do nothing */
+                       }
 
+                       @Override
+                       public void shellIconified(ShellEvent arg0) {
+                               /* do nothing */
                        }
                };
 
-               shell.addListener(SWT.Close, shellCloseListener);
+               shell.addShellListener(shellListener);
 
+               /* menu */
                shellMenuDetectListener = new MenuDetectListener() {
                        @Override
                        public void menuDetected(MenuDetectEvent e) {
@@ -440,8 +473,8 @@ public class EmulatorSkin {
        }
 
        private void removeShellListeners() {
-               if (null != shellCloseListener) {
-                       shell.removeListener(SWT.Close, shellCloseListener);
+               if (null != shellListener) {
+                       shell.removeShellListener(shellListener);
                }
 
                if (null != shellMenuDetectListener) {
@@ -473,17 +506,9 @@ public class EmulatorSkin {
                canvasFocusListener = new FocusListener() {
                        @Override
                        public void focusGained(FocusEvent event) {
-                               logger.info("gain focus");
+                               //logger.info("gain focus");
 
-                               if (isOnTop == false && isKeyWindow == true) {
-                                       if (keyWindow != null) {
-                                               keyWindow.getShell().moveAbove(shell);
-
-                                               if (keyWindow.getDockPosition() != SWT.NONE) {
-                                                       shell.moveAbove(keyWindow.getShell());
-                                               }
-                                       }
-                               }
+                               /* do nothing */
                        }
 
                        @Override
index 3f46a64..799d486 100644 (file)
@@ -32,13 +32,13 @@ import java.util.List;
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
 import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.MouseListener;
 import org.eclipse.swt.events.MouseMoveListener;
 import org.eclipse.swt.events.PaintEvent;
 import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.events.ShellEvent;
+import org.eclipse.swt.events.ShellListener;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.ImageData;
@@ -59,6 +59,7 @@ import org.tizen.emulator.skin.comm.ICommunicator.KeyEventType;
 import org.tizen.emulator.skin.comm.ICommunicator.SendCommand;
 import org.tizen.emulator.skin.comm.sock.SocketCommunicator;
 import org.tizen.emulator.skin.comm.sock.data.KeyEventData;
+import org.tizen.emulator.skin.config.EmulatorConfig.SkinPropertiesConstants;
 import org.tizen.emulator.skin.dbi.KeyMapType;
 import org.tizen.emulator.skin.layout.SkinPatches;
 import org.tizen.emulator.skin.util.SwtUtil;
@@ -82,10 +83,10 @@ public class KeyWindow extends SkinWindow {
        private SocketCommunicator communicator;
        private List<KeyMapType> keyMapList;
 
+       private ShellListener shellListener;
        private PaintListener shellPaintListener;
        private MouseMoveListener shellMouseMoveListener;
        private MouseListener shellMouseListener;
-       private Listener shellCloseListener;
 
        private boolean isGrabbedShell;
        private Point grabPosition;
@@ -168,28 +169,6 @@ public class KeyWindow extends SkinWindow {
                        }
                });
 
-               pairTagCanvas.addFocusListener(new FocusListener() {
-                       @Override
-                       public void focusGained(FocusEvent event) {
-                               logger.info("gain focus");
-
-                               if (SwtUtil.isMacPlatform() == false) { //TODO:
-                               shell.getDisplay().asyncExec(new Runnable() {
-                                       @Override
-                                       public void run() {
-                                               skin.setFocus();
-                                       }
-                               });
-                               }
-                       }
-
-                       @Override
-                       public void focusLost(FocusEvent event) {
-                               logger.info("lost focus");
-                       }
-               });
-               pairTagCanvas.setFocus();
-
                /* */
                ScrolledComposite compositeScroll = new ScrolledComposite(shell, SWT.V_SCROLL);
                compositeScroll.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 1));
@@ -293,6 +272,76 @@ public class KeyWindow extends SkinWindow {
 
                shell.addPaintListener(shellPaintListener);
 
+               shellListener = new ShellListener() {
+                       @Override
+                       public void shellClosed(ShellEvent event) {
+                               logger.info("Key Window is closed");
+
+                               if (skin.pairTagCanvas != null) {
+                                       skin.pairTagCanvas.setVisible(false);
+                               }
+                               skin.keyWindow = null;
+
+                               if (null != shellPaintListener) {
+                                       shell.removePaintListener(shellPaintListener);
+                               }
+
+                               if (null != shellListener) {
+                                       shell.removeShellListener(shellListener);
+                               }
+
+                               if (null != shellMouseMoveListener) {
+                                       shell.removeMouseMoveListener(shellMouseMoveListener);
+                               }
+
+                               if (null != shellMouseListener) {
+                                       shell.removeMouseListener(shellMouseListener);
+                               }
+
+                               imageNormal.dispose();
+                               imageHover.dispose();
+                               imagePushed.dispose();
+                               colorFrame.dispose();
+
+                               frameMaker.freePatches();
+                       }
+
+                       @Override
+                       public void shellActivated(ShellEvent event) {
+                               logger.info("activate");
+
+                               if (SwtUtil.isMacPlatform() == true) {
+                                       parent.moveAbove(shell);
+                               } else {
+                                       shell.getDisplay().asyncExec(new Runnable() {
+                                               @Override
+                                               public void run() {
+                                                       parent.setActive();
+                                               }
+                                       });
+                               }
+                       }
+
+                       @Override
+                       public void shellDeactivated(ShellEvent arg0) {
+                               logger.info("deactivate");
+
+                               /* do nothing */
+                       }
+
+                       @Override
+                       public void shellDeiconified(ShellEvent arg0) {
+                               /* do nothing */
+                       }
+
+                       @Override
+                       public void shellIconified(ShellEvent arg0) {
+                               /* do nothing */
+                       }
+               };
+
+               shell.addShellListener(shellListener);
+
                shellMouseMoveListener = new MouseMoveListener() {
                        @Override
                        public void mouseMove(MouseEvent e) {
@@ -373,39 +422,6 @@ public class KeyWindow extends SkinWindow {
                };
 
                shell.addMouseListener(shellMouseListener);
-
-               shellCloseListener = new Listener() {
-                       @Override
-                       public void handleEvent(Event event) {
-                               logger.info("Key Window is closed");
-
-                               if (skin.pairTagCanvas != null) {
-                                       skin.pairTagCanvas.setVisible(false);
-                               }
-                               skin.keyWindow = null;
-
-                               if (null != shellPaintListener) {
-                                       shell.removePaintListener(shellPaintListener);
-                               }
-
-                               if (null != shellMouseMoveListener) {
-                                       shell.removeMouseMoveListener(shellMouseMoveListener);
-                               }
-
-                               if (null != shellMouseListener) {
-                                       shell.removeMouseListener(shellMouseListener);
-                               }
-
-                               imageNormal.dispose();
-                               imageHover.dispose();
-                               imagePushed.dispose();
-                               colorFrame.dispose();
-
-                               frameMaker.freePatches();
-                       }
-               };
-
-               shell.addListener(SWT.Close, shellCloseListener);
        }
 
        public Color getPairTagColor() {