From: giwoong.kim Date: Thu, 17 Jan 2013 06:10:25 +0000 (+0900) Subject: skin: activate event handling X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~1161 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9db753a5199bff19c25d2fac8ff5b946f273477d;p=sdk%2Femulator%2Fqemu.git skin: activate event handling activate event handling Signed-off-by: GiWoong Kim --- diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java index e5e8b6f99f..2b91009b87 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java @@ -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 diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/KeyWindow.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/KeyWindow.java index 3f46a643b8..799d486adf 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/KeyWindow.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/KeyWindow.java @@ -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 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() {