check-process: changed to run as background
authorminkee.lee <minkee.lee@samsung.com>
Tue, 22 Dec 2015 10:11:29 +0000 (19:11 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Wed, 23 Dec 2015 05:05:13 +0000 (14:05 +0900)
- In initializing stage, main thread has changed not to wait until
checking job such as check VT, check GPU is finished.
- Add job for check webcam.

Change-Id: Ib6aeeb6778c6fc7d2a53ce2d3d613c9ecf13b795
Signed-off-by: minkee.lee <minkee.lee@samsung.com>
13 files changed:
src/org/tizen/emulator/manager/EmulatorManager.java
src/org/tizen/emulator/manager/console/ConsoleProcessor.java
src/org/tizen/emulator/manager/job/CheckAbout.java [moved from src/org/tizen/emulator/manager/job/InitAboutContents.java with 89% similarity]
src/org/tizen/emulator/manager/job/CheckGPU.java
src/org/tizen/emulator/manager/job/CheckSDCard.java
src/org/tizen/emulator/manager/job/CheckVT.java
src/org/tizen/emulator/manager/job/CheckWebcam.java [new file with mode: 0644]
src/org/tizen/emulator/manager/job/Job.java
src/org/tizen/emulator/manager/job/Overseer.java
src/org/tizen/emulator/manager/tool/About.java
src/org/tizen/emulator/manager/ui/detail/item/property/CameraViewItem.java
src/org/tizen/emulator/manager/ui/dialog/AboutDialog.java
src/org/tizen/emulator/manager/vms/VMLauncher.java

index 7d056fa..0fcba7f 100755 (executable)
@@ -41,10 +41,11 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 import org.tizen.emulator.manager.console.Action;
 import org.tizen.emulator.manager.console.CommandLineParser;
+import org.tizen.emulator.manager.job.CheckAbout;
 import org.tizen.emulator.manager.job.CheckGPU;
 import org.tizen.emulator.manager.job.CheckSDCard;
 import org.tizen.emulator.manager.job.CheckVT;
-import org.tizen.emulator.manager.job.InitAboutContents;
+import org.tizen.emulator.manager.job.CheckWebcam;
 import org.tizen.emulator.manager.job.Overseer;
 import org.tizen.emulator.manager.logging.EMLogger;
 import org.tizen.emulator.manager.resources.FilePathResources;
@@ -245,107 +246,105 @@ public class EmulatorManager {
                }
                //
                Runtime.getRuntime().addShutdownHook(new Thread(new EMShutdownHook()));
+
+
                //
                try{
-               checkConsoleMode(args);
+                       checkConsoleMode(args);
 
-               if (isConsoleMode) {
-                       EMLogger.getInstance().initLogger();
-                       /*
-                       try {
-                               FileLock lock = randomAccessFile.getChannel().tryLock();
-                               if (lock == null) {
+                       Overseer startupPreparations = Overseer.newOverseer("StartupPreparations", //$NON-NLS-1$
+                                       CheckAbout.class);
+                       startupPreparations.startWork();
+
+                       if (isConsoleMode) {
+                               EMLogger.getInstance().initLogger();
+                               /*
+                               try {
+                                       FileLock lock = randomAccessFile.getChannel().tryLock();
+                                       if (lock == null) {
+                                               EMLogger.getLogger().log(Level.WARNING, "Can not launch Emulator Manager."
+                                                               + StringResources.NEW_LINE
+                                                               + "Another one with the same user name is running now."
+                                                               + StringResources.NEW_LINE);
+                                               System.out.println("Can not launch Emulator Manager."
+                                                               + StringResources.NEW_LINE
+                                                               + "Another Emulator Manager is running now.");
+                                               exitEmulatorManager(1);
+                                       }
+                               } catch (IOException e) {
                                        EMLogger.getLogger().log(Level.WARNING, "Can not launch Emulator Manager."
-                                                       + StringResources.NEW_LINE
-                                                       + "Another one with the same user name is running now."
-                                                       + StringResources.NEW_LINE);
-                                       System.out.println("Can not launch Emulator Manager."
-                                                       + StringResources.NEW_LINE
-                                                       + "Another Emulator Manager is running now.");
+                                                       + StringResources.NEW_LINE +e.getMessage() + StringResources.NEW_LINE);
                                        exitEmulatorManager(1);
                                }
-                       } catch (IOException e) {
-                               EMLogger.getLogger().log(Level.WARNING, "Can not launch Emulator Manager."
-                                               + StringResources.NEW_LINE +e.getMessage() + StringResources.NEW_LINE);
-                               exitEmulatorManager(1);
-                       }
-                       */
-
-                       processor = new CommandLineParser();
-                       processor.parseArgs(args);
+                               */
 
-               } else {
+                               processor = new CommandLineParser();
+                               processor.parseArgs(args);
 
-                       if (isMac()) {
-                               System.setProperty("apple.laf.useScreenMenuBar", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-                               System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Emulator Manager"); //$NON-NLS-1$ //$NON-NLS-2$
-                               Display display = Display.getDefault();
-                               display.syncExec(new Runnable() {
-                                       @Override
-                                       public void run() {
-                                               new CocoaUtil().removeTopMenuItems();
-                                       }
-                               });
-                       }
+                       } else {
 
-                       parseArgs(args);
+                               if (isMac()) {
+                                       System.setProperty("apple.laf.useScreenMenuBar", "true"); //$NON-NLS-1$ //$NON-NLS-2$
+                                       System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Emulator Manager"); //$NON-NLS-1$ //$NON-NLS-2$
+                                       Display display = Display.getDefault();
+                                       display.syncExec(new Runnable() {
+                                               @Override
+                                               public void run() {
+                                                       new CocoaUtil().removeTopMenuItems();
+                                               }
+                                       });
+                               }
 
-                       EMLogger.getInstance().initLogger();
+                               parseArgs(args);
 
-                       MessageDialog msg = new MessageDialog(new Shell(Display.getCurrent()));
+                               EMLogger.getInstance().initLogger();
 
-                       try {
-                               randomAccessFile = new RandomAccessFile(new File(FilePathResources.getToolEmulatorBinPath()
-                                               + File.separator + "." +System.getProperty("user.name"))+ ".lock", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-                                               "rw"); //$NON-NLS-1$
-                       }  catch (FileNotFoundException e) {
-                               msg.openInfoDialog(Messages.getString("EmulatorManager.StartError.2") //$NON-NLS-1$
-                                               + StringResources.NEW_LINE + e.getMessage());
-                               exitEmulatorManager(1);
-                       }
+                               MessageDialog msg = new MessageDialog(new Shell(Display.getCurrent()));
 
-                       try {
-                               FileLock lock = randomAccessFile.getChannel().tryLock();
-                               if (lock == null) {
-                                       msg.openInfoDialog(Messages.getString("EmulatorManager.StartError.0") + StringResources.NEW_LINE + //$NON-NLS-1$
-                                                          Messages.getString("EmulatorManager.StartError.1")); //$NON-NLS-1$
-                                       exitEmulatorManager(0);
+                               try {
+                                       randomAccessFile = new RandomAccessFile(new File(FilePathResources.getToolEmulatorBinPath()
+                                                       + File.separator + "." +System.getProperty("user.name"))+ ".lock", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+                                                       "rw"); //$NON-NLS-1$
+                               }  catch (FileNotFoundException e) {
+                                       msg.openInfoDialog(Messages.getString("EmulatorManager.StartError.2") //$NON-NLS-1$
+                                                       + StringResources.NEW_LINE + e.getMessage());
+                                       exitEmulatorManager(1);
                                }
-                       } catch (IOException e) {
-                               msg.openInfoDialog(Messages.getString("EmulatorManager.StartError.2") //$NON-NLS-1$
-                                                                       + StringResources.NEW_LINE + e.getMessage());
-                               exitEmulatorManager(1);
-                       }
 
-               }
+                               try {
+                                       FileLock lock = randomAccessFile.getChannel().tryLock();
+                                       if (lock == null) {
+                                               msg.openInfoDialog(Messages.getString("EmulatorManager.StartError.0") + StringResources.NEW_LINE + //$NON-NLS-1$
+                                                                  Messages.getString("EmulatorManager.StartError.1")); //$NON-NLS-1$
+                                               exitEmulatorManager(0);
+                                       }
+                               } catch (IOException e) {
+                                       msg.openInfoDialog(Messages.getString("EmulatorManager.StartError.2") //$NON-NLS-1$
+                                                                               + StringResources.NEW_LINE + e.getMessage());
+                                       exitEmulatorManager(1);
+                               }
 
+                               Overseer checkers = Overseer.newOverseer("Checkers", //$NON-NLS-1$
+                                               CheckVT.class, CheckGPU.class, CheckSDCard.class, CheckWebcam.class);
+                               checkers.startWork();
 
-               if (!SettingInfoFile.setMACaddr()) {
-                       exitEmulatorManager(1);
-               }
+                       }
 
-               Overseer startupPreparations = Overseer.newOverseer("StartupPreparations", //$NON-NLS-1$
-                               InitAboutContents.class);
-               startupPreparations.startWork();
 
-               Overseer checkers = Overseer.newOverseer("Checkers", //$NON-NLS-1$
-                               CheckVT.class, CheckGPU.class, CheckSDCard.class);
-               checkers.startWork();
+                       if (!SettingInfoFile.setMACaddr()) {
+                               exitEmulatorManager(1);
+                       }
 
-               // FIXME: we should not join overseer thread.
-               // but now we are not ready for asynchronous actions.
-               startupPreparations.join();
-               checkers.join();
 
-               if (isConsoleMode) {
-                       EmulatorManager.startConsoleProcessor();
-               } else {
-                       EMLogger.getLogger().log(Level.INFO, "Start Emulator Manager!!"); //$NON-NLS-1$
+                       if (isConsoleMode) {
+                               EmulatorManager.startConsoleProcessor();
+                       } else {
+                               EMLogger.getLogger().log(Level.INFO, "Start Emulator Manager!!"); //$NON-NLS-1$
 
-                       EmulatorManager.preare();
-                       EmulatorManager.draw();
-                       EmulatorManager.dispose();
-               }
+                               EmulatorManager.preare();
+                               EmulatorManager.draw();
+                               EmulatorManager.dispose();
+                       }
 
                } catch (Throwable e) {
                        e.printStackTrace();
index 1a9de3f..8fa6b16 100644 (file)
@@ -34,13 +34,13 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.logging.Level;
 
+import org.tizen.emulator.manager.job.CheckAbout;
 import org.tizen.emulator.manager.logging.EMLogger;
 import org.tizen.emulator.manager.platform.BaseImage;
 import org.tizen.emulator.manager.platform.Profile;
 import org.tizen.emulator.manager.platform.ProfileList;
 import org.tizen.emulator.manager.resources.FilePathResources;
 import org.tizen.emulator.manager.resources.StringResources;
-import org.tizen.emulator.manager.tool.About;
 import org.tizen.emulator.manager.vms.VMProperty;
 import org.tizen.emulator.manager.vms.helper.HelperClass;
 import org.tizen.emulator.manager.vms.helper.VMWorkerException;
@@ -66,7 +66,7 @@ public class ConsoleProcessor {
 
        public String getAboutInfo() {
                return "Emulator Manager" + StringResources.NEW_LINE + //$NON-NLS-1$
-                               About.getInstance().getContents();
+                               CheckAbout.getAboutInstance().getContents();
        }
 
        public String getDetailInfoOfVM(VMProperty prop) {
@@ -31,7 +31,12 @@ package org.tizen.emulator.manager.job;
 
 import org.tizen.emulator.manager.tool.About;
 
-public class InitAboutContents implements Job {
+public class CheckAbout extends Job {
+
+       public static About getAboutInstance() {
+               waitJob(CheckAbout.class);
+               return About.getInstance();
+       }
        @Override
        public void work() {
                About.initAboutContents();
index bb1b1a4..fc70363 100644 (file)
@@ -40,7 +40,7 @@ import org.tizen.emulator.manager.resources.FilePathResources;
 import org.tizen.emulator.manager.vms.helper.HelperClass;
 import org.tizen.emulator.manager.vms.helper.ProcessResult;
 
-public class CheckGPU implements Job {
+public class CheckGPU extends Job {
        private static final String GPU_CHECKER;
 
        private static boolean isGPUSupported = false;
@@ -51,10 +51,12 @@ public class CheckGPU implements Job {
        }
 
        public static boolean isGPUSupported() {
+               waitJob(CheckGPU.class);
                return isGPUSupported;
        }
 
        public static boolean isGallium() {
+               waitJob(CheckGPU.class);
                return isGallium;
        }
 
index d5bc099..7e79ebe 100644 (file)
@@ -41,7 +41,12 @@ import org.tizen.emulator.manager.logging.EMLogger;
 import org.tizen.emulator.manager.resources.FilePathResources;
 import org.tizen.emulator.manager.resources.StringResources;
 
-public class CheckSDCard implements Job {
+public class CheckSDCard extends Job {
+
+       public static void isSDCardChecked() {
+               waitJob(CheckSDCard.class);
+       }
+
        @Override
        public void work() {
                File dir = new File(FilePathResources.getSDCardPath());
index a8259ec..73747d3 100644 (file)
@@ -40,7 +40,7 @@ import org.tizen.emulator.manager.resources.FilePathResources;
 import org.tizen.emulator.manager.vms.helper.HelperClass;
 import org.tizen.emulator.manager.vms.helper.ProcessResult;
 
-public class CheckVT implements Job {
+public class CheckVT extends Job {
        private static final String HAX_CHECKER;
        private static final String ENABLE_HAX = "-enable-hax"; //$NON-NLS-1$
        private static final String ENABLE_KVM = "-enable-kvm"; //$NON-NLS-1$
@@ -50,6 +50,8 @@ public class CheckVT implements Job {
        private static boolean isVTSupported = false;
        private static boolean isNonUG = false; // for HAXM, non-UG CPU
 
+       private static CheckVT instance;
+
        static {
                HAX_CHECKER = EmulatorManager.isWin() ? "check-hax.exe" : "check-hax"; //$NON-NLS-1$ //$NON-NLS-2$
        }
@@ -62,17 +64,21 @@ public class CheckVT implements Job {
                return ENABLE_KVM;
        }
 
+
        public static boolean isVTSupported() {
+               waitJob(CheckVT.class);
                return isVTSupported;
        }
 
        // for HAXM
        public static boolean isNonUG() {
+               waitJob(CheckVT.class);
                return isNonUG;
        }
 
        @Override
        public void work() {
+
                if (EmulatorManager.isWin() || EmulatorManager.isMac()) {
                        List<String> cmd = new ArrayList<String>();
                        cmd.add(FilePathResources.getEmulatorCheckToolPath() + File.separator + HAX_CHECKER);
@@ -96,6 +102,7 @@ public class CheckVT implements Job {
                        }
                }
 
+
                EMLogger.getLogger().log(Level.INFO, "Support HW virtualization: " //$NON-NLS-1$
                                + Boolean.toString(isVTSupported));
                EMLogger.getLogger().log(Level.INFO, "non-UG: " //$NON-NLS-1$
diff --git a/src/org/tizen/emulator/manager/job/CheckWebcam.java b/src/org/tizen/emulator/manager/job/CheckWebcam.java
new file mode 100644 (file)
index 0000000..91ef669
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Emulator Manager
+ *
+ * Copyright (C) 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * SeokYeon Hwang <syeon.hwang@samsung.com>
+ * JiHye Kim <jihye424.kim@samsung.com>
+ * MinKee Lee <minkee.lee@samsung.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+
+package org.tizen.emulator.manager.job;
+
+import java.util.Arrays;
+
+import org.tizen.emulator.manager.logging.EMLogger;
+import org.tizen.emulator.manager.resources.FilePathResources;
+import org.tizen.emulator.manager.vms.helper.HelperClass;
+import org.tizen.emulator.manager.vms.helper.ProcessResult;
+
+public class CheckWebcam extends Job {
+
+       private static boolean isWebcamSupport = false;
+
+       public static boolean isWebcamSupport() {
+               waitJob(CheckWebcam.class);
+               return isWebcamSupport;
+       }
+
+       @Override
+       public void work() {
+               ProcessResult res = HelperClass.runProcess(Arrays
+                               .asList(FilePathResources.getCheckCamPath()));
+               int result = res.getExitValue();
+               if (result == 1) {
+                       isWebcamSupport = true;
+               }
+
+               EMLogger.getLogger().info("Support webcam : " + isWebcamSupport);
+       }
+
+}
index 545445d..02aa98c 100644 (file)
 
 package org.tizen.emulator.manager.job;
 
-interface Job {
-       public void work();
+import java.util.HashMap;
+import java.util.Map;
+
+import org.tizen.emulator.manager.logging.EMLogger;
+
+abstract class Job {
+
+       private static Map<Class<? extends Job>, Job> instanceMap
+                = new HashMap<Class<? extends Job>, Job>();
+
+       private Thread thread;
+
+       public void setThread(Thread thread) {
+               this.thread = thread;
+       }
+
+       public Thread getThread() {
+               return thread;
+       }
+
+       public static Job createInstance(Class<? extends Job> jobCls) {
+               Job instance = null;
+               try {
+                       instance = jobCls.newInstance();
+                       instanceMap.put(jobCls, instance);
+
+               } catch (InstantiationException | IllegalAccessException e) {
+                       EMLogger.getLogger().warning(e.getMessage());
+               }
+               return instance;
+       }
+
+       public static Job getInstance(Class<? extends Job> jobCls) {
+               Job job = instanceMap.get(jobCls);
+
+               if (job == null) {
+                       // for console mode
+                       job = createInstance(jobCls);
+               }
+               return job;
+       }
+
+
+       public static void waitJob(Class<? extends Job> jobCls) {
+               Job job = getInstance(jobCls);
+               Thread thread = job.getThread();
+
+               if (thread == null) {
+                       // for console mode
+                       job.work();
+                       return;
+               }
+
+               if (thread.isAlive()) {
+                       try {
+                               EMLogger.getLogger().info(jobCls + " is waiting for job complete.");
+                               thread.join();
+                       } catch (InterruptedException e) {
+                               e.printStackTrace();
+                       }
+               }
+       }
+
+       public abstract void work();
 }
index afd38a1..0c08d04 100644 (file)
@@ -52,20 +52,19 @@ public class Overseer {
                                return overseer;
                        }
                }
-
                return null;
        }
 
-       protected void startWorkInternal() throws InterruptedException {
-               doneSignal = new CountDownLatch(jobClasses.size());
-
+       private void startAllJobs() throws InterruptedException {
                for (Class<? extends Job> jobCls : jobClasses) {
-                       new Thread(new JobRunnable(doneSignal, jobCls)).start();
+                       Job job = Job.getInstance(jobCls);
+                       Thread thread = new Thread(new JobRunnable(doneSignal, job));
+                       job.setThread(thread);
+                       thread.start();
                }
-
-               doneSignal.await();
        }
 
+
        public void registerJob(Class<? extends Job> jobCls) {
                jobClasses.add(jobCls);
        }
@@ -77,27 +76,33 @@ public class Overseer {
 
                for (Class<? extends Job> jobCls: jobClasses) {
                        overseer.registerJob(jobCls);
+                       Job.createInstance(jobCls);
                }
 
                overseers.add(overseer);
-
                return overseer;
        }
 
+
        public void startWork() throws InterruptedException {
                if (overseerThread != null) {
                        // already started
                        assert false : "Overseer [" + name + "] already started !!!"; // for debugging... //$NON-NLS-1$ //$NON-NLS-2$
-
                        return;
                }
 
+               EMLogger.getLogger().log(Level.INFO, "Overseer [" + name + "] is starting..."); //$NON-NLS-1$ //$NON-NLS-2$
+
+               doneSignal = new CountDownLatch(jobClasses.size());
+               startAllJobs();
+
+               // overseerThread waits all jobs.
+               // If you want to wait until all jobs are finished, call join()
                overseerThread = new Thread(new Runnable() {
                        @Override
                        public void run() {
                                try {
-                                       EMLogger.getLogger().log(Level.INFO, "Overseer [" + name + "] is starting..."); //$NON-NLS-1$ //$NON-NLS-2$
-                                       Overseer.this.startWorkInternal();
+                                       doneSignal.await();
                                        EMLogger.getLogger().log(Level.INFO, "Overseer [" + name + "] is done..."); //$NON-NLS-1$ //$NON-NLS-2$
                                } catch (InterruptedException e) {
                                        e.printStackTrace();
@@ -106,7 +111,6 @@ public class Overseer {
                });
 
                overseerThread.start();
-
        }
 
        public void join() throws InterruptedException {
@@ -116,30 +120,24 @@ public class Overseer {
 
                if (overseerThread.isAlive()) {
                        overseerThread.join();
-
                        return;
                }
        }
 }
 
+
 class JobRunnable implements Runnable {
        private final CountDownLatch doneSignal;
-       private final Class<? extends Job> jobCls;
+       private final Job job;
 
-       JobRunnable(CountDownLatch doneSignal, Class<? extends Job> jobCls) {
+       JobRunnable(CountDownLatch doneSignal, Job job) {
                this.doneSignal = doneSignal;
-               this.jobCls = jobCls;
+               this.job = job;
        }
 
        @Override
        public void run() {
-               Job job = null;
-               try {
-                       job = jobCls.newInstance();
-                       job.work();
-                       doneSignal.countDown();
-               } catch (InstantiationException | IllegalAccessException e) {
-                       e.printStackTrace();
-               }
+               job.work();
+               doneSignal.countDown();
        }
-}
+}
\ No newline at end of file
index 3ad1ede..1ce2696 100644 (file)
@@ -56,17 +56,10 @@ public class About {
 
        // called from AboutDialog();
        public static void initAboutContents() {
-               if (about != null) {
-                       return;
-               }
-
                about = new About();
        }
 
        public static About getInstance() {
-               if (about == null) {
-                       about = new About();
-               }
                return about;
        }
 
@@ -101,7 +94,7 @@ public class About {
                        Properties props = new Properties();
                        props.load(fis);
                        ver = props.getProperty(StringResources.TIZEN_SDK_VERSION);
-                       
+
                } catch (FileNotFoundException e){
                        EMLogger.getLogger().log(Level.SEVERE, e.getMessage());
                } catch (Exception e) {
index 9d90dac..6945342 100644 (file)
 package org.tizen.emulator.manager.ui.detail.item.property;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
-import org.tizen.emulator.manager.resources.FilePathResources;
+import org.tizen.emulator.manager.job.CheckWebcam;
 import org.tizen.emulator.manager.ui.detail.item.LineLabelViewItem;
 import org.tizen.emulator.manager.ui.detail.item.template.DetailSubViewItem;
 import org.tizen.emulator.manager.ui.detail.item.template.LabelViewItem;
 import org.tizen.emulator.manager.vms.VMPropertyValue;
-import org.tizen.emulator.manager.vms.helper.HelperClass;
-import org.tizen.emulator.manager.vms.helper.ProcessResult;
 import org.tizen.emulator.manager.vms.xml.template.Item;
 
 public class CameraViewItem extends LabelViewItem {
@@ -59,8 +56,6 @@ public class CameraViewItem extends LabelViewItem {
        public static final String VALUE_WEBCAM = "Webcam"; //$NON-NLS-1$
        public static final String VALUE_VIRTUAL = "Virtual"; //$NON-NLS-1$
 
-       public static Boolean webcamSupport = null;
-
        public CameraViewItem(Item template, LineLabelViewItem lineLabelViewItem) {
                super(template, lineLabelViewItem);
        }
@@ -89,22 +84,9 @@ public class CameraViewItem extends LabelViewItem {
                }
        }
 
-       private static boolean checkWebcam() {
-               ProcessResult res = HelperClass.runProcess(Arrays
-                               .asList(FilePathResources.getCheckCamPath()));
-               int result = res.getExitValue();
-               if (result == 1) {
-                       return true;
-               } else {
-                       return false;
-               }
-       }
 
        public static boolean isWebcamSupport() {
-               if (webcamSupport == null) {
-                       webcamSupport = checkWebcam();
-               }
-               return webcamSupport;
+               return CheckWebcam.isWebcamSupport();
        }
 
        @Override
index 78e8d70..ed7fceb 100644 (file)
@@ -30,6 +30,8 @@
 package org.tizen.emulator.manager.ui.dialog;
 
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -39,15 +41,13 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Link;
 import org.eclipse.swt.widgets.Shell;
 import org.tizen.emulator.manager.EmulatorManager;
+import org.tizen.emulator.manager.job.CheckAbout;
 import org.tizen.emulator.manager.logging.EMLogger;
 import org.tizen.emulator.manager.resources.FilePathResources;
 import org.tizen.emulator.manager.resources.ImageResources;
 import org.tizen.emulator.manager.resources.StringResources;
-import org.tizen.emulator.manager.tool.About;
 import org.tizen.emulator.manager.ui.MainDialog;
 import org.tizen.emulator.manager.ui.Messages;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
 
 public class AboutDialog {
        private static Shell dialog = null;
@@ -55,13 +55,12 @@ public class AboutDialog {
        private static int width  = 436; //149 + 287
        private static int height = 290; // 180 + 110
        static {
-               About.initAboutContents();
                textContents = StringResources.NEW_LINE
                                 + Messages.getString("AboutDialog.0") //$NON-NLS-1$
                                 + StringResources.NEW_LINE + StringResources.NEW_LINE
-                                + Messages.getString("AboutDialog.2") + About.getInstance().getAboutVersion() //$NON-NLS-1$
+                                + Messages.getString("AboutDialog.2") + CheckAbout.getAboutInstance().getAboutVersion() //$NON-NLS-1$
                                 + StringResources.NEW_LINE
-                                + Messages.getString("AboutDialog.3") + About.getInstance().getBuildTime(); //$NON-NLS-1$
+                                + Messages.getString("AboutDialog.3") + CheckAbout.getAboutInstance().getBuildTime(); //$NON-NLS-1$
 
        }
 
@@ -108,9 +107,11 @@ public class AboutDialog {
                okButton.setText(StringResources.OK);
                okButton.setFocus();
                okButton.addSelectionListener(new SelectionListener() {
+                       @Override
                        public void widgetSelected(SelectionEvent e) {
                                dialog.close();
                        }
+                       @Override
                        public void widgetDefaultSelected(SelectionEvent e) {
                        }
                });
@@ -138,8 +139,10 @@ public class AboutDialog {
                                                "<a>" + FilePathResources.getTizenVmsPath() + "</a>"); //$NON-NLS-1$ //$NON-NLS-2$
                workspace.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
                workspace.addSelectionListener(new SelectionListener(){
+                       @Override
                        public void widgetDefaultSelected(SelectionEvent arg0) {
                        }
+                       @Override
                        public void widgetSelected(SelectionEvent arg0) {
                                try {
                                        org.eclipse.swt.program.Program.launch(FilePathResources.getTizenVmsPath());
@@ -156,8 +159,10 @@ public class AboutDialog {
                                          Messages.getString("AboutDialog.8")); //$NON-NLS-1$
                visit.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
                visit.addSelectionListener(new SelectionListener(){
+                       @Override
                        public void widgetDefaultSelected(SelectionEvent arg0) {
                        }
+                       @Override
                        public void widgetSelected(SelectionEvent arg0) {
                                try {
                                        String url = Messages.getString("AboutDialog.9"); //$NON-NLS-1$
index 7f914d4..dae46f9 100644 (file)
@@ -38,6 +38,7 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 import org.tizen.emulator.manager.EmulatorManager;
 import org.tizen.emulator.manager.Messages;
+import org.tizen.emulator.manager.job.CheckSDCard;
 import org.tizen.emulator.manager.logging.EMLogger;
 import org.tizen.emulator.manager.resources.FilePathResources;
 import org.tizen.emulator.manager.resources.StringResources;
@@ -59,6 +60,7 @@ public class VMLauncher {
 
                checkPortNumber();
                checkDiskImage(property);
+               CheckSDCard.isSDCardChecked();
 
                List<String> cmd = getCommand(property);