[Title] sdb shell menu is supported (ubuntu & windows)
authorgiwoong.kim <giwoong.kim@samsung.com>
Fri, 23 Mar 2012 11:41:03 +0000 (20:41 +0900)
committergiwoong.kim <giwoong.kim@samsung.com>
Fri, 23 Mar 2012 11:41:03 +0000 (20:41 +0900)
[Type]
[Module] Emulator
[Priority]
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/util/SkinUtil.java

index f3c26bfa1dcc8d3d5287942bcc2d728f356323ac..adbbdb5401a5a69eb9713e7205b4d7173c3bd26e 100644 (file)
@@ -29,6 +29,7 @@
 
 package org.tizen.emulator.skin;
 
+import java.io.IOException;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -88,9 +89,9 @@ import org.tizen.emulator.skin.log.SkinLogger;
 import org.tizen.emulator.skin.screenshot.ScreenShotDialog;
 import org.tizen.emulator.skin.util.SkinRegion;
 import org.tizen.emulator.skin.util.SkinRotation;
-import org.tizen.emulator.skin.util.StringUtil;
 import org.tizen.emulator.skin.util.SkinRotation.RotationInfo;
 import org.tizen.emulator.skin.util.SkinUtil;
+import org.tizen.emulator.skin.util.StringUtil;
 
 /**
  * 
@@ -681,25 +682,35 @@ public class EmulatorSkin {
                shellItem.addSelectionListener( new SelectionAdapter() {
                        @Override
                        public void widgetSelected( SelectionEvent e ) {
-                               int portNumber = Integer.parseInt(StringUtil.nvl(config.getArg( ArgsConstants.NET_BASE_PORT ))) + 1;
-                               String sdbPath = "./../../SDK/sdb/sdb"; //TOOD:
 
-                               try {
-                                       if (SkinUtil.isLinuxPlatform()) {
-                                               ProcessBuilder procConnect = new ProcessBuilder(sdbPath, "connect", "localhost:" + portNumber);                                 
-                                               ProcessBuilder procSDB = new ProcessBuilder("/usr/bin/gnome-terminal", "--disable-factory", "-x",
-                                                               sdbPath, "-s", "localhost:" + portNumber, "shell");
+                               String sdbPath = SkinUtil.getSdbPath();
+                               String portNumber = StringUtil.nvl(config.getArg( ArgsConstants.NET_BASE_PORT ));
+
+                               if (!StringUtil.isEmpty(portNumber) && !StringUtil.isEmpty(portNumber)) {
+                                       int portSdb = Integer.parseInt(portNumber) + 1;
 
-                                               procConnect.start();
-                                               procSDB.start();
+                                       ProcessBuilder procConnect = new ProcessBuilder(sdbPath, "connect", "localhost:" + portSdb);
+                                       ProcessBuilder procSdb = new ProcessBuilder();
+
+                                       if (SkinUtil.isLinuxPlatform()) {
+                                               procSdb.command("/usr/bin/gnome-terminal", "--disable-factory", "-x",
+                                                               sdbPath, "-s", "localhost:" + portSdb, "shell");
                                        } else if (SkinUtil.isWindowsPlatform()) {
-                                               //TODO:
+                                               procSdb.command("cmd.exe", "/c", "start",
+                                                               sdbPath, "-s", "localhost:" + portSdb, "shell");
+                                       }
+
+                                       try {
+                                               procConnect.start(); //connect with sdb
+                                               procSdb.start(); //open sdb shell
+                                       } catch (Exception ee) {
+                                               logger.log(Level.SEVERE, ee.getMessage(), ee);
+
+                                               MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR);
+                                               messageBox.setText(SkinUtil.makeEmulatorName(config));
+                                               messageBox.setMessage(ee.getMessage());
+                                               messageBox.open();
                                        }
-                               } catch (Exception e2) {
-                                       //TODO
-                                       MessageBox messageBox = new MessageBox( shell );
-                                       messageBox.setMessage( "ERR" );
-                                       messageBox.open();
                                }
 
                                communicator.sendToQEMU( SendCommand.OPEN_SHELL, null );
@@ -938,14 +949,19 @@ public class EmulatorSkin {
 
                isShutdownRequested = true;
 
-               //close sdb shell
-               int portNumber = Integer.parseInt(StringUtil.nvl(config.getArg( ArgsConstants.NET_BASE_PORT ))) + 1;
-               String sdbPath = "./../../SDK/sdb/sdb"; //TOOD:
-               ProcessBuilder procDisconnect = new ProcessBuilder(sdbPath, "connect", "localhost:" + portNumber);
-               try {
-                       procDisconnect.start();
-               } catch (Exception e) {
-                       //TODO
+               /* disconnect with sdb */
+               String sdbPath = SkinUtil.getSdbPath();
+               String portNumber = StringUtil.nvl(config.getArg( ArgsConstants.NET_BASE_PORT ));
+
+               if (!StringUtil.isEmpty(portNumber) && !StringUtil.isEmpty(portNumber)) {
+                       int portSdb = Integer.parseInt(portNumber) + 1;
+
+                       ProcessBuilder procDisconnect = new ProcessBuilder(sdbPath, "connect", "localhost:" + portSdb);
+                       try {
+                               procDisconnect.start();
+                       } catch (IOException e) {
+                               logger.log(Level.SEVERE, e.getMessage(), e);
+                       }
                }
 
                if ( !this.shell.isDisposed() ) {
@@ -961,4 +977,4 @@ public class EmulatorSkin {
 
        }
 
-}
\ No newline at end of file
+}
index 3381e59225f7ed2d198d1f6b375c40624771d080..63b266b0b1dfb8863acb2efcd4461a2a57e8b6cc 100644 (file)
@@ -30,9 +30,7 @@
 package org.tizen.emulator.skin.util;
 
 import java.io.File;
-import java.lang.reflect.Field;
 import java.util.List;
-import java.util.logging.Level;
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
@@ -114,6 +112,18 @@ public class SkinUtil {
 
        }
 
+       public static String getSdbPath() {
+               String sdbPath = null;
+
+               if (SkinUtil.isLinuxPlatform()) {
+                       sdbPath = "./../../SDK/sdb/sdb";
+               } else if (SkinUtil.isWindowsPlatform()) {
+                       sdbPath = ".\\..\\..\\SDK\\sdb\\sdb.exe";
+               }
+
+               return sdbPath;
+       }
+
        public static void adjustLcdGeometry( Canvas lcdCanvas, int scale, short rotationId ) {
 
                RotationType rotation = SkinRotation.getRotation( rotationId );