skin: separate a adjustLcdGeometry
authorgiwoong.kim <giwoong.kim@samsung.com>
Mon, 12 Nov 2012 10:52:23 +0000 (19:52 +0900)
committergiwoong.kim <giwoong.kim@samsung.com>
Mon, 12 Nov 2012 11:50:38 +0000 (20:50 +0900)
Separate a adjustLcdGeometry function according to skin type.

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/ISkinComposer.java
tizen/src/skin/client/src/org/tizen/emulator/skin/layout/PhoneShapeSkinComposer.java
tizen/src/skin/client/src/org/tizen/emulator/skin/util/SkinUtil.java

index bb410741fb11a80a9d8905bfaab1fe0cc374d748..05c7fa30f06e1c81b5b3fb2c6876f84b1b4208aa 100644 (file)
@@ -64,9 +64,7 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Decorations;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
@@ -181,6 +179,7 @@ public class EmulatorSkin {
        private MouseWheelListener canvasMouseWheelListener;
        private KeyListener canvasKeyListener;
        private MenuDetectListener canvasMenuDetectListener;
+       private FocusListener canvasFocusListener;
 
        private LinkedList<KeyEventData> pressedKeyEventList;
        private int pressedHWKeyCode;
@@ -426,35 +425,6 @@ public class EmulatorSkin {
                        shell.addPaintListener(shellPaintListener);
                }
 
-               FocusListener shellFocusListener = new FocusListener() {
-                       @Override
-                       public void focusGained(FocusEvent event) {
-                               logger.info("gain focus");
-                       }
-
-                       public void focusLost(FocusEvent event) {
-                               logger.info("lost focus");
-
-                               /* key event compensation */
-                               if (pressedKeyEventList.isEmpty() == false) {
-                                       for (KeyEventData data : pressedKeyEventList) {
-                                               KeyEventData keyEventData = new KeyEventData(
-                                                               KeyEventType.RELEASED.value(), data.keycode,
-                                                               data.stateMask, data.keyLocation);
-                                               communicator.sendToQEMU(SendCommand.SEND_KEY_EVENT, keyEventData);
-
-                                               logger.info("auto release : keycode=" + keyEventData.keycode +
-                                                               ", stateMask=" + keyEventData.stateMask +
-                                                               ", keyLocation=" + keyEventData.keyLocation);
-                                       }
-                               }
-
-                               pressedKeyEventList.clear();
-                       }
-               };
-
-               lcdCanvas.addFocusListener(shellFocusListener);
-
                shellMouseTrackListener = new MouseTrackAdapter() {
                        @Override
                        public void mouseExit( MouseEvent e ) {
@@ -707,8 +677,8 @@ public class EmulatorSkin {
 
        }
 
-       private void addCanvasListener( final Shell shell, final Canvas canvas ) {
-
+       private void addCanvasListener(final Shell shell, final Canvas canvas) {
+               /* menu */
                canvasMenuDetectListener = new MenuDetectListener() {
                        @Override
                        public void menuDetected(MenuDetectEvent e) {
@@ -725,7 +695,37 @@ public class EmulatorSkin {
                };
 
                // remove 'input method' menu item ( avoid bug )
-               canvas.addMenuDetectListener( canvasMenuDetectListener );
+               canvas.addMenuDetectListener(canvasMenuDetectListener);
+
+               /* focus */
+               canvasFocusListener = new FocusListener() {
+                       @Override
+                       public void focusGained(FocusEvent event) {
+                               logger.info("gain focus");
+                       }
+
+                       public void focusLost(FocusEvent event) {
+                               logger.info("lost focus");
+
+                               /* key event compensation */
+                               if (pressedKeyEventList.isEmpty() == false) {
+                                       for (KeyEventData data : pressedKeyEventList) {
+                                               KeyEventData keyEventData = new KeyEventData(
+                                                               KeyEventType.RELEASED.value(), data.keycode,
+                                                               data.stateMask, data.keyLocation);
+                                               communicator.sendToQEMU(SendCommand.SEND_KEY_EVENT, keyEventData);
+
+                                               logger.info("auto release : keycode=" + keyEventData.keycode +
+                                                               ", stateMask=" + keyEventData.stateMask +
+                                                               ", keyLocation=" + keyEventData.keyLocation);
+                                       }
+                               }
+
+                               pressedKeyEventList.clear();
+                       }
+               };
+
+               lcdCanvas.addFocusListener(canvasFocusListener);
 
                /* mouse event */
                /*canvasDragDetectListener = new DragDetectListener() {
@@ -1022,26 +1022,32 @@ public class EmulatorSkin {
        }
 
        private void removeCanvasListeners() {
-
 //             if ( null != canvasDragDetectListener ) {
 //                     lcdCanvas.removeDragDetectListener( canvasDragDetectListener );
 //             }
-               if ( null != canvasMouseMoveListener ) {
-                       lcdCanvas.removeMouseMoveListener( canvasMouseMoveListener );
+               if (null != canvasMouseMoveListener) {
+                       lcdCanvas.removeMouseMoveListener(canvasMouseMoveListener);
                }
-               if ( null != canvasMouseListener ) {
-                       lcdCanvas.removeMouseListener( canvasMouseListener );
+
+               if (null != canvasMouseListener) {
+                       lcdCanvas.removeMouseListener(canvasMouseListener);
                }
-               if ( null != canvasKeyListener ) {
-                       lcdCanvas.removeKeyListener( canvasKeyListener );
+
+               if (null != canvasKeyListener) {
+                       lcdCanvas.removeKeyListener(canvasKeyListener);
                }
-               if ( null != canvasMenuDetectListener ) {
-                       lcdCanvas.removeMenuDetectListener( canvasMenuDetectListener );
+
+               if (null != canvasMenuDetectListener) {
+                       lcdCanvas.removeMenuDetectListener(canvasMenuDetectListener);
                }
-       if ( null != canvasMouseWheelListener ) {
-                       lcdCanvas.removeMouseWheelListener( canvasMouseWheelListener );
+
+               if (null != canvasFocusListener) {
+                       lcdCanvas.removeFocusListener(canvasFocusListener);
                }
 
+               if (null != canvasMouseWheelListener) {
+                       lcdCanvas.removeMouseWheelListener(canvasMouseWheelListener);
+               }
        }
 
        private Field getOSField( String field ) {
index 13adf71cc536ab141f9b7e38329a39be8c1dc0e9..e136643e5fecc6e63161a9f51b41c8681e0e1c3b 100644 (file)
@@ -46,6 +46,7 @@ import org.eclipse.swt.widgets.Decorations;
 import org.eclipse.swt.widgets.Shell;
 import org.tizen.emulator.skin.EmulatorSkinState;
 import org.tizen.emulator.skin.comm.ICommunicator.KeyEventType;
+import org.tizen.emulator.skin.comm.ICommunicator.RotationInfo;
 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;
@@ -101,7 +102,7 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                int scale = SkinUtil.getValidScale(config);
                short rotationId = EmulatorConfig.DEFAULT_WINDOW_ROTATION;
 
-               composeInternal(lcdCanvas, x, y, scale, rotationId, false);
+               composeInternal(lcdCanvas, x, y, scale, rotationId);
                logger.info("resolution : " + currentState.getCurrentResolution() +
                                ", scale : " + scale);
                
@@ -110,7 +111,7 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
 
        @Override
        public void composeInternal(Canvas lcdCanvas,
-                       int x, int y, int scale, short rotationId, boolean isOnKbd) {
+                       int x, int y, int scale, short rotationId) {
 
                //shell.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
                shell.setLocation(x, y);
@@ -136,10 +137,9 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                currentState.setCurrentAngle(SkinRotation.getAngle(rotationId));
 
                /* arrange the lcd */
-               Rectangle lcdBounds = SkinUtil.adjustLcdGeometry(lcdCanvas,
+               Rectangle lcdBounds = adjustLcdGeometry(lcdCanvas,
                                currentState.getCurrentResolutionWidth(),
-                               currentState.getCurrentResolutionHeight(), scale, rotationId,
-                               false);
+                               currentState.getCurrentResolutionHeight(), scale, rotationId);
 
                if (lcdBounds == null) {
                        logger.severe("Failed to lcd information for phone shape skin.");
@@ -207,4 +207,25 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                shell.pack();
        }
 
+       @Override
+       public Rectangle adjustLcdGeometry(
+                       Canvas lcdCanvas, int resolutionW, int resolutionH,
+                       int scale, short rotationId) {
+               Rectangle lcdBounds = new Rectangle(0, 0, 0, 0);
+
+               float convertedScale = SkinUtil.convertScale(scale);
+               RotationInfo rotation = RotationInfo.getValue(rotationId);
+
+               /* resoultion, that is lcd size in general skin mode */
+               if (RotationInfo.LANDSCAPE == rotation ||
+                               RotationInfo.REVERSE_LANDSCAPE == rotation) {
+                       lcdBounds.width = (int)(resolutionH * convertedScale);
+                       lcdBounds.height = (int)(resolutionW * convertedScale);
+               } else {
+                       lcdBounds.width = (int)(resolutionW * convertedScale);
+                       lcdBounds.height = (int)(resolutionH * convertedScale);
+               }
+
+               return lcdBounds;
+       }
 }
index 1b4c7880a047cc24f337610c54591f441f235b1a..5862ee70d92f4ac91e278481c058a980d3867c50 100644 (file)
 
 package org.tizen.emulator.skin.layout;
 
+import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.widgets.Canvas;
 
 public interface ISkinComposer {
        public abstract Canvas compose();
+
        public abstract void composeInternal(Canvas lcdCanvas,
-                                       int x, int y, int scale, short rotationId, boolean isOnKbd);
+                       int x, int y, int scale, short rotationId);
+
        public abstract void arrangeSkin(int scale, short rotationId);
+
+       public abstract Rectangle adjustLcdGeometry(
+                       Canvas lcdCanvas, int resolutionW, int resolutionH,
+                       int scale, short rotationId);
 }
index b1a0a49c3510d9f664132f816ce28e84cc6df0b9..980cf4897701fe9c13c2c6a1daa1ab084e616ac6 100644 (file)
@@ -34,16 +34,15 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.ImageData;
 import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
 import org.eclipse.swt.widgets.Canvas;
 import org.eclipse.swt.widgets.Shell;
-import org.tizen.emulator.skin.EmulatorSkin;
 import org.tizen.emulator.skin.EmulatorSkinState;
 import org.tizen.emulator.skin.config.EmulatorConfig;
 import org.tizen.emulator.skin.config.EmulatorConfig.ArgsConstants;
 import org.tizen.emulator.skin.config.EmulatorConfig.SkinPropertiesConstants;
+import org.tizen.emulator.skin.dbi.LcdType;
+import org.tizen.emulator.skin.dbi.RegionType;
+import org.tizen.emulator.skin.dbi.RotationType;
 import org.tizen.emulator.skin.image.ImageRegistry;
 import org.tizen.emulator.skin.image.ImageRegistry.IconName;
 import org.tizen.emulator.skin.image.ImageRegistry.ImageType;
@@ -91,7 +90,7 @@ public class PhoneShapeSkinComposer implements ISkinComposer {
                // has to be portrait mode at first booting time
                short rotationId = EmulatorConfig.DEFAULT_WINDOW_ROTATION;
 
-               composeInternal(lcdCanvas, x, y, scale, rotationId, false);
+               composeInternal(lcdCanvas, x, y, scale, rotationId);
                logger.info("resolution : " + currentState.getCurrentResolution() +
                                ", scale : " + scale);
                
@@ -100,7 +99,7 @@ public class PhoneShapeSkinComposer implements ISkinComposer {
 
        @Override
        public void composeInternal(Canvas lcdCanvas,
-                       int x, int y, int scale, short rotationId, boolean isOnKbd) {
+                       int x, int y, int scale, short rotationId) {
 
                //shell.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
                shell.setLocation(x, y);
@@ -132,22 +131,6 @@ public class PhoneShapeSkinComposer implements ISkinComposer {
                currentState.setCurrentRotationId(rotationId);
                currentState.setCurrentAngle(SkinRotation.getAngle(rotationId));
 
-               /* arrange the lcd */
-               Rectangle lcdBounds = SkinUtil.adjustLcdGeometry(lcdCanvas,
-                               currentState.getCurrentResolutionWidth(),
-                               currentState.getCurrentResolutionHeight(), scale, rotationId,
-                               true);
-
-               if (lcdBounds == null) {
-                       logger.severe("Failed to lcd information for phone shape skin.");
-                       SkinUtil.openMessage(shell, null,
-                                       "Failed to read lcd information for phone shape skin.\n" +
-                                       "Check the contents of skin dbi file.",
-                                       SWT.ICON_ERROR, config);
-                       System.exit(-1);
-               }
-               logger.info("lcd bounds : " + lcdBounds);
-
                /* arrange the skin image */
                Image tempImage = null;
                Image tempKeyPressedImage = null;
@@ -184,6 +167,53 @@ public class PhoneShapeSkinComposer implements ISkinComposer {
                shell.redraw();
                shell.pack();
 
+               /* arrange the lcd */
+               Rectangle lcdBounds = adjustLcdGeometry(lcdCanvas,
+                               currentState.getCurrentResolutionWidth(),
+                               currentState.getCurrentResolutionHeight(), scale, rotationId);
+
+               if (lcdBounds == null) {
+                       logger.severe("Failed to lcd information for phone shape skin.");
+                       SkinUtil.openMessage(shell, null,
+                                       "Failed to read lcd information for phone shape skin.\n" +
+                                       "Check the contents of skin dbi file.",
+                                       SWT.ICON_ERROR, config);
+                       System.exit(-1);
+               }
+               logger.info("lcd bounds : " + lcdBounds);
+
                lcdCanvas.setBounds(lcdBounds);
        }
+
+       @Override
+       public Rectangle adjustLcdGeometry(
+                       Canvas lcdCanvas, int resolutionW, int resolutionH,
+                       int scale, short rotationId) {
+               Rectangle lcdBounds = new Rectangle(0, 0, 0, 0);
+
+               float convertedScale = SkinUtil.convertScale(scale);
+               RotationType rotation = SkinRotation.getRotation(rotationId);
+
+               LcdType lcd = rotation.getLcd(); /* from dbi */
+               if (lcd == null) {
+                       return null;
+               }
+
+               RegionType region = lcd.getRegion();
+               if (region == null) {
+                       return null;
+               }
+
+               Integer left = region.getLeft();
+               Integer top = region.getTop();
+               Integer width = region.getWidth();
+               Integer height = region.getHeight();
+
+               lcdBounds.x = (int) (left * convertedScale);
+               lcdBounds.y = (int) (top * convertedScale);
+               lcdBounds.width = (int) (width * convertedScale);
+               lcdBounds.height = (int) (height * convertedScale);
+
+               return lcdBounds;
+       }
 }
index b307b626aa01f68c44efbc9a7403e1a9bdbd0674..75f83032df334640b490df401938feb3cb4254a9 100644 (file)
@@ -36,9 +36,6 @@ import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.ImageData;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.graphics.Region;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Canvas;
 import org.eclipse.swt.widgets.MessageBox;
 import org.eclipse.swt.widgets.Shell;
 import org.tizen.emulator.skin.comm.ICommunicator.RotationInfo;
@@ -48,7 +45,6 @@ import org.tizen.emulator.skin.config.EmulatorConfig.ArgsConstants;
 import org.tizen.emulator.skin.config.EmulatorConfig.SkinPropertiesConstants;
 import org.tizen.emulator.skin.dbi.EventInfoType;
 import org.tizen.emulator.skin.dbi.KeyMapType;
-import org.tizen.emulator.skin.dbi.LcdType;
 import org.tizen.emulator.skin.dbi.RegionType;
 import org.tizen.emulator.skin.dbi.RotationType;
 import org.tizen.emulator.skin.image.ImageRegistry;
@@ -110,52 +106,6 @@ public class SkinUtil {
                return sdbPath;
        }
 
-       public static Rectangle adjustLcdGeometry(
-                       Canvas lcdCanvas, int resolutionW, int resolutionH,
-                       int scale, short rotationId, boolean isPhoneShape) {
-
-               float convertedScale = convertScale(scale);
-               Rectangle lcdBounds = new Rectangle(0, 0, 0, 0);
-
-               if (isPhoneShape == false) {
-                       RotationInfo rotation = RotationInfo.getValue(rotationId);
-
-                       /* resoultion, that is lcd size in general skin mode */
-                       if (RotationInfo.LANDSCAPE == rotation ||
-                                       RotationInfo.REVERSE_LANDSCAPE == rotation) {
-                               lcdBounds.width = (int)(resolutionH * convertedScale);
-                               lcdBounds.height = (int)(resolutionW * convertedScale);
-                       } else {
-                               lcdBounds.width = (int)(resolutionW * convertedScale);
-                               lcdBounds.height = (int)(resolutionH * convertedScale);
-                       }
-               } else {
-                       RotationType rotation = SkinRotation.getRotation(rotationId);
-
-                       LcdType lcd = rotation.getLcd(); /* from dbi */
-                       if (lcd == null) {
-                               return null;
-                       }
-
-                       RegionType region = lcd.getRegion();
-                       if (region == null) {
-                               return null;
-                       }
-
-                       Integer left = region.getLeft();
-                       Integer top = region.getTop();
-                       Integer width = region.getWidth();
-                       Integer height = region.getHeight();
-
-                       lcdBounds.x = (int) (left * convertedScale);
-                       lcdBounds.y = (int) (top * convertedScale);
-                       lcdBounds.width = (int) (width * convertedScale);
-                       lcdBounds.height = (int) (height * convertedScale);
-               }
-
-               return lcdBounds;
-       }
-
        public static SkinRegion getHardKeyArea( int currentX, int currentY, short rotationId, int scale ) {
 
                float convertedScale = convertScale( scale );