[Title] swap binary setting dlg added
authorjooyoul_lee <jy.exe.lee@samsung.com>
Fri, 18 Oct 2013 08:58:10 +0000 (17:58 +0900)
committerjooyoul_lee <jy.exe.lee@samsung.com>
Fri, 18 Oct 2013 08:58:10 +0000 (17:58 +0900)
[Desc.]
[Issue]

98 files changed:
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerPaths.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerShellCommands.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/PathManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/listeners/TableTooltipListener.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogCenterConstants.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/MessageProcess.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/PackageInfo.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/resources/ImageResources.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/DBTableManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/RecordEventObject.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/ApplicationInst.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/BinaryInfo.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/TargetInfo.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/BasicDataMessage.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/DataChannelConstants.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LibraryObject.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProcessInfo.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ContextSwitchData.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogData.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogDataFactory.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ProfileData.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ReplayData.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/SystemData.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingData.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/BinaryAnalyzingConfigDialog.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorer.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerRenderer.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerToggleRenderer.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/FileExplorerDialog.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/InputRow.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/LoadSettingDialog.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SaveSettingDialog.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SettingSaveTable.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackUnit.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/snapshot/SnapshotView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/GLPage.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/apiList/GLAPIListView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/chart/GLFrameRateChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/context/GLContextView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/range/RangeDataManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfilingView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadChartManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/sync/ThreadPageSyncDataManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/thread/ThreadPageThreadDataManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUCoreChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUFrequencyChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/FileChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/HeapChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ProcessMemoryChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/SystemMemoryChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/UIEventChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineEditItemsDialog.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/CustomLogParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/DeviceLogParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/LifecycleLogParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/AboutDialog.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/SaveAsDialog.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/TraceStartStopThread.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/ConfigurationDialog.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/WelcomeDialog.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceDialog.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/UIDataManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAMessageBox.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/FindDialog.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableCellRenderer.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/AnalyzerUtil.java
org.tizen.dynamicanalyzer/theme/white/img/device.gif [new file with mode: 0644]
org.tizen.dynamicanalyzer/theme/white/img/directory.gif [new file with mode: 0644]
org.tizen.dynamicanalyzer/theme/white/img/directory_link.gif [new file with mode: 0644]
org.tizen.dynamicanalyzer/theme/white/img/emulator.gif [new file with mode: 0644]
org.tizen.dynamicanalyzer/theme/white/img/file.gif [new file with mode: 0644]
org.tizen.dynamicanalyzer/theme/white/img/file_link.gif [new file with mode: 0644]

index eef0ec3..efb1dfd 100644 (file)
@@ -41,6 +41,7 @@ public class AnalyzerConstants {
        public static final String TARGET_FOLDER_NAME = "target"; //$NON-NLS-1$\r
        public static final String DYNAMIC_ANALYZER_FOLDER_NAME = "dynamic-analyzer"; //$NON-NLS-1$\r
        public static final String SAVE_FOLDER_NAME = "save"; //$NON-NLS-1$\r
+       public static final String SETTING_FOLDER_NAME = "setting"; //$NON-NLS-1$\r
        public static final String PLATFORM_FOLDER_NAME = "platforms"; //$NON-NLS-1$\r
        public static final String LOGS_FOLDER_NAME = "logs"; //$NON-NLS-1$\r
        public static final String TEMP_FOLDER_NAME = "temp"; //$NON-NLS-1$\r
@@ -241,8 +242,8 @@ public class AnalyzerConstants {
        public static final int APP_INFO_SIZE = 21;\r
 \r
        /* app type */\r
-       public static final int APP_TYPE_TIZEN = 0;\r
-       public static final int APP_TYPE_OSP = 1;\r
+       public static final int APP_TYPE_TIZEN = 1;\r
+       public static final int APP_TYPE_OSP = 4;\r
 \r
        /* Source Line errors */\r
        public static final int SOURCELINE_NOERROR = 0;\r
@@ -296,41 +297,43 @@ public class AnalyzerConstants {
        public final static int MSG_STOP_SWAP = 0x0003;\r
        public final static int MSG_CONFIG = 0x0004;\r
        public final static int MSG_BINARY_INFO = 0x0005;\r
-       public final static int MSG_SWAP_INST = 0x0006;\r
        public final static int MSG_TARGET_INFO = 0x0007;\r
+       public final static int MSG_SWAP_INST_ADD = 0x0008;\r
+       public final static int MSG_SWAP_INST_REMOVE = 0x0009;\r
 \r
        public final static int MSG_KEEP_ALIVE_ACK = 0x1001;\r
        public final static int MSG_START_ACK = 0x1002;\r
        public final static int MSG_STOP_ACK = 0x1003;\r
        public final static int MSG_CONFIG_ACK = 0x1004;\r
        public final static int MSG_BINARY_INFO_ACK = 0x1005;\r
-       public final static int MSG_SWAP_INST_ACK = 0x1006;\r
        public final static int MSG_TARGET_INFO_ACK = 0x1007;\r
+       public final static int MSG_SWAP_INST_ADD_ACK = 0x1008;\r
+       public final static int MSG_SWAP_INST_REMOVE_ACK = 0x1009;\r
        public final static int MSG_WAIT_ACK = 0x1010;\r
 \r
        /*** data channel messages */\r
-       public final static int MSG_DATA_PROCESS_INFO = 0x2002;\r
-       public final static int MSG_DATA_TERMINATE = 0x2004;\r
-       public final static int MSG_DATA_ERROR = 0x2005;\r
-       public final static int MSG_DATA_SAMPLE = 0x2006;\r
-       public final static int MSG_DATA_SYSTEM = 0x2007;\r
-       public final static int MSG_DATA_RECORD = 0x2009;\r
-       public final static int MSG_FUNCTION_ENTRY = 0x2010;\r
-       public final static int MSG_FUNCTION_EXIT = 0x2011;\r
-       public final static int MSG_CONTEXT_SWITCH_ENTRY = 0x2012;\r
-       public final static int MSG_CONTEXT_SWITCH_EXIT = 0x2013;\r
-\r
-       public final static int MSG_PROBE_MEMORY = 0x3001;\r
-       public final static int MSG_PROBE_UICONTROL = 0x3002;\r
-       public final static int MSG_PROBE_UIEVENT = 0x3003;\r
-       public final static int MSG_PROBE_FILE = 0x3004;\r
-       public final static int MSG_PROBE_LIFECYCLE = 0x3005;\r
-       public final static int MSG_PROBE_SCREENSHOT = 0x3006;\r
-       public final static int MSG_PROBE_SCENE = 0x3007;\r
-       public final static int MSG_PROBE_THREAD = 0x3008;\r
-       public final static int MSG_PROBE_CUSTOM = 0x3009;\r
-       public final static int MSG_PROBE_SYNC = 0x3010;\r
-       public final static int MSG_PROBE_NETWORK = 0x3011;\r
-       public final static int MSG_PROBE_GLES20 = 0x3012;\r
+//     public final static int MSG_DATA_PROCESS_INFO = 0x0001;\r
+//     public final static int MSG_DATA_TERMINATE = 0x0002;\r
+//     public final static int MSG_DATA_ERROR = 0x0003;\r
+//     public final static int MSG_DATA_SAMPLE = 0x0004;\r
+//     public final static int MSG_DATA_SYSTEM = 0x0005;\r
+//     public final static int MSG_DATA_RECORD = 0x0006;\r
+//     public final static int MSG_FUNCTION_ENTRY = 0x0008;\r
+//     public final static int MSG_FUNCTION_EXIT = 0x0009;\r
+//     public final static int MSG_CONTEXT_SWITCH_ENTRY = 0x0010;\r
+//     public final static int MSG_CONTEXT_SWITCH_EXIT = 0x0011;\r
+//\r
+//     public final static int MSG_PROBE_MEMORY = 0x0101;\r
+//     public final static int MSG_PROBE_UICONTROL = 0x0102;\r
+//     public final static int MSG_PROBE_UIEVENT = 0x0103;\r
+//     public final static int MSG_PROBE_FILE = 0x0104;\r
+//     public final static int MSG_PROBE_LIFECYCLE = 0x0105;\r
+//     public final static int MSG_PROBE_SCREENSHOT = 0x0106;\r
+//     public final static int MSG_PROBE_SCENE = 0x0107;\r
+//     public final static int MSG_PROBE_THREAD = 0x0108;\r
+//     public final static int MSG_PROBE_CUSTOM = 0x0109;\r
+//     public final static int MSG_PROBE_SYNC = 0x0110;\r
+//     public final static int MSG_PROBE_NETWORK = 0x0111;\r
+//     public final static int MSG_PROBE_GLES20 = 0x0112;\r
 \r
 }\r
index 7300ebf..749c852 100755 (executable)
@@ -434,10 +434,10 @@ public class AnalyzerManager {
        }
 
        public static boolean isOsp() {
-               int type = getProject().getApplicationType();
-               if (type == AnalyzerConstants.APP_TYPE_OSP) {
-                       return true;
-               }
+               // FIXME
+               // if (AnalyzerUtil.isPieBuild(pid)) {
+               // return true;
+               // }
                return false;
        }
 
@@ -469,4 +469,5 @@ public class AnalyzerManager {
        public static void setLogParsingComplete(boolean complete) {
                isLogParsingComplete = complete;
        }
+
 }
index bf6db8e..dcc546f 100644 (file)
@@ -36,8 +36,12 @@ public class AnalyzerPaths {
                        .getInstallPath();
        public static final String DYNAMIC_ANALYZER_SAVE_PATH = PathManager
                        .getSavePath();
+       public static final String DYNAMIC_ANALYZER_SETTING_PATH = PathManager
+                       .getBinarySettingPath();
        public static final String DYNAMIC_ANALYZER_AUTOTEST_PATH = TIZEN_SDK_DATA_PATH
-                       + File.separator + "test" + File.separator
+                       + File.separator
+                       + "test"
+                       + File.separator
                        + AnalyzerConstants.DYNAMIC_ANALYZER_FOLDER_NAME;
        public static final String TOOL_FOLDER_PATH = DYNAMIC_ANALYZER_INSTALL_PATH
                        + File.separator + AnalyzerConstants.TOOLS_FOLDER_NAME;
@@ -79,6 +83,10 @@ public class AnalyzerPaths {
        public static final String APPLICATION_LIST_PATH = "/opt/share/applications/"; //$NON-NLS-1$
 
        public static final String DA_DAEMON_LOG_PATH = "/tmp/daemonlog.da"; //$NON-NLS-1$
-       public static final String DA_API_MAP_PATH = "/home/developer/api_map"; //$NON-NLS-1$
-//     public static final String DA_API_MAP_PATH = "/usr/lib/da_api_map"; //$NON-NLS-1$
+       public static final String DA_API_MAP_PATH = "/usr/lib/da_api_map"; //$NON-NLS-1$
+       //      public static final String DA_API_MAP_PATH = "/usr/lib/da_api_map"; //$NON-NLS-1$
+       public static final String SBI_COMMAND = TIZEN_ROOT_PATH + File.separator
+                       + AnalyzerConstants.TOOLS_FOLDER_NAME + File.separator
+                       + "smart-build-interface" + File.separator + "bin" + File.separator
+                       + "sbi";
 }
index 2d0a8d1..720ba94 100755 (executable)
@@ -198,6 +198,16 @@ public class PathManager {
                return savePath;
        }
 
+       public static String getBinarySettingPath() {
+               String savePath = AnalyzerPaths.TIZEN_SDK_DATA_PATH;
+               if (null != savePath) {
+                       savePath += File.separator
+                                       + AnalyzerConstants.DYNAMIC_ANALYZER_FOLDER_NAME
+                                       + File.separator + AnalyzerConstants.SETTING_FOLDER_NAME;
+               }
+               return savePath;
+       }
+       
        public static String getLogPath() {
                String logPath = AnalyzerPaths.TIZEN_SDK_DATA_PATH;
                if (null != logPath) {
index 8c0443f..092df6b 100644 (file)
@@ -137,17 +137,17 @@ public class DACommunicator {
 
        public static void setSelectedDevice(DeviceInfo device) {
                currentDevice = device;
-//             if (null != currentDevice) {
-//                     String version = currentDevice.getTargetVersion();
-//                     if (version.equals(DA_VERSION_OLD)) {
-//                             communicator = communicator_211;
-//                     } else if (version.equals(DA_VERSION_SWAP)) {
-//                             communicator = communicator_30;
-//                     } else {
-//                             // error
-//                             System.out.println("not supported version");
-//                     }
-//             }
+               // if (null != currentDevice) {
+               // String version = currentDevice.getTargetVersion();
+               // if (version.equals(DA_VERSION_OLD)) {
+               // communicator = communicator_211;
+               // } else if (version.equals(DA_VERSION_SWAP)) {
+               // communicator = communicator_30;
+               // } else {
+               // // error
+               // System.out.println("not supported version");
+               // }
+               // }
        }
 
        public static PackageInfo getSelectedApp() {
@@ -277,7 +277,8 @@ public class DACommunicator {
                        return null;
                }
                List<PackageInfo> appInfoList = currentDevice.getAppInfoList();
-               HashMap<String, PackageInfo> appInfoHash = currentDevice.getAppInfoHash();
+               HashMap<String, PackageInfo> appInfoHash = currentDevice
+                               .getAppInfoHash();
                List<PackageInfo> backList = new ArrayList<PackageInfo>();
                backList.addAll(appInfoHash.values());
 
@@ -330,8 +331,9 @@ public class DACommunicator {
                }
                if (!backList.isEmpty()) {
                        for (PackageInfo pkg : backList) {
+                               String pkgId = pkg.getInfo(PackageInfo.PACKAGE_INDEX);
                                appInfoList.remove(pkg);
-                               appInfoHash.remove(pkg);
+                               appInfoHash.remove(pkgId);
                        }
                }
                return appInfoList;
@@ -1025,6 +1027,20 @@ public class DACommunicator {
                return communicator.handleControlMessage(msg);
        }
 
+       public static HostResult sendBinaryInfoMessageForLib() {
+               if (isSWAPVersion()) {
+                       return communicator_30.sendBinaryInfoMessageForLib();
+               }
+               return null;
+       }
+
+       public static HostResult sendSWAPMessage(int messageId) {
+               if (isSWAPVersion()) {
+                       return communicator_30.sendSWAPMessage(messageId);
+               }
+               return null;
+       }
+       
        public static HostResult sendKeepAliveMessage(DeviceInfo device) {
                return communicator.sendKeepAliveMessage(device);
        }
index d431cfd..d0e5226 100644 (file)
@@ -49,6 +49,7 @@ import org.tizen.dynamicanalyzer.sql.SqlManager;
 import org.tizen.dynamicanalyzer.swap.model.DATime;\r
 import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo;\r
 import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager;\r
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;\r
 import org.tizen.dynamicanalyzer.swap.model.data.LibraryObject;\r
 import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo;\r
 import org.tizen.dynamicanalyzer.swap.model.probe2.FailedData2;\r
@@ -72,7 +73,6 @@ import org.tizen.dynamicanalyzer.ui.widgets.DADialog;
 import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;\r
 import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo;\r
 \r
-\r
 public class OpenTraceHandler extends AbstractHandler {\r
 \r
        public static final String ID = OpenTraceHandler.class.getName();\r
@@ -131,11 +131,11 @@ public class OpenTraceHandler extends AbstractHandler {
                                                .split(CommonConstants.CMD_SPLIT_READ);\r
                                try {\r
                                        p.setLastLogNum(Long.parseLong(splitLastNum[0]),\r
-                                                       AnalyzerConstants.MSG_PROBE_FILE);\r
+                                                       DataChannelConstants.MSG_PROBE_FILE);\r
                                        p.setLastLogNum(Long.parseLong(splitLastNum[1]),\r
-                                                       AnalyzerConstants.MSG_DATA_SYSTEM);\r
+                                                       DataChannelConstants.MSG_DATA_SYSTEM);\r
                                        p.setLastLogNum(Long.parseLong(splitLastNum[2]),\r
-                                                       AnalyzerConstants.MSG_DATA_SAMPLE);\r
+                                                       DataChannelConstants.MSG_DATA_SAMPLE);\r
                                } catch (NumberFormatException e) {\r
                                        invalidProgress();\r
                                        return null;\r
@@ -192,7 +192,7 @@ public class OpenTraceHandler extends AbstractHandler {
                ToolbarArea.getInstance().setAppComboText(p.getAppName());\r
                ToolbarArea.getInstance().checkStartButtonAndAppListEnablement();\r
                ToolbarArea.getInstance().setRepalyButtonEnable(true);\r
-               if (AnalyzerManager.getProject().getBinaryPath().isEmpty()) {\r
+               if (AnalyzerManager.getProject().getProcessInfoHash().isEmpty()) {\r
                        ToolbarArea.getInstance().setSourceViewEnable(false);\r
                        ToolbarArea.getInstance().setSourceViewTooltip(\r
                                        AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING);\r
@@ -279,7 +279,8 @@ public class OpenTraceHandler extends AbstractHandler {
                                List<String> pInfo = dbInfo.get(i);\r
                                long addr = Long.parseLong(pInfo.get(0));\r
                                String api = pInfo.get(1);\r
-                               CallStackUnit csa = new CallStackUnit(addr, api);\r
+                               int pid = Integer.parseInt(pInfo.get(2));\r
+                               CallStackUnit csa = new CallStackUnit(addr, api, pid);\r
                                apiHash.put(addr, csa);\r
 \r
                        }\r
@@ -310,24 +311,26 @@ public class OpenTraceHandler extends AbstractHandler {
 \r
                dbInfo.clear();\r
                dbInfo = SqlManager.getInstance().loadProcessInfo();\r
+               HashMap<Integer, ProcessInfo> processMap = AnalyzerManager\r
+                               .getProject().getProcessInfoHash();\r
                if (null == dbInfo) {\r
                        System.out.println("failed - load Process Info");\r
                        isSuccess = false;\r
                } else {\r
-                       List<String> info = dbInfo.get(0);\r
-                       ProcessInfo process = new ProcessInfo();\r
-                       process.setPid(Integer.parseInt(info.get(0)));\r
-                       DATime startTime = new DATime();\r
-                       startTime.setSec(Integer.parseInt(info.get(1)));\r
-                       startTime.setNano(Integer.parseInt(info.get(2)));\r
-                       process.setStartTime(startTime);\r
-                       process.setLowestAddress(Long.parseLong(info.get(3)));\r
-                       process.setHighestAddress(Long.parseLong(info.get(4)));\r
-                       process.setAppType(Integer.parseInt(info.get(5)));\r
-                       process.setBinaryType(Integer.parseInt(info.get(6)));\r
-                       process.setBinaryPath(info.get(7));\r
-                       process.setDepLibCount(Integer.parseInt(info.get(8)));\r
-                       AnalyzerManager.getProject().setProcessInfo(process);\r
+                       for (int i = 0; i < dbInfo.size(); i++) {\r
+                               List<String> info = dbInfo.get(i);\r
+                               ProcessInfo process = new ProcessInfo();\r
+                               process.setPid(Integer.parseInt(info.get(0)));\r
+                               DATime startTime = new DATime();\r
+                               startTime.setSec(Integer.parseInt(info.get(1)));\r
+                               startTime.setNano(Integer.parseInt(info.get(2)));\r
+                               process.setStartTime(startTime);\r
+                               process.setLowestAddress(Long.parseLong(info.get(3)));\r
+                               process.setHighestAddress(Long.parseLong(info.get(4)));\r
+                               process.setBinaryPath(info.get(7));\r
+                               process.setDepLibCount(Integer.parseInt(info.get(8)));\r
+                               processMap.put(process.getPid(), process);\r
+                       }\r
                }\r
 \r
                dbInfo.clear();\r
@@ -336,14 +339,14 @@ public class OpenTraceHandler extends AbstractHandler {
                        System.out.println("failed - load Lib Object");\r
                        isSuccess = false;\r
                } else {\r
-                       List<LibraryObject> libObjs = AnalyzerManager.getProject()\r
-                                       .getProcessInfo().getLibObjs();\r
                        for (List<String> info : dbInfo) {\r
                                LibraryObject libObj = new LibraryObject();\r
                                libObj.setLowestAddress(Long.parseLong(info.get(0)));\r
                                libObj.setHighestAddress(Long.parseLong(info.get(1)));\r
                                libObj.setLibPath(info.get(2));\r
-                               libObjs.add(libObj);\r
+                               int pid = Integer.parseInt(info.get(3));\r
+                               libObj.setPid(pid);\r
+                               processMap.get(pid).getLibObjs().add(libObj);\r
                        }\r
                }\r
 \r
@@ -427,7 +430,7 @@ public class OpenTraceHandler extends AbstractHandler {
                                // possibility of extensions - network, efl, db, etc...\r
                                int id = Integer.parseInt(pInfo\r
                                                .get(LogCenterConstants.ID_INDEX));\r
-                               if (id == AnalyzerConstants.MSG_PROBE_FILE) {\r
+                               if (id == DataChannelConstants.MSG_PROBE_FILE) {\r
                                        // if file failed api data is skip - file chart make it!\r
                                        int type = Integer.parseInt(pInfo\r
                                                        .get(LogCenterConstants.RESOURCE_FDTYPE_INDEX));\r
index 94d631a..1540246 100644 (file)
@@ -346,9 +346,11 @@ public class TableTooltipListener implements Listener {
                        }\r
                        addr = AnalyzerManager.getCallstackManager().getPCAddrBySeq(seqNum);\r
                }\r
-               boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();\r
-               String baseAddr = Long.toString(AnalyzerManager.getProject().getBaseAddress());\r
-               String path = AnalyzerManager.getProject().getBinaryPath();\r
+               \r
+               \r
+               boolean isPieBuild = AnalyzerUtil.isPieBuild(data.getPid());\r
+               String baseAddr = Long.toString(AnalyzerManager.getProject().getBaseAddress(data.getPid()));\r
+               String path = AnalyzerUtil.getBinaryPath(data.getPid());\r
                SourceLine sl = SymbolManager.addr2line(path, addr, isPieBuild,\r
                                baseAddr);\r
                return sl;\r
index f7732bb..034e0cb 100644 (file)
@@ -26,7 +26,7 @@
 
 package org.tizen.dynamicanalyzer.logparser;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 
 public class LogCenterConstants {
 
@@ -34,8 +34,9 @@ public class LogCenterConstants {
        public static final int LOG_MEMORY = 1;
        public static final int LOG_CONTROL = 2;
        public static final int LOG_UI_EVENT = 3;
-       public static final int LOG_USER_FUNCTION = 4;
-       public static final int LOG_RESOURCE = 5;
+       // FIXME : 
+       public static final int LOG_USER_FUNCTION = 44;
+       public static final int LOG_RESOURCE = 55;
        public static final int LOG_LIFECYCLE = 6;
        public static final int LOG_SCREENSHOT = 7;
        public static final int LOG_SCENE = 8;
@@ -287,13 +288,13 @@ public class LogCenterConstants {
        public static final int COMMON_COLUMN_SIZE_ERROR = 0;
 
        public static String getLogCenterNameFromId(int id) {
-               if (id == AnalyzerConstants.MSG_PROBE_MEMORY) {
+               if (id == DataChannelConstants.MSG_PROBE_MEMORY) {
                        return "memory"; //$NON-NLS-1$
                } else if (id == LOG_USER_FUNCTION) {
                        return "user function"; //$NON-NLS-1$
-               } else if (id == AnalyzerConstants.MSG_PROBE_FILE) {
+               } else if (id == DataChannelConstants.MSG_PROBE_FILE) {
                        return "resource"; //$NON-NLS-1$
-               } else if (id == AnalyzerConstants.MSG_PROBE_THREAD) {
+               } else if (id == DataChannelConstants.MSG_PROBE_THREAD) {
                        return "thread"; //$NON-NLS-1$
                } else if (id == LOG_GLES20) {
                        return "graphics"; //$NON-NLS-1$
index 018d910..75e31b6 100644 (file)
@@ -34,7 +34,6 @@ import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.sql.SqlManager;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
-import org.tizen.dynamicanalyzer.swap.model.data.BasicDataMessage;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory;
 
@@ -89,13 +88,6 @@ public class LogInserter implements Runnable {
                logPackage.clear();
        }
 
-       private LogPackage getLogPackage() {
-               if (null == logPackage) {
-                       logPackage = new LogPackage();
-               }
-               return logPackage;
-       }
-
        @Override
        public void run() {
                List<Integer> logIds = LogDataFactory.getLogList();
index 457248b..d9d5041 100755 (executable)
@@ -418,11 +418,11 @@ public class LogParser implements Runnable {
        }
 
        private void setFuncName(UserFunctionData input) {
-               boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+               boolean isPieBuild = AnalyzerUtil.isPieBuild(input.getPid());
                String baseAddr = Long.toString(AnalyzerManager.getProject()
-                               .getBaseAddress());
+                               .getBaseAddress(input.getPid()));
 //             String path = AnalyzerManager.getProject().getBinaryPath();
-               String path = DACommunicator.getSelectedApp().getBinInfo().getPath();
+               String path = DACommunicator.getSelectedApp().getBinInfo().getLocalBinaryPath();
                String pcAddr = Long.toString(input.getPcAddr());
                String functionName = SymbolManager.addr2func(path, pcAddr, isPieBuild,
                                baseAddr);
index 7ac2ea1..8908dce 100644 (file)
@@ -166,53 +166,53 @@ public class MessageProcess {
        }
 
        private void processAppInfo(String message) {
-               String[] data = message.split(AnalyzerConstants.DATA_PARSING_TOKEN);
-
-               Project project = AnalyzerManager.getProject();
-               TargetInfo tInfo = project.getTargetInfo();
-               ProcessInfo pInfo = project.getProcessInfo();
-
-               tInfo.setSystemMemorySize(Integer
-                               .parseInt(data[AnalyzerConstants.APP_INFO_SYSTEM_MEMORY_SIZE]));
-               tInfo.setStorageSize(Integer
-                               .parseInt(data[AnalyzerConstants.APP_INFO_STORAGE_SIZE]));
-               tInfo.setBluetoothSupport(Integer
-                               .parseInt(data[AnalyzerConstants.APP_INFO_BLUETOOTH_SUPPORT]));
-               tInfo.setGpsSupport(Integer
-                               .parseInt(data[AnalyzerConstants.APP_INFO_GPS_SUPPORT]));
-               tInfo.setWifiSupport(Integer
-                               .parseInt(data[AnalyzerConstants.APP_INFO_WIFI_SUPPORT]));
-               tInfo.setCameraCount(Integer
-                               .parseInt(data[AnalyzerConstants.APP_INFO_CAMERA_COUNT]));
-               tInfo.setNetworkType(data[AnalyzerConstants.APP_INFO_NETWORK_TYPE]);
-               tInfo.setMaxBrightness(Integer
-                               .parseInt(data[AnalyzerConstants.APP_INFO_MAX_BRIGHTNESS]));
-
-               pInfo.setPid(Integer.parseInt(data[AnalyzerConstants.APP_INFO_PID]));
-               // pInfo.setTime(Integer
-               // .parseInt(data[AnalyzerConstants.APP_INFO_START_TIME]) * 100);
-               pInfo.setBinaryType(Integer
-                               .parseInt(data[AnalyzerConstants.APP_INFO_PIE_BUILD]));
-               pInfo.setLowestAddress(Long
-                               .parseLong(data[AnalyzerConstants.APP_INFO_BASE_ADDRESS]));
-               pInfo.setAppType(Integer
-                               .parseInt(data[AnalyzerConstants.APP_INFO_APP_TYPE]));
-               pInfo.setBinaryPath(data[AnalyzerConstants.APP_INFO_BINARY_PATH]);
-
-               if (null == pInfo.getBinaryPath() || pInfo.getBinaryPath().isEmpty()) {
-                       ToolbarArea.getInstance().setSourceViewEnable(false);
-                       ToolbarArea.getInstance().setSourceViewTooltip(
-                                       AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING);
-               } else {
-                       ToolbarArea.getInstance().setSourceViewEnable(true);
-                       ToolbarArea.getInstance().setSourceViewTooltip(
-                                       AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE);
-               }
-
-               // User Call Trace : App is Tizen C++ or Tizen native
-               if (pInfo.getAppType() == AnalyzerConstants.APP_TYPE_OSP) {
-                       LogParser.setDropCallTraceLog(true);
-               }
+//             String[] data = message.split(AnalyzerConstants.DATA_PARSING_TOKEN);
+//
+//             Project project = AnalyzerManager.getProject();
+//             TargetInfo tInfo = project.getTargetInfo();
+//             ProcessInfo pInfo = project.getProcessInfo();
+//
+//             tInfo.setSystemMemorySize(Integer
+//                             .parseInt(data[AnalyzerConstants.APP_INFO_SYSTEM_MEMORY_SIZE]));
+//             tInfo.setStorageSize(Integer
+//                             .parseInt(data[AnalyzerConstants.APP_INFO_STORAGE_SIZE]));
+//             tInfo.setBluetoothSupport(Integer
+//                             .parseInt(data[AnalyzerConstants.APP_INFO_BLUETOOTH_SUPPORT]));
+//             tInfo.setGpsSupport(Integer
+//                             .parseInt(data[AnalyzerConstants.APP_INFO_GPS_SUPPORT]));
+//             tInfo.setWifiSupport(Integer
+//                             .parseInt(data[AnalyzerConstants.APP_INFO_WIFI_SUPPORT]));
+//             tInfo.setCameraCount(Integer
+//                             .parseInt(data[AnalyzerConstants.APP_INFO_CAMERA_COUNT]));
+//             tInfo.setNetworkType(data[AnalyzerConstants.APP_INFO_NETWORK_TYPE]);
+//             tInfo.setMaxBrightness(Integer
+//                             .parseInt(data[AnalyzerConstants.APP_INFO_MAX_BRIGHTNESS]));
+//
+//             pInfo.setPid(Integer.parseInt(data[AnalyzerConstants.APP_INFO_PID]));
+//             // pInfo.setTime(Integer
+//             // .parseInt(data[AnalyzerConstants.APP_INFO_START_TIME]) * 100);
+//             pInfo.setBinaryType(Integer
+//                             .parseInt(data[AnalyzerConstants.APP_INFO_PIE_BUILD]));
+//             pInfo.setLowestAddress(Long
+//                             .parseLong(data[AnalyzerConstants.APP_INFO_BASE_ADDRESS]));
+//             pInfo.setAppType(Integer
+//                             .parseInt(data[AnalyzerConstants.APP_INFO_APP_TYPE]));
+//             pInfo.setBinaryPath(data[AnalyzerConstants.APP_INFO_BINARY_PATH]);
+//
+//             if (null == pInfo.getBinaryPath() || pInfo.getBinaryPath().isEmpty()) {
+//                     ToolbarArea.getInstance().setSourceViewEnable(false);
+//                     ToolbarArea.getInstance().setSourceViewTooltip(
+//                                     AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING);
+//             } else {
+//                     ToolbarArea.getInstance().setSourceViewEnable(true);
+//                     ToolbarArea.getInstance().setSourceViewTooltip(
+//                                     AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE);
+//             }
+//
+//             // User Call Trace : App is Tizen C++ or Tizen native
+//             if (pInfo.getAppType() == AnalyzerConstants.APP_TYPE_OSP) {
+//                     LogParser.setDropCallTraceLog(true);
+//             }
        }
 
        // private String getImageName(String fullPath) {
index a32ae53..86af006 100644 (file)
@@ -27,6 +27,7 @@
 package org.tizen.dynamicanalyzer.project;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 import org.tizen.dynamicanalyzer.common.CommonConstants;
@@ -56,6 +57,7 @@ public class PackageInfo {
        public static final String FLAG_ONE = "1";//$NON-NLS-1$
 
        private BinaryInfo binInfo = null;
+       private HashMap<String, BinaryInfo> binaryInfoMap = new HashMap<String, BinaryInfo>();
 
        private String installTime = null;
        private String execFileName = null;
@@ -99,7 +101,7 @@ public class PackageInfo {
                        return null;
                }
                symbolExtractor.clear();
-               symbolExtractor.makeSymbol(binInfo.getPath());
+               symbolExtractor.makeSymbol(binInfo.getLocalBinaryPath());
                return symbolExtractor.getAddrSymbolPairs();
        }
 
@@ -116,4 +118,9 @@ public class PackageInfo {
                }
                return execFileName;
        }
+
+       public HashMap<String, BinaryInfo> getBinaryInfoMap() {
+               return binaryInfoMap;
+       }
+
 }
index 98f4844..6ed059f 100755 (executable)
@@ -29,6 +29,7 @@ package org.tizen.dynamicanalyzer.project;
 import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Locale;
 
 import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
@@ -42,6 +43,7 @@ import org.tizen.dynamicanalyzer.sql.SqlManager;
 import org.tizen.dynamicanalyzer.swap.model.ByteUtils;
 import org.tizen.dynamicanalyzer.swap.model.DATime;
 import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo;
 import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
 
@@ -74,11 +76,12 @@ public class Project {
        private String device = null;
        private long lastTime = 0;
        private long stopTime = -1;
+       private DATime profilingStartTime = new DATime();
 
        private byte[] replayEvent = null;
 
-       // private TargetInfo targetInfo = new TargetInfo();
-       private ProcessInfo processInfo = new ProcessInfo();
+       // private ProcessInfo processInfo = new ProcessInfo();
+       private HashMap<Integer, ProcessInfo> processInfoHash = new HashMap<Integer, ProcessInfo>();
 
        public TargetInfo getTargetInfo() {
                TargetInfo targetInfo = DACommunicator.getSelectedDevice()
@@ -90,13 +93,14 @@ public class Project {
                DACommunicator.getSelectedDevice().setTargetInfo(targetInfo);
        }
 
-       public ProcessInfo getProcessInfo() {
+       public ProcessInfo getProcessInfo(int pid) {
+               ProcessInfo processInfo = processInfoHash.get(pid);
                return processInfo;
        }
 
-       public void setProcessInfo(ProcessInfo processInfo) {
-               this.processInfo = processInfo;
-       }
+       // public void setProcessInfo(ProcessInfo processInfo) {
+       // this.processInfo = processInfo;
+       // }
 
        public void setCoreCount(int count) {
                getTargetInfo().setCpuCount(count);
@@ -111,21 +115,17 @@ public class Project {
        }
 
        public DATime getStartTime() {
-               return processInfo.getStartTime();
+               return profilingStartTime;
        }
 
        public void setStartTime(DATime time) {
-               processInfo.setStartTime(time);
+               profilingStartTime = time;
        }
 
        public long getSystemMemorySize() {
                return getTargetInfo().getSystemMemorySize();
        }
 
-       public int getPID() {
-               return processInfo.getPid();
-       }
-
        public long getLastTime() {
                return lastTime;
        }
@@ -149,11 +149,11 @@ public class Project {
        public String getVersion() {
                return version;
        }
-       
+
        public long getLastLogNum(int type) {
-               if (type == AnalyzerConstants.MSG_DATA_SYSTEM) {
+               if (type == DataChannelConstants.MSG_DATA_SYSTEM) {
                        return lastDeviceLogNum;
-               } else if (type == AnalyzerConstants.MSG_DATA_SAMPLE) {
+               } else if (type == DataChannelConstants.MSG_DATA_SAMPLE) {
                        return lastProfileLogNum;
                } else {
                        return lastLogNum;
@@ -180,11 +180,11 @@ public class Project {
        }
 
        public void setLastLogNum(long last, int type) {
-               if (type == AnalyzerConstants.MSG_DATA_SYSTEM) {
+               if (type == DataChannelConstants.MSG_DATA_SYSTEM) {
                        if (last > lastDeviceLogNum) {
                                lastDeviceLogNum = last;
                        }
-               } else if (type == AnalyzerConstants.MSG_DATA_SAMPLE) {
+               } else if (type == DataChannelConstants.MSG_DATA_SAMPLE) {
                        if (last > lastProfileLogNum) {
                                lastProfileLogNum = last;
                        }
@@ -204,8 +204,10 @@ public class Project {
        }
 
        public void init() {
-               appName = DACommunicator.getSelectedApp().getInfo(PackageInfo.LABEL_INDEX);
-               pkgId = DACommunicator.getSelectedApp().getInfo(PackageInfo.PACKAGE_INDEX);
+               appName = DACommunicator.getSelectedApp().getInfo(
+                               PackageInfo.LABEL_INDEX);
+               pkgId = DACommunicator.getSelectedApp().getInfo(
+                               PackageInfo.PACKAGE_INDEX);
                DeviceInfo deviceName = DACommunicator.getSelectedDevice();
                if (null != deviceName
                                && null != deviceName.getIDevice().getSerialNumber()
@@ -290,29 +292,16 @@ public class Project {
                return true;
        }
 
-       public String getBinaryPath() {
-               return processInfo.getBinaryPath();
-       }
-
-       public boolean isPieBuild() {
-               if (processInfo.getBinaryType() == 1) {
-                       return true;
-               }
-               return false;
-       }
-
-       public long getBaseAddress() {
+       public long getBaseAddress(int pid) {
+               ProcessInfo processInfo = processInfoHash.get(pid);
                return processInfo.getLowestAddress();
        }
 
-       public long getHighestAddress() {
+       public long getHighestAddress(int pid) {
+               ProcessInfo processInfo = processInfoHash.get(pid);
                return processInfo.getHighestAddress();
        }
 
-       public int getApplicationType() {
-               return processInfo.getAppType();
-       }
-
        public void setTotalProfilingSampleCount(int count) {
                FunctionUsageProfiler.getInstance().getProfileDataMaker()
                                .setTotalSampleCount(count);
@@ -327,4 +316,7 @@ public class Project {
                return replayEvent;
        }
 
+       public HashMap<Integer, ProcessInfo> getProcessInfoHash() {
+               return processInfoHash;
+       }
 }
index 1d35eff..850d727 100644 (file)
@@ -86,7 +86,7 @@ public class ImageResources {
        public static final Image REPLAY_HOVER = getPngImage("toolbar_replay_hover"); //$NON-NLS-1$\r
        public static final Image REPLAY_DISABLE = getPngImage("toolbar_replay_disable"); //$NON-NLS-1$\r
 \r
-       public static final Image SETTINGS = getPngImage("toolbar_settings_nor"); //$NON-NLS-1$\r
+       public static final Image SETTINGS_NORMAL = getPngImage("toolbar_settings_nor"); //$NON-NLS-1$\r
        public static final Image SETTINGS_PUSH = getPngImage("toolbar_settings_push"); //$NON-NLS-1$\r
        public static final Image SETTINGS_HOVER = getPngImage("toolbar_settings_hover"); //$NON-NLS-1$\r
        public static final Image SETTINGS_DISABLE = getPngImage("toolbar_settings_disable"); //$NON-NLS-1$\r
@@ -173,7 +173,7 @@ public class ImageResources {
        public static final Image CHECKBOX_UNSELECTED_HOVER = getPngImage("checkbox_unselected_hover"); //$NON-NLS-1$\r
        public static final Image CHECKBOX_UNSELECTED_DISABLE = getPngImage("checkbox_unselected_disable"); //$NON-NLS-1$\r
        public static final Image CHECKBOX_SELECTED_DISABLE = getPngImage("checkbox_selected_disable"); //$NON-NLS-1$\r
-       \r
+\r
        // Failed API icon in table\r
        public static final Image FAILED_API_ICON_TABLE = getPngImage("fail_api"); //$NON-NLS-1$\r
 \r
@@ -263,7 +263,7 @@ public class ImageResources {
        public static final Image UI_EVENT = getPngImage("time_line_icon_UI_events"); //$NON-NLS-1$\r
        public static final Image CHART_CUSTOM = getPngImage("time_line_icon_custom"); //$NON-NLS-1$\r
        public static final Image CHART_NETWORK = getPngImage("time_line_icon_traffic"); //$NON-NLS-1$\r
-       \r
+\r
        /* Resource */\r
        public static final Image TYPE_FILE = getPngImage("resource/resource_file"); //$NON-NLS-1$\r
        public static final Image TYPE_SOCKET = getPngImage("resource/resource_socket"); //$NON-NLS-1$\r
@@ -360,11 +360,19 @@ public class ImageResources {
        public static final Image TAB_ICON_UI = getPngImage("tab_icon_userinterface"); //$NON-NLS-1$\r
        public static final Image TAB_ICON_SUMMARY = getPngImage("tab_icon_summary"); //$NON-NLS-1$\r
        public static final Image TAB_ICON_RANGE = getPngImage("tab_icon_range"); //$NON-NLS-1$\r
-       \r
+\r
        /* gl */\r
        public static final Image GL_DROP_LEFT_ARROW = getPngImage("arrow_full_left"); //$NON-NLS-1$\r
        public static final Image GL_DROP_DOWN_ARROW = getPngImage("arrow_full_down"); //$NON-NLS-1$\r
 \r
+       public static final Image ICON_FILE = getGifImage("file"); //$NON-NLS-1$\r
+       public static final Image ICON_FILE_LINK = getGifImage("file_link"); //$NON-NLS-1$\r
+       public static final Image ICON_DIR = getGifImage("directory"); //$NON-NLS-1$\r
+       public static final Image ICON_DIR_LINK = getGifImage("directory_link"); //$NON-NLS-1$\r
+       public static final Image ICON_EMULATOR = getGifImage("emulator"); //$NON-NLS-1$\r
+       public static final Image ICON_DEVICE = getGifImage("device"); //$NON-NLS-1$\r
+       public static final Image ICON_OTHER = getGifImage("file"); //$NON-NLS-1$\r
+\r
        private static Image getImage(String pluginId, String folderName,\r
                        String imageName, String extension) {\r
                if (null == imageRegistry.get(imageName)\r
@@ -395,4 +403,7 @@ public class ImageResources {
                return getImage(imageName, CommonConstants.EXTENSION_PNG_IMAGE);\r
        }\r
 \r
+       private static Image getGifImage(String imageName) {\r
+               return getImage(imageName, CommonConstants.EXTENSION_GIF_IMAGE);\r
+       }\r
 }\r
index 13ed7d7..e5f2627 100644 (file)
@@ -188,8 +188,8 @@ public class ShortCutManager {
                                        .isButtonEnabled()) {
                                Shell shell = AnalyzerUtil.getWorkbenchWindow().getShell();
                                SaveAsDialog dialog = new SaveAsDialog(shell);
-                               int result = dialog.open();
-                               if (AnalyzerConstants.SUCCESS == result) {
+                               Object result = dialog.open();
+                               if (result != null) {
                                        ToolbarArea.getInstance()
                                                        .getButton(ToolbarArea.SAVE_BUTTON)
                                                        .setButtonEnabled(false);
index c7f0ff8..55e6700 100644 (file)
@@ -121,12 +121,11 @@ public class DBTableManager {
        public static final String TARGET_INFO_CPU_CORE_COUNT = "CoreCount";
 
        public static final String PROCESS_INFO_PID = "pid";//$NON-NLS-1$
+       public static final String PROCESS_INFO_PPID = "ppid";//$NON-NLS-1$
        public static final String PROCESS_INFO_START_TIME_SEC = "StartTimeSec";
        public static final String PROCESS_INFO_START_TIME_NANO = "StartTimeNano";
        public static final String PROCESS_INFO_LOW_ADDR = "LowAddr";
        public static final String PROCESS_INFO_HIGH_ADDR = "HighAddr";
-       public static final String PROCESS_INFO_APP_TYPE = "AppType";
-       public static final String PROCESS_INFO_BINARY_TYPE = "BinaryType";
        public static final String PROCESS_INFO_BINARY_PATH = "BinaryPath";
        public static final String PROCESS_INFO_DEPLIB_COUNT = "DepLibCount";
 
@@ -179,10 +178,11 @@ public class DBTableManager {
 
                // "callstack units" table info block
                {
-                       String[] names = { CUSTOM_COLUMN_ADDR, CUSTOM_COLUMN_API };
-                       String[] options = { "not null",
+                       String[] names = { CUSTOM_COLUMN_ADDR, CUSTOM_COLUMN_API,
+                                       COMMON_COLUMN_PID };
+                       String[] options = { "not null", EMPTY,
                                        ",PRIMARY KEY(" + CUSTOM_COLUMN_ADDR + ")" };
-                       String[] types = { TEXT, "VARCHAR(512)" };
+                       String[] types = { TEXT, INTEGER, "VARCHAR(512)" };
                        DBTableInfo callstackUnitsTableInfo = new DBTableInfo(
                                        TABLE_NAME_CALLSTACK_UNITS, names, options, types);
                        tableInfos
@@ -272,15 +272,13 @@ public class DBTableManager {
 
                // process info
                {
-                       String[] names = { PROCESS_INFO_PID, PROCESS_INFO_START_TIME_SEC,
-                                       PROCESS_INFO_START_TIME_NANO, PROCESS_INFO_LOW_ADDR,
-                                       PROCESS_INFO_HIGH_ADDR, PROCESS_INFO_APP_TYPE,
-                                       PROCESS_INFO_BINARY_TYPE, PROCESS_INFO_BINARY_PATH,
-                                       PROCESS_INFO_DEPLIB_COUNT };
+                       String[] names = { PROCESS_INFO_PID, PROCESS_INFO_PPID,
+                                       PROCESS_INFO_START_TIME_SEC, PROCESS_INFO_START_TIME_NANO,
+                                       PROCESS_INFO_LOW_ADDR, PROCESS_INFO_HIGH_ADDR,
+                                       PROCESS_INFO_BINARY_PATH, PROCESS_INFO_DEPLIB_COUNT };
                        String[] options = { EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-                                       EMPTY, EMPTY, EMPTY };
-                       String[] types = { TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT,
-                                       TEXT };
+                                       EMPTY, EMPTY };
+                       String[] types = { TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT };
                        DBTableInfo processInfoTableInfo = new DBTableInfo(
                                        TABLE_NAME_PROCESS_INFO, names, options, types);
                        tableInfos.set(TABLE_INDEX_PROCESS_INFO, processInfoTableInfo);
@@ -289,9 +287,10 @@ public class DBTableManager {
                // library object
                {
                        String[] names = { LIBRARY_OBJECT_LOW_ADDR,
-                                       LIBRARY_OBJECT_HIGH_ADDR, LIBRARY_OBJECT_PATH };
-                       String[] options = { EMPTY, EMPTY, EMPTY };
-                       String[] types = { TEXT, TEXT, TEXT };
+                                       LIBRARY_OBJECT_HIGH_ADDR, LIBRARY_OBJECT_PATH,
+                                       COMMON_COLUMN_PID };
+                       String[] options = { EMPTY, EMPTY, EMPTY, EMPTY };
+                       String[] types = { TEXT, TEXT, TEXT, TEXT };
                        DBTableInfo libObjTableInfo = new DBTableInfo(TABLE_NAME_LIB_OBJ,
                                        names, options, types);
                        tableInfos.set(TABLE_INDEX_LIB_OBJ, libObjTableInfo);
@@ -306,7 +305,7 @@ public class DBTableManager {
                                        options, types);
                        tableInfos.set(TABLE_INDEX_APINAME, apiName);
                }
-               
+
                {
                        // gles20 context data table info
                        GLContextDBEnum[] glContextDBEnum = GLContextDBEnum.values();
@@ -333,12 +332,12 @@ public class DBTableManager {
                                        TABLE_NAME_GLES20_CONTEXT_DATA, names, options, types);
                        tableInfos.set(TABLE_INDEX_GLES20_CONTEXT_DATA,
                                        Gles20ContextTableInfo);
-                       
-//                     // gles20 context change info
-//                     DBTableInfo Gles20ChangeInfoTableInfo = new DBTableInfo(
-//                                     TABLE_NAME_GLES20_CAHNGE_INFO, names, options, types);
-//                     tableInfos.set(TABLE_INDEX_GLES20_CHANGE_INFO,
-//                                     Gles20ChangeInfoTableInfo);
+
+                       // // gles20 context change info
+                       // DBTableInfo Gles20ChangeInfoTableInfo = new DBTableInfo(
+                       // TABLE_NAME_GLES20_CAHNGE_INFO, names, options, types);
+                       // tableInfos.set(TABLE_INDEX_GLES20_CHANGE_INFO,
+                       // Gles20ChangeInfoTableInfo);
                }
        }
 
index d930c0b..2bb330b 100755 (executable)
@@ -44,6 +44,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.Semaphore;
 
 import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
@@ -55,6 +56,7 @@ import org.tizen.dynamicanalyzer.project.Project;
 import org.tizen.dynamicanalyzer.swap.model.RecordEventObject;
 import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo;
 import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.data.LibraryObject;
 import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo;
 import org.tizen.dynamicanalyzer.swap.model.probe.LogFormat;
@@ -374,7 +376,7 @@ public class SqlManager {
                        int dataRowSize = input.size();
                        for (int i = 0; i < dataRowSize; i++) {
                                logData = input.get(i);
-                               if (logData.getId() != AnalyzerConstants.MSG_DATA_RECORD) {
+                               if (logData.getId() != DataChannelConstants.MSG_DATA_RECORD) {
                                        logData.makePreparedStatement(prep);
                                        prep.addBatch();
                                } else {
@@ -460,32 +462,38 @@ public class SqlManager {
        public void insertProcessInfo() {
                DBTableInfo info = DBTableManager.getInstance().getTableInfo(
                                DBTableManager.TABLE_INDEX_PROCESS_INFO);
-               String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?, ?, ?, ?, ?, ?, ? );"; //$NON-NLS-1$
-
-               ProcessInfo pInfo = AnalyzerManager.getProject().getProcessInfo();
-               List<String> insetRowData = new ArrayList<String>();
-
-               insetRowData.add(Integer.toString(pInfo.getPid()));
-               insetRowData.add(Long.toString(pInfo.getStartTime().getSec()));
-               insetRowData.add(Long.toString(pInfo.getStartTime().getNano()));
-               insetRowData.add(Long.toString(pInfo.getLowestAddress()));
-               insetRowData.add(Long.toString(pInfo.getHighestAddress()));
-               insetRowData.add(Integer.toString(pInfo.getAppType()));
-               insetRowData.add(Integer.toString(pInfo.getBinaryType()));
-               insetRowData.add(pInfo.getBinaryPath());
-               insetRowData.add(Integer.toString(pInfo.getDepLibCount()));
-
-               List<List<String>> insetData = new ArrayList<List<String>>();
-               insetData.add(insetRowData);
+               String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?, ?, ?, ?, ?, ? );"; //$NON-NLS-1$
+
+               HashMap<Integer, ProcessInfo> processMap = AnalyzerManager.getProject()
+                               .getProcessInfoHash();
+               Set<Integer> keysSet = AnalyzerManager.getProject()
+                               .getProcessInfoHash().keySet();
+               List<Integer> keys = new ArrayList<Integer>();
+               keys.addAll(keysSet);
+               for (int i = 0; i < keys.size(); i++) {
+                       ProcessInfo pInfo = processMap.get(keys.get(i));
+                       List<String> insetRowData = new ArrayList<String>();
+                       insetRowData.add(Integer.toString(pInfo.getPid()));
+                       insetRowData.add(Integer.toString(pInfo.getPpid()));
+                       insetRowData.add(Long.toString(pInfo.getStartTime().getSec()));
+                       insetRowData.add(Long.toString(pInfo.getStartTime().getNano()));
+                       insetRowData.add(Long.toString(pInfo.getLowestAddress()));
+                       insetRowData.add(Long.toString(pInfo.getHighestAddress()));
+                       insetRowData.add(pInfo.getBinaryPath());
+                       insetRowData.add(Integer.toString(pInfo.getDepLibCount()));
+
+                       List<List<String>> insetData = new ArrayList<List<String>>();
+                       insetData.add(insetRowData);
 
-               insertQuery(insertQuery, insetData);
-               insertLibObj(pInfo.getLibObjs());
+                       insertQuery(insertQuery, insetData);
+                       insertLibObj(pInfo.getLibObjs());
+               }
        }
 
        private void insertLibObj(List<LibraryObject> libs) {
                DBTableInfo info = DBTableManager.getInstance().getTableInfo(
                                DBTableManager.TABLE_INDEX_LIB_OBJ);
-               String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?);"; //$NON-NLS-1$
+               String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?, ?);"; //$NON-NLS-1$
 
                List<List<String>> insetData = new ArrayList<List<String>>();
                for (LibraryObject lib : libs) {
index 02fbec1..fe2e34f 100644 (file)
@@ -27,8 +27,8 @@
 
 package org.tizen.dynamicanalyzer.swap.callstack;
 
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_ENTRY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_ENTRY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -46,17 +46,19 @@ import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData;
 import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackData;
 import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackUnit;
 import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfileDataMaker;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
 
 public class SWAPCallStackManager extends BaseCallstackManager {
 
        public void makeUserCallstack(LogData input, ProfileDataMaker profiler) {
                ProfileData log = (ProfileData) input;
                HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
-               boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+               boolean isPieBuild = AnalyzerUtil.isPieBuild(log.getPid());
                String baseAddr = Long.toString(AnalyzerManager.getProject()
-                               .getBaseAddress());
-//             String binPath = AnalyzerManager.getProject().getBinaryPath();
-               String binPath = DACommunicator.getSelectedApp().getBinInfo().getPath();
+                               .getBaseAddress(log.getPid()));
+               // String binPath = AnalyzerManager.getProject().getBinaryPath();
+               String binPath = DACommunicator.getSelectedApp().getBinInfo()
+                               .getLocalBinaryPath();
                if (null == binPath || binPath.isEmpty()) {
                        return;
                }
@@ -78,7 +80,8 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                        String strSelfSymbol = getUserFunctionPosition()
                                        + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
                                        + strSelfFuncName;
-                       selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol);
+                       selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol,
+                                       log.getPid());
                        addrMap.put(selfAddr, selfCallstackUnit);
                }
 
@@ -95,7 +98,8 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                        String strCallerSymbol = getUserFunctionPosition()
                                        + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
                                        + strCallerFuncName;
-                       callerCallstackUnit = new CallStackUnit(callerAddr, strCallerSymbol);
+                       callerCallstackUnit = new CallStackUnit(callerAddr,
+                                       strCallerSymbol, log.getPid());
                        addrMap.put(callerAddr, callerCallstackUnit);
                }
 
@@ -107,13 +111,15 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                                if (!AnalyzerManager.isInBinaryRange(callerAddr)) {
                                        CallStackUnit callbackApi = new CallStackUnit(
                                                        LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                                       log.getPid());
                                        userCallstack.add(callbackApi);
                                        if (addrMap
                                                        .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
                                                CallStackUnit defaultCallstackUnit = new CallStackUnit(
                                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                                               log.getPid());
                                                addrMap.put(
                                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
                                                                defaultCallstackUnit);
@@ -122,13 +128,15 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                                                AnalyzerConstants.VIRTUAL_THUNK)) {
                                        CallStackUnit callbackApi = new CallStackUnit(
                                                        LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                                       log.getPid());
                                        userCallstack.add(callbackApi);
                                        if (addrMap
                                                        .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
                                                CallStackUnit defaultCallstackUnit = new CallStackUnit(
                                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                                               log.getPid());
                                                addrMap.put(
                                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
                                                                defaultCallstackUnit);
@@ -212,16 +220,16 @@ public class SWAPCallStackManager extends BaseCallstackManager {
        }
 
        public void makeCallstackWithoutBacktrace(LogData inputData) {
+               ProbeCommonData log = (ProbeCommonData) inputData;
                HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
-               boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+               boolean isPieBuild = AnalyzerUtil.isPieBuild(log.getPid());
                String baseAddr = Long.toString(AnalyzerManager.getProject()
-                               .getBaseAddress());
-               String binPath = AnalyzerManager.getProject().getBinaryPath();
+                               .getBaseAddress(log.getPid()));
+               String binPath = AnalyzerUtil.getBinaryPath(log.getPid());
                if (null == binPath || binPath.isEmpty()) {
                        return;
                }
 
-               ProbeCommonData log = (ProbeCommonData) inputData;
                int seq = log.getSeq();
                int tid = log.getTid();
                long callerAddr = log.getCallerPcAddr();
@@ -251,13 +259,15 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                if ((size == 0) || (!AnalyzerManager.isInBinaryRange(callerAddr))) {
                        CallStackUnit callbackApi = new CallStackUnit(
                                        LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                       log.getPid());
                        probeCallstack.add(callbackApi);
                        if (addrMap
                                        .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
                                CallStackUnit defaultCallstackUnit = new CallStackUnit(
                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                               log.getPid());
                                addrMap.put(
                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
                                                defaultCallstackUnit);
@@ -271,7 +281,7 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                                                + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
                                                + strCallerFuncName;
                                callerCallstackUnit = new CallStackUnit(callerAddr,
-                                               strCallerSymbol);
+                                               strCallerSymbol, log.getPid());
                                addrMap.put(callerAddr, callerCallstackUnit);
                        }
 
@@ -299,11 +309,12 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
                HashMap<Integer, DuplicateUserCall> dupUserCallMap = getDupUserCallByTidMap();
 
-               boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+               boolean isPieBuild = AnalyzerUtil.isPieBuild(input.getPid());
                String baseAddr = Long.toString(AnalyzerManager.getProject()
-                               .getBaseAddress());
+                               .getBaseAddress(input.getPid()));
                // String binPath = AnalyzerManager.getProject().getBinaryPath();
-               String binPath = DACommunicator.getSelectedApp().getBinInfo().getPath();
+               String binPath = DACommunicator.getSelectedApp().getBinInfo()
+                               .getLocalBinaryPath();
                if (null == binPath || binPath.isEmpty()) {
                        return false;
                }
@@ -321,7 +332,8 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                        String strSelfSymbol = getUserFunctionPosition()
                                        + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
                                        + strSelfFuncName;
-                       selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol);
+                       selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol,
+                                       log.getPid());
                        addrMap.put(selfAddr, selfCallstackUnit);
                }
 
index 452764c..f9c1273 100755 (executable)
@@ -44,12 +44,15 @@ import java.net.SocketException;
 import java.net.SocketTimeoutException;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
 import org.tizen.dynamicanalyzer.common.AnalyzerShellCommands;
 import org.tizen.dynamicanalyzer.common.CommonConstants;
+import org.tizen.dynamicanalyzer.common.ElfSymbolExtracter;
 import org.tizen.dynamicanalyzer.common.ErrorCode;
 import org.tizen.dynamicanalyzer.common.HostResult;
 import org.tizen.dynamicanalyzer.communicator.BaseCommunicator;
@@ -61,6 +64,7 @@ import org.tizen.dynamicanalyzer.nl.ConfigureLabels;
 import org.tizen.dynamicanalyzer.project.PackageInfo;
 import org.tizen.dynamicanalyzer.swap.logparser.SWAPLogParser;
 import org.tizen.dynamicanalyzer.swap.model.ByteUtils;
+import org.tizen.dynamicanalyzer.swap.model.DATime;
 import org.tizen.dynamicanalyzer.swap.model.control.ApplicationInfo;
 import org.tizen.dynamicanalyzer.swap.model.control.ApplicationInst;
 import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo;
@@ -68,6 +72,9 @@ import org.tizen.dynamicanalyzer.swap.model.control.FunctionInst;
 import org.tizen.dynamicanalyzer.swap.model.control.RunTimeConfiguration;
 import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo;
 import org.tizen.dynamicanalyzer.swap.model.control.UserSpaceInst;
+import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataUtils;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager;
 import org.tizen.dynamicanalyzer.ui.file.FileChartManager;
 import org.tizen.dynamicanalyzer.ui.network.NetworkChartManager;
 import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
@@ -78,11 +85,12 @@ import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager;
 import org.tizen.dynamicanalyzer.uirecorder.UIRecorderTool;
 import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
 import org.tizen.dynamicanalyzer.utils.UpdateViewTimer;
-import org.tizen.sdblib.receiver.MultiLineReceiver;
+import org.tizen.sdblib.exception.SdbCommandRejectedException;
+import org.tizen.sdblib.exception.TimeoutException;
+import org.tizen.sdblib.service.SyncResult;
 
 public class Communicator30 extends BaseCommunicator {
        private boolean isInit = false;
-       private static List<String> binaryHashMultiLines = new ArrayList<String>();
 
        @Override
        public HostResult init() {
@@ -166,6 +174,14 @@ public class Communicator30 extends BaseCommunicator {
                        removeList.clear();
                }
 
+               for (DeviceInfo devInfo : devices) {
+                       HostResult result = sendRuntimeMessage(0, null);
+                       if (!result.isSuccess()) {
+                               System.out.println(result.toString());
+                               removeList.add(devInfo);
+                       }
+               }
+
                if (devices.isEmpty()) {
                        System.out.println("device init faiiled...");
                        // TODO: close da
@@ -196,13 +212,11 @@ public class Communicator30 extends BaseCommunicator {
                appInfo.setExecPath(selectedApp.getInfo(PackageInfo.EXEC_INDEX)
                                + ".exe");
 
-               RunTimeConfiguration rt = new RunTimeConfiguration();
-               rt.setFeatures(ConfigureManager.getInstance().getConfiguration());
+               UserSpaceInst userSpaceInst = getUserSpaceInst(appInfo);
 
                byte[] replayData = AnalyzerManager.getProject().getReplayEvent();
-               UserSpaceInst userSpaceInst = getUserSpaceInst(appInfo);
-               byte[] rear = ByteUtils.getByte(appInfo.getByteValue(),
-                               rt.getByteValue(), userSpaceInst.getByteValue(), replayData);
+               byte[] rear = ByteUtils.getByte(userSpaceInst.getByteValue(),
+                               replayData);
                int length = rear.length;
 
                byte[] ret = ByteUtils.getByte(AnalyzerConstants.MSG_START_SWAP,
@@ -231,6 +245,17 @@ public class Communicator30 extends BaseCommunicator {
                        return result;
                }
 
+               // success start trace!!
+               byte[] payload = getMessagePayload(result.getRet());
+               DATime profilingStartTime = new DATime();
+               int index = 0;
+               int sec = ByteUtils.toInt(payload, index);
+               index += INT_SIZE;
+               int nano = ByteUtils.toInt(payload, index);
+               index += INT_SIZE;
+               profilingStartTime.setSec(sec);
+               profilingStartTime.setNano(nano);
+
                UIRecorderTool.getInstance().startRecorder();
                ToolbarArea.getInstance().startTimer();
                SWAPLogParser.startLogParser();
@@ -288,8 +313,6 @@ public class Communicator30 extends BaseCommunicator {
                        System.out.println();
                }
                appInst.setFunctionCount(size - exSize);
-               appInst.setLibcount(0);
-               appInst.setLibraryInstList(null);
                output.getAppInstList().add(appInst);
                return output;
        }
@@ -298,19 +321,19 @@ public class Communicator30 extends BaseCommunicator {
                // send config message
                byte[] msgBinInfo = ByteUtils
                                .toBytes(AnalyzerConstants.MSG_BINARY_INFO);
-               ApplicationInfo appInfo = new ApplicationInfo();
-               String appType = selectedApp.getInfo(PackageInfo.APPTYPE_INDEX);
-               if (appType.contains(PackageInfo.APPTYPE_CPP)) {
-                       appInfo.setAppType(ApplicationInfo.APPTYPE_TIZEN);
-               } else {
-                       appInfo.setAppType(ApplicationInfo.APPTYPE_COMMON_EXEC);
+
+               int binCount = 1; // FIXME
+               String targetPath = selectedApp.getInfo(PackageInfo.EXEC_INDEX);
+               String type = selectedApp.getInfo(PackageInfo.APPTYPE_INDEX);
+               int appType = ApplicationInfo.APPTYPE_TIZEN;
+               if (type.contains(PackageInfo.APPTYPE_CPP)) {
+                       targetPath += CommonConstants.EXTENSION_EXEC_FILE;
                }
-               appInfo.setAppId(selectedApp.getInfo(PackageInfo.APPID_INDEX));
-               appInfo.setExecPath(selectedApp.getInfo(PackageInfo.EXEC_INDEX));
 
-               int length = appInfo.getByteValue().length;
-               byte[] msg = ByteUtils.getByte(msgBinInfo, length,
-                               appInfo.getByteValue());
+               byte[] preMsg = ByteUtils.getByte(binCount, targetPath);
+
+               int length = preMsg.length;
+               byte[] msg = ByteUtils.getByte(msgBinInfo, length, preMsg);
 
                HostResult result = handleControlMessage(
                                DACommunicator.getSelectedDevice(), msg);
@@ -322,141 +345,125 @@ public class Communicator30 extends BaseCommunicator {
                // parse binary info
                byte[] payload = getMessagePayload(result.getRet());
                BinaryInfo binInfo = new BinaryInfo();
+               binInfo.setTargetBinaryPath(targetPath);
                selectedApp.setBinInfo(binInfo);
-               int binaryType = ByteUtils.toInt(payload, 0);
+               int index = 0;
+               int count = ByteUtils.toInt(payload, index);
+               index += INT_SIZE;
+               String localBinaryPath = null;
+               // FIXME
+               for (int i = 0; i < count; i++) {
+                       int binaryType = ByteUtils.toInt(payload, index);
+                       index += INT_SIZE;
+                       localBinaryPath = ByteUtils.getString(payload, index).trim();
+                       String[] splitLocalBinaryPath = localBinaryPath
+                                       .split(CommonConstants.SLASH);
+                       if (null == splitLocalBinaryPath[0]
+                                       || splitLocalBinaryPath[0].isEmpty()) {
+                               localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+                                               + File.separator + getFileName(targetPath);
+                               result = pullTheFile(targetPath, localBinaryPath);
+                               if (result.isSuccess()) {
+                                       binInfo.setLocalBinaryPath(localBinaryPath);
+                               }
+                               index += ByteUtils.getStringLength(payload, index);
+                               String md5sum = ByteUtils.getString(payload, index);
+                               binInfo.setType(binaryType);
+                               binInfo.setLocalBinaryPath(localBinaryPath);
+                               binInfo.setMd5sumValue(md5sum);
+                               return result;
+                       } else {
+                               index += ByteUtils.getStringLength(payload, index);
+                               String md5sum = ByteUtils.getString(payload, index);
+                               binInfo.setType(binaryType);
+                               binInfo.setLocalBinaryPath(localBinaryPath);
+                               binInfo.setMd5sumValue(md5sum);
+                       }
 
-               String targetPath = selectedApp.getInfo(PackageInfo.EXEC_INDEX);
-               if (appInfo.getAppType() == ApplicationInfo.APPTYPE_TIZEN) {
-                       targetPath += CommonConstants.EXTENSION_EXEC_FILE;
-               }
-               String binaryDir = ByteUtils.getString(payload, INT_SIZE).trim();
-               String binaryPath = null;
-               if (null == binaryDir) {
-                       // return HostResult.ERR_BIN_INFO_GET_FAIL;
-                       binaryPath = CommonConstants.EMPTY;
-               }
-
-               StringBuffer strBuf = new StringBuffer();
-               strBuf.append(binaryDir).append(File.separator)
-                               .append(selectedApp.getExecFileName(appInfo.getAppType()));
-               binaryPath = strBuf.toString();
-               binInfo.setType(binaryType);
-               binInfo.setPath(binaryPath);
-
-               // host has no binary file - pull binary file from target
-               // change binary file path of host
-               File binFile = new File(binaryPath);
-               if (!binFile.exists()) {
-                       // binaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + File.separator
-                       // + selectedApp.getExecFileName(appInfo.getAppType());
-                       // try {
-                       // DACommunicator.getSelectedDevice().getIDevice()
-                       // .becomeSuperUser(true);
-                       // } catch (TimeoutException e) {
-                       // // TODO Auto-generated catch block
-                       // e.printStackTrace();
-                       // } catch (SdbCommandRejectedException e) {
-                       // // TODO Auto-generated catch block
-                       // e.printStackTrace();
-                       // } catch (IOException e) {
-                       // // TODO Auto-generated catch block
-                       // e.printStackTrace();
-                       // }
-                       //
-                       // SyncResult res = CommunicatorUtils.pull(targetPath, binaryPath);
-                       // if (null != res && res.isOk()) {
-                       //                              System.out.println("binary copy success!!");//$NON-NLS-1$ 
-                       // } else {
-                       //                              System.out.println("Failed to get " + targetPath); //$NON-NLS-1$ 
-                       // return HostResult.ERR_BIN_INFO_GET_FAIL;
-                       // }
-                       // binInfo.setPath(binaryPath);
-                       // return result;
-               }
-
-               // host has binary then compare binary hash target and local
-               String command = AnalyzerShellCommands.CMD_DA_MD_5_SUM + targetPath;
-
-               CommunicatorUtils.execHostCommand(command, new MultiLineReceiver() {
-                       @Override
-                       public void processNewLines(String[] appLines) {
-                               binaryHashMultiLines.clear();
-                               for (int i = 0; i < appLines.length; i++) {
-                                       binaryHashMultiLines.add(appLines[i]);
+                       // host has no binary file - pull binary file from target
+                       // change binary file path of host
+                       File binFile = new File(localBinaryPath);
+                       if (!binFile.exists()) {
+                               localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+                                               + File.separator + getFileName(targetPath);
+                               result = pullTheFile(targetPath, localBinaryPath);
+                               if (result.isSuccess()) {
+                                       binInfo.setLocalBinaryPath(localBinaryPath);
                                }
+                               return result;
                        }
-               });
-
-               String commandResult = binaryHashMultiLines.get(0);
-               String[] splitResult = commandResult.trim()
-                               .split(CommonConstants.SPACE);
-               String targetHashCode = new String(splitResult[0]);
-               String localHashCode = null;
-               command = AnalyzerShellCommands.CMD_MD_5_SUM + "\"" + binaryPath + "\"";
-               try {
-                       Runtime rt = Runtime.getRuntime();
-                       Process process = rt.exec(new String[] {
-                                       AnalyzerShellCommands.CMD_MD_5_SUM, binaryPath });
-                       process.waitFor();
-                       BufferedReader reader = new BufferedReader(new InputStreamReader(
-                                       process.getInputStream()));
-                       BufferedReader error = new BufferedReader(new InputStreamReader(
-                                       process.getErrorStream()));
-                       String line = reader.readLine();
-                       String errorStr = error.readLine();
-                       if (null == line) {
-                               System.out.println("host md5sum get failed : " + errorStr);
+
+                       String localHashCode = null;
+                       try {
+                               Runtime rt = Runtime.getRuntime();
+                               Process process = rt.exec(new String[] {
+                                               AnalyzerShellCommands.CMD_MD_5_SUM, localBinaryPath });
+                               process.waitFor();
+                               BufferedReader reader = new BufferedReader(
+                                               new InputStreamReader(process.getInputStream()));
+                               BufferedReader error = new BufferedReader(
+                                               new InputStreamReader(process.getErrorStream()));
+                               String line = reader.readLine();
+                               String errorStr = error.readLine();
+                               if (null == line) {
+                                       System.out.println("host md5sum get failed : " + errorStr);
+                                       return HostResult.ERR_BIN_INFO_GET_FAIL;
+                               }
+                               String[] splitResult = line.trim().split(CommonConstants.SPACE);
+                               localHashCode = new String(splitResult[0]);
+                       } catch (IOException e) {
+                               e.printStackTrace();
                                return HostResult.ERR_BIN_INFO_GET_FAIL;
+                       } catch (InterruptedException e) {
+                               e.printStackTrace();
                        }
 
-                       splitResult = line.trim().split(CommonConstants.SPACE);
-                       localHashCode = new String(splitResult[0]);
-               } catch (IOException e) {
+                       String targetHashCode = binInfo.getMd5sumValue();
+                       if (!targetHashCode.equals(localHashCode)) {
+                               localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+                                               + File.separator + getFileName(targetPath);
+                               result = pullTheFile(targetPath, localBinaryPath);
+                               if (result.isSuccess()) {
+                                       binInfo.setLocalBinaryPath(localBinaryPath);
+                               }
+                               return result;
+                       }
+               }
+               return result;
+       }
+
+       private String getFileName(String fullPath) {
+               if (null == fullPath || fullPath.isEmpty()) {
+                       return null;
+               }
+               String[] splitPath = fullPath.split(CommonConstants.SLASH);
+               return new String(splitPath[splitPath.length - 1]);
+       }
+
+       private HostResult pullTheFile(String from, String to) {
+
+               try {
+                       DACommunicator.getSelectedDevice().getIDevice().setRootUser(true);
+               } catch (TimeoutException e) {
+                       // TODO Auto-generated catch block
                        e.printStackTrace();
-                       return HostResult.ERR_BIN_INFO_GET_FAIL;
-               } catch (InterruptedException e) {
+               } catch (SdbCommandRejectedException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       // TODO Auto-generated catch block
                        e.printStackTrace();
                }
 
-               // hash code is not same - get binary from target
-               // change binary file path of host
-
-               // FIXME: permission denied problem
-
-               if (!targetHashCode.equals(localHashCode)) {
-                       // String destFilePath = AnalyzerPaths.TEMP_FOLDER_PATH
-                       // + File.separator
-                       // + selectedApp.getExecFileName(appInfo.getAppType());
-                       // try {
-                       // DACommunicator.getSelectedDevice().getIDevice()
-                       // .becomeSuperUser(true);
-                       // } catch (TimeoutException e) {
-                       // // TODO Auto-generated catch block
-                       // e.printStackTrace();
-                       // } catch (SdbCommandRejectedException e) {
-                       // // TODO Auto-generated catch block
-                       // e.printStackTrace();
-                       // } catch (IOException e) {
-                       // // TODO Auto-generated catch block
-                       // e.printStackTrace();
-                       // }
-                       //
-                       // SyncResult res = CommunicatorUtils.pull(targetPath,
-                       // destFilePath);
-                       // if (null != res && res.isOk()) {
-                       //                              System.out.println("binary copy success!!");//$NON-NLS-1$ 
-                       // } else {
-                       //                              System.out.println("Failed to get " + targetPath + "  step 2"); //$NON-NLS-1$ 
-                       // return HostResult.ERR_BIN_INFO_GET_FAIL;
-                       // }
-                       // String[] splitName = binaryPath.split(CommonConstants.SLASH);
-                       // binaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + File.separator
-                       // + new String(splitName[splitName.length - 1]);
-                       // binInfo.setPath(binaryPath);
-               }
-               binInfo.setPath(binaryPath);
-
-               return result;
+               SyncResult res = CommunicatorUtils.pull(from, to);
+               if (null != res && res.isOk()) {
+                       System.out.println("binary copy success!!");//$NON-NLS-1$ 
+               } else {
+                       System.out.println("Failed to get " + from); //$NON-NLS-1$ 
+                       return HostResult.ERR_BIN_INFO_GET_FAIL;
+               }
+               // binInfo.setLocalBinaryPath(localBinaryPath);
+               return HostResult.SUCCESS;
        }
 
        @Override
@@ -536,7 +543,7 @@ public class Communicator30 extends BaseCommunicator {
                        int msgId = ByteUtils.toInt(message);
                        System.out.println("wait for ack... [send message : " + msgId
                                        + " ]");
-                       
+
                        int readsize = -1;
                        // read buffer size is sufficient??
                        byte[] cbuf = new byte[DACommunicator.READ_BUFFER_SIZE * 2];
@@ -717,6 +724,8 @@ public class Communicator30 extends BaseCommunicator {
                String networkType = null;
                int maxBrightness = 0;
                int numberOfCPU = 0;
+               int numberOfDevice = 0;
+               String deviceList = null;
 
                systemMemorySize = ByteUtils.toLong(payload, index);
                index += LONG_SIZE;
@@ -735,6 +744,17 @@ public class Communicator30 extends BaseCommunicator {
                maxBrightness = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
                numberOfCPU = ByteUtils.toInt(payload, index);
+               index += INT_SIZE;
+               numberOfDevice = ByteUtils.toInt(payload, index);
+               index += INT_SIZE;
+
+               for (int i = 0; i < numberOfDevice; i++) {
+                       deviceList += LogDataUtils.getString(index, payload);
+                       if (i + 1 != numberOfDevice) {
+                               deviceList += CommonConstants.COMMA;
+                       }
+                       index += LogDataUtils.getStringLength(index, payload);
+               }
 
                tInfo.setSystemMemorySize(systemMemorySize);
                tInfo.setStorageSize(storageSize);
@@ -745,6 +765,8 @@ public class Communicator30 extends BaseCommunicator {
                tInfo.setNetworkType(networkType);
                tInfo.setMaxBrightness(maxBrightness);
                tInfo.setCpuCount(numberOfCPU);
+               tInfo.setDeviceCount(numberOfDevice);
+               tInfo.setDevices(deviceList);
 
                return tInfo;
        }
@@ -827,4 +849,207 @@ public class Communicator30 extends BaseCommunicator {
                        System.out.println("binary info get failed :" + hr.getMessage());
                }
        }
+
+       public HostResult sendSWAPMessage(int messageId) {
+               List<BinarySettingData> settings = BinarySettingManager.getInstance()
+                               .getBinarySettings();
+               HashMap<String, BinaryInfo> targetBinInfoMap = BinarySettingManager
+                               .getInstance().getTargetBinInfoMap();
+               byte[] msg = new byte[0];
+               int count = settings.size();
+               int failedCount = 0;
+               msg = ByteUtils.getByte(msg, messageId);
+               byte[] libInst = new byte[0];
+               for (int a = 0; a < count; a++) {
+                       String binaryPath = settings.get(a).getBinaryPath();
+                       BinaryInfo binInfo = targetBinInfoMap.get(binaryPath);
+                       String localPath = binInfo.getLocalBinaryPath();
+
+                       ElfSymbolExtracter symbolExtractor = new ElfSymbolExtracter();
+                       if (!symbolExtractor.makeSymbol(localPath)) {
+                               failedCount++;
+                               continue;
+                       }
+                       List<AddrSymbolPair> symbols = symbolExtractor.getAddrSymbolPairs();
+                       List<FunctionInst> functionInstList = new ArrayList<FunctionInst>();
+
+                       int size = (symbols == null) ? 0 : symbols.size();
+                       int exSize = 0;
+                       FunctionInst functionInst = new FunctionInst();
+                       for (int i = 0; i < size; i++) {
+                               AddrSymbolPair addrSymbol = symbols.get(i);
+                               String symbol = addrSymbol.getSymbol();
+                               // FIXME: black list hard coded.
+                               if (symbol.contains("__i686.get_pc_thunk")) {
+                                       exSize++;
+                                       continue;
+                               }
+                               functionInst.setAddr(addrSymbol.getAddr());
+                               functionInst.setArgs(getFunctionArgs(addrSymbol.getSymbol()));
+                               functionInstList.add(functionInst);
+
+                               // for debug
+                               System.out.print("DEBUG : addr ");
+                               AnalyzerUtil.printHexdecimal(addrSymbol.getAddr());
+                               System.out.print("   symbol " + addrSymbol.getSymbol()
+                                               + "   args ");
+                               ByteUtils.printByteArray(functionInst.getArgs());
+                               System.out.println();
+                       }
+                       size = size - exSize;
+                       libInst = ByteUtils.getByte(libInst, binaryPath, size);
+                       for (int i = 0; i < size; i++) {
+                               libInst = ByteUtils.getByte(libInst, functionInstList.get(i)
+                                               .getByteValue());
+                       }
+                       System.out.println("debug");
+               }
+               count = count - failedCount;
+               libInst = ByteUtils.getByte(libInst, count);
+               int length = libInst.length;
+               msg = ByteUtils.getByte(msg, length, libInst);
+
+               ByteUtils.printByteArrayForStart(msg);
+               HostResult result = handleControlMessage(
+                               DACommunicator.getSelectedDevice(), msg);
+
+               int ackMsg = AnalyzerConstants.MSG_SWAP_INST_ADD_ACK;
+               if (messageId == AnalyzerConstants.MSG_SWAP_INST_REMOVE) {
+                       ackMsg = AnalyzerConstants.MSG_SWAP_INST_REMOVE_ACK;
+               }
+               if (!result.isSuccess() || !isCorrectAck(ackMsg, result)) {
+                       return HostResult.ERR_BIN_INFO_GET_FAIL;
+               }
+
+               return HostResult.SUCCESS;
+       }
+
+       public HostResult sendBinaryInfoMessageForLib() {
+               List<BinarySettingData> binaryData = BinarySettingManager.getInstance()
+                               .getBinarySettings();
+               List<String> binPaths = new ArrayList<String>();
+               List<BinaryInfo> binInfoList = new ArrayList<BinaryInfo>();
+
+               for (BinarySettingData data : binaryData) {
+                       binPaths.add(data.getBinaryPath());
+                       BinaryInfo binInfo = new BinaryInfo();
+                       binInfo.setTargetBinaryPath(data.getBinaryPath());
+                       binInfoList.add(binInfo);
+               }
+
+               int binCount = binPaths.size();
+               byte[] sendBin = new byte[0];
+               sendBin = ByteUtils.getByte(binCount);
+
+               for (int i = 0; i < binCount; i++) {
+                       String targetPath = binPaths.get(i);
+                       sendBin = ByteUtils.getByte(sendBin, targetPath);
+               }
+               int length = sendBin.length;
+               byte[] msg = ByteUtils.getByte(AnalyzerConstants.MSG_BINARY_INFO,
+                               length, sendBin);
+               HostResult result = handleControlMessage(
+                               DACommunicator.getSelectedDevice(), msg);
+
+               if (!result.isSuccess() || !isCorrectAck(MSG_BINARY_INFO_ACK, result)) {
+                       return HostResult.ERR_BIN_INFO_GET_FAIL;
+               }
+
+               // parse binary info
+               byte[] payload = getMessagePayload(result.getRet());
+               int index = 0;
+               int count = ByteUtils.toInt(payload, index);
+               index += INT_SIZE;
+               String localBinaryPath = null;
+               if (binCount != count) {
+                       System.out.println("BinInfo ack is not valid");
+                       return null;
+               }
+               for (int i = 0; i < binCount; i++) {
+                       BinaryInfo binInfo = binInfoList.get(i);
+                       int binaryType = ByteUtils.toInt(payload, index);
+                       index += INT_SIZE;
+                       localBinaryPath = ByteUtils.getString(payload, index).trim();
+                       String[] splitLocalBinaryPath = localBinaryPath
+                                       .split(CommonConstants.SLASH);
+                       if (null == splitLocalBinaryPath[0]
+                                       || splitLocalBinaryPath[0].isEmpty()) {
+                               localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+                                               + File.separator + getFileName(binPaths.get(i));
+                               result = pullTheFile(binPaths.get(i), localBinaryPath);
+                               if (result.isSuccess()) {
+                                       binInfo.setLocalBinaryPath(localBinaryPath);
+
+                                       index += ByteUtils.getStringLength(payload, index);
+                                       String md5sum = ByteUtils.getString(payload, index);
+                                       binInfo.setType(binaryType);
+                                       binInfo.setLocalBinaryPath(localBinaryPath);
+                                       binInfo.setMd5sumValue(md5sum);
+                                       index += ByteUtils.getStringLength(payload, index);
+                               }
+                               continue;
+                       } else {
+                               index += ByteUtils.getStringLength(payload, index);
+                               String md5sum = ByteUtils.getString(payload, index);
+                               binInfo.setType(binaryType);
+                               binInfo.setLocalBinaryPath(localBinaryPath);
+                               binInfo.setMd5sumValue(md5sum);
+                               index += ByteUtils.getStringLength(payload, index);
+                       }
+
+                       // host has no binary file - pull binary file from target
+                       // change binary file path of host
+                       File binFile = new File(localBinaryPath);
+                       if (!binFile.exists()) {
+                               localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+                                               + File.separator + getFileName(binPaths.get(i));
+                               result = pullTheFile(binPaths.get(i), localBinaryPath);
+                               if (result.isSuccess()) {
+                                       binInfo.setLocalBinaryPath(localBinaryPath);
+                               }
+                               continue;
+                       }
+
+                       String localHashCode = null;
+                       try {
+                               Runtime rt = Runtime.getRuntime();
+                               Process process = rt.exec(new String[] {
+                                               AnalyzerShellCommands.CMD_MD_5_SUM, localBinaryPath });
+                               process.waitFor();
+                               BufferedReader reader = new BufferedReader(
+                                               new InputStreamReader(process.getInputStream()));
+                               BufferedReader error = new BufferedReader(
+                                               new InputStreamReader(process.getErrorStream()));
+                               String line = reader.readLine();
+                               String errorStr = error.readLine();
+                               if (null == line) {
+                                       System.out.println("host md5sum get failed : " + errorStr);
+                                       continue;
+                               }
+                               String[] splitResult = line.trim().split(CommonConstants.SPACE);
+                               localHashCode = new String(splitResult[0]);
+                       } catch (IOException e) {
+                               e.printStackTrace();
+                               continue;
+                       } catch (InterruptedException e) {
+                               e.printStackTrace();
+                               continue;
+                       }
+
+                       String targetHashCode = binInfo.getMd5sumValue();
+                       if (!targetHashCode.equals(localHashCode)) {
+                               localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH
+                                               + File.separator + getFileName(binPaths.get(i));
+                               result = pullTheFile(binPaths.get(i), localBinaryPath);
+                               if (result.isSuccess()) {
+                                       binInfo.setLocalBinaryPath(localBinaryPath);
+                               }
+                               continue;
+                       } else {
+                               binInfo.setLocalBinaryPath(localBinaryPath);
+                       }
+               }
+               BinarySettingManager.getInstance().addBinaryInfos(binInfoList);
+               return result;
+       }
 }
index 1a11f7c..4999d6c 100755 (executable)
@@ -33,6 +33,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.Socket;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Timer;
 import java.util.TimerTask;
@@ -58,8 +59,6 @@ import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory;
 import org.tizen.dynamicanalyzer.ui.toolbar.StopLogProcessor;
 import org.tizen.dynamicanalyzer.ui.toolbar.StopProcessManager;
 import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
-import org.tizen.dynamicanalyzer.uirecorder.RecordingQueue;
-import org.tizen.dynamicanalyzer.uirecorder.UIRecorderRecordThread;
 import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
 import org.tizen.sdblib.service.SyncResult;
 
@@ -133,37 +132,43 @@ public class MessageParser {
        }
 
        private void processProcessInfo(byte[] data) {
-               ProcessInfo pInfo = AnalyzerManager.getProject().getProcessInfo();
+               HashMap<Integer, ProcessInfo> processMap = AnalyzerManager.getProject()
+                               .getProcessInfoHash();
 
                int pid = 0;
-               DATime startTime = new DATime();
+               int ppid = 0;
+               DATime processStartTime = new DATime();
                long lowAddr = 0;
                long highAddr = 0;
-               int appType = 0;
-               int binaryType = 0;
                String binaryPath = null;
                int dependantLibCount = 0;
 
                int index = MSG_HEADER_SIZE;
                pid = ByteUtils.toInt(data, index);
                index += INT_SIZE;
+               ppid = ByteUtils.toInt(data, index);
+               index += INT_SIZE;
                int sec = ByteUtils.toInt(data, index);
                index += INT_SIZE;
                int nano = ByteUtils.toInt(data, index);
                index += INT_SIZE;
-               startTime.setSec(sec);
-               startTime.setNano(nano);
+               processStartTime.setSec(sec);
+               processStartTime.setNano(nano);
                lowAddr = ByteUtils.toLong(data, index);
                index += LONG_SIZE;
                highAddr = ByteUtils.toLong(data, index);
                index += LONG_SIZE;
-               binaryType = ByteUtils.toInt(data, index);
-               index += INT_SIZE;
                binaryPath = ByteUtils.getString(data, index);
                index += ByteUtils.getStringLength(data, index);
                dependantLibCount = ByteUtils.toInt(data, index);
                index += INT_SIZE;
 
+               ProcessInfo pInfo = processMap.get(pid);
+               if (null == pInfo) {
+                       pInfo = new ProcessInfo();
+                       processMap.put(pid, pInfo);
+               }
+
                List<LibraryObject> libObjs = pInfo.getLibObjs();
                for (int i = 0; i < dependantLibCount; i++) {
                        LibraryObject libObj = new LibraryObject();
@@ -179,7 +184,20 @@ public class MessageParser {
                        libObjs.add(libObj);
                }
 
+               DATime startTime = AnalyzerManager.getProject().getStartTime();
+               int startSec = AnalyzerManager.getProject().getStartTime().getSec();
+               int startNano = AnalyzerManager.getProject().getStartTime().getNano();
+
+               if (0 == startSec && 0 == startNano) {
+                       startTime.setSec(sec);
+                       startTime.setNano(nano);
+                       AnalyzerManager.getProject().setStartTime(startTime);
+                       startSec = sec;
+                       startNano = nano;
+               }
+
                pInfo.setPid(pid);
+               pInfo.setPpid(ppid);
                System.out.println("process info start time : " + startTime.getSec()
                                + "  " + startTime.getNano() + "    startTime : "
                                + pInfo.getStartTime().getSec() + "  "
@@ -187,8 +205,6 @@ public class MessageParser {
                pInfo.setStartTime(startTime);
                pInfo.setLowestAddress(lowAddr);
                pInfo.setHighestAddress(highAddr);
-               pInfo.setAppType(appType);
-               pInfo.setBinaryType(binaryType);
                pInfo.setBinaryPath(binaryPath);
                pInfo.setDepLibCount(dependantLibCount);
 
@@ -202,11 +218,6 @@ public class MessageParser {
                return name;
        }
 
-       private void processRecordLog(final String record) {
-               RecordingQueue rq = UIRecorderRecordThread.getRecordingQueue();
-               rq.putLog(record);
-       }
-
        private void processImage(final String from) {
                final String fileName = getImageName(from);
                final String to = AnalyzerManager.getProject().getSavePath()
@@ -272,16 +283,16 @@ public class MessageParser {
                                        break;
                                }
 
-                               //LOG!
-//                             ByteUtils.printByteArray(header);
-                               
+                               // LOG!
+                               // ByteUtils.printByteArray(header);
+
                                int id = ByteUtils.toInt(header, 0);
                                int seq = ByteUtils.toInt(header, INT_SIZE);
-                               
+
                                // for debug
-//                             System.out.print("sequence : " + seq + "  id :");
-//                             AnalyzerUtil.printHexdecimal(id);
-//                             System.out.println();
+                               System.out.print("sequence : " + seq + "  id :");
+                               AnalyzerUtil.printHexdecimal(id);
+                               System.out.println();
                                int payloadSize = ByteUtils.toInt(header,
                                                MSG_PAYLOAD_SIZE_INDEX);
                                byte[] payload = null;
@@ -310,7 +321,7 @@ public class MessageParser {
                                                payloadSize);
 
                                processMessage(buffer);
-                               if (id == AnalyzerConstants.MSG_DATA_TERMINATE) {
+                               if (id == DataChannelConstants.MSG_DATA_TERMINATE) {
                                        System.out.println("message data terminate arrived!!!");
                                        break;
                                }
@@ -368,23 +379,23 @@ public class MessageParser {
                int id = ByteUtils.toInt(data, 0);
                LogData log = null;
                switch (id) {
-               case DataChannelConstants.MSG_PROCESS_INFO:
+               case DataChannelConstants.MSG_DATA_PROCESS_INFO:
                        // setting process info
                        processProcessInfo(data);
                        break;
-               case DataChannelConstants.MSG_TERMINATE:
+               case DataChannelConstants.MSG_DATA_TERMINATE:
                        processTerminate();
                        break;
-               case DataChannelConstants.MSG_ERROR:
+               case DataChannelConstants.MSG_DATA_ERROR:
                        // process error message
                        break;
-               case DataChannelConstants.MSG_SYSTEM:
-               case DataChannelConstants.MSG_SAMPLE:
+               case DataChannelConstants.MSG_DATA_SAMPLE:
+               case DataChannelConstants.MSG_DATA_SYSTEM:
                case DataChannelConstants.MSG_FUNCTION_ENTRY:
                case DataChannelConstants.MSG_FUNCTION_EXIT:
                case DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY:
                case DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT:
-               case DataChannelConstants.MSG_RECORD:
+               case DataChannelConstants.MSG_DATA_RECORD:
                        if (AnalyzerManager.isProcessInfoArrived()) {
                                // make log
                                log = LogDataFactory.createInstance(data);
@@ -395,8 +406,8 @@ public class MessageParser {
                        }
                        break;
                default: // MSG_PROBE
-                       if (AnalyzerManager.isProcessInfoArrived() && id > 0x3000
-                                       && id < 0x4000) {
+                       if (AnalyzerManager.isProcessInfoArrived() && id > 0x0100
+                                       && id < 0x0200) {
                                log = LogDataFactory.createInstance(data);
                                if (null != log) {
                                        buffer.add(log);
index 5914f15..969ad59 100755 (executable)
@@ -38,6 +38,7 @@ import org.tizen.dynamicanalyzer.logparser.LogInserter;
 import org.tizen.dynamicanalyzer.model.ImageInfo;
 import org.tizen.dynamicanalyzer.nl.InformationViewLabels;
 import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ContextSwitchData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData;
@@ -157,11 +158,6 @@ public class SWAPLogParser implements Runnable {
                                                continue;
                                        }
                                }
-
-                               // for debug
-                               // System.out.println("CallerPCAddr : "
-                               // + ((ProbeCommonData) log).getCallerPcAddr());
-                               // AnalyzerUtil.printHexdecimal(id);
                        }
                        int seqNum = log.getSeq();
 
@@ -209,9 +205,8 @@ public class SWAPLogParser implements Runnable {
                                                                .getProfileDataMaker());
                        } else if (log instanceof ReplayData) {
                                pushLog(log, logPack);
-                       }else if (log instanceof ContextSwitchData)
-                       {
-//                             printContextSwitchData(log);
+                       } else if (log instanceof ContextSwitchData) {
+                               // printContextSwitchData(log);
                                pushLog(log, logPack);
                        } else {
                                if (log instanceof ScreenShotData) {
@@ -233,8 +228,8 @@ public class SWAPLogParser implements Runnable {
                                pushLog(log, logPack);
                                AnalyzerManager.getCallstackManager()
                                                .makeCallstackWithoutBacktrace(log);
-                               if (id == AnalyzerConstants.MSG_PROBE_FILE
-                                               || id == AnalyzerConstants.MSG_PROBE_MEMORY) {
+                               if (id == DataChannelConstants.MSG_PROBE_FILE
+                                               || id == DataChannelConstants.MSG_PROBE_MEMORY) {
                                        AnalyzerManager.getLeakDetector().runLeakDectect(log);
                                }
 
@@ -328,39 +323,40 @@ public class SWAPLogParser implements Runnable {
                boolean isPieBuild = (DACommunicator.getSelectedApp().getBinInfo()
                                .getType() == 1) ? true : false;
                String baseAddr = Long.toString(AnalyzerManager.getProject()
-                               .getBaseAddress());
+                               .getBaseAddress(input.getPid()));
                String highAddr = Long.toString(AnalyzerManager.getProject()
-                               .getHighestAddress());
-               String path = DACommunicator.getSelectedApp().getBinInfo().getPath();
+                               .getHighestAddress(input.getPid()));
+               String path = DACommunicator.getSelectedApp().getBinInfo()
+                               .getLocalBinaryPath();
                String pcAddr = Long.toString(input.getPcAddr());
                String functionName = SymbolManager.addr2func(path, pcAddr, isPieBuild,
                                baseAddr);
 
                /** debug code */
-//              if (input.getId() != 0x2006 && input.getProbeType() == 1) {
-//             if (input.getId() != 0x2006 ) {
-//             if (input.getId() == 0x2006) {
-//                     System.out.print("seq : " + input.getSeq());
-//                     System.out.print("  id : ");
-//                     AnalyzerUtil.printHexdecimal(input.getId());
-//                     System.out.print(" function name : " + functionName + "[ low :");
-//                     AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr));
-//                     System.out.print("   high : ");
-//                     AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr));
-//                     System.out.print(" pcAddr : ");
-//                     AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr));
-//                     if (input.getId() == 0x2010) {
-//                             System.out.print(" probe type : ");
-//                             AnalyzerUtil.printHexdecimal(input.getProbeType());
-//                             System.out.print(" subtype : ");
-//                             AnalyzerUtil.printHexdecimal(input.getProbeSubType());
-//                     } else {
-//                             System.out.print("                           ");
-//                     }
-//                     System.out.print("  tid " + input.getTid() + " pid "
-//                                     + input.getPid() + "  time " + input.getTime());
-//                     System.out.println(" ]");
-//             }
+               // if (input.getId() != 0x2006 && input.getProbeType() == 1) {
+               // if (input.getId() != 0x2006 ) {
+               // if (input.getId() == 0x2006) {
+               // System.out.print("seq : " + input.getSeq());
+               // System.out.print("  id : ");
+               // AnalyzerUtil.printHexdecimal(input.getId());
+               // System.out.print(" function name : " + functionName + "[ low :");
+               // AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr));
+               // System.out.print("   high : ");
+               // AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr));
+               // System.out.print(" pcAddr : ");
+               // AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr));
+               // if (input.getId() == 0x2010) {
+               // System.out.print(" probe type : ");
+               // AnalyzerUtil.printHexdecimal(input.getProbeType());
+               // System.out.print(" subtype : ");
+               // AnalyzerUtil.printHexdecimal(input.getProbeSubType());
+               // } else {
+               // System.out.print("                           ");
+               // }
+               // System.out.print("  tid " + input.getTid() + " pid "
+               // + input.getPid() + "  time " + input.getTime());
+               // System.out.println(" ]");
+               // }
 
                if (null == functionName || functionName.isEmpty()
                                || functionName.equals("_end")) { //$NON-NLS-1$
@@ -378,22 +374,21 @@ public class SWAPLogParser implements Runnable {
        private void pushLog(LogData logData, LogPackage logPack) {
                logPack.setLogs(logData.getId(), logData);
        }
-       
-       private void printContextSwitchData(LogData log)
-       {
-               ContextSwitchData input = (ContextSwitchData)log;
+
+       private void printContextSwitchData(LogData log) {
+               ContextSwitchData input = (ContextSwitchData) log;
 
                System.out.print("seq : " + input.getSeq());
                System.out.print("  id : ");
                AnalyzerUtil.printHexdecimal(input.getId());
-//             System.out.print(" function name : " + functionName + "[ low :");
-//             AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr));
-//             System.out.print("   high : ");
-//             AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr));
-//             System.out.print(" pcAddr : ");
-//             AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr));
-               System.out.print("  tid " + input.getTid() + " pid "
-                               + input.getPid() + "  time " + input.getTime());
+               // System.out.print(" function name : " + functionName + "[ low :");
+               // AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr));
+               // System.out.print("   high : ");
+               // AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr));
+               // System.out.print(" pcAddr : ");
+               // AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr));
+               System.out.print("  tid " + input.getTid() + " pid " + input.getPid()
+                               + "  time " + input.getTime());
                System.out.println(" ]");
        }
 }
index 2b97677..3f4e48d 100644 (file)
@@ -82,4 +82,10 @@ public class RecordEventObject extends LogData {
                return ByteUtils.getByte(eventTime.getByteValues(), eventId, eventType,
                                eventCode, eventValue);
        }
+
+       @Override
+       public int getPid() {
+               // TODO Auto-generated method stub
+               return 0;
+       }
 }
index 8959096..092dc72 100755 (executable)
@@ -12,14 +12,11 @@ public class ApplicationInst implements SWAPModel {
        private String executablePath = null;
        private int functionCount = 0;
        private List<FunctionInst> functionInstList = new ArrayList<FunctionInst>();
-       private int libcount = 0;
-       private List<LibraryInst> libraryInstList = new ArrayList<LibraryInst>();
 
        @Override
        public byte[] getByteValue() {
                return ByteUtils.getByte(applicationType, applicationId,
-                               executablePath, functionCount, functionInstList, libcount,
-                               libraryInstList);
+                               executablePath, functionCount, functionInstList);
        }
 
        @Override
@@ -63,16 +60,4 @@ public class ApplicationInst implements SWAPModel {
                return functionInstList;
        }
 
-       public int getLibcount() {
-               return libcount;
-       }
-
-       public void setLibcount(int libcount) {
-               this.libcount = libcount;
-       }
-
-       public void setLibraryInstList(List<LibraryInst> libraryInstList) {
-               this.libraryInstList = libraryInstList;
-       }
-
 }
index e93cab7..050b2d0 100755 (executable)
@@ -5,7 +5,9 @@ import org.tizen.dynamicanalyzer.swap.model.SWAPModel;
 
 public class BinaryInfo implements SWAPModel {
        private int type = 0;
-       private String sourcePath = null;
+       private String targetBinaryPath = null;
+       private String localBinaryPath = null;
+       private String md5sumValue = null;
 
        public int getType() {
                return type;
@@ -15,22 +17,39 @@ public class BinaryInfo implements SWAPModel {
                this.type = type;
        }
 
-       public String getPath() {
-               return sourcePath;
+       public String getLocalBinaryPath() {
+               return localBinaryPath;
        }
 
-       public void setPath(String path) {
-               this.sourcePath = path;
+       public void setLocalBinaryPath(String path) {
+               this.localBinaryPath = path;
+       }
+
+       public String getMd5sumValue() {
+               return md5sumValue;
+       }
+
+       public void setMd5sumValue(String md5sumValue) {
+               this.md5sumValue = md5sumValue;
+       }
+
+       public String getTargetBinaryPath() {
+               return targetBinaryPath;
+       }
+
+       public void setTargetBinaryPath(String targetBinaryPath) {
+               this.targetBinaryPath = targetBinaryPath;
        }
 
        @Override
        public byte[] getByteValue() {
-               return ByteUtils.concatByteArray(type, sourcePath);
+               return ByteUtils.concatByteArray(type, localBinaryPath);
        }
 
        @Override
        public void setByteToValues(byte[] input) {
                // TODO Auto-generated method stub
-               
+
        }
+       
 }
index 6e73ccf..99484ad 100755 (executable)
@@ -1,6 +1,5 @@
 package org.tizen.dynamicanalyzer.swap.model.control;
 
-
 public class TargetInfo {
        private long systemMemorySize = 0;
        private long storageSize = 0;
@@ -11,6 +10,8 @@ public class TargetInfo {
        private String networkType = null;
        private int maxBrightness = 0;
        private int cpuCount = 0;
+       private int deviceCount = 0;
+       private String devices = null;
 
        public long getSystemMemorySize() {
                return systemMemorySize;
@@ -83,4 +84,20 @@ public class TargetInfo {
        public void setCpuCount(int cpuCount) {
                this.cpuCount = cpuCount;
        }
+
+       public int getDeviceCount() {
+               return deviceCount;
+       }
+
+       public void setDeviceCount(int deviceCount) {
+               this.deviceCount = deviceCount;
+       }
+
+       public String getDevices() {
+               return devices;
+       }
+
+       public void setDevices(String devices) {
+               this.devices = devices;
+       }
 }
index 3b0d349..f2ec4e8 100644 (file)
@@ -107,7 +107,7 @@ public class BasicDataMessage {
                }
                System.arraycopy(input, 0, newInput, 0, input.length);
                input = null;
-               payload = AnalyzerUtil.makeByteArray(id, newInput);
+//             payload = AnalyzerUtil.makeByteArray(id, newInput);
        }
 
        // for lower version
@@ -115,45 +115,45 @@ public class BasicDataMessage {
                int newId = -1;
                switch (oldId) {
                case LogCenterConstants.LOG_MEMORY:
-                       newId = AnalyzerConstants.MSG_PROBE_MEMORY;
+                       newId = DataChannelConstants.MSG_PROBE_MEMORY;
                        break;
                case LogCenterConstants.LOG_CONTROL:
-                       newId = AnalyzerConstants.MSG_PROBE_UICONTROL;
+                       newId = DataChannelConstants.MSG_PROBE_UICONTROL;
                        break;
                case LogCenterConstants.LOG_UI_EVENT:
-                       newId = AnalyzerConstants.MSG_PROBE_UIEVENT;
+                       newId = DataChannelConstants.MSG_PROBE_UIEVENT;
                        break;
                case LogCenterConstants.LOG_RESOURCE:
-                       newId = AnalyzerConstants.MSG_PROBE_FILE;
+                       newId = DataChannelConstants.MSG_PROBE_FILE;
                        break;
                case LogCenterConstants.LOG_NETWORK:
-                       newId = AnalyzerConstants.MSG_PROBE_NETWORK;
+                       newId = DataChannelConstants.MSG_PROBE_NETWORK;
                        break;
                case LogCenterConstants.LOG_GLES20:
-                       newId = AnalyzerConstants.MSG_PROBE_GLES20;
+                       newId = DataChannelConstants.MSG_PROBE_GLES20;
                case LogCenterConstants.LOG_LIFECYCLE:
-                       newId = AnalyzerConstants.MSG_PROBE_LIFECYCLE;
+                       newId = DataChannelConstants.MSG_PROBE_LIFECYCLE;
                        break;
                case LogCenterConstants.LOG_SCREENSHOT:
-                       newId = AnalyzerConstants.MSG_PROBE_SCREENSHOT;
+                       newId = DataChannelConstants.MSG_PROBE_SCREENSHOT;
                        break;
                case LogCenterConstants.LOG_SCENE:
-                       newId = AnalyzerConstants.MSG_PROBE_SCENE;
+                       newId = DataChannelConstants.MSG_PROBE_SCENE;
                        break;
                case LogCenterConstants.LOG_DEVICE:
-                       newId = AnalyzerConstants.MSG_DATA_SYSTEM;
+                       newId = DataChannelConstants.MSG_DATA_SYSTEM;
                        break;
                case LogCenterConstants.LOG_PROFILING:
-                       newId = AnalyzerConstants.MSG_DATA_SAMPLE;
+                       newId = DataChannelConstants.MSG_DATA_SAMPLE;
                        break;
                case LogCenterConstants.LOG_THREAD:
-                       newId = AnalyzerConstants.MSG_PROBE_THREAD;
+                       newId = DataChannelConstants.MSG_PROBE_THREAD;
                        break;
                case LogCenterConstants.LOG_CUSTOM_CHART:
-                       newId = AnalyzerConstants.MSG_PROBE_CUSTOM;
+                       newId = DataChannelConstants.MSG_PROBE_CUSTOM;
                        break;
                case LogCenterConstants.LOG_SYNC:
-                       newId = AnalyzerConstants.MSG_PROBE_SYNC;
+                       newId = DataChannelConstants.MSG_PROBE_SYNC;
                        break;
                default:
                        // USER_FUNCTION
index d1c41b2..e53a247 100644 (file)
@@ -3,15 +3,27 @@ package org.tizen.dynamicanalyzer.swap.model.data;
 public class DataChannelConstants {
        public static final int BUFFER_SIZE = 1024;
 
-       public static final int MSG_PROCESS_INFO = 0x2002;
-       public static final int MSG_TERMINATE = 0x2004;
-       public static final int MSG_ERROR = 0x2005;
-       public static final int MSG_SAMPLE = 0x2006;
-       public static final int MSG_SYSTEM = 0x2007;
-       public static final int MSG_IMAGE = 0x2008;
-       public static final int MSG_RECORD = 0x2009;
-       public static final int MSG_FUNCTION_ENTRY = 0x2010;
-       public static final int MSG_FUNCTION_EXIT = 0x2011;
-       public static final int MSG_CONTEXT_SWITCH_ENTRY = 0x2012;
-       public static final int MSG_CONTEXT_SWITCH_EXIT = 0x2013;
+       public final static int MSG_DATA_PROCESS_INFO = 0x0001;
+       public final static int MSG_DATA_TERMINATE = 0x0002;
+       public final static int MSG_DATA_ERROR = 0x0003;
+       public final static int MSG_DATA_SAMPLE = 0x0004;
+       public final static int MSG_DATA_SYSTEM = 0x0005;
+       public final static int MSG_DATA_RECORD = 0x0006;
+       public final static int MSG_FUNCTION_ENTRY = 0x0008;
+       public final static int MSG_FUNCTION_EXIT = 0x0009;
+       public final static int MSG_CONTEXT_SWITCH_ENTRY = 0x0010;
+       public final static int MSG_CONTEXT_SWITCH_EXIT = 0x0011;
+
+       public final static int MSG_PROBE_MEMORY = 0x0101;
+       public final static int MSG_PROBE_UICONTROL = 0x0102;
+       public final static int MSG_PROBE_UIEVENT = 0x0103;
+       public final static int MSG_PROBE_FILE = 0x0104;
+       public final static int MSG_PROBE_LIFECYCLE = 0x0105;
+       public final static int MSG_PROBE_SCREENSHOT = 0x0106;
+       public final static int MSG_PROBE_SCENE = 0x0107;
+       public final static int MSG_PROBE_THREAD = 0x0108;
+       public final static int MSG_PROBE_CUSTOM = 0x0109;
+       public final static int MSG_PROBE_SYNC = 0x0110;
+       public final static int MSG_PROBE_NETWORK = 0x0111;
+       public final static int MSG_PROBE_GLES20 = 0x0112;
 }
index 6ebaff3..db3e69d 100644 (file)
@@ -4,6 +4,7 @@ public class LibraryObject {
        private long lowestAddress = -1;
        private long highestAddress = -1;
        private String libPath = null;
+       private int pid;
 
        public long getLowestAddress() {
                return lowestAddress;
@@ -28,4 +29,14 @@ public class LibraryObject {
        public void setLibPath(String libPath) {
                this.libPath = libPath;
        }
+
+       public int getPid() {
+               return pid;
+       }
+
+       public void setPid(int pid) {
+               this.pid = pid;
+       }
+       
+       
 }
index 6e9e73c..d25200c 100644 (file)
@@ -7,12 +7,10 @@ import org.tizen.dynamicanalyzer.swap.model.DATime;
 
 public class ProcessInfo {
        private int pid = -1;
-       // private long startTime = 0;
+       private int ppid = -1;
        DATime startTime = new DATime();
        private long lowestAddress = 0;
        private long highestAddress = 0;
-       private int appType = -1; // 1. tizen 2. capi
-       private int binaryType = -1; // pie option
        private String binaryPath = null;
        private int depLibCount = 0;
        private List<LibraryObject> libObjs = new ArrayList<LibraryObject>();
@@ -25,6 +23,14 @@ public class ProcessInfo {
                this.pid = pid;
        }
 
+       public int getPpid() {
+               return ppid;
+       }
+
+       public void setPpid(int ppid) {
+               this.ppid = ppid;
+       }
+
        public DATime getStartTime() {
                return startTime;
        }
@@ -49,22 +55,6 @@ public class ProcessInfo {
                this.highestAddress = highestAddress;
        }
 
-       public int getAppType() {
-               return appType;
-       }
-
-       public void setAppType(int appType) {
-               this.appType = appType;
-       }
-
-       public int getBinaryType() {
-               return binaryType;
-       }
-
-       public void setBinaryType(int binaryType) {
-               this.binaryType = binaryType;
-       }
-
        public String getBinaryPath() {
                return binaryPath;
        }
index 05f69d5..483d941 100644 (file)
@@ -11,7 +11,7 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator;
 import org.tizen.dynamicanalyzer.swap.model.ByteUtils;
 import org.tizen.dynamicanalyzer.swap.model.DATime;
 
-public class LogData {
+public abstract class LogData {
        public static boolean isSWAP = false;
        public static int STATE_COUNT = 4;
 
@@ -45,7 +45,6 @@ public class LogData {
                long resultNano = nano - startNano;
 
                time = resultSec * 1000000 + resultNano / 1000;
-
                index += INT_SIZE; // payload length field offset
        }
 
@@ -97,4 +96,7 @@ public class LogData {
                seq = rs.getInt(3);
                time = rs.getLong(4);
        }
+
+       public abstract int getPid();
+       
 }
index 3e98a3b..ca94417 100644 (file)
@@ -1,24 +1,24 @@
 package org.tizen.dynamicanalyzer.swap.model.probe2;
 
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_ENTRY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_EXIT;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_RECORD;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_SAMPLE;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_SYSTEM;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_ENTRY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_CUSTOM;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_FILE;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_GLES20;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_LIFECYCLE;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_MEMORY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_NETWORK;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_SCENE;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_SCREENSHOT;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_SYNC;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_THREAD;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_UICONTROL;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_UIEVENT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_RECORD;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_SAMPLE;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_SYSTEM;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_ENTRY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_CUSTOM;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_FILE;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_GLES20;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_LIFECYCLE;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_MEMORY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_NETWORK;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_SCENE;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_SCREENSHOT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_SYNC;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_THREAD;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_UICONTROL;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_UIEVENT;
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -103,14 +103,7 @@ public class LogDataFactory {
 
        public static LogData createInstance(byte[] data) {
                int id = ByteUtils.toInt(data, 0);
-               
-               if (id == 8208 || id == 8209 || id == 8198 || id == 8199 || id == 8210
-                               || id == 8211 || id == 12292 || id == 12290 || id == 12295 || id == 12289 || id == 12291|| id == 8201) {
 
-               } else {
-//                     System.out.println("createInstance id : " + id);
-               }
-               
                LogData output = null;
                switch (id) {
                case MSG_PROBE_MEMORY:
@@ -188,8 +181,7 @@ public class LogDataFactory {
                return output;
        }
 
-       
-       public static LogData createInstance(ResultSet rs) throws SQLException{
+       public static LogData createInstance(ResultSet rs) throws SQLException {
                int id = rs.getInt(2);
                LogData output = null;
                switch (id) {
@@ -265,7 +257,7 @@ public class LogDataFactory {
                output.loadData(rs);
                return output;
        }
-       
+
        public static LogFormat getLogFormatById(int id) {
                LogFormat format = null;
                switch (id) {
index cc7a16e..2a7049e 100644 (file)
@@ -1,10 +1,10 @@
 package org.tizen.dynamicanalyzer.swap.model.probe2;
 
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_ENTRY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_EXIT;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_SAMPLE;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_ENTRY;
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_SAMPLE;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_ENTRY;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT;
 import static org.tizen.dynamicanalyzer.common.CommonConstants.INT_SIZE;
 import static org.tizen.dynamicanalyzer.common.CommonConstants.LONG_SIZE;
 
index ed3e1f4..04186c6 100644 (file)
@@ -96,4 +96,9 @@ public class ReplayData extends LogData {
                return recordEvent;
        }
 
+       @Override
+       public int getPid() {
+               return 0;
+       }
+
 }
index b92332b..fe4ba13 100644 (file)
@@ -30,8 +30,9 @@ public class SystemData extends LogData {
        long systemMemoryUsed = 0;
        int totalUsedDrive = 0;
        int diskReadSize = 0;
+       int diskReadSectorCount = 0;
        int diskWriteSize = 0;
-       int diskSectorsWritten = 0;
+       int diskWrittenSectorCount = 0;
        int networkSendSize = 0;
        int networkReceiveSize = 0;
        int wifi = 0;
@@ -47,18 +48,23 @@ public class SystemData extends LogData {
        int video = 0;
        int call = 0;
        int dnet = 0;
-       int energy = 0;
+       int energyUsage = 0;
+       String deviceEnergyUsage = null;
+       String applicationEnergyUsage = null;
 
        int callAlpha = 0;
        int rssiAlpha = 0;
 
-       public SystemData(){}
-       
+       public SystemData() {
+       }
+
        public void makeData(byte[] data) {
                super.makeData(data);
-//             index = MessageParser.MSG_HEADER_SIZE;
+               // index = MessageParser.MSG_HEADER_SIZE;
                int coreCount = DACommunicator.getSelectedDevice().getTargetInfo()
                                .getCpuCount();
+               int deviceCount = DACommunicator.getSelectedDevice().getTargetInfo()
+                               .getDeviceCount();
                appCpuUsage = ByteUtils.toFloat(data, index);
                index += FLOAT_SIZE;
 
@@ -107,10 +113,13 @@ public class SystemData extends LogData {
                diskReadSize = ByteUtils.toInt(data, index);
                index += INT_SIZE;
 
+               diskReadSectorCount = ByteUtils.toInt(data, index);
+               index += INT_SIZE;
+
                diskWriteSize = ByteUtils.toInt(data, index);
                index += INT_SIZE;
 
-               diskSectorsWritten = ByteUtils.toInt(data, index);
+               diskWrittenSectorCount = ByteUtils.toInt(data, index);
                index += INT_SIZE;
 
                networkSendSize = ByteUtils.toInt(data, index);
@@ -158,7 +167,15 @@ public class SystemData extends LogData {
                dnet = ByteUtils.toInt(data, index);
                index += INT_SIZE;
 
-               energy = ByteUtils.toInt(data, index);
+               energyUsage = ByteUtils.toInt(data, index);
+               index += INT_SIZE;
+
+               deviceEnergyUsage = parseUsage(index, data);
+               index += (INT_SIZE * deviceCount);
+
+               applicationEnergyUsage = parseUsage(index, data);
+               index += (INT_SIZE * deviceCount);
+
        }
 
        private static String parseLoad(int start, byte[] payload) {
@@ -168,9 +185,6 @@ public class SystemData extends LogData {
                StringBuffer outBuf = new StringBuffer();
                for (int ii = 0; ii < count; ii++) {
                        try {
-                               if (pos == 180) {
-                                       System.out.println();
-                               }
                                int tid = ByteUtils.toInt(payload, pos);
                                pos += INT_SIZE;
                                outBuf.append(tid).append(CommonConstants.COMMA);
@@ -204,12 +218,27 @@ public class SystemData extends LogData {
                return buffer.toString();
        }
 
+       private static String parseUsage(int start, byte[] payload) {
+               int count = DACommunicator.getSelectedDevice().getTargetInfo()
+                               .getDeviceCount();
+               StringBuffer buffer = new StringBuffer();
+               for (int i = 0; i < count; i++) {
+                       int value = ByteUtils.toInt(payload, start);
+                       start += INT_SIZE;
+                       buffer.append(value);
+                       if (i + 1 != count) {
+                               buffer.append(',');
+                       }
+               }
+               return buffer.toString();
+       }
+
        public int getEnergy() {
-               return energy;
+               return energyUsage;
        }
 
        public void setEnergy(int energy) {
-               this.energy = energy;
+               this.energyUsage = energy;
        }
 
        public int getWifi() {
@@ -316,14 +345,6 @@ public class SystemData extends LogData {
                this.dnet = dnet;
        }
 
-       public int getDiskSectorsWritten() {
-               return diskSectorsWritten;
-       }
-
-       public void setDiskSectorsWritten(int disSectorsWritten) {
-               this.diskSectorsWritten = disSectorsWritten;
-       }
-
        public int getNetworkSendSize() {
                return networkSendSize;
        }
@@ -468,6 +489,14 @@ public class SystemData extends LogData {
                this.diskReadSize = diskReadSize;
        }
 
+       public int getDiskReadSectorCount() {
+               return diskReadSectorCount;
+       }
+
+       public void setDiskReadSectorCount(int diskReadSectorCount) {
+               this.diskReadSectorCount = diskReadSectorCount;
+       }
+
        public int getDiskWriteSize() {
                return diskWriteSize;
        }
@@ -476,6 +505,14 @@ public class SystemData extends LogData {
                this.diskWriteSize = diskWriteSize;
        }
 
+       public int getDiskWrittenSectorCount() {
+               return diskWrittenSectorCount;
+       }
+
+       public void setDiskWrittenSectorCount(int diskWrittenSectorCount) {
+               this.diskWrittenSectorCount = diskWrittenSectorCount;
+       }
+
        public int getCallAlpha() {
                return callAlpha;
        }
@@ -492,6 +529,30 @@ public class SystemData extends LogData {
                this.rssiAlpha = rssiAlpha;
        }
 
+       public int getEnergyUsage() {
+               return energyUsage;
+       }
+
+       public void setEnergyUsage(int energyUsage) {
+               this.energyUsage = energyUsage;
+       }
+
+       public String getDeviceEnergyUsage() {
+               return deviceEnergyUsage;
+       }
+
+       public void setDeviceEnergyUsage(String deviceEnergyUsage) {
+               this.deviceEnergyUsage = deviceEnergyUsage;
+       }
+
+       public String getApplicationEnergyUsage() {
+               return applicationEnergyUsage;
+       }
+
+       public void setApplicationEnergyUsage(String applicationEnergyUsage) {
+               this.applicationEnergyUsage = applicationEnergyUsage;
+       }
+
        @Override
        public void makePreparedStatement(PreparedStatement prep)
                        throws SQLException {
@@ -515,7 +576,7 @@ public class SystemData extends LogData {
                prep.setInt(index++, totalUsedDrive);
                prep.setInt(index++, diskReadSize);
                prep.setInt(index++, diskWriteSize);
-               prep.setInt(index++, diskSectorsWritten);
+               prep.setInt(index++, diskWrittenSectorCount);
                prep.setInt(index++, networkSendSize);
                prep.setInt(index++, networkReceiveSize);
                prep.setInt(index++, wifi);
@@ -531,7 +592,7 @@ public class SystemData extends LogData {
                prep.setInt(index++, video);
                prep.setInt(index++, call);
                prep.setInt(index++, dnet);
-               prep.setInt(index++, energy);
+               prep.setInt(index++, energyUsage);
 
                prep.setInt(index++, callAlpha);
                prep.setInt(index++, rssiAlpha);
@@ -559,7 +620,7 @@ public class SystemData extends LogData {
                totalUsedDrive = rs.getInt(index++);
                diskReadSize = rs.getInt(index++);
                diskWriteSize = rs.getInt(index++);
-               diskSectorsWritten = rs.getInt(index++);
+               diskWrittenSectorCount = rs.getInt(index++);
                networkSendSize = rs.getInt(index++);
                networkReceiveSize = rs.getInt(index++);
                wifi = rs.getInt(index++);
@@ -575,9 +636,14 @@ public class SystemData extends LogData {
                video = rs.getInt(index++);
                call = rs.getInt(index++);
                dnet = rs.getInt(index++);
-               energy = rs.getInt(index++);
+               energyUsage = rs.getInt(index++);
 
                callAlpha = rs.getInt(index++);
                rssiAlpha = rs.getInt(index++);
        }
+
+       @Override
+       public int getPid() {
+               return 0;
+       }
 }
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingData.java
new file mode 100644 (file)
index 0000000..bbe4f94
--- /dev/null
@@ -0,0 +1,35 @@
+package org.tizen.dynamicanalyzer.swap.platform;
+
+import org.tizen.dynamicanalyzer.common.CommonConstants;
+
+public class BinarySettingData {
+       private String binaryPath = null;
+       private String sourcePath = null;
+
+       public String getBinaryPath() {
+               return binaryPath;
+       }
+
+       public void setBinaryPath(String binaryPath) {
+               this.binaryPath = binaryPath;
+       }
+
+       public String getSourcePath() {
+               return sourcePath;
+       }
+
+       public void setSourcePath(String sourcePath) {
+               this.sourcePath = sourcePath;
+       }
+
+       public String getSaveData() {
+               StringBuffer strBuffer = new StringBuffer();
+               strBuffer.append(binaryPath).append(CommonConstants.COMMA);
+               if (null == sourcePath) {
+                       strBuffer.append(CommonConstants.SPACE);
+               } else {
+                       strBuffer.append(sourcePath);
+               }
+               return strBuffer.toString();
+       }
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java
new file mode 100644 (file)
index 0000000..c4b96bd
--- /dev/null
@@ -0,0 +1,143 @@
+package org.tizen.dynamicanalyzer.swap.platform;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo;
+import org.tizen.dynamicanalyzer.swap.platform.ui.InputRow;
+
+public class BinarySettingManager {
+
+       private static BinarySettingManager instance = null;
+       private List<BinarySettingData> binarySettings = new ArrayList<BinarySettingData>();
+       private HashMap<String, BinaryInfo> targetBinInfoMap = new HashMap<String, BinaryInfo>();
+       private HashMap<String, BinaryInfo> localBinInfoMap = new HashMap<String, BinaryInfo>();
+
+       // temporary list
+       private HashMap<String, InputRow> inputRowHash = new HashMap<String, InputRow>();
+       private List<InputRow> inputRowList = new ArrayList<InputRow>();
+       private List<BinarySettingData> tempBinarySettings = new ArrayList<BinarySettingData>();
+
+       public static synchronized BinarySettingManager getInstance() {
+               if (null == instance) {
+                       instance = new BinarySettingManager();
+               }
+               return instance;
+       }
+
+       public void removeRealBinarySettingData(String binPath) {
+               for (int i = 0; i < binarySettings.size(); i++) {
+                       if (binPath.equals(binarySettings.get(i).getBinaryPath())) {
+                               binarySettings.remove(i);
+                               break;
+                       }
+               }
+       }
+
+       public List<BinarySettingData> getBinarySettings() {
+               return binarySettings;
+       }
+
+       public void clearData() {
+               binarySettings.clear();
+       }
+
+       public void putBinarySettingData(List<BinarySettingData> data) {
+               binarySettings.clear();
+               binarySettings.addAll(data);
+       }
+
+       public HashMap<String, InputRow> getInputRowHash() {
+               return inputRowHash;
+       }
+
+       public List<InputRow> getInputRowList() {
+               return inputRowList;
+       }
+
+       public List<BinarySettingData> getTempBinarySettings() {
+               return tempBinarySettings;
+       }
+
+       public void removeInputRow(String path) {
+               InputRow inputRow = inputRowHash.get(path);
+               InputRow nextInputRow = null;
+               InputRow prevInputRow = null;
+               if (null == inputRow) {
+                       return;
+               }
+
+               int index = inputRowList.indexOf(inputRow);
+               if (index == 0 && inputRowList.size() > 1) {
+                       nextInputRow = inputRowList.get(index + 1);
+                       FormData nextData = (FormData) nextInputRow.getLayoutData();
+                       nextData.top = new FormAttachment(0, 0);
+               } else if (index + 1 < inputRowList.size()) {
+                       prevInputRow = inputRowList.get(index - 1);
+                       nextInputRow = inputRowList.get(index + 1);
+                       FormData nextData = (FormData) nextInputRow.getLayoutData();
+                       nextData.top = new FormAttachment(prevInputRow, 2);
+               }
+               inputRowHash.remove(path);
+               inputRowList.remove(index);
+               removeBinarySettingData(path);
+       }
+
+       public void removeBinarySettingData(String binPath) {
+               for (int i = 0; i < tempBinarySettings.size(); i++) {
+                       if (binPath.equals(tempBinarySettings.get(i).getBinaryPath())) {
+                               tempBinarySettings.remove(i);
+                               break;
+                       }
+               }
+       }
+
+       public void updateInputRow(String binPath, String sourcePath) {
+               int size = tempBinarySettings.size();
+               for (int i = 0; i < size; i++) {
+                       BinarySettingData data = tempBinarySettings.get(i);
+                       if (data.getBinaryPath().equals(binPath)) {
+                               data.setSourcePath(sourcePath);
+                               break;
+                       }
+               }
+       }
+
+       public void addBinaryInfos(List<BinaryInfo> input) {
+               for (int i = 0; i < input.size(); i++) {
+                       String localPath = input.get(i).getLocalBinaryPath();
+                       BinaryInfo binInfo = targetBinInfoMap.get(localPath);
+                       if (null != binInfo) {
+                               String targetPath = binInfo.getTargetBinaryPath();
+                               targetBinInfoMap.remove(targetPath);
+                               localBinInfoMap.remove(localPath);
+                       }
+                       localBinInfoMap.put(localPath, input.get(i));
+                       targetBinInfoMap.put(input.get(i).getTargetBinaryPath(),
+                                       input.get(i));
+               }
+       }
+
+       public void removeBinaryInfos(List<BinaryInfo> input) {
+               for (int i = 0; i < input.size(); i++) {
+                       String path = input.get(i).getLocalBinaryPath();
+                       BinaryInfo binInfo = localBinInfoMap.get(path);
+                       if (null != binInfo) {
+                               localBinInfoMap.remove(path);
+                               targetBinInfoMap.remove(binInfo.getTargetBinaryPath());
+                       }
+               }
+       }
+
+       public HashMap<String, BinaryInfo> getTargetBinInfoMap() {
+               return targetBinInfoMap;
+       }
+
+       public HashMap<String, BinaryInfo> getLocalBinInfoMap() {
+               return localBinInfoMap;
+       }
+
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/BinaryAnalyzingConfigDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/BinaryAnalyzingConfigDialog.java
new file mode 100644 (file)
index 0000000..3d2ca47
--- /dev/null
@@ -0,0 +1,381 @@
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
+import org.tizen.dynamicanalyzer.common.CommonConstants;
+import org.tizen.dynamicanalyzer.communicator.DACommunicator;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager;
+import org.tizen.dynamicanalyzer.ui.widgets.DAButton;
+import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+import org.tizen.dynamicanalyzer.widgets.button.toggle.DACustomToggleButton;
+import org.tizen.sdblib.service.FileEntry;
+
+public class BinaryAnalyzingConfigDialog extends DAMessageBox {
+       private static final int WIDTH = 800;
+       private static final int HEIGHT = 600;
+
+       private HashMap<String, InputRow> inputRowHash = null;
+       private List<InputRow> inputRowList = null;
+
+       private List<BinarySettingData> tempBinarySettings = null;
+
+       private ScrolledComposite scrolledComposite = null;
+       private Composite inputComposite = null;
+       private DACustomToggleButton enableButton = null;
+       private DAButton cleanButton = null;
+       private DAButton addButton = null;
+       private DAButton saveButton = null;
+       private DAButton loadButton = null;
+
+       private boolean isLoaded = false;
+
+       private Composite bottomComp = null;
+
+       private DAButton okButton = null;
+       private DAButton cancelButton = null;
+
+       private BinaryAnalyzingConfigDialog me = null;
+
+       public BinaryAnalyzingConfigDialog(Shell parentShell) {
+               super(parentShell);
+               me = this;
+
+               inputRowHash = BinarySettingManager.getInstance().getInputRowHash();
+               inputRowList = BinarySettingManager.getInstance().getInputRowList();
+               tempBinarySettings = BinarySettingManager.getInstance()
+                               .getTempBinarySettings();
+
+               String settingPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH;
+               File settingFolder = new File(settingPath);
+               if (!settingFolder.exists() || !settingFolder.isDirectory()) {
+                       settingFolder.mkdirs();
+               }
+       }
+
+       private DACustomButtonClickEventListener addButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       FileExplorerDialog dialog = new FileExplorerDialog(shell);
+                       Object result = dialog.open();
+                       if (result != null) {
+                               FileEntry entry = (FileEntry) result;
+                               if (null == inputRowHash.get(entry.getFullPath())) {
+                                       InputRow inputRow = new InputRow(inputComposite);
+                                       inputRow.setBinaryText(entry.getFullPath());
+                                       inputRowHash.put(entry.getFullPath(), inputRow);
+                                       inputRowList.add(inputRow);
+                                       inputComposite.layout();
+
+                                       BinarySettingData binSetData = new BinarySettingData();
+                                       binSetData.setBinaryPath(entry.getFullPath());
+                                       tempBinarySettings.add(binSetData);
+                               }
+                       }
+               }
+       };
+
+       private DACustomButtonClickEventListener loadButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       LoadSettingDialog dialog = new LoadSettingDialog(shell);
+                       dialog.setParentDialog(me);
+                       dialog.open();
+               }
+       };
+
+       private DACustomButtonClickEventListener saveButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       SaveSettingDialog dialog = new SaveSettingDialog(shell);
+                       dialog.open();
+                       // save dialog
+                       // filename.setting
+               }
+       };
+
+       private DACustomButtonClickEventListener cleanButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       for (int i = 0; i < inputRowList.size(); i++) {
+                               inputRowList.get(i).dispose();
+                       }
+                       inputRowList.clear();
+                       inputRowHash.clear();
+                       tempBinarySettings.clear();
+               }
+       };
+
+       private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       BinarySettingManager.getInstance().putBinarySettingData(
+                                       tempBinarySettings);
+                       DACommunicator.sendBinaryInfoMessageForLib();
+                       int swapMsg = AnalyzerConstants.MSG_SWAP_INST_ADD;
+                       if (enableButton.isToggled()) {
+                               swapMsg = AnalyzerConstants.MSG_SWAP_INST_REMOVE;
+                       }
+                       DACommunicator.sendSWAPMessage(swapMsg);
+                       shell.dispose();
+               }
+       };
+
+       private DACustomButtonClickEventListener cancelButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       shell.dispose();
+               }
+       };
+
+       private DACustomButtonClickEventListener enableButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       if (enableButton.isToggled()) {
+                               enableButton.setText("Remove");
+                       } else {
+                               enableButton.setText("Add");
+                       }
+               }
+       };
+
+       public Object open() {
+               block = true;
+               parentShell.setEnabled(false);
+               initSuccess = run();
+               if (initSuccess) {
+                       shell.open();
+                       initInputRows();
+                       if (block) {
+                               runEventLoop(shell);
+                       }
+               }
+               shell.dispose();
+               parentShell.setEnabled(true);
+               closeAction();
+               return result;
+       }
+
+       protected boolean run() {
+               shell.setLayout(new FormLayout());
+               shell.setSize(WIDTH, HEIGHT);
+               shell.setBackground(ColorResources.DIALOG_BG_UPPER);
+               shell.setText("Binaries for Analyzing");
+
+               Label binaryLabel = new Label(shell, SWT.TRANSPARENT);
+               FormData data = new FormData();
+               data.top = new FormAttachment(0, 15);
+               data.left = new FormAttachment(0, 20);
+               data.height = 15;
+               data.width = WIDTH / 3;
+               binaryLabel.setLayoutData(data);
+               binaryLabel.setForeground(ColorResources.BLACK);
+               binaryLabel.setText("Binary Name");
+               binaryLabel.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+               Label sourceLabel = new Label(shell, SWT.TRANSPARENT);
+               data = new FormData();
+               data.top = new FormAttachment(0, 15);
+               data.left = new FormAttachment(binaryLabel, 0);
+               data.height = 15;
+               data.width = WIDTH / 3;
+               sourceLabel.setLayoutData(data);
+               sourceLabel.setForeground(ColorResources.BLACK);
+               sourceLabel.setText("Source Path");
+               sourceLabel.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+               scrolledComposite = new ScrolledComposite(shell, SWT.BORDER
+                               | SWT.V_SCROLL | SWT.H_SCROLL);
+               data = new FormData();
+               data.top = new FormAttachment(binaryLabel, 5);
+               data.left = new FormAttachment(0, 15);
+               data.height = 465;
+               data.width = WIDTH - 35;
+               scrolledComposite.setLayoutData(data);
+               scrolledComposite.setLayout(new FormLayout());
+               scrolledComposite.setBackground(ColorResources.BLUE);
+               scrolledComposite.setExpandHorizontal(true);
+               scrolledComposite.setExpandVertical(true);
+
+               // scrolledComposite.setMinSize(WIDTH - 30, 200);
+
+               inputComposite = new Composite(scrolledComposite, SWT.NONE);
+               scrolledComposite.setContent(inputComposite);
+               scrolledComposite.setMinSize(inputComposite.computeSize(SWT.DEFAULT,
+                               SWT.DEFAULT));
+               scrolledComposite.setShowFocusedControl(true);
+               data = new FormData();
+               data.top = new FormAttachment(binaryLabel, 5);
+               data.left = new FormAttachment(0, 15);
+               data.height = 495;
+               data.width = WIDTH - 15 - 15;
+               inputComposite.setLayoutData(data);
+               inputComposite.setLayout(new FormLayout());
+               inputComposite.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+               enableButton = new DACustomToggleButton(shell,
+                               ColorResources.BUTTON_NORMAL_COLOR_START,
+                               ColorResources.BUTTON_NORMAL_COLOR_END,
+                               ColorResources.BUTTON_PUSH_COLOR_START,
+                               ColorResources.BUTTON_PUSH_COLOR_END,
+                               ColorResources.BUTTON_HOVER_COLOR_START,
+                               ColorResources.BUTTON_HOVER_COLOR_END,
+                               ColorResources.BUTTON_DISABLE_COLOR_START,
+                               ColorResources.BUTTON_DISABLE_COLOR_END,
+                               ColorResources.BUTTON_NORMAL_COLOR_END,
+                               ColorResources.BUTTON_NORMAL_COLOR_START,
+                               ColorResources.BUTTON_HOVER_COLOR_END,
+                               ColorResources.BUTTON_HOVER_COLOR_START);
+               data = new FormData();
+               data.top = new FormAttachment(scrolledComposite, 5);
+               data.left = new FormAttachment(0, 15);
+               data.height = 18;
+               data.width = 95;
+               enableButton.setLayoutData(data);
+               enableButton.setText("Add");
+               enableButton.addClickListener(enableButtonListener);
+
+               cleanButton = new DAButton(shell, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(scrolledComposite, 5);
+               data.left = new FormAttachment(0, 395);
+               data.height = 20;
+               data.width = 95;
+               cleanButton.setLayoutData(data);
+               cleanButton.setText("clean");
+               cleanButton.addClickListener(cleanButtonListener);
+
+               addButton = new DAButton(shell, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(scrolledComposite, 5);
+               data.left = new FormAttachment(cleanButton, 5);
+               data.height = 20;
+               data.width = 95;
+               addButton.setLayoutData(data);
+               addButton.setText("add");
+               addButton.addClickListener(addButtonListener);
+
+               saveButton = new DAButton(shell, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(scrolledComposite, 5);
+               data.left = new FormAttachment(addButton, 5);
+               data.height = 20;
+               data.width = 95;
+               saveButton.setLayoutData(data);
+               saveButton.setText("save");
+               saveButton.addClickListener(saveButtonListener);
+
+               loadButton = new DAButton(shell, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(scrolledComposite, 5);
+               data.left = new FormAttachment(saveButton, 5);
+               data.height = 20;
+               data.width = 95;
+               loadButton.setLayoutData(data);
+               loadButton.setText("laod");
+               loadButton.addClickListener(loadButtonListener);
+
+               bottomComp = new Composite(shell, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(loadButton, 5);
+               data.left = new FormAttachment(0, 0);
+               data.height = 40;
+               data.width = WIDTH;
+               bottomComp.setLayoutData(data);
+               bottomComp.setLayout(new FormLayout());
+
+               cancelButton = new DAButton(bottomComp, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(0, 5);
+               data.right = new FormAttachment(100, -10);
+               data.height = 25;
+               data.width = 100;
+               cancelButton.setLayoutData(data);
+               cancelButton.setText("Cancel");
+               cancelButton.addClickListener(cancelButtonListener);
+
+               okButton = new DAButton(bottomComp, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(0, 5);
+               data.right = new FormAttachment(cancelButton, -5);
+               data.height = 25;
+               data.width = 100;
+               okButton.setLayoutData(data);
+               okButton.setText("Ok");
+               okButton.addClickListener(okButtonListener);
+
+               inputRowList.clear();
+               inputRowHash.clear();
+               tempBinarySettings.clear();
+
+               return true;
+       }
+
+       public void initInputRows() {
+               if (!isLoaded) {
+                       List<BinarySettingData> binData = BinarySettingManager
+                                       .getInstance().getBinarySettings();
+                       for (int i = 0; i < binData.size(); i++) {
+                               InputRow inputRow = new InputRow(inputComposite);
+                               inputRow.setBinaryText(binData.get(i).getBinaryPath());
+                               String source = binData.get(i).getSourcePath();
+                               if (null != source && !source.isEmpty()) {
+                                       inputRow.setSourceText(source);
+                                       String[] splitSource = source.split(CommonConstants.SLASH);
+                                       String comboSel = new String(
+                                                       splitSource[splitSource.length - 1]);
+                                       inputRow.setSourceComboText(comboSel);
+                               }
+                               inputRowHash.put(binData.get(i).getBinaryPath(), inputRow);
+                               inputRowList.add(inputRow);
+                       }
+                       tempBinarySettings.addAll(binData);
+                       inputComposite.layout();
+                       isLoaded = true;
+               }
+       }
+
+       public void loadBinarySetting(List<BinarySettingData> binData) {
+               cleanButtonListener.handleClickEvent(null);
+
+               for (int i = 0; i < binData.size(); i++) {
+                       InputRow inputRow = new InputRow(inputComposite);
+                       inputRow.setBinaryText(binData.get(i).getBinaryPath());
+                       String source = binData.get(i).getSourcePath();
+                       if (null != source && !source.isEmpty()) {
+                               inputRow.setSourceText(source);
+                               String[] splitSource = source.split(CommonConstants.SLASH);
+                               String comboSel = new String(
+                                               splitSource[splitSource.length - 1]);
+                               inputRow.setSourceComboText(comboSel);
+                       }
+                       inputRowHash.put(binData.get(i).getBinaryPath(), inputRow);
+                       inputRowList.add(inputRow);
+               }
+               tempBinarySettings.addAll(binData);
+               inputComposite.layout();
+       }
+}
\ No newline at end of file
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorer.java
new file mode 100644 (file)
index 0000000..bd4e1a2
--- /dev/null
@@ -0,0 +1,130 @@
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.util.HashMap;
+
+import org.eclipse.nebula.widgets.grid.Grid;
+import org.eclipse.nebula.widgets.grid.GridColumn;
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.tizen.dynamicanalyzer.communicator.DACommunicator;
+import org.tizen.dynamicanalyzer.model.DeviceInfo;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.resources.FontResources;
+import org.tizen.dynamicanalyzer.ui.widgets.DAGrid;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableEmptyCellRenderer;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableHeaderRenderer;
+import org.tizen.sdblib.IDevice;
+import org.tizen.sdblib.service.FileEntry;
+
+public class DAFileExplorer extends Composite {
+       protected Grid table;
+       private HashMap<String, Boolean> checkedChild = new HashMap<String, Boolean>();
+
+       public DAFileExplorer(Composite parent) {
+               super(parent, SWT.NONE);
+               this.setLayout(new FillLayout());
+               table = new DAGrid(this, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL
+                               | SWT.H_SCROLL);
+               table.setLinesVisible(false);
+               table.setBackground(ColorResources.TABLE_CONTENTS_NORMAL);
+               table.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR);
+               table.setFont(FontResources.TABLE_CELL_FONT);
+               setColumns();
+               table.setEmptyCellRenderer(new DATableEmptyCellRenderer());
+
+               table.setItemHeight(18);
+
+               table.addListener(SWT.Expand, new Listener() {
+
+                       @Override
+                       public void handleEvent(Event event) {
+                               GridItem item = (GridItem) event.item;
+                               FileEntry entry = (FileEntry) item.getData();
+                               if (entry == null) {
+                                       return;
+                               }
+                               String path = entry.getFullPath();
+                               if (null == checkedChild.get(path)) {
+                                       FileEntry[] children = entry.getChildren();
+                                       if (children.length > 0) {
+                                               for (int i = 0; i < children.length; i++) {
+                                                       FileEntry child = children[i];
+                                                       GridItem childItem = new GridItem(item, SWT.NONE);
+                                                       childItem.setText(child.getName());
+                                                       childItem.setData(child);
+                                               }
+                                       }
+                                       checkedChild.put(path, true);
+                                       // table.update();
+                               }
+                       }
+               });
+
+               table.addListener(SWT.Collapse, new Listener() {
+                       @Override
+                       public void handleEvent(Event event) {
+                               GridItem item = (GridItem) event.item;
+                               item.hasChildren();
+                               // TODO : remove children
+                       }
+               });
+       }
+
+       public void setColumns() {
+               GridColumn column = new GridColumn(table, SWT.NONE);
+               column.setCellRenderer(new DAFileExplorerRenderer());
+               column.setHeaderRenderer(new DATableHeaderRenderer());
+               column.setText("Node");
+               column.setWidth(500);
+               column.setTree(true);
+       }
+
+       public void makeTree() {
+               DeviceInfo selectedDevice = DACommunicator.getSelectedDevice();
+               if (null == selectedDevice) {
+                       return;
+               }
+               IDevice device = DACommunicator.getSelectedDevice().getIDevice();
+
+               FileEntry root = device.getRoot();
+               GridItem item = new GridItem(table, SWT.NONE);
+
+               String name = getDeviceSerialWithName(root);
+               item.setText(name);
+               item.setData(root);
+
+               table.update();
+       }
+
+       public static String getDeviceSerialWithName(FileEntry entry) {
+               return combineSerialWithName(entry.getDevice().getSerialNumber(), entry
+                               .getDevice().getDeviceName());
+       }
+
+       private static String combineSerialWithName(String serial, String name) {
+               return String.format("%s (%s)", serial, name);
+       }
+
+       public FileEntry getSelection() {
+               GridItem[] selections = table.getSelection();
+               if (selections.length > 0) {
+                       GridItem selection = selections[0];
+                       FileEntry entry = (FileEntry) selection.getData();
+                       if (!entry.isDirectory() && !entry.isRoot()) {
+                               return entry;
+                       } else {
+                               return null;
+                       }
+               } else {
+                       return null;
+               }
+       }
+
+       public Grid getTree() {
+               return table;
+       }
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerRenderer.java
new file mode 100644 (file)
index 0000000..3e8dbbb
--- /dev/null
@@ -0,0 +1,26 @@
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableCellRenderer;
+import org.tizen.sdblib.service.FileEntry;
+
+public class DAFileExplorerRenderer extends DATableCellRenderer {
+       @Override
+       public void setTree(boolean tree) {
+               super.setTree(tree);
+
+               if (tree) {
+                       toggleRenderer = new DAFileExplorerToggleRenderer();
+                       toggleRenderer.setDisplay(getDisplay());
+               }
+       }
+
+       @Override
+       protected boolean hasChildren(GridItem item) {
+               FileEntry entry = (FileEntry) item.getData();
+               if (entry != null && entry.getChildren().length > 0) {
+                       return true;
+               }
+               return false;
+       }
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerToggleRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerToggleRenderer.java
new file mode 100644 (file)
index 0000000..73ced1e
--- /dev/null
@@ -0,0 +1,127 @@
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.resources.FontResources;
+import org.tizen.dynamicanalyzer.resources.ImageResources;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableToggleRenderer;
+import org.tizen.sdblib.service.FileEntry;
+
+public class DAFileExplorerToggleRenderer extends DATableToggleRenderer {
+
+       public void paint(GC gc, Object value) {
+               GridItem item = (GridItem) value;
+
+               Font font = item.getFont(0);
+               if (null == font) {
+                       gc.setFont(FontResources.TABLE_CELL_FONT);
+               } else {
+                       gc.setFont(font);
+               }
+
+               String text = item.getText();
+               FileEntry entry = (FileEntry) item.getData();
+               Image icon = getIcon(entry);
+
+               if (hasChildren(entry)) {
+                       if (isExpanded()) {
+                               Rectangle r = ImageResources.TREE_OPEN.getBounds();
+                               int offset = (getBounds().width - r.width) / 2;
+                               int x = getBounds().x + offset;
+                               gc.drawImage(ImageResources.TREE_OPEN, x, getBounds().y);
+                               x += r.width + 5;
+
+                               r = icon.getBounds();
+                               gc.drawImage(icon, x, getBounds().y);
+                               x += r.width + 1;
+
+                               if (isSelected()) {
+                                       gc.setForeground(ColorResources.TABLE_CONTENTS_SELECTED_FONT_COLOR);
+                               } else {
+                                       gc.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR);
+                               }
+                               gc.drawText(text, x, getBounds().y + 2, true);
+                       } else {
+                               Rectangle r = ImageResources.TREE_FOLD.getBounds();
+                               int offset = (getBounds().width - r.width) / 2;
+                               int x = getBounds().x + offset;
+                               gc.drawImage(ImageResources.TREE_FOLD, getBounds().x + offset,
+                                               getBounds().y);
+                               x += r.width + 5;
+
+                               r = icon.getBounds();
+                               gc.drawImage(icon, x, getBounds().y);
+                               x += r.width + 1;
+
+                               if (isSelected()) {
+                                       gc.setForeground(ColorResources.TABLE_CONTENTS_SELECTED_FONT_COLOR);
+                               } else {
+                                       gc.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR);
+                               }
+                               gc.drawText(text, x, getBounds().y + 2, true);
+                       }
+               } else {
+                       Rectangle r = ImageResources.TREE_OPEN.getBounds();
+                       int offset = (getBounds().width - r.width) / 2;
+                       int x = getBounds().x + offset;
+                       x += r.width + 5;
+
+                       r = icon.getBounds();
+                       gc.drawImage(icon, x, getBounds().y);
+                       x += r.width + 1;
+
+                       if (isSelected()) {
+                               gc.setForeground(ColorResources.TABLE_CONTENTS_SELECTED_FONT_COLOR);
+                       } else {
+                               gc.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR);
+                       }
+                       gc.drawText(text, x, getBounds().y, true);
+               }
+       }
+
+       private Image getIcon(FileEntry entry) {
+
+               switch (entry.getType()) {
+               case File:
+                       return ImageResources.ICON_FILE;
+               case Link:
+                       return ImageResources.ICON_FILE_LINK;
+               case Directory:
+                       return ImageResources.ICON_DIR;
+               case DirectoryLink:
+                       return ImageResources.ICON_DIR_LINK;
+               case RootEmulator:
+                       return ImageResources.ICON_EMULATOR;
+               case RootDevice:
+                       return ImageResources.ICON_DEVICE;
+               default:
+                       return ImageResources.ICON_OTHER;
+               }
+       }
+
+       private boolean hasChildren(FileEntry entry) {
+               if (entry != null && entry.getChildren().length > 0) {
+                       switch (entry.getType()) {
+                       case File:
+                               return false;
+                       case Link:
+                               return false;
+                       case Directory:
+                               return true;
+                       case DirectoryLink:
+                               return false;
+                       case RootEmulator:
+                               return true;
+                       case RootDevice:
+                               return true;
+                       default:
+                               return false;
+                       }
+               }
+               return false;
+       }
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/FileExplorerDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/FileExplorerDialog.java
new file mode 100644 (file)
index 0000000..595bb0a
--- /dev/null
@@ -0,0 +1,113 @@
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import org.eclipse.nebula.widgets.grid.Grid;
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.ui.widgets.DAButton;
+import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+import org.tizen.sdblib.service.FileEntry;
+
+public class FileExplorerDialog extends DAMessageBox {
+       private DAFileExplorer explorerTree = null;
+       private DACustomButton okButton = null;
+       private DACustomButton cancelButton = null;
+
+       public FileExplorerDialog(Shell parentShell) {
+               super(parentShell);
+               shell.setLayout(new FormLayout());
+               shell.setSize(500, 600);
+               shell.setBackground(ColorResources.DIALOG_BG_UPPER);
+               shell.setText("Select binary");
+
+               explorerTree = new DAFileExplorer(shell);
+               FormData data = new FormData();
+               data.top = new FormAttachment(0, 15);
+               data.left = new FormAttachment(0, 20);
+               data.height = 510;
+               data.width = 460;
+               explorerTree.setLayoutData(data);
+               explorerTree.makeTree();
+
+               cancelButton = new DAButton(shell, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(explorerTree, 10);
+               data.right = new FormAttachment(100, -15);
+               data.height = 25;
+               data.width = 100;
+               cancelButton.setLayoutData(data);
+               cancelButton.setText(AnalyzerLabels.CANCEL);
+               cancelButton.addClickListener(new DACustomButtonClickEventListener() {
+
+                       @Override
+                       public void handleClickEvent(DACustomButton button) {
+                               shell.dispose();
+                       }
+               });
+
+               okButton = new DAButton(shell, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(explorerTree, 10);
+               data.right = new FormAttachment(cancelButton, -5);
+               data.height = 25;
+               data.width = 100;
+               okButton.setLayoutData(data);
+               okButton.setText(AnalyzerLabels.OK);
+               okButton.addClickListener(new DACustomButtonClickEventListener() {
+
+                       @Override
+                       public void handleClickEvent(DACustomButton button) {
+                               result = explorerTree.getSelection();
+                               shell.dispose();
+                       }
+               });
+
+               explorerTree.getTree().addMouseListener(new MouseListener() {
+
+                       @Override
+                       public void mouseUp(MouseEvent e) {
+                               // TODO Auto-generated method stub
+
+                       }
+
+                       @Override
+                       public void mouseDown(MouseEvent e) {
+                               // TODO Auto-generated method stub
+
+                       }
+
+                       @Override
+                       public void mouseDoubleClick(MouseEvent e) {
+                               Grid table = (Grid) e.widget;
+                               GridItem[] items = (GridItem[]) table.getSelection();
+                               if (null == items || items.length == 0) {
+                                       return;
+                               }
+                               GridItem item = items[0];
+                               FileEntry entry = (FileEntry) item.getData();
+
+                               if (entry.isDirectory() || entry.isRoot()) {
+                                       if (item.isExpanded()) {
+                                               item.fireEvent(SWT.Collapse);
+                                       } else {
+                                               item.fireEvent(SWT.Expand);
+                                       }
+                               } else {
+                                       result = entry;
+                                       shell.dispose();
+                               }
+
+                       }
+               });
+       }
+
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/InputRow.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/InputRow.java
new file mode 100644 (file)
index 0000000..023ff0f
--- /dev/null
@@ -0,0 +1,227 @@
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+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.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.resources.ImageResources;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager;
+import org.tizen.dynamicanalyzer.ui.widgets.DAButton;
+import org.tizen.dynamicanalyzer.ui.widgets.TitleComboPopupRenderer;
+import org.tizen.dynamicanalyzer.ui.widgets.TitleComboRenderer;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonRenderer;
+import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo;
+import org.tizen.dynamicanalyzer.widgets.combo.DACustomComboSelectionListener;
+
+public class InputRow extends Composite {
+       private final static int ROW_HEIGHT = 18;
+       private Text binaryPathText = null;
+       private Text sourcePathText = null;
+       private DACustomCombo sourceCombo = null;
+       private DACustomButton minusButton = null;
+       private int index = -1;
+
+       private List<String> sbiList = new ArrayList<String>();
+       private DACustomButtonClickEventListener minusButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       BinarySettingManager.getInstance().removeInputRow(
+                                       binaryPathText.getText());
+                       button.getParent().dispose();
+               }
+       };
+
+       public InputRow(Composite parent) {
+               super(parent, SWT.NONE);
+               this.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+               Rectangle pRect = parent.getBounds();
+               Control lastChlid = null;
+               Control[] children = parent.getChildren();
+               if (children.length - 1 > 0) {
+                       lastChlid = children[children.length - 2];
+               }
+
+               FormData data = new FormData();
+               if (null != lastChlid) {
+                       data.top = new FormAttachment(lastChlid, 2);
+               } else {
+                       data.top = new FormAttachment(0, 5);
+               }
+               data.height = ROW_HEIGHT;
+               data.left = new FormAttachment(0, 10);
+               data.width = pRect.width;
+               this.setLayoutData(data);
+               this.setLayout(new FormLayout());
+
+               binaryPathText = new Text(this, SWT.SINGLE);
+               sourcePathText = new Text(this, SWT.SINGLE);
+               sourceCombo = new DACustomCombo(this, SWT.NONE);
+               minusButton = new DAButton(this, SWT.NONE);
+
+               data = new FormData();
+               data.top = new FormAttachment(0, 0);
+               data.left = new FormAttachment(0, 0);
+               data.right = new FormAttachment(30, 0);
+               data.height = ROW_HEIGHT;
+               binaryPathText.setLayoutData(data);
+
+               data = new FormData();
+               data.top = new FormAttachment(0, 0);
+               data.left = new FormAttachment(30, 5);
+               data.right = new FormAttachment(60, 0);
+               data.height = ROW_HEIGHT;
+               sourcePathText.setLayoutData(data);
+
+               data = new FormData();
+               data.top = new FormAttachment(0, 0);
+               data.left = new FormAttachment(60, 5);
+               data.right = new FormAttachment(85, 0);
+               data.height = ROW_HEIGHT;
+               sourceCombo.setLayoutData(data);
+
+               data = new FormData();
+               data.top = new FormAttachment(0, 0);
+               data.left = new FormAttachment(85, 3);
+               data.right = new FormAttachment(100, -25);
+               data.height = ROW_HEIGHT;
+               minusButton.setLayoutData(data);
+               minusButton.setText("remove");
+               minusButton.addClickListener(minusButtonListener);
+
+               sourceCombo.setComboButtonGradation(
+                               ColorResources.DEVICE_APPLICATION_BUTTON_NORMAL_START,
+                               ColorResources.DEVICE_APPLICATION_BUTTON_NORMAL_END,
+                               ColorResources.DEVICE_APPLICATION_BUTTON_PUSH_START,
+                               ColorResources.DEVICE_APPLICATION_BUTTON_PUSH_END,
+                               ColorResources.DEVICE_APPLICATION_BUTTON_HOVER_START,
+                               ColorResources.DEVICE_APPLICATION_BUTTON_HOVER_END,
+                               ColorResources.DEVICE_APPLICATION_BUTTON_DISABLE_START,
+                               ColorResources.DEVICE_APPLICATION_BUTTON_DISABLE_END);
+               sourceCombo.setButtonImages(ImageResources.COMBO_DROPDOWN_UP,
+                               ImageResources.COMBO_DROPDOWN_DOWN);
+               sourceCombo.setItemHeight(ROW_HEIGHT);
+               sourceCombo.setComboRender(new TitleComboRenderer());
+               sourceCombo.setComboPopupRender(new TitleComboPopupRenderer());
+               sourceCombo.setButtonRenderer(new DACustomButtonRenderer());
+               sourceCombo.setText("select list");
+               sourceCombo.addListener(SWT.MouseDown, new Listener() {
+
+                       @Override
+                       public void handleEvent(Event event) {
+                               if (!sourceCombo.isChildShellOpened()) {
+                                       try {
+                                               Runtime rt = Runtime.getRuntime();
+                                               Process process = rt.exec(new String[] {
+                                                               AnalyzerPaths.SBI_COMMAND, "list", "root" });
+                                               process.waitFor();
+                                               BufferedReader reader = new BufferedReader(
+                                                               new InputStreamReader(process.getInputStream()));
+                                               BufferedReader error = new BufferedReader(
+                                                               new InputStreamReader(process.getErrorStream()));
+                                               String line = null;
+                                               sbiList.clear();
+                                               while (null != (line = reader.readLine())) {
+                                                       sbiList.add(line);
+                                               }
+
+                                               if (!sbiList.isEmpty()) {
+                                                       sourceCombo.initCombo();
+                                                       for (String item : sbiList) {
+                                                               sourceCombo.add(item);
+                                                       }
+                                               } else {
+                                                       String errStr = error.readLine();
+                                                       System.out.println("Error : " + errStr);
+                                               }
+                                       } catch (IOException e) {
+                                               e.printStackTrace();
+                                       } catch (InterruptedException e) {
+                                               e.printStackTrace();
+                                       }
+                               }
+                       }
+               });
+
+               sourceCombo.addSelectionListener(new DACustomComboSelectionListener() {
+
+                       @Override
+                       public void selectionEvent(DACustomCombo combo) {
+                               String rootName = combo.getText();
+                               if (null != rootName && !rootName.isEmpty()) {
+                                       try {
+                                               Runtime rt = Runtime.getRuntime();
+                                               Process process = rt.exec(new String[] {
+                                                               AnalyzerPaths.SBI_COMMAND, "show", "root",
+                                                               rootName });
+                                               process.waitFor();
+                                               BufferedReader reader = new BufferedReader(
+                                                               new InputStreamReader(process.getInputStream()));
+                                               BufferedReader error = new BufferedReader(
+                                                               new InputStreamReader(process.getErrorStream()));
+                                               String line = null;
+                                               // sbiList.clear();
+                                               String sysRootPath = null;
+                                               while (null != (line = reader.readLine())) {
+                                                       // sbiList.add(line);
+                                                       if (line.contains("SYSROOT_PATH")) {
+                                                               int index = line.indexOf("=");
+                                                               sysRootPath = line.substring(index + 1);
+                                                       }
+                                               }
+
+                                               if (null == sysRootPath) {
+                                                       String errStr = error.readLine();
+                                                       System.out.println("Error : " + errStr);
+                                               }
+                                               System.out.println(sysRootPath);
+                                               sourcePathText.setText(sysRootPath);
+                                               BinarySettingManager.getInstance().updateInputRow(
+                                                               binaryPathText.getText(), sysRootPath);
+                                       } catch (IOException e) {
+                                               e.printStackTrace();
+                                       } catch (InterruptedException e) {
+                                               e.printStackTrace();
+                                       }
+                               }
+                       }
+               });
+       }
+
+       public int getIndex() {
+               return index;
+       }
+
+       public void setIndex(int i) {
+               index = i;
+       }
+
+       public void setBinaryText(String text) {
+               binaryPathText.setText(text);
+       }
+
+       public void setSourceText(String text) {
+               sourcePathText.setText(text);
+       }
+
+       public void setSourceComboText(String text) {
+               sourceCombo.setText(text);
+       }
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/LoadSettingDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/LoadSettingDialog.java
new file mode 100644 (file)
index 0000000..f9e4293
--- /dev/null
@@ -0,0 +1,302 @@
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.nebula.widgets.grid.Grid;
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+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.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
+import org.tizen.dynamicanalyzer.common.CommonConstants;
+import org.tizen.dynamicanalyzer.common.DesignConstants;
+import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.resources.FontResources;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData;
+import org.tizen.dynamicanalyzer.ui.widgets.DAButton;
+import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DefaultTableComparator;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+
+public class LoadSettingDialog extends DAMessageBox {
+       public static int SAVE_FOLDER = 0;
+       public static int TEMP_FOLDER = 1;
+
+       public static String VERSION_KEY = "version"; //$NON-NLS-1$
+       public static int VERSION_INVALID = 0;
+       public static int VERSION_VALID = 1;
+
+       public static String CURRENT_KEY = "current"; //$NON-NLS-1$
+       public static int CURRENT = 0;
+       public static int OTHERS = 1;
+
+       private DATableComposite saveTable = null;
+       private DACustomButton okButton = null;
+       private DACustomButton cancelButton = null;
+       BinaryAnalyzingConfigDialog parentDialog = null;
+
+       private String[] columnNames = { "File name" };
+       private int[] columnSizes = { 390 };
+       private boolean[] columnVisibility = { true };
+       int[] sortTypes = { AnalyzerConstants.SORT_TYPE_GRID };
+       int[] sourceColumns = { 0 };
+
+       public LoadSettingDialog(Shell parent) {
+               super(parent);
+       }
+
+       protected boolean run() {
+               shell.setLayout(new FormLayout());
+               shell.setSize(400, 204);
+               shell.setText(AnalyzerLabels.OPEN_TRACE_TITLE);
+
+               Composite tableComp = new Composite(shell, SWT.NONE);
+               tableComp.setLayout(new FormLayout());
+               FormData data = new FormData();
+               data.top = new FormAttachment(0, 0);
+               data.left = new FormAttachment(0, 0);
+               data.right = new FormAttachment(100, 0);
+               data.height = 131;
+               tableComp.setLayoutData(data);
+               tableComp.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+               Label saveFile = new Label(tableComp, SWT.TRANSPARENT);
+               saveFile.setText(AnalyzerLabels.OPEN_TRACE_DLG_SAVED_FILE);
+               saveFile.setBackground(ColorResources.DIALOG_BG_UPPER);
+               saveFile.setAlignment(SWT.LEFT);
+               saveFile.setForeground(ColorResources.OPEN_TRACE_LABEL_COLOR);
+               saveFile.setFont(FontResources.OPEN_TRACE_INNER_TITLE);
+
+               saveTable = new SettingSaveTable(tableComp, SWT.BORDER | SWT.V_SCROLL
+                               | SWT.SINGLE);
+               saveTable.setTableName(AnalyzerLabels.OPEN_TRACE_DLG_SAVE_TABLE_NAME);
+               saveTable.setComparator(new DefaultTableComparator());
+               saveTable.setSortTypes(sortTypes);
+               saveTable.setSourceColumns(sourceColumns);
+               saveTable.setColumns(columnNames);
+               saveTable.setColumnSize(columnSizes);
+               saveTable.setColumnVisibility(columnVisibility);
+               saveTable.setTableToolTipEnable(false);
+
+               saveTable.getTable().addMouseListener(mouseListener);
+               saveTable.getTable().addKeyListener(keyListener);
+
+               data = new FormData();
+               data.top = new FormAttachment(0, 5);
+               data.left = new FormAttachment(0, 7);
+               data.height = 18;
+               saveFile.setLayoutData(data);
+
+               data = new FormData();
+               data.top = new FormAttachment(saveFile, 0);
+               data.left = new FormAttachment(0, 6);
+               data.right = new FormAttachment(100, -6);
+               data.height = 100;
+               saveTable.setLayoutData(data);
+
+               Composite buttonComp = new Composite(shell, SWT.NONE);
+               FormLayout compLayout = new FormLayout();
+               buttonComp.setLayout(compLayout);
+               buttonComp
+                               .setBackground(ColorResources.OPEN_TRACE_BUTTON_COMPOSITE_BG_COLOR);
+
+               FormData compData = new FormData();
+               compData.top = new FormAttachment(tableComp, 0);
+               compData.left = new FormAttachment(0, 0);
+               compData.right = new FormAttachment(100, 0);
+               compData.height = 51;
+               buttonComp.setLayoutData(compData);
+
+               buttonComp.addPaintListener(new PaintListener() {
+
+                       @Override
+                       public void paintControl(PaintEvent e) {
+                               Composite comp = (Composite) e.widget;
+                               Rectangle rect = comp.getClientArea();
+                               e.gc.setForeground(ColorResources.DIALOG_SUNKEN_1);
+                               e.gc.drawLine(rect.x, rect.y, rect.x + rect.width, rect.y);
+                               e.gc.setForeground(ColorResources.DIALOG_SUNKEN_2);
+                               e.gc.drawLine(rect.x, rect.y + 1, rect.x + rect.width,
+                                               rect.y + 1);
+                       }
+               });
+               okButton = new DAButton(buttonComp, SWT.NONE);
+               okButton.addClickListener(okButtonListener);
+               okButton.setText(AnalyzerLabels.OPEN);
+               okButton.setFont(FontResources.DIALOG_BUTTON_FONT);
+               FormData okData = new FormData();
+               okData.top = new FormAttachment(0, 7);
+               okData.left = new FormAttachment(50,
+                               -(DesignConstants.DA_BUTTON_WIDTH + 4));
+               okData.width = DesignConstants.DA_BUTTON_WIDTH;
+               okData.height = DesignConstants.DA_BUTTON_HEIGHT;
+               okButton.setLayoutData(okData);
+
+               cancelButton = new DAButton(buttonComp, SWT.NONE);
+               cancelButton.addClickListener(cancelButtonListener);
+               cancelButton.setText(AnalyzerLabels.CLOSE);
+               cancelButton.setFont(FontResources.DIALOG_BUTTON_FONT);
+               FormData cancelData = new FormData();
+               cancelData.top = new FormAttachment(0, 7);
+               cancelData.left = new FormAttachment(50, 4);
+               cancelData.width = DesignConstants.DA_BUTTON_WIDTH;
+               cancelData.height = DesignConstants.DA_BUTTON_HEIGHT;
+               cancelButton.setLayoutData(cancelData);
+
+               saveTable.updateTable();
+               return true;
+       }
+
+       private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       Grid selectedTable = saveTable.getTable();
+                       GridItem[] selections = selectedTable.getSelection();
+                       if (null == selections || 0 == selections.length) {
+                               return;
+                       }
+                       GridItem selection = selections[0];
+                       String openPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH
+                                       + File.separator + selection.getText();
+
+                       openAction(openPath);
+                       shell.dispose();
+               }
+       };
+
+       private DACustomButtonClickEventListener cancelButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       shell.dispose();
+               }
+       };
+
+       private MouseListener mouseListener = new MouseListener() {
+
+               @Override
+               public void mouseUp(MouseEvent e) {
+                       // TODO Auto-generated method stub
+
+               }
+
+               @Override
+               public void mouseDown(MouseEvent e) {
+                       // TODO Auto-generated method stub
+
+               }
+
+               @Override
+               public void mouseDoubleClick(MouseEvent e) {
+                       Grid grid = (Grid) e.widget;
+                       GridItem[] items = grid.getSelection();
+                       if (0 == items.length) {
+                               return;
+                       }
+
+                       GridItem item = items[0];
+                       String openPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH
+                                       + File.separator + item.getText();
+                       openAction(openPath);
+                       shell.dispose();
+               }
+       };
+
+       private KeyListener keyListener = new KeyListener() {
+
+               @Override
+               public void keyReleased(KeyEvent e) {
+                       if (e.keyCode == SWT.DEL) {
+                               Grid grid = (Grid) e.widget;
+                               GridItem[] items = grid.getSelection();
+                               if (0 == items.length) {
+                                       return;
+                               }
+                               int index = grid.getSelectionIndex();
+                               GridItem item = items[0];
+
+                               String openPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH
+                                               + File.separator + item.getText();
+
+                               if (AnalyzerUtil.deleteFile(new File(openPath))) {
+                                       grid.remove(index);
+                               } else {
+                                       // log for debug
+                                       System.out.println("delete save file failed..."); //$NON-NLS-1$
+                               }
+                       }
+
+               }
+
+               @Override
+               public void keyPressed(KeyEvent e) {
+                       // TODO Auto-generated method stub
+
+               }
+       };
+
+       private void openAction(String path) {
+               if (null == path) {
+                       return;
+               }
+               File saveFile = new File(path);
+               if (!saveFile.exists() || !saveFile.isFile()) {
+                       return;
+               }
+
+               BufferedReader br = null;
+               String content = null;
+               boolean success = false;
+               List<BinarySettingData> binData = new ArrayList<BinarySettingData>();
+               try {
+                       br = new BufferedReader(new FileReader(saveFile));
+                       while (null != (content = br.readLine())) {
+                               BinarySettingData data = new BinarySettingData();
+                               String[] splitContent = content.split(CommonConstants.COMMA);
+                               data.setBinaryPath(new String(splitContent[0]));
+                               data.setSourcePath(new String(splitContent[1]));
+                               binData.add(data);
+                       }
+                       success = true;
+               } catch (FileNotFoundException e) {
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       e.printStackTrace();
+               } finally {
+                       AnalyzerUtil.tryClose(br);
+               }
+
+               if (success) {
+                       parentDialog.loadBinarySetting(binData);
+               } else {
+                       System.out.println("load binary setting failed...");
+               }
+       }
+
+       public void setParentDialog(BinaryAnalyzingConfigDialog pDlg) {
+               parentDialog = pDlg;
+       }
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SaveSettingDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SaveSettingDialog.java
new file mode 100644 (file)
index 0000000..69e69fc
--- /dev/null
@@ -0,0 +1,244 @@
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+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.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
+import org.tizen.dynamicanalyzer.common.CommonConstants;
+import org.tizen.dynamicanalyzer.common.DesignConstants;
+import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager;
+import org.tizen.dynamicanalyzer.ui.widgets.DAButton;
+import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+
+public class SaveSettingDialog extends DAMessageBox {
+
+       private int MAX_SAVE_FILE_NAME_LENGTH = 35;
+       private final String DEFAULT_TIME_FORMAT = "_yyyy-MM-dd-HH-mm-ss";//$NON-NLS-1$
+
+       private Text textBox = null;
+       private String saveFileName = null;
+       private DAButton okButton = null;
+       private DAButton cancelButton = null;
+
+       public SaveSettingDialog(Shell parentShell) {
+               super(parentShell);
+       }
+
+       protected boolean run() {
+               shell.setLayout(new FormLayout());
+               shell.setSize(446, 127 + 22);
+               shell.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+               Label label = new Label(shell, SWT.TRANSPARENT);
+               FormData data = new FormData();
+               data.top = new FormAttachment(0, 11);
+               data.left = new FormAttachment(0, 12);
+               data.height = 15;
+               data.width = 150;
+               label.setLayoutData(data);
+               label.setForeground(ColorResources.BLACK);
+               label.setText(AnalyzerLabels.SAVE_TRACE_DLG_SAVE_FILE_NAME);
+               label.setBackground(ColorResources.DIALOG_BG_UPPER);
+
+               textBox = new Text(shell, SWT.SINGLE);
+               data = new FormData();
+               data.top = new FormAttachment(label, 10);
+               data.left = new FormAttachment(0, 9);
+               data.height = 26;
+               data.width = 410;
+               textBox.setLayoutData(data);
+               textBox.setBackground(ColorResources.VIEW_BG_COLOR);
+               textBox.addKeyListener(keyListener);
+
+               Composite buttonComp = new Composite(shell, SWT.NONE);
+               buttonComp.setLayout(new FormLayout());
+               buttonComp.setBackground(ColorResources.DIALOG_BG_LOWER);
+
+               buttonComp.addPaintListener(new PaintListener() {
+
+                       @Override
+                       public void paintControl(PaintEvent e) {
+                               Composite comp = (Composite) e.widget;
+                               Rectangle rect = comp.getClientArea();
+                               e.gc.setForeground(ColorResources.DIALOG_SUNKEN_1);
+                               e.gc.drawLine(rect.x, rect.y, rect.x + rect.width, rect.y);
+                               e.gc.setForeground(ColorResources.DIALOG_SUNKEN_2);
+                               e.gc.drawLine(rect.x, rect.y + 1, rect.x + rect.width,
+                                               rect.y + 1);
+                       }
+               });
+
+               FormData compData = new FormData();
+               compData.top = new FormAttachment(0, 76);
+               compData.left = new FormAttachment(0, 0);
+               compData.right = new FormAttachment(100, 0);
+               compData.bottom = new FormAttachment(100, 0);
+               buttonComp.setLayoutData(compData);
+
+               okButton = new DAButton(buttonComp, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(0, 11);
+               data.left = new FormAttachment(50, -DesignConstants.DA_BUTTON_WIDTH - 4);
+               data.height = DesignConstants.DA_BUTTON_HEIGHT;
+               data.width = DesignConstants.DA_BUTTON_WIDTH;
+               okButton.setLayoutData(data);
+               okButton.setText(AnalyzerLabels.OK);
+               okButton.addClickListener(okButtonListener);
+
+               cancelButton = new DAButton(buttonComp, SWT.NONE);
+               data = new FormData();
+               data.top = new FormAttachment(0, 11);
+               data.left = new FormAttachment(50, 4);
+               data.height = DesignConstants.DA_BUTTON_HEIGHT;
+               data.width = DesignConstants.DA_BUTTON_WIDTH;
+               cancelButton.setLayoutData(data);
+               cancelButton.setText(AnalyzerLabels.CANCEL);
+               cancelButton.addClickListener(cancelButtonListener);
+
+               saveFileName = getSaveFileName();
+               if (null == saveFileName) {
+                       // create warning message box
+                       System.out.println("save file name is null");
+                       return false;
+               } else {
+                       textBox.setText(saveFileName);
+                       String textString = textBox.getText();
+                       textBox.setSelection(0, textString.length());
+               }
+
+               return true;
+       }
+
+       private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       saveFileName = textBox.getText();
+
+                       if (saveFileName.length() > MAX_SAVE_FILE_NAME_LENGTH) {
+                               String old = saveFileName;
+                               saveFileName = old.substring(0, MAX_SAVE_FILE_NAME_LENGTH - 1);
+                       }
+
+                       if (executeSaveTrace()) {
+                               result = AnalyzerConstants.SUCCESS;
+                       }
+                       shell.dispose();
+               }
+       };
+
+       private DACustomButtonClickEventListener cancelButtonListener = new DACustomButtonClickEventListener() {
+
+               @Override
+               public void handleClickEvent(DACustomButton button) {
+                       shell.dispose();
+               }
+       };
+       private KeyListener keyListener = new KeyListener() {
+
+               @Override
+               public void keyReleased(KeyEvent e) {
+                       if (!checkValidFileName(textBox.getText())) {
+                               okButton.setButtonEnabled(false);
+                       } else {
+                               okButton.setButtonEnabled(true);
+                       }
+               }
+
+               @Override
+               public void keyPressed(KeyEvent e) {
+
+               }
+       };
+
+       private String getSaveFileName() {
+               SimpleDateFormat format = new SimpleDateFormat(DEFAULT_TIME_FORMAT,
+                               Locale.KOREA);
+               Date date = new Date();
+               String tmpAppName = "da_";
+               int length = tmpAppName.length() - MAX_SAVE_FILE_NAME_LENGTH;
+               if (length > 0) {
+                       tmpAppName = tmpAppName.substring(0, MAX_SAVE_FILE_NAME_LENGTH - 1);
+               }
+               String saveFileName = tmpAppName + format.format(date);
+               if (null == saveFileName || saveFileName.isEmpty()) {
+                       return null;
+               }
+               return saveFileName;
+       }
+
+       private boolean executeSaveTrace() {
+               String targetPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH
+                               + File.separator + saveFileName + ".setting";
+               File saveFile = new File(targetPath);
+               FileWriter fileWriter = null;
+               BufferedWriter bufWriter = null;
+               List<BinarySettingData> binaryData = BinarySettingManager.getInstance()
+                               .getTempBinarySettings();
+               boolean success = false;
+               try {
+                       fileWriter = new FileWriter(saveFile);
+                       bufWriter = new BufferedWriter(fileWriter);
+                       for (int i = 0; i < binaryData.size(); i++) {
+                               bufWriter.write(binaryData.get(i).getSaveData());
+                               bufWriter.newLine();
+                       }
+                       success = true;
+               } catch (IOException e) {
+                       e.printStackTrace();
+               } finally {
+                       AnalyzerUtil.tryClose(bufWriter, fileWriter);
+               }
+
+               if (success) {
+                       // add snapshot model update
+                       System.out.println("save binary setting complete!!"); //$NON-NLS-1$
+
+               } else {
+                       System.out.println("save binary setting fail..."); //$NON-NLS-1$
+                       return false;
+               }
+               return true;
+       }
+
+       private boolean checkValidFileName(String str) {
+               if (str == null
+                               || str.isEmpty()
+                               || str.contains("\\") //$NON-NLS-1$
+                               || str.contains(CommonConstants.SLASH)
+                               || str.contains(CommonConstants.COLON)
+                               || str.contains(CommonConstants.ASTERISK)
+                               || str.contains("\\?") || str.contains("\"") //$NON-NLS-1$ //$NON-NLS-2$
+                               || str.contains("<") || str.contains(">") //$NON-NLS-1$ //$NON-NLS-2$
+                               || str.contains(CommonConstants.CMD_SPLIT)) {
+                       return false;
+               }
+               return true;
+       }
+}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SettingSaveTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SettingSaveTable.java
new file mode 100644 (file)
index 0000000..7b42a70
--- /dev/null
@@ -0,0 +1,65 @@
+package org.tizen.dynamicanalyzer.swap.platform.ui;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.tizen.dynamicanalyzer.common.AnalyzerPaths;
+import org.tizen.dynamicanalyzer.model.TableInput;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+
+public class SettingSaveTable extends DATableComposite {
+
+       public SettingSaveTable(Composite parent, int style) {
+               super(parent, style);
+       }
+
+       @Override
+       protected List<TableInput> makeTableInput() {
+               List<String> saveFileList = AnalyzerUtil
+                               .getFiles(AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH);
+               List<TableInput> input = new ArrayList<TableInput>();
+               if (null != saveFileList) {
+                       int size = saveFileList.size();
+                       for (int i = 0; i < size; i++) {
+                               // create text
+                               List<String> text = new ArrayList<String>();
+                               String inputText1 = saveFileList.get(i);
+                               if (inputText1.isEmpty()) {
+                                       continue;
+                               }
+
+                               text.add(inputText1);
+                               TableInput tableInput = new TableInput();
+                               tableInput.setText(text);
+                               input.add(tableInput);
+                       }
+               }
+               return input;
+       }
+
+       @Override
+       public void updateTable() {
+               table.removeAll();
+               List<TableInput> input = makeTableInput();
+               if (null == input) {
+                       return;
+               }
+               if (null != comparator) {
+                       Collections.sort(input, comparator);
+               }
+               int size = input.size();
+               for (int i = 0; i < size; i++) {
+                       List<String> text = input.get(i).getText();
+                       GridItem gridItem = new GridItem(table, SWT.NONE);
+                       String inputText = text.get(0);
+                       gridItem.setText(inputText);
+               }
+               table.update();
+       }
+
+}
index 9e8e721..7b6761c 100644 (file)
@@ -34,7 +34,6 @@ import org.eclipse.swt.custom.StackLayout;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
 import org.tizen.dynamicanalyzer.model.DAView;
@@ -44,6 +43,7 @@ import org.tizen.dynamicanalyzer.resources.FontResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener;
 import org.tizen.dynamicanalyzer.ui.common.UICommonConstants;
@@ -202,7 +202,7 @@ public class FileChartView extends DAView {
 
        @Override
        public void updateLog(LogPackage logPack) {
-               Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_FILE);
+               Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_FILE);
                if (null == logs || logs.getLogs().size() == 0) {
                        return;
                }
index 149a84a..4637359 100644 (file)
@@ -41,16 +41,17 @@ import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.UserFunctionData;
 import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfileDataMaker;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
 
 public class CallStackManager extends BaseCallstackManager {
 
        public void makeUserCallstack(LogData input, ProfileDataMaker profiler) {
                UserFunctionData log = (UserFunctionData) input;
                HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
-               boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+               boolean isPieBuild = AnalyzerUtil.isPieBuild(log.getPid());
                String baseAddr = Long.toString(AnalyzerManager.getProject()
-                               .getBaseAddress());
-               String binPath = AnalyzerManager.getProject().getBinaryPath();
+                               .getBaseAddress(log.getPid()));
+               String binPath = AnalyzerUtil.getBinaryPath(log.getPid());
                if (null == binPath || binPath.isEmpty()) {
                        return;
                }
@@ -72,7 +73,8 @@ public class CallStackManager extends BaseCallstackManager {
                        String strSelfSymbol = getUserFunctionPosition()
                                        + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
                                        + strSelfFuncName;
-                       selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol);
+                       selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol,
+                                       log.getPid());
                        addrMap.put(selfAddr, selfCallstackUnit);
                }
 
@@ -89,7 +91,8 @@ public class CallStackManager extends BaseCallstackManager {
                        String strCallerSymbol = getUserFunctionPosition()
                                        + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
                                        + strCallerFuncName;
-                       callerCallstackUnit = new CallStackUnit(callerAddr, strCallerSymbol);
+                       callerCallstackUnit = new CallStackUnit(callerAddr,
+                                       strCallerSymbol, log.getPid());
                        addrMap.put(callerAddr, callerCallstackUnit);
                }
 
@@ -101,13 +104,15 @@ public class CallStackManager extends BaseCallstackManager {
                                if (!AnalyzerManager.isInBinaryRange(callerAddr)) {
                                        CallStackUnit callbackApi = new CallStackUnit(
                                                        LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                                       log.getPid());
                                        userCallstack.add(callbackApi);
                                        if (addrMap
                                                        .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
                                                CallStackUnit defaultCallstackUnit = new CallStackUnit(
                                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                                               log.getPid());
                                                addrMap.put(
                                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
                                                                defaultCallstackUnit);
@@ -116,13 +121,15 @@ public class CallStackManager extends BaseCallstackManager {
                                                AnalyzerConstants.VIRTUAL_THUNK)) {
                                        CallStackUnit callbackApi = new CallStackUnit(
                                                        LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                                       log.getPid());
                                        userCallstack.add(callbackApi);
                                        if (addrMap
                                                        .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
                                                CallStackUnit defaultCallstackUnit = new CallStackUnit(
                                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                                               log.getPid());
                                                addrMap.put(
                                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
                                                                defaultCallstackUnit);
@@ -207,10 +214,10 @@ public class CallStackManager extends BaseCallstackManager {
 
        public void makeCallstackWithoutBacktrace(LogData inputData) {
                HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
-               boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+               boolean isPieBuild = AnalyzerUtil.isPieBuild(inputData.getPid());
                String baseAddr = Long.toString(AnalyzerManager.getProject()
-                               .getBaseAddress());
-               String binPath = AnalyzerManager.getProject().getBinaryPath();
+                               .getBaseAddress(inputData.getPid()));
+               String binPath = AnalyzerUtil.getBinaryPath(inputData.getPid());
                if (null == binPath || binPath.isEmpty()) {
                        return;
                }
@@ -249,13 +256,15 @@ public class CallStackManager extends BaseCallstackManager {
                if ((size == 0) || (!AnalyzerManager.isInBinaryRange(callerAddr))) {
                        CallStackUnit callbackApi = new CallStackUnit(
                                        LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                       LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                       log.getPid());
                        probeCallstack.add(callbackApi);
                        if (addrMap
                                        .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) {
                                CallStackUnit defaultCallstackUnit = new CallStackUnit(
                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
-                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL);
+                                               LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL,
+                                               log.getPid());
                                addrMap.put(
                                                LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR,
                                                defaultCallstackUnit);
@@ -269,7 +278,7 @@ public class CallStackManager extends BaseCallstackManager {
                                                + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
                                                + strCallerFuncName;
                                callerCallstackUnit = new CallStackUnit(callerAddr,
-                                               strCallerSymbol);
+                                               strCallerSymbol, log.getPid());
                                addrMap.put(callerAddr, callerCallstackUnit);
                        }
 
@@ -297,10 +306,10 @@ public class CallStackManager extends BaseCallstackManager {
                HashMap<Long, CallStackUnit> addrMap = getCallStackApiByAddrMap();
                HashMap<Integer, DuplicateUserCall> dupUserCallMap = getDupUserCallByTidMap();
 
-               boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
+               boolean isPieBuild = AnalyzerUtil.isPieBuild(input.getPid());
                String baseAddr = Long.toString(AnalyzerManager.getProject()
-                               .getBaseAddress());
-               String binPath = AnalyzerManager.getProject().getBinaryPath();
+                               .getBaseAddress(input.getPid()));
+               String binPath = AnalyzerUtil.getBinaryPath(input.getPid());
                if (null == binPath || binPath.isEmpty()) {
                        return false;
                }
@@ -318,7 +327,8 @@ public class CallStackManager extends BaseCallstackManager {
                        String strSelfSymbol = getUserFunctionPosition()
                                        + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING
                                        + strSelfFuncName;
-                       selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol);
+                       selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol,
+                                       input.getPid());
                        addrMap.put(selfAddr, selfCallstackUnit);
                }
 
index 66af180..8c60ab2 100644 (file)
@@ -34,6 +34,7 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator;
 import org.tizen.dynamicanalyzer.nl.InformationViewLabels;
 import org.tizen.dynamicanalyzer.project.PackageInfo;
 import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
 
 public class CallStackUnit {
        private final String UNKNOWN_LIBRARY = InformationViewLabels.CALLSTACK_TABLE_UNKNOWN_LIBRARY;
@@ -45,8 +46,9 @@ public class CallStackUnit {
        private String functionName;
        private String offset;
        private String etc;
+       private int pid;
 
-       public CallStackUnit(long addr, String symbol) {
+       public CallStackUnit(long addr, String symbol, int pid) {
                address = addr;
                functionStartAddress = addr;
                this.originSymbol = symbol;
@@ -54,6 +56,7 @@ public class CallStackUnit {
                functionName = CommonConstants.EMPTY;
                offset = CommonConstants.EMPTY;
                etc = CommonConstants.EMPTY;
+               this.pid = pid;
                makeCallstackData();
        }
 
@@ -66,13 +69,11 @@ public class CallStackUnit {
                        path = UNKNOWN_LIBRARY;
                }
 
+               boolean isPieBuild = AnalyzerUtil.isPieBuild(pid);
+               String baseAddr = Long.toString(AnalyzerManager.getProject()
+                               .getBaseAddress(pid));
+               String binPath = AnalyzerUtil.getBinaryPath(pid);
                if (splitPath.length < 2) {
-                       boolean isPieBuild = AnalyzerManager.getProject().isPieBuild();
-                       String baseAddr = Long.toString(AnalyzerManager.getProject()
-                                       .getBaseAddress());
-//                     String binPath = AnalyzerManager.getProject().getBinaryPath();
-                       String binPath = DACommunicator.getSelectedApp().getBinInfo().getPath();
-
                        functionName = SymbolManager.addr2func(binPath,
                                        Long.toString(address), isPieBuild, baseAddr);
                        // FIXME: hard coding
@@ -95,13 +96,6 @@ public class CallStackUnit {
                        if (splitFunc.length != 0) {
                                functionName = splitFunc[0];
                                if (functionName.isEmpty()) {
-                                       boolean isPieBuild = AnalyzerManager.getProject()
-                                                       .isPieBuild();
-                                       String baseAddr = Long.toString(AnalyzerManager
-                                                       .getProject().getBaseAddress());
-                                       String binPath = AnalyzerManager.getProject()
-                                                       .getBinaryPath();
-
                                        functionName = SymbolManager.addr2func(binPath,
                                                        Long.toString(address), isPieBuild, baseAddr);
                                }
index 2420c21..7f8a189 100644 (file)
@@ -47,7 +47,6 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.common.CommonConstants;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
@@ -59,6 +58,7 @@ import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.sql.SqlManager;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
 import org.tizen.dynamicanalyzer.ui.page.ViewAction;
@@ -393,7 +393,7 @@ public class SnapshotView extends DAView {
 
        @Override
        public void updateLog(LogPackage logPack) {
-               Logs logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM);
+               Logs logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM);
                if (null == logs || null == logs.getLogs() || logs.getLogs().isEmpty()) {
                        return;
                }
index a53a12d..cf903f6 100644 (file)
@@ -34,7 +34,6 @@ import org.eclipse.swt.custom.StackLayout;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
 import org.tizen.dynamicanalyzer.model.DAView;
@@ -44,6 +43,7 @@ import org.tizen.dynamicanalyzer.resources.FontResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener;
 import org.tizen.dynamicanalyzer.ui.common.UICommonConstants;
@@ -207,7 +207,7 @@ public class NetworkChartView extends DAView {
        
        @Override
        public void updateLog(LogPackage logPack) {
-               Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_NETWORK);
+               Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_NETWORK);
                if (null == logs || logs.getLogs().size() == 0) {
                        return;
                }
index 14a5e3e..4822e15 100644 (file)
@@ -32,11 +32,11 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.SashForm;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
 import org.tizen.dynamicanalyzer.shortcut.ShortCutManager;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.GLES20LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.ui.info.callstack.CallstackView;
@@ -119,7 +119,7 @@ public class GLPage extends DAPageComposite {
 
        @Override
        public void updateLog(LogPackage logPack) {
-               Logs glesLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_GLES20);
+               Logs glesLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_GLES20);
                if (glesLogs == null || glesLogs.getLogs().size() == 0) {
                        return;
                }
index b33d253..ac784b6 100644 (file)
@@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.opengl.ui.apiList;
 
 import org.eclipse.nebula.widgets.grid.GridItem;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
@@ -44,11 +45,14 @@ import org.tizen.dynamicanalyzer.ui.widgets.ViewContainer;
 
 public class GLAPIListView extends DAView {
        public static final String ID = GLAPIListView.class.getName();
-       
+
        private ViewContainer viewContainer;
 
        private int[] innerMaxWeight = { 0, 100 };
        private int[] outerMaxWeight = { 100, 0 };
+       private int[] bottomMaxWeight = { 100, 0 };
+
+       private int[] oldBottomLayout = null;
 
        GLAPIListTable glAPIListTable;
 
@@ -58,7 +62,7 @@ public class GLAPIListView extends DAView {
 
                viewContainer = new ViewContainer(this, true);
                viewContainer.setTitleText(GLPageLabels.GL_API_LIST_VIEW_TITLE);
-               setMaxWeight(innerMaxWeight, outerMaxWeight);
+//             setMaxWeight(innerMaxWeight, outerMaxWeight);
 
                Composite contents = viewContainer.getContentArea();
                contents.setBackground(ColorResources.WINDOW_BG_COLOR);
@@ -117,10 +121,59 @@ public class GLAPIListView extends DAView {
        public void otherViewSelectionOccured() {
                glAPIListTable.deselectAll();
        }
-       
+
        @Override
        public void clear() {
                viewContainer.setTitleText(GLPageLabels.GL_API_LIST_VIEW_TITLE);
                glAPIListTable.clear();
        }
+
+       @Override
+       public void setMaxSize(boolean maximized) {
+
+               if (null == innerMaxWeight || null == outerMaxWeight) {
+                       return;
+               }
+
+               Composite bParent = getParent();
+               if (!(bParent instanceof SashForm)) {
+                       bParent = bParent.getParent();
+                       if (!(bParent instanceof SashForm)) {
+                               bParent = bParent.getParent();
+                               if (!(bParent instanceof SashForm)) {
+                                       return;
+                               }
+                       }
+               }
+
+               Composite parent = bParent.getParent();
+               if (!(parent instanceof SashForm)) {
+                       parent = parent.getParent();
+                       if (!(parent instanceof SashForm)) {
+                               return;
+                       }
+               }
+
+               Composite pParent = parent.getParent();
+               if (!(pParent instanceof SashForm)) {
+                       return;
+               }
+
+               SashForm bottomForm = (SashForm) bParent;
+               SashForm innerForm = (SashForm) parent;
+               SashForm outerForm = (SashForm) pParent;
+
+               if (maximized) {
+                       oldInnerLayout = innerForm.getWeights();
+                       oldOuterLayout = outerForm.getWeights();
+                       oldBottomLayout = bottomForm.getWeights();
+                       outerForm.setWeights(outerMaxWeight);
+                       innerForm.setWeights(innerMaxWeight);
+                       bottomForm.setWeights(bottomMaxWeight);
+               } else {
+                       innerForm.setWeights(oldInnerLayout);
+                       outerForm.setWeights(oldOuterLayout);
+                       bottomForm.setWeights(oldBottomLayout);
+               }
+       }
 }
index 07b3b8d..aa139b9 100644 (file)
@@ -28,11 +28,11 @@ package org.tizen.dynamicanalyzer.ui.opengl.ui.chart;
 
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.ui.opengl.data.GLDataMaker;
 import org.tizen.dynamicanalyzer.ui.timeline.chart.TimelineChart;
@@ -85,7 +85,7 @@ public class GLFrameRateChart extends TimelineChart {
 
        @Override
        public void parseLogPackage(LogPackage logPack) {
-               Logs logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM);
+               Logs logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM);
                if (logs == null) {
                        return;
                }
index efb006b..390a15a 100644 (file)
@@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.opengl.ui.context;
 
 import org.eclipse.nebula.widgets.grid.GridItem;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
@@ -46,6 +47,12 @@ public class GLContextView extends DAView {
        private ViewContainer viewContainer;
        private GLContextTreeTable glContextTreeTable;
 
+       private int[] innerMaxWeight = { 0, 100 };
+       private int[] outerMaxWeight = { 100, 0 };
+       private int[] bottomMaxWeight = { 0, 100 };
+       
+       private int[] oldBottomLayout = null;
+       
        public GLContextView(Composite parent, int style) {
                super(parent, style);
                setLayout(new FillLayout());
@@ -53,10 +60,6 @@ public class GLContextView extends DAView {
                viewContainer = new ViewContainer(this, true);
                viewContainer.setTitleText(GLPageLabels.GL_CONTEXT_VIEW_TITLE);
 
-               int[] innerMaxWeight = { 0, 100 };
-               int[] outerMaxWeight = { 0, 100 };
-               setMaxWeight(innerMaxWeight, outerMaxWeight);
-
                Composite contents = viewContainer.getContentArea();
                contents.setBackground(ColorResources.VIEW_BG_COLOR);
                contents.setLayout(new FillLayout());
@@ -97,4 +100,53 @@ public class GLContextView extends DAView {
        public void otherViewSelectionOccured() {
                glContextTreeTable.deselectAll();
        }
+       
+       @Override
+       public void setMaxSize(boolean maximized) {
+
+               if (null == innerMaxWeight || null == outerMaxWeight) {
+                       return;
+               }
+
+               Composite bParent = getParent();
+               if (!(bParent instanceof SashForm)) {
+                       bParent = bParent.getParent();
+                       if (!(bParent instanceof SashForm)) {
+                               bParent = bParent.getParent();
+                               if (!(bParent instanceof SashForm)) {
+                                       return;
+                               }
+                       }
+               }
+
+               Composite parent = bParent.getParent();
+               if (!(parent instanceof SashForm)) {
+                       parent = parent.getParent();
+                       if (!(parent instanceof SashForm)) {
+                               return;
+                       }
+               }
+
+               Composite pParent = parent.getParent();
+               if (!(pParent instanceof SashForm)) {
+                       return;
+               }
+
+               SashForm bottomForm = (SashForm) bParent;
+               SashForm innerForm = (SashForm) parent;
+               SashForm outerForm = (SashForm) pParent;
+
+               if (maximized) {
+                       oldInnerLayout = innerForm.getWeights();
+                       oldOuterLayout = outerForm.getWeights();
+                       oldBottomLayout = bottomForm.getWeights();
+                       outerForm.setWeights(outerMaxWeight);
+                       innerForm.setWeights(innerMaxWeight);
+                       bottomForm.setWeights(bottomMaxWeight);
+               } else {
+                       innerForm.setWeights(oldInnerLayout);
+                       outerForm.setWeights(oldOuterLayout);
+                       bottomForm.setWeights(oldBottomLayout);
+               }
+       }
 }
index eec1ed1..e525a78 100644 (file)
@@ -37,6 +37,7 @@ import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
 import org.tizen.dynamicanalyzer.sql.SqlManager;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData;
@@ -256,8 +257,8 @@ public class RangeDataManager implements Runnable {
                int last = -1;
                for (int i = 0; i < size; i++) {
                        /* !! sample db table is null.. */
-                       if (logIds.get(i) != AnalyzerConstants.MSG_DATA_SYSTEM
-                                       && logIds.get(i) != AnalyzerConstants.MSG_DATA_SAMPLE) {
+                       if (logIds.get(i) != DataChannelConstants.MSG_DATA_SYSTEM
+                                       && logIds.get(i) != DataChannelConstants.MSG_DATA_SAMPLE) {
                                int ret = SqlManager.getInstance().getRangeMinSeq(
                                                logIds.get(i), markerStartTime);
                                if (ret >= 0) {
@@ -279,8 +280,8 @@ public class RangeDataManager implements Runnable {
                        }
 
                        for (int i = 0; i < size; i++) {
-                               if (logIds.get(i) != AnalyzerConstants.MSG_DATA_SYSTEM
-                                               && logIds.get(i) != AnalyzerConstants.MSG_DATA_SAMPLE) {
+                               if (logIds.get(i) != DataChannelConstants.MSG_DATA_SYSTEM
+                                               && logIds.get(i) != DataChannelConstants.MSG_DATA_SAMPLE) {
                                        Logs logs = new Logs(logIds.get(i));
                                        input = SqlManager.getInstance().selectArea(logIds.get(i),
                                                        from, to);
@@ -301,7 +302,7 @@ public class RangeDataManager implements Runnable {
                from = -1;
                last = -1;
                for (int i = 0; i < size; i++) {
-                       if (logIds.get(i) == AnalyzerConstants.MSG_DATA_SAMPLE) {
+                       if (logIds.get(i) == DataChannelConstants.MSG_DATA_SAMPLE) {
                                int ret = SqlManager.getInstance().getRangeMinSeq(
                                                logIds.get(i), markerStartTime);
                                if (ret >= 0) {
@@ -323,7 +324,7 @@ public class RangeDataManager implements Runnable {
                        }
 
                        for (int i = 0; i < size; i++) {
-                               if (logIds.get(i) == AnalyzerConstants.MSG_DATA_SAMPLE) {
+                               if (logIds.get(i) == DataChannelConstants.MSG_DATA_SAMPLE) {
                                        Logs logs = new Logs(logIds.get(i));
                                        input = SqlManager.getInstance().selectArea(logIds.get(i),
                                                        from, to);
@@ -351,7 +352,7 @@ public class RangeDataManager implements Runnable {
        }
 
        private void makeRangeData(LogPackage logPack) {
-               Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_FILE);
+               Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_FILE);
                if (null != logs) {
                        List<LogData> resourceInputs = logs.getLogs();
                        /* make file failed data and warning data */
@@ -363,7 +364,7 @@ public class RangeDataManager implements Runnable {
                        }
                }
 
-               logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_MEMORY);
+               logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_MEMORY);
                if (null != logs) {
                        List<LogData> memoryInputs = logs.getLogs();
                        /* memory leak check */
@@ -373,15 +374,15 @@ public class RangeDataManager implements Runnable {
                        }
                }
 
-               logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SAMPLE);
+               logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SAMPLE);
                if (null != logs) {
                        List<LogData> profilingInputs = logs.getLogs();
                        /* profiling data make */
                        int size = profilingInputs.size();
                        for (int i = 0; i < size; i++) {
                                ProfileData input = (ProfileData) profilingInputs.get(i);
-//                             String[] inputArray = new String[input.size()];
-//                             input.toArray(inputArray);
+                               // String[] inputArray = new String[input.size()];
+                               // input.toArray(inputArray);
                                profileDataMaker.makeFunctionUsageProfileData(input);
                        }
                }
@@ -391,11 +392,11 @@ public class RangeDataManager implements Runnable {
                        List<LogData> userFunctions = logs.getLogs();
                        int size = userFunctions.size();
                        for (int i = 0; i < size; i++) {
-                               UserFunctionData input = (UserFunctionData) userFunctions.get(i);
+                               UserFunctionData input = (UserFunctionData) userFunctions
+                                               .get(i);
                                long start = input.getLowPc();
                                long end = input.getHighPc();
-                               if (start > 0 && end > 0
-                                               && !AnalyzerManager.isBinStartEndSet()) {
+                               if (start > 0 && end > 0 && !AnalyzerManager.isBinStartEndSet()) {
                                        AnalyzerManager.setBinaryStartEndAddr(start, end);
                                }
                                callstackManager.makeUserCallstack(input, profileDataMaker);
index f46b980..e472dc4 100644 (file)
@@ -37,12 +37,12 @@ import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
 import org.tizen.dynamicanalyzer.listeners.SummaryMouseDoubleClickListener;
 import org.tizen.dynamicanalyzer.model.TreeInput;
 import org.tizen.dynamicanalyzer.nl.SummaryLabels;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LeakData2;
 import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
 import org.tizen.dynamicanalyzer.ui.range.RangeLeakView;
@@ -160,10 +160,10 @@ public class LeakTable extends DATreeComposite {
                data.add(Integer.toString(leakData.getSeq()));
 
                int type = leakData.getId();
-               if (type == AnalyzerConstants.MSG_PROBE_MEMORY) {
+               if (type == DataChannelConstants.MSG_PROBE_MEMORY) {
                        text.add(SummaryLabels.LEAK_TABLE_MEMORY);
                        data.add(SummaryLabels.LEAK_TABLE_MEMORY);
-               } else if (type == AnalyzerConstants.MSG_PROBE_FILE) {
+               } else if (type == DataChannelConstants.MSG_PROBE_FILE) {
                        text.add(SummaryLabels.LEAK_TABLE_FILE);
                        data.add(SummaryLabels.LEAK_TABLE_FILE);
                } else {
index 34d2a6f..6446c72 100644 (file)
@@ -40,6 +40,7 @@ import org.tizen.dynamicanalyzer.nl.SummaryLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.ui.widgets.ViewContainer;
 import org.tizen.dynamicanalyzer.ui.widgets.table.TableColumnSizePackListener;
@@ -156,7 +157,7 @@ public class FunctionUsageProfilingView extends DAView {
 
        @Override
        public void updateLog(LogPackage logPack) {
-               Logs logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SAMPLE);
+               Logs logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SAMPLE);
                if (null == logs || logs.getLogs().size() == 0) {
                        return;
                }
index 6d3b6f2..58e8a1d 100644 (file)
@@ -27,7 +27,7 @@
 
 package org.tizen.dynamicanalyzer.ui.summary.profiling;
 
-import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT;
+import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -199,11 +199,11 @@ public class ProfileDataMaker {
        }
 
        private void checkUserCall(CallStackUnit csa, ProfilingData parent,
-                       ProfilingData pp) {
+                       ProfilingData pp, int pid) {
                if (callstackManager.checkUserCall(csa.getPath())) {
                        if (null == appBin) {
                                CallStackUnit appBinCsa = new CallStackUnit(-1,
-                                               FunctionUsageProfiler.APPLICATION);
+                                               FunctionUsageProfiler.APPLICATION, pid);
                                appBin = makeNewProfilingData(appBinCsa, true);
                                appBin.setKey(FunctionUsageProfiler.APPLICATION_KEY);
                                appBinName = csa.getPath();
@@ -216,7 +216,7 @@ public class ProfileDataMaker {
                } else {
                        if (null == dependentLib) {
                                CallStackUnit dependentLibBinCsa = new CallStackUnit(-2,
-                                               FunctionUsageProfiler.DEPENDENT_LIB);
+                                               FunctionUsageProfiler.DEPENDENT_LIB, pid);
                                dependentLib = makeNewProfilingData(dependentLibBinCsa, true);
                                dependentLib.setKey(FunctionUsageProfiler.DEPENDENT_LIB_KEY);
                        }
@@ -243,7 +243,8 @@ public class ProfileDataMaker {
                        sampleCallstack.add(new String(splitCallstack[i]));
                }
 
-               List<Long> addrs = makeCallstackHashAndList(sampleCallstack);
+               List<Long> addrs = makeCallstackHashAndList(sampleCallstack,
+                               sampleLog.getPid());
                HashMap<Long, CallStackUnit> addrMap = callstackManager
                                .getCallStackApiByAddrMap();
                long selfAddr = sampleLog.getPcAddr();
@@ -264,7 +265,7 @@ public class ProfileDataMaker {
                // exclusive cpu time
                if (null == parent) {
                        parent = makeNewProfilingData(inputData, true);
-                       checkUserCall(inputData, parent, null);
+                       checkUserCall(inputData, parent, null, sampleLog.getPid());
                        if (inputFuncName.equals(FunctionUsageProfiler.UNKNOWN)) {
                                parent.addExCount();
                        } else {
@@ -307,7 +308,8 @@ public class ProfileDataMaker {
                                ProfilingData pp = null;
                                if (null == inParent) {
                                        inParent = makeNewProfilingData(callstackCsa, true);
-                                       checkUserCall(callstackCsa, inParent, pp);
+                                       checkUserCall(callstackCsa, inParent, pp,
+                                                       sampleLog.getPid());
                                }
                                inParent.addInCount(totalSampleCount);
 
@@ -326,7 +328,8 @@ public class ProfileDataMaker {
                                                        .getPath());
                                        if (null == inParent) {
                                                inParent = makeNewProfilingData(callstackCsa, true);
-                                               checkUserCall(callstackCsa, inParent, null);
+                                               checkUserCall(callstackCsa, inParent, null,
+                                                               sampleLog.getPid());
                                        }
                                        fupData = makeNewProfilingData(callstackCsa, false);
                                        fupData.setParent(inParent.getName());
@@ -358,7 +361,8 @@ public class ProfileDataMaker {
                }
        }
 
-       private List<Long> makeCallstackHashAndList(List<String> callstackLog) {
+       private List<Long> makeCallstackHashAndList(List<String> callstackLog,
+                       int pid) {
                HashMap<Long, CallStackUnit> addrMap = callstackManager
                                .getCallStackApiByAddrMap();
                List<Long> addrs = new ArrayList<Long>();
@@ -386,7 +390,7 @@ public class ProfileDataMaker {
                        if (null == callstackUnit) {
                                String funcName = callstackLog.get(i + 1);
                                CallStackUnit newCallstackUnit = new CallStackUnit(addr,
-                                               funcName);
+                                               funcName, pid);
                                addrMap.put(addr, newCallstackUnit);
                        }
                }
@@ -422,7 +426,7 @@ public class ProfileDataMaker {
                                .getPath());
                if (null == parent) {
                        parent = makeNewProfilingData(inputCallstackApiData, true);
-                       checkUserCall(inputCallstackApiData, parent, null);
+                       checkUserCall(inputCallstackApiData, parent, null, log.getPid());
 
                        ProfilingData child = makeNewProfilingData(inputCallstackApiData,
                                        false);
@@ -489,7 +493,7 @@ public class ProfileDataMaker {
                                .getPath());
                if (null == parent) {
                        parent = makeNewProfilingData(inputCallstackApiData, true);
-                       checkUserCall(inputCallstackApiData, parent, null);
+                       checkUserCall(inputCallstackApiData, parent, null, log.getPid());
 
                        ProfilingData child = makeNewProfilingData(inputCallstackApiData,
                                        false);
index 4a251fd..16dedbc 100644 (file)
@@ -33,14 +33,13 @@ import org.eclipse.nebula.widgets.grid.GridItem;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Composite;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
 import org.tizen.dynamicanalyzer.listeners.SummaryMouseDoubleClickListener;
 import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
 import org.tizen.dynamicanalyzer.model.TableInput;
 import org.tizen.dynamicanalyzer.nl.SummaryLabels;
-import org.tizen.dynamicanalyzer.swap.model.probe2.FileData;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
 import org.tizen.dynamicanalyzer.ui.range.RangeWarningListView;
 import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
@@ -103,7 +102,7 @@ public class WarningTable extends DATableComposite {
 
                        text.add(Integer.toString(warningData.getSeq()));
                        {
-                               if (AnalyzerConstants.MSG_PROBE_FILE == warningData
+                               if (DataChannelConstants.MSG_PROBE_FILE == warningData
                                                .getCategory()) {
                                        text.add(SummaryLabels.WARNING_TABLE_FILE);
                                } else {
index 2356569..8fcec4a 100644 (file)
@@ -33,6 +33,7 @@ import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.logparser.LogListQueue;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.ui.thread.sync.ThreadPageSyncDataManager;
 import org.tizen.dynamicanalyzer.ui.thread.thread.ThreadPageThreadDataManager;
@@ -110,21 +111,21 @@ public class ThreadChartManager implements Runnable {
 
        public void updateLog(LogPackage logPack) {
                List<LogData> loadInputs = getLogsFromLogPackage(logPack,
-                               AnalyzerConstants.MSG_DATA_SYSTEM);
+                               DataChannelConstants.MSG_DATA_SYSTEM);
 
                if (null != loadInputs) {
                        logListQueue.putLog(loadInputs);
                }
 
                List<LogData> threadInputs = getLogsFromLogPackage(logPack,
-                               AnalyzerConstants.MSG_PROBE_THREAD);
+                               DataChannelConstants.MSG_PROBE_THREAD);
 
                if (null != threadInputs) {
                        logListQueue.putLog(threadInputs);
                }
 
                List<LogData> syncInputs = getLogsFromLogPackage(logPack,
-                               AnalyzerConstants.MSG_PROBE_SYNC);
+                               DataChannelConstants.MSG_PROBE_SYNC);
 
                if (null != syncInputs) {
                        logListQueue.putLog(syncInputs);
@@ -158,11 +159,11 @@ public class ThreadChartManager implements Runnable {
                        for (int i = 0; i < logSize; i++) {
                                log = logs.get(i);
                                logType = log.getId();
-                               if (logType == AnalyzerConstants.MSG_DATA_SYSTEM) {
+                               if (logType == DataChannelConstants.MSG_DATA_SYSTEM) {
                                        tManager.parseLoad(log);
-                               } else if (logType == AnalyzerConstants.MSG_PROBE_THREAD) {
+                               } else if (logType == DataChannelConstants.MSG_PROBE_THREAD) {
                                        tManager.parseAPI(log);
-                               } else if (logType == AnalyzerConstants.MSG_PROBE_SYNC) {
+                               } else if (logType == DataChannelConstants.MSG_PROBE_SYNC) {
                                        tManager.parseSync(log);
                                        sManager.parseSync(log);
                                }
index 2d47c2a..6a0a545 100644 (file)
@@ -29,7 +29,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.CommonConstants;
 import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
 import org.tizen.dynamicanalyzer.nl.ThreadPageLabels;
@@ -39,6 +38,7 @@ import org.tizen.dynamicanalyzer.resources.FontResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SyncData;
 import org.tizen.dynamicanalyzer.ui.common.PopupAnalysisMenuItemClickListener;
@@ -288,7 +288,7 @@ public class ThreadPageSyncDataManager {
 
        public void parsePageData(LogPackage logPack) {
                List<LogData> inputs = getLogsFromLogPackage(logPack,
-                               AnalyzerConstants.MSG_PROBE_SYNC);
+                               DataChannelConstants.MSG_PROBE_SYNC);
                parseSyncs(inputs);
        }
 
index 4ce7f4a..2bb4f42 100644 (file)
@@ -29,7 +29,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.common.CommonConstants;
 import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
@@ -41,6 +40,7 @@ import org.tizen.dynamicanalyzer.resources.FontResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SyncData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
@@ -302,7 +302,9 @@ public class ThreadPageThreadDataManager {
        private void createMainThreadItem() {
                isStart = true;
                Project project = AnalyzerManager.getProject();
-               int tid = project.getPID();
+//             int tid = project.getPID();
+               // FIXME
+               int tid = 1;
 
                if (0 == tid) {
                        isStart = false;
@@ -378,7 +380,7 @@ public class ThreadPageThreadDataManager {
 
        private void parseLoad(LogPackage logPack) {
                List<LogData> inputs = getLogsFromLogPackage(logPack,
-                               AnalyzerConstants.MSG_DATA_SYSTEM);
+                               DataChannelConstants.MSG_DATA_SYSTEM);
                int size;
                if (null == inputs || 0 == (size = inputs.size())) {
                        return;
@@ -617,7 +619,7 @@ public class ThreadPageThreadDataManager {
 
        private void parseAPI(LogPackage logPack) {
                List<LogData> inputs = getLogsFromLogPackage(logPack,
-                               AnalyzerConstants.MSG_PROBE_THREAD);
+                               DataChannelConstants.MSG_PROBE_THREAD);
                int size;
                if (null == inputs || 0 == (size = inputs.size())) {
                        return;
@@ -701,7 +703,7 @@ public class ThreadPageThreadDataManager {
 
        private void parseSync(LogPackage logPack) {
                List<LogData> inputs = getLogsFromLogPackage(logPack,
-                               AnalyzerConstants.MSG_PROBE_SYNC);
+                               DataChannelConstants.MSG_PROBE_SYNC);
                int size;
                if (null == inputs || 0 == (size = inputs.size())) {
                        return;
index ce45a53..e608b7d 100644 (file)
@@ -40,6 +40,7 @@ import org.tizen.dynamicanalyzer.nl.TimelinePageLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.UserFunctionData;
@@ -131,7 +132,7 @@ public class CallTraceView extends DAView {
        public void updateLog(LogPackage logPack) {
                Logs logs = logPack.getLogs(LogCenterConstants.LOG_USER_FUNCTION);
                if (null == logs) {
-                       logs = logPack.getLogs(AnalyzerConstants.MSG_FUNCTION_ENTRY);
+                       logs = logPack.getLogs(DataChannelConstants.MSG_FUNCTION_ENTRY);
                }
                if (null == logs || null == logs.getLogs() || logs.getLogs().isEmpty()) {
                        return;
@@ -142,7 +143,7 @@ public class CallTraceView extends DAView {
 
                int size = inputs.size();
                for (int i = 0; i < size; i++) {
-                       if (logs.getId() == AnalyzerConstants.MSG_FUNCTION_ENTRY) {
+                       if (logs.getId() == DataChannelConstants.MSG_FUNCTION_ENTRY) {
                                ProfileData pData = (ProfileData) inputs.get(i);
                                userLog.add(pData);
                        } else if (logs.getId() == LogCenterConstants.LOG_USER_FUNCTION) {
index b051361..5dcd463 100644 (file)
@@ -28,12 +28,12 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart;
 
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
@@ -60,7 +60,7 @@ public class CPUChart extends TimelineChart {
 
        private CPUChart() {
                chartType = TimelineConstants.CHART_TYPE_CPU;
-               probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+               probeType = DataChannelConstants.MSG_DATA_SYSTEM;
                chartName = TimelineChartLabels.CPU_CHART_TITLE;
                chartIcon = ImageResources.CHART_CPU;
                addIcon = ImageResources.ADD_CHART_CPU;
index e06bd79..d9122fe 100644 (file)
@@ -29,13 +29,13 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.communicator.DACommunicator;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
@@ -68,7 +68,7 @@ public class CPUCoreChart extends TimelineChart {
 
        public CPUCoreChart() {
                chartType = TimelineConstants.CHART_TYPE_CPU_CORE;
-               probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+               probeType = DataChannelConstants.MSG_DATA_SYSTEM;
                chartName = TimelineChartLabels.CPU_CORE_CHART_TITLE;
                chartIcon = ImageResources.CHART_CPU_CORE;
                addIcon = ImageResources.ADD_CHART_CPU_CORE;
index 2809b20..51277c4 100644 (file)
@@ -28,12 +28,12 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart;
 
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
@@ -57,7 +57,7 @@ public class CPUFrequencyChart extends TimelineChart {
 
        private CPUFrequencyChart() {
                chartType = TimelineConstants.CHART_TYPE_CPU_FREQUENCY;
-               probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+               probeType = DataChannelConstants.MSG_DATA_SYSTEM;
                chartName = TimelineChartLabels.CPU_FREQUENCY_CHART_TITLE;
                chartIcon = ImageResources.CHART_CPU_FREQUENCY;
                addIcon = ImageResources.ADD_CHART_CPU_FREQUENCY;
index 3aed177..ef8f2eb 100644 (file)
@@ -32,12 +32,12 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Semaphore;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
 import org.tizen.dynamicanalyzer.utils.Formatter;
@@ -100,7 +100,7 @@ public class FileChart extends TimelineChart {
 
        private FileChart() {
                chartType = TimelineConstants.CHART_TYPE_FILE;
-               probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+               probeType = DataChannelConstants.MSG_DATA_SYSTEM;
                chartName = TimelineChartLabels.FILE_CHART_TITLE;
                chartIcon = ImageResources.CHART_FILE;
                addIcon = ImageResources.ADD_CHART_FILE;
@@ -160,10 +160,10 @@ public class FileChart extends TimelineChart {
        @Override
        public void parseLogPackage(LogPackage logPack) {
                Logs logs = logPack.getLogs(probeType);
-               if(logs == null) {
+               if (logs == null) {
                        return;
                }
-               
+
                List<LogData> logList = logs.getLogs();
                for (LogData log : logList) {
                        double time = log.getTime();
@@ -171,6 +171,9 @@ public class FileChart extends TimelineChart {
                        int size = deviceLogTimeList.size();
                        int index = (int) (time / TimelineConstants.MEGA_DOUBLE);
 
+                       if (index - size > 4) {
+                               continue;
+                       }
                        if (size <= index) {
                                for (int i = size; i <= index; i++) {
                                        deviceLogTimeList.add(Double.NaN);
index 002affd..9349f99 100644 (file)
@@ -29,12 +29,12 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart;
 import java.util.HashMap;
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.MemoryData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
@@ -69,7 +69,7 @@ public class HeapChart extends TimelineChart {
 
        private HeapChart() {
                chartType = TimelineConstants.CHART_TYPE_HEAP;
-               probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+               probeType = DataChannelConstants.MSG_DATA_SYSTEM;
                chartName = TimelineChartLabels.HEAP_CHART_TITLE;
                chartIcon = ImageResources.CHART_HEAP;
                addIcon = ImageResources.ADD_CHART_HEAP;
@@ -100,7 +100,7 @@ public class HeapChart extends TimelineChart {
 
        @Override
        public void parseLogPackage(LogPackage logPack) {
-               Logs memoryLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_MEMORY);
+               Logs memoryLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_MEMORY);
                Logs deviceLogs = logPack.getLogs(probeType);
 
                List<LogData> memoryLogList = memoryLogs == null ? null
index e711394..60c22f4 100644 (file)
@@ -28,12 +28,12 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart;
 
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
@@ -61,7 +61,7 @@ public class ProcessMemoryChart extends TimelineChart {
 
        private ProcessMemoryChart() {
                chartType = TimelineConstants.CHART_TYPE_PROCESS_MEMORY;
-               probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+               probeType = DataChannelConstants.MSG_DATA_SYSTEM;
                chartName = TimelineChartLabels.PROCESS_MEMORY_CHART_TITLE;
                chartIcon = ImageResources.CHART_PROCESS_MEMORY;
                addIcon = ImageResources.ADD_CHART_PROCESS_MEMORY;
index 87b0788..d63bdfb 100644 (file)
@@ -38,6 +38,7 @@ import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ScreenShotData;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
@@ -63,7 +64,7 @@ public class ScreenshotChart extends TimelineChart {
        private ScreenshotChart() {
                chartType = TimelineConstants.CHART_TYPE_SCREENSHOT;
                chartStyle = DAChart.CHART_STYLE_SCREENSHOT;
-               probeType = AnalyzerConstants.MSG_PROBE_SCREENSHOT;
+               probeType = DataChannelConstants.MSG_PROBE_SCREENSHOT;
                chartName = TimelineChartLabels.SCREENSHOT_CHART_TITLE;
                chartIcon = ImageResources.CHART_SCREENSHOT;
                addIcon = ImageResources.ADD_CHART_SCREENSHOT;
index b7149fc..511438f 100644 (file)
@@ -28,13 +28,13 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart;
 
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
@@ -62,7 +62,7 @@ public class SystemMemoryChart extends TimelineChart {
 
        private SystemMemoryChart() {
                chartType = TimelineConstants.CHART_TYPE_SYSTEM_MEMORY;
-               probeType = AnalyzerConstants.MSG_DATA_SYSTEM;
+               probeType = DataChannelConstants.MSG_DATA_SYSTEM;
                chartName = TimelineChartLabels.SYSTEM_MEMORY_CHART_TITLE;
                chartIcon = ImageResources.CHART_SYSTEM_MEMORY;
                addIcon = ImageResources.ADD_CHART_SYSTEM_MEMORY;
index 2e238fa..e03cfa5 100644 (file)
@@ -28,7 +28,6 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart;
 
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.CommonConstants;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
@@ -36,6 +35,7 @@ import org.tizen.dynamicanalyzer.resources.FontResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.UIEventData;
 import org.tizen.dynamicanalyzer.ui.common.UIEventChartContextMenuItem;
@@ -84,7 +84,7 @@ public class UIEventChart extends TimelineChart {
        private UIEventChart() {
                chartType = TimelineConstants.CHART_TYPE_UIEVENT;
                chartStyle = DAChart.CHART_STYLE_MULTI;
-               probeType = AnalyzerConstants.MSG_PROBE_UIEVENT;
+               probeType = DataChannelConstants.MSG_PROBE_UIEVENT;
                chartName = TimelineChartLabels.UI_EVENT_CHART_TITLE;
                chartIcon = ImageResources.CHART_UI_EVENT;
                addIcon = ImageResources.ADD_CHART_UI_EVENT;
index a0ce388..8519180 100644 (file)
@@ -192,7 +192,7 @@ public class TimelineEditItemsDialog extends DAMessageBox {
 
        };
 
-       protected int run() {
+       protected boolean run() {
                shell.setText(TimelineChartLabels.EDIT_CHART_DLG_TITLE);
                shell.setBackground(ColorResources.WINDOW_BG_COLOR);
                shell.setSize(446, 450);
@@ -491,7 +491,7 @@ public class TimelineEditItemsDialog extends DAMessageBox {
                RunningDialog = true;
                shell.addShellListener(shellListener);
 
-               return result;
+               return true;
        }
 
        private MouseListener itemZoomMouseListener = new MouseAdapter() {
index 7aa8329..bc28559 100644 (file)
@@ -32,7 +32,6 @@ import org.eclipse.swt.custom.StackLayout;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
 import org.tizen.dynamicanalyzer.model.DAView;
 import org.tizen.dynamicanalyzer.model.SnapshotData;
@@ -40,6 +39,7 @@ import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.FontResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener;
 import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseEventListener;
 import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseTrackAdapter;
@@ -183,35 +183,35 @@ public class TimelineView extends DAView {
                        return;
                }
 
-               Logs deviceLogs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM);
+               Logs deviceLogs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM);
                if (deviceLogs != null && !deviceLogs.getLogs().isEmpty()) {
                        deviceLogParser.parseLogPackage(logPack);
                }
 
-               Logs memoryLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_MEMORY);
+               Logs memoryLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_MEMORY);
                if (memoryLogs != null && !memoryLogs.getLogs().isEmpty()) {
                        HeapChart.getInstance().parseLogPackage(logPack);
                }
 
                Logs recorderLogs = logPack
-                               .getLogs(AnalyzerConstants.MSG_PROBE_UIEVENT);
+                               .getLogs(DataChannelConstants.MSG_PROBE_UIEVENT);
                if (recorderLogs != null && !recorderLogs.getLogs().isEmpty()) {
                        UIEventChart.getInstance().parseLogPackage(logPack);
                }
 
-               Logs customLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_CUSTOM);
+               Logs customLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_CUSTOM);
                if (customLogs != null && !customLogs.getLogs().isEmpty()) {
                        customLogParser.parseLogPackage(logPack);
                }
 
                Logs lifecycleLogs = logPack
-                               .getLogs(AnalyzerConstants.MSG_PROBE_LIFECYCLE);
+                               .getLogs(DataChannelConstants.MSG_PROBE_LIFECYCLE);
                if (lifecycleLogs != null && !lifecycleLogs.getLogs().isEmpty()) {
                        lifecycleLogParser.parseLogPackage(logPack);
                }
 
                Logs screenShotLogs = logPack
-                               .getLogs(AnalyzerConstants.MSG_PROBE_SCREENSHOT);
+                               .getLogs(DataChannelConstants.MSG_PROBE_SCREENSHOT);
                if (screenShotLogs != null && !screenShotLogs.getLogs().isEmpty()) {
                        ScreenshotChart.getInstance().parseLogPackage(logPack);
                }
index 1985006..b7f4043 100755 (executable)
@@ -31,10 +31,10 @@ import java.util.List;
 import java.util.Map;
 
 import org.eclipse.swt.graphics.Color;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.CustomData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.ui.timeline.chart.UserCustomChart;
@@ -67,7 +67,7 @@ public class CustomLogParser {
        private Map<Long, DAChartSeries> customChartSeriesMap = new HashMap<Long, DAChartSeries>();
 
        public void parseLogPackage(LogPackage logPack) {
-               Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_CUSTOM);
+               Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_CUSTOM);
                List<LogData> logList = logs.getLogs();
 
                for (LogData log : logList) {
index 7304096..abe015b 100644 (file)
@@ -2,27 +2,27 @@ package org.tizen.dynamicanalyzer.ui.timeline.logparser;
 
 import java.util.List;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
 import org.tizen.dynamicanalyzer.ui.opengl.ui.chart.GLFrameRateChart;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.ui.timeline.chart.TimelineChart;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager;
 
 public class DeviceLogParser {
        public void parseLogPackage(LogPackage logPack) {
-               Logs deviceLogs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM);
+               Logs deviceLogs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM);
                if (deviceLogs != null && deviceLogs.getLogs() != null
                                && deviceLogs.getLogs().size() > 0) {
                        List<TimelineChart> chartList = TimelineChartManager.getInstance()
                                        .getChartList();
                        for (TimelineChart chart : chartList) {
-                               if (chart.getProbeType() == AnalyzerConstants.MSG_DATA_SYSTEM) {
+                               if (chart.getProbeType() == DataChannelConstants.MSG_DATA_SYSTEM) {
                                        chart.parseLogPackage(logPack);
                                }
                        }
                        
-                       GLFrameRateChart.getInstance().parseLogPackage(logPack);
+//                     GLFrameRateChart.getInstance().parseLogPackage(logPack);
                }
        }
 }
index 88f6bc4..6f7054b 100644 (file)
@@ -30,10 +30,10 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.swt.graphics.Color;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LifeCycleData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
@@ -64,7 +64,7 @@ public class LifecycleLogParser {
        }
 
        public void parseLogPackage(LogPackage logPack) {
-               Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_LIFECYCLE);
+               Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_LIFECYCLE);
                if (null == logs) {
                        return;
                }
index fb193a7..96651fa 100644 (file)
@@ -87,9 +87,9 @@ public class AboutDialog extends DAMessageBox {
                }
        };
 
-       protected int run() {
+       protected boolean run() {
                if (opened) {
-                       return -1;
+                       return false;
                }
                shell.setSize(446, 254);
                shell.setLayout(new FormLayout());
@@ -224,7 +224,7 @@ public class AboutDialog extends DAMessageBox {
                opened = true;
                ShortCutManager.getInstance().setEnabled(!opened);
 
-               return result;
+               return true;
        }
 
        private String parseBuildTime(String readData) {
index dd95811..95cc1a7 100755 (executable)
@@ -71,7 +71,7 @@ public class SaveAsDialog extends DAMessageBox {
                super(parentShell);
        }
 
-       protected int run() {
+       protected boolean run() {
                shell.setLayout(new FormLayout());
                shell.setSize(446, 127 + 22);
                shell.setBackground(ColorResources.DIALOG_BG_UPPER);
@@ -145,14 +145,15 @@ public class SaveAsDialog extends DAMessageBox {
                saveFileName = getSaveFileName();
                if (null == saveFileName) {
                        // create warning message box
-                       return result;
+                       System.out.println("save file name is null");
+                       return false;
                } else {
                        textBox.setText(saveFileName);
                        String textString = textBox.getText();
                        textBox.setSelection(0, textString.length());
                }
 
-               return result;
+               return true;
        }
 
        private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() {
@@ -160,12 +161,12 @@ public class SaveAsDialog extends DAMessageBox {
                @Override
                public void handleClickEvent(DACustomButton button) {
                        saveFileName = textBox.getText();
-                       
+
                        if (saveFileName.length() > MAX_SAVE_FILE_NAME_LENGTH) {
                                String old = saveFileName;
-                               saveFileName = old.substring(0, MAX_SAVE_FILE_NAME_LENGTH -1);
+                               saveFileName = old.substring(0, MAX_SAVE_FILE_NAME_LENGTH - 1);
                        }
-                       
+
                        if (executeSaveTrace()) {
                                result = AnalyzerConstants.SUCCESS;
                        }
index 2e84d20..1cfdd98 100755 (executable)
@@ -45,7 +45,6 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.common.CommonConstants;
 import org.tizen.dynamicanalyzer.common.DesignConstants;
@@ -53,13 +52,13 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator;
 import org.tizen.dynamicanalyzer.handlers.ReplayTraceHandler;
 import org.tizen.dynamicanalyzer.model.DeviceInfo;
 import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
-import org.tizen.dynamicanalyzer.nl.ConfigureLabels;
 import org.tizen.dynamicanalyzer.project.PackageInfo;
 import org.tizen.dynamicanalyzer.project.Project;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.FontResources;
 import org.tizen.dynamicanalyzer.resources.ImageResources;
 import org.tizen.dynamicanalyzer.shortcut.ShortCutManager;
+import org.tizen.dynamicanalyzer.swap.platform.ui.BinaryAnalyzingConfigDialog;
 import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;
 import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialog;
 import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceDialog;
@@ -76,7 +75,6 @@ import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo;
 import org.tizen.dynamicanalyzer.widgets.combo.DACustomComboSelectionListener;
 import org.tizen.dynamicanalyzer.widgets.timer.TimerClock;
 
-
 public class ToolbarArea {
 
        public static final int START_BUTTON = 0;
@@ -85,7 +83,8 @@ public class ToolbarArea {
        public static final int REPLAY_BUTTON = 3;
        public static final int SOURCE_BUTTON = 4;
        public static final int ABOUT_BUTTON = 5;
-       public static final int SETTING_BUTTON = 6;
+       public static final int CONFIG_BUTTON = 6;
+       public static final int SETTING_BUTTON = 7;
 
        String selectedDevice = null;
        PackageInfo selectedApp = null;
@@ -108,10 +107,11 @@ public class ToolbarArea {
        private DACustomButton saveTraceButton;
        private DACustomButton openTraceButton;
        private DACustomButton replayButton;
-       private DACustomButton settingsButton;
+       private DACustomButton configButton;
+       private DACustomButton binarySettingsButton;
+
        private DACustomButton aboutButton;
 
-       private DACustomToggleButton snapshotButton;
        private DACustomToggleButton viewSourceButton;
 
        private Cursor cursor;
@@ -314,7 +314,8 @@ public class ToolbarArea {
                        @Override
                        public void handleEvent(Event event) {
                                if (!appCombo.isChildShellOpened()) {
-                                       List<PackageInfo> apps = DACommunicator.getAppListFromTarget();
+                                       List<PackageInfo> apps = DACommunicator
+                                                       .getAppListFromTarget();
                                        if (null == apps || apps.isEmpty()) {
                                                return;
                                        }
@@ -322,7 +323,8 @@ public class ToolbarArea {
                                        appCombo.initCombo();
                                        int size = apps.size();
                                        for (int i = 0; i < size; i++) {
-                                               appCombo.add(apps.get(i).getInfo(PackageInfo.LABEL_INDEX));
+                                               appCombo.add(apps.get(i).getInfo(
+                                                               PackageInfo.LABEL_INDEX));
                                        }
                                        appCombo.setText(selectedApp);
                                }
@@ -349,8 +351,8 @@ public class ToolbarArea {
                                                Shell shell = AnalyzerUtil.getWorkbenchWindow()
                                                                .getShell();
                                                SaveAsDialog dialog = new SaveAsDialog(shell);
-                                               int result = dialog.open();
-                                               if (AnalyzerConstants.SUCCESS == result) {
+                                               Object result = dialog.open();
+                                               if (null != result) {
                                                        button.setButtonEnabled(false);
                                                }
                                        }
@@ -380,7 +382,7 @@ public class ToolbarArea {
                        }
                });
 
-               settingsButton.addClickListener(new DACustomButtonClickEventListener() {
+               configButton.addClickListener(new DACustomButtonClickEventListener() {
 
                        @Override
                        public void handleClickEvent(DACustomButton button) {
@@ -390,6 +392,17 @@ public class ToolbarArea {
                        }
                });
 
+               binarySettingsButton
+                               .addClickListener(new DACustomButtonClickEventListener() {
+
+                                       @Override
+                                       public void handleClickEvent(DACustomButton button) {
+                                               BinaryAnalyzingConfigDialog dialog = new BinaryAnalyzingConfigDialog(
+                                                               shell);
+                                               dialog.open();
+                                       }
+                               });
+
                aboutButton.addClickListener(new DACustomButtonClickEventListener() {
 
                        @Override
@@ -405,17 +418,21 @@ public class ToolbarArea {
                                        @Override
                                        public void handleClickEvent(DACustomButton button) {
 
-//                                             ReplayData replayData = SqlManager.getInstance().getReplayLogs();
-//                                             DATime startTime = AnalyzerManager.getProject().getStartTime();
-//                                             int count = replayData.getObjectCount();
-//                                             byte[] eventObjs = null;
-//                                             for (int i = 0; i < count; i++) {
-//                                                     eventObjs = ByteUtils.concatByteArray(eventObjs, replayData
-//                                                                     .getRecordEvent().get(i).getByteValues());
-//                                             }
-//                                             byte[] replayEvent = ByteUtils.getByte(1, startTime.getSec(),
-//                                                             startTime.getNano(), count, eventObjs);
-//                                             System.out.println();
+                                               // ReplayData replayData =
+                                               // SqlManager.getInstance().getReplayLogs();
+                                               // DATime startTime =
+                                               // AnalyzerManager.getProject().getStartTime();
+                                               // int count = replayData.getObjectCount();
+                                               // byte[] eventObjs = null;
+                                               // for (int i = 0; i < count; i++) {
+                                               // eventObjs = ByteUtils.concatByteArray(eventObjs,
+                                               // replayData
+                                               // .getRecordEvent().get(i).getByteValues());
+                                               // }
+                                               // byte[] replayEvent = ByteUtils.getByte(1,
+                                               // startTime.getSec(),
+                                               // startTime.getNano(), count, eventObjs);
+                                               // System.out.println();
                                                // TODO : use for test code...
                                                // String path =
                                                // "/home/casval/work/testApp/DATizenTestApp/Dynamic Analyzer/DATizenTestApp.exe";
@@ -560,12 +577,19 @@ public class ToolbarArea {
                replayButton.setToolTipText(ShortCutManager.REPLAY);
                buttons.put(REPLAY_BUTTON, replayButton);
 
-               // Creates setting button
-               settingsButton = new DACustomButton(parent, ImageResources.SETTINGS,
+               // create binarySettingButton
+               binarySettingsButton = new DACustomButton(parent, ImageResources.SCREEN_SHOT_TOGGLE,
+                               ImageResources.SCREEN_SHOT_TOGGLE_PUSH, ImageResources.SCREEN_SHOT_TOGGLE_HOVER,
+                               ImageResources.SCREEN_SHOT_DISABLE);
+               binarySettingsButton.setToolTipText("Binary Settings");
+               buttons.put(SETTING_BUTTON, binarySettingsButton);
+               
+               // Creates config button
+               configButton = new DACustomButton(parent, ImageResources.SETTINGS_NORMAL,
                                ImageResources.SETTINGS_PUSH, ImageResources.SETTINGS_HOVER,
                                ImageResources.SETTINGS_DISABLE);
-               settingsButton.setToolTipText(ShortCutManager.COOLBAR_AREA_SETTING);
-               buttons.put(SETTING_BUTTON, settingsButton);
+               configButton.setToolTipText(ShortCutManager.COOLBAR_AREA_SETTING);
+               buttons.put(CONFIG_BUTTON, configButton);
 
                // Creates about button.
                aboutButton = new DACustomButton(parent, ImageResources.ABOUT,
@@ -588,16 +612,16 @@ public class ToolbarArea {
                buttons.put(SOURCE_BUTTON, viewSourceButton);
 
                // Creates snapshot on/off button.
-               snapshotButton = new DACustomToggleButton(parent,
-                               ImageResources.SCREEN_SHOT_NORMAL,
-                               ImageResources.SCREEN_SHOT_PUSH,
-                               ImageResources.SCREEN_SHOT_HOVER,
-                               ImageResources.SCREEN_SHOT_DISABLE,
-                               ImageResources.SCREEN_SHOT_TOGGLE,
-                               ImageResources.SCREEN_SHOT_TOGGLE_HOVER,
-                               ImageResources.SCREEN_SHOT_TOGGLE_PUSH);
-               snapshotButton.setToolTipText(AnalyzerLabels.SNAPSHOT_ENABLE);
-               setSnapshotButtonEnablement(true);
+//             snapshotButton = new DACustomToggleButton(parent,
+//                             ImageResources.SCREEN_SHOT_NORMAL,
+//                             ImageResources.SCREEN_SHOT_PUSH,
+//                             ImageResources.SCREEN_SHOT_HOVER,
+//                             ImageResources.SCREEN_SHOT_DISABLE,
+//                             ImageResources.SCREEN_SHOT_TOGGLE,
+//                             ImageResources.SCREEN_SHOT_TOGGLE_HOVER,
+//                             ImageResources.SCREEN_SHOT_TOGGLE_PUSH);
+//             snapshotButton.setToolTipText(AnalyzerLabels.SNAPSHOT_ENABLE);
+//             setSnapshotButtonEnablement(true);
 
                FormData data = new FormData();
                data.top = new FormAttachment(0, 4);
@@ -646,21 +670,21 @@ public class ToolbarArea {
                data.right = new FormAttachment(aboutButton, 0);
                data.width = 34;
                data.height = 30;
-               settingsButton.setLayoutData(data);
+               configButton.setLayoutData(data);
 
                data = new FormData();
                data.top = new FormAttachment(0, 4);
-               data.right = new FormAttachment(settingsButton, -5);
-               data.width = 32;
+               data.right = new FormAttachment(configButton, 0);
+               data.width = 34; // 31
                data.height = 30;
-               viewSourceButton.setLayoutData(data);
-
+               binarySettingsButton.setLayoutData(data);
+               
                data = new FormData();
                data.top = new FormAttachment(0, 4);
-               data.right = new FormAttachment(viewSourceButton, 0);
-               data.width = 0; // 31
+               data.right = new FormAttachment(binarySettingsButton, -5);
+               data.width = 32;
                data.height = 30;
-               snapshotButton.setLayoutData(data);
+               viewSourceButton.setLayoutData(data);
 
                /** device and application combo */
                // Creates device combo.
@@ -961,7 +985,7 @@ public class ToolbarArea {
        }
 
        public void setSettingsButtonEnablement(boolean enabled) {
-               settingsButton.setButtonEnabled(enabled);
+               configButton.setButtonEnabled(enabled);
        }
 
        private void setStartButtonImagesToStop(boolean isStarted) {
@@ -986,18 +1010,8 @@ public class ToolbarArea {
                setRepalyButtonEnable(enabled);
        }
 
-       public void setSnapshotButtonEnablement(boolean enabled) {
-               snapshotButton.setButtonEnabled(enabled);
-               if (enabled) {
-                       String snapshotEnable = ConfigureManager.getInstance().getValue(
-                                       ConfigureLabels.FEATURE_SCREENSHOT);
-                       if (null != snapshotEnable && !snapshotEnable.isEmpty()
-                                       && snapshotEnable.equals(CommonConstants.ON)) {
-                               snapshotButton.setToggled(true);
-                       } else {
-                               snapshotButton.setToggled(false);
-                       }
-               }
+       public void setBinarySettingsButtonEnablement(boolean enabled) {
+               binarySettingsButton.setButtonEnabled(enabled);
        }
 
        public void startTimer() {
@@ -1060,7 +1074,6 @@ public class ToolbarArea {
                        setStartButtonImagesToStop(true);
                        setMainControlEnablement(false);
                        startButton.setButtonEnabled(false);
-                       setSnapshotButtonEnablement(false);
                } else {
                        setStartButtonImagesToStop(false);
                        setMainControlEnablement(true);
index 9d7c8f3..ebabe03 100644 (file)
@@ -69,8 +69,6 @@ public class TraceStartStopThread implements Runnable {
                                                                .setStartButtonEnablement(true);
                                                ToolbarArea.getInstance().setStartButtonToolTipText(
                                                                ShortCutManager.STOP_TRACE);
-                                               ToolbarArea.getInstance().setSnapshotButtonEnablement(
-                                                               true);
                                                ToolbarArea.getInstance().setSettingsButtonEnablement(
                                                                true);
                                        }
index 3442a2b..3037581 100644 (file)
@@ -99,9 +99,9 @@ public class ConfigurationDialog extends DAMessageBox {
                ConfigurationDialogValues.getInstance().setSettingValueFromConfigFile();
        }
 
-       protected int run() {
+       protected boolean run() {
                if (opened) {
-                       return -1;
+                       return false;
                }
                shell.setSize(608, 480);
                shell.setLayout(new FormLayout());
@@ -221,7 +221,7 @@ public class ConfigurationDialog extends DAMessageBox {
 
                opened = true;
                ShortCutManager.getInstance().setEnabled(!opened);
-               return result;
+               return true;
        }
 
 }
index 4aa64f3..4aa4e8b 100644 (file)
@@ -50,7 +50,7 @@ import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener
 import org.tizen.dynamicanalyzer.widgets.button.checkbox.DACheckBox;
 import org.tizen.dynamicanalyzer.widgets.button.checkbox.DACheckboxSelectionListener;
 
-public class WelcomeDialog extends DAMessageBox{
+public class WelcomeDialog extends DAMessageBox {
        private DACustomButton okButton = null;
        private DACustomButton cancelButton = null;
        private DACheckBox useAgainCheckButton = null;
@@ -86,8 +86,8 @@ public class WelcomeDialog extends DAMessageBox{
                ConfigurationDialogValues.getInstance().setSettingValueFromConfigFile();
                notifyAutoRun();
        }
-       
-       protected int run(){
+
+       protected boolean run() {
                IDECommunicator.setOpenWelcomeDlg(true);
                shell.setSize(608, 460);
                shell.setLayout(new FormLayout());
@@ -193,7 +193,7 @@ public class WelcomeDialog extends DAMessageBox{
                okButton.setLayoutData(buttonData);
                shell.addShellListener(shellListener);
                shell.open();
-               return result;
+               return true;
        }
 
        private DACheckboxSelectionListener useAgainCheckbuttonListener = new DACheckboxSelectionListener() {
@@ -212,7 +212,7 @@ public class WelcomeDialog extends DAMessageBox{
                }
                IDECommunicator.setOpenWelcomeDlg(false);
        }
-       
+
        private ShellListener shellListener = new ShellListener() {
 
                @Override
index 1a75a57..6f8da00 100644 (file)
@@ -108,10 +108,9 @@ public class OpenTraceDialog extends DAMessageBox {
                super(parent);
        }
 
-       protected int run() {
+       protected boolean run() {
                if (opened) {
-                       result = -1;
-                       return result;
+                       return false;
                }
                shell.setLayout(new FormLayout());
                shell.setSize(400, 430);
@@ -282,7 +281,7 @@ public class OpenTraceDialog extends DAMessageBox {
                tempTable.updateTable();
                opened = true;
                ShortCutManager.getInstance().setEnabled(!opened);
-               return result;
+               return true;
        }
 
        private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() {
index ac8e9cf..8ad0923 100644 (file)
@@ -34,6 +34,7 @@ import org.tizen.dynamicanalyzer.project.Project;
 import org.tizen.dynamicanalyzer.sql.SqlManager;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory;
 import org.tizen.dynamicanalyzer.ui.page.BaseView;
@@ -77,14 +78,14 @@ public class OpenTraceInputReader implements Runnable {
        public void run() {
                AnalyzerManager.setLogParsingComplete(false);
                Project p = AnalyzerManager.getProject();
-               long last = p.getLastLogNum(AnalyzerConstants.MSG_PROBE_FILE);
-               createPackage(last, AnalyzerConstants.MSG_PROBE_FILE);
+               long last = p.getLastLogNum(DataChannelConstants.MSG_PROBE_FILE);
+               createPackage(last, DataChannelConstants.MSG_PROBE_FILE);
 
-               last = p.getLastLogNum(AnalyzerConstants.MSG_DATA_SYSTEM);
-               createPackage(last, AnalyzerConstants.MSG_DATA_SYSTEM);
+               last = p.getLastLogNum(DataChannelConstants.MSG_DATA_SYSTEM);
+               createPackage(last, DataChannelConstants.MSG_DATA_SYSTEM);
 
-               last = p.getLastLogNum(AnalyzerConstants.MSG_DATA_SAMPLE);
-               createPackage(last, AnalyzerConstants.MSG_DATA_SAMPLE);
+               last = p.getLastLogNum(DataChannelConstants.MSG_DATA_SAMPLE);
+               createPackage(last, DataChannelConstants.MSG_DATA_SAMPLE);
 
                System.out.println("input reader complete"); //$NON-NLS-1$
                AnalyzerManager.setLogParsingComplete(true);
@@ -101,8 +102,8 @@ public class OpenTraceInputReader implements Runnable {
                        if (to >= last) {
                                to = last;
                        }
-                       if (type == AnalyzerConstants.MSG_DATA_SAMPLE
-                                       || type == AnalyzerConstants.MSG_DATA_SYSTEM) {
+                       if (type == DataChannelConstants.MSG_DATA_SAMPLE
+                                       || type == DataChannelConstants.MSG_DATA_SYSTEM) {
                                input = SqlManager.getInstance().selectArea(type, from, to);
                                Logs logs = new Logs(type);
                                logs.setLogs(input);
@@ -113,8 +114,8 @@ public class OpenTraceInputReader implements Runnable {
                                int size = ids.size();
                                for (int i = 0; i < size; i++) {
                                        int id = ids.get(i);
-                                       if (id == AnalyzerConstants.MSG_DATA_SAMPLE
-                                                       || id == AnalyzerConstants.MSG_DATA_SYSTEM) {
+                                       if (id == DataChannelConstants.MSG_DATA_SAMPLE
+                                                       || id == DataChannelConstants.MSG_DATA_SYSTEM) {
                                                continue;
                                        }
                                        Logs logs = new Logs(id);
index 2dd93a6..d869cfb 100644 (file)
@@ -35,6 +35,7 @@ import org.tizen.dynamicanalyzer.common.CommonConstants;
 import org.tizen.dynamicanalyzer.logparser.LogListQueue;
 import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;
 import org.tizen.dynamicanalyzer.swap.logparser.Logs;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ControlData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.SceneData;
@@ -110,7 +111,7 @@ public class UIDataManager implements Runnable {
                        int size = logs.size();
                        for (int i = 0; i < size; i++) {
                                int nLogType = logs.get(i).getId();
-                               if (nLogType == AnalyzerConstants.MSG_PROBE_UICONTROL) {
+                               if (nLogType == DataChannelConstants.MSG_PROBE_UICONTROL) {
                                        getInstance().getControlDataChecker().parserLog(
                                                        (ControlData) logs.get(i));
                                } else {
@@ -131,7 +132,7 @@ public class UIDataManager implements Runnable {
        }
 
        public void setControlDataTFromLogPackage(LogPackage logPack) {
-               Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_UICONTROL);
+               Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_UICONTROL);
                if (null == logs || logs.getLogs() == null
                                || logs.getLogs().size() == 0) {
                        return;
@@ -141,7 +142,7 @@ public class UIDataManager implements Runnable {
        }
 
        public void setSceneTransformDataTFromLogPackage(LogPackage logPack) {
-               Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_SCENE);
+               Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_SCENE);
                if (null == logs || logs.getLogs() == null
                                || logs.getLogs().size() == 0) {
                        return;
index e6167ce..8b7dcff 100644 (file)
@@ -33,23 +33,24 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 
 public class DAMessageBox {
-       protected int result = 0;
+       protected Object result = null;
+       protected boolean initSuccess = false;
        protected Shell parentShell = null;
        protected Shell shell = null;
        protected boolean block = false;
 
-       private static IExceptionHandler exceptionHandler = new DefaultExceptionHandler();
+       protected static IExceptionHandler exceptionHandler = new DefaultExceptionHandler();
 
        public DAMessageBox(Shell parentShell) {
                this.parentShell = parentShell;
                shell = new Shell(parentShell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
        }
 
-       public int open() {
+       public Object open() {
                block = true;
                parentShell.setEnabled(false);
-               result = run();
-               if (result >= 0) {
+               initSuccess = run();
+               if (initSuccess) {
                        shell.open();
                        if (block) {
                                runEventLoop(shell);
@@ -61,15 +62,15 @@ public class DAMessageBox {
                return result;
        }
 
-       protected int run() {
-               return result;
+       protected boolean run() {
+               return true;
        }
 
-       protected int closeAction() {
+       protected Object closeAction() {
                return result;
        }
 
-       private void runEventLoop(Shell loopShell) {
+       protected void runEventLoop(Shell loopShell) {
 
                // Use the display provided by the shell if possible
                Display display;
index 1b89d3e..8dce7ca 100644 (file)
@@ -38,7 +38,6 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
-import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.CommonConstants;
 import org.tizen.dynamicanalyzer.common.DesignConstants;
 import org.tizen.dynamicanalyzer.model.FindProperty;
@@ -88,9 +87,9 @@ public class FindDialog extends DAMessageBox {
                findProperty.setIndex(table.getSelectionIndex());
        }
 
-       protected int run() {
+       protected boolean run() {
                if (null == table) {
-                       return AnalyzerConstants.FAIL;
+                       return false;
                }
                shell.setLayout(new FormLayout());
                shell.setSize(340, 130);
@@ -196,7 +195,7 @@ public class FindDialog extends DAMessageBox {
                wholeWordButton.addSelectionListener(wholeWordButtonListener);
                wholeWordButton.setChecked(findProperty.isWholeWord());
 
-               return result;
+               return true;
        }
 
        private DACustomButtonClickEventListener fnidButtonListener = new DACustomButtonClickEventListener() {
index b4463d5..a2214be 100644 (file)
@@ -273,7 +273,7 @@ public class DATableCellRenderer extends DefaultCellRenderer {
                        }
                }
 
-               if (isTree() && item.hasChildren()) {
+               if (isTree() && hasChildren(item)) {
                        if (event == IInternalWidget.MouseMove) {
                                if (overToggle(item, point)) {
                                        setHoverDetail("toggle"); //$NON-NLS-1$
@@ -300,7 +300,11 @@ public class DATableCellRenderer extends DefaultCellRenderer {
                return false;
        }
 
-       private boolean overCheck(GridItem item, Point point) {
+       protected boolean hasChildren(GridItem item) {
+               return item.hasChildren();
+       }
+
+       protected boolean overCheck(GridItem item, Point point) {
                point = new Point(point.x, point.y);
                point.x -= getBounds().x - 1;
                point.y -= getBounds().y - 1;
@@ -322,7 +326,7 @@ public class DATableCellRenderer extends DefaultCellRenderer {
                return false;
        }
 
-       private boolean overToggle(GridItem item, Point point) {
+       protected boolean overToggle(GridItem item, Point point) {
                point = new Point(point.x, point.y);
                point.x -= getBounds().x - 1;
                point.y -= getBounds().y - 1;
index 1d04365..7fae24b 100755 (executable)
@@ -40,6 +40,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 
 import org.eclipse.core.commands.ExecutionException;
@@ -72,7 +73,10 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator;
 import org.tizen.dynamicanalyzer.handlers.RealtimePerspectiveHandler;
 import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
 import org.tizen.dynamicanalyzer.swap.model.ByteUtils;
+import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo;
 import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants;
+import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData;
 import org.tizen.dynamicanalyzer.ui.page.BaseView;
@@ -81,6 +85,8 @@ import org.tizen.dynamicanalyzer.ui.page.ViewAction;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineView;
 import org.tizen.dynamicanalyzer.ui.widgets.DATabComposite;
 import org.tizen.sdblib.IDevice;
+import org.tizen.sdblib.exception.SdbCommandRejectedException;
+import org.tizen.sdblib.exception.TimeoutException;
 import org.tizen.sdblib.service.SyncResult;
 
 public class AnalyzerUtil {
@@ -659,12 +665,14 @@ public class AnalyzerUtil {
                byte[] result = null;
                byte[] front = null;
 
-               if (id == AnalyzerConstants.MSG_DATA_SYSTEM) {
+               if (id == DataChannelConstants.MSG_DATA_SYSTEM) {
                        front = makeSystemData(input);
-               } else if (id == AnalyzerConstants.MSG_DATA_SAMPLE) {
+               } else if (id == DataChannelConstants.MSG_DATA_SAMPLE) {
                        newLog = new String[2];
                        // pid
-                       newLog[0] = Integer.toString(AnalyzerManager.getProject().getPID());
+                       // newLog[0] =
+                       // Integer.toString(AnalyzerManager.getProject().getPID());
+                       newLog[0] = null;
                        newLog[1] = input[LogCenterConstants.PROFILING_LOG_PCADDR_INDEX];
 
                        int pid = initIntPayload(newLog[0]);
@@ -674,7 +682,7 @@ public class AnalyzerUtil {
 
                        front = ByteUtils.getByte(pid, pcAddr, tid, cpuNum);
                } else {
-                       if (id == AnalyzerConstants.MSG_PROBE_SCREENSHOT) {
+                       if (id == DataChannelConstants.MSG_PROBE_SCREENSHOT) {
                                System.out.println("debug ");
                        }
                        newLog = new String[10];
@@ -699,7 +707,7 @@ public class AnalyzerUtil {
                        // reserved
                        newLog[9] = CommonConstants.EMPTY;
 
-                       if (id == AnalyzerConstants.MSG_PROBE_LIFECYCLE) {
+                       if (id == DataChannelConstants.MSG_PROBE_LIFECYCLE) {
                                System.out.println();
                        }
                        int apiId = ApiNameManager.getApiId(newLog[0]);
@@ -720,7 +728,7 @@ public class AnalyzerUtil {
 
                byte[] rear = null;
                switch (id) {
-               case AnalyzerConstants.MSG_PROBE_MEMORY:
+               case DataChannelConstants.MSG_PROBE_MEMORY:
                        long size = Long
                                        .parseLong(input[LogCenterConstants.MEMORY_SIZE_INDEX]);
                        int apiType = Integer
@@ -729,7 +737,7 @@ public class AnalyzerUtil {
                        rear = ByteUtils.getByte(size, apiType, address);
                        result = ByteUtils.concatByteArray(front, rear);
                        break;
-               case AnalyzerConstants.MSG_PROBE_UICONTROL:
+               case DataChannelConstants.MSG_PROBE_UICONTROL:
                        String parentName = input[LogCenterConstants.USER_INTERFACE_CONTROL_LIST_PARENT_NAME_INDEX];
                        String parentClassName = input[LogCenterConstants.USER_INTERFACE_CONTROL_LIST_PARENT_CLASS_NAME_INDEX];
                        long parentPointer = addrToLong(input[LogCenterConstants.USER_INTERFACE_CONTROL_LIST_PARENT_POINTER_INDEX]);
@@ -740,7 +748,7 @@ public class AnalyzerUtil {
                                        parentPointer, childName, childClassName, childPointer);
                        result = ByteUtils.concatByteArray(front, rear);
                        break;
-               case AnalyzerConstants.MSG_PROBE_UIEVENT:
+               case DataChannelConstants.MSG_PROBE_UIEVENT:
                        int eventType = Integer
                                        .parseInt(input[LogCenterConstants.UI_EVENT_EVENT_TYPE]);
                        int detailType = Integer
@@ -752,7 +760,7 @@ public class AnalyzerUtil {
                        rear = ByteUtils.getByte(eventType, detailType, x, y, info1, info2);
                        result = ByteUtils.concatByteArray(front, rear);
                        break;
-               case AnalyzerConstants.MSG_PROBE_FILE:
+               case DataChannelConstants.MSG_PROBE_FILE:
                        long sizeValue = Long
                                        .parseLong(input[LogCenterConstants.RESOURCE_SIZE_INDEX]);
                        int fdValue = Integer
@@ -768,10 +776,10 @@ public class AnalyzerUtil {
                                        fileSize, filePath);
                        result = ByteUtils.concatByteArray(front, rear);
                        break;
-               case AnalyzerConstants.MSG_PROBE_NETWORK:
+               case DataChannelConstants.MSG_PROBE_NETWORK:
                        System.out.println("case AnalyzerConstants.MSG_PROBE_NETWORK");
                        break;
-               case AnalyzerConstants.MSG_PROBE_GLES20:
+               case DataChannelConstants.MSG_PROBE_GLES20:
                        apiType = Integer
                                        .parseInt(input[LogCenterConstants.GL_API_TYPE_INDEX]);
                        long elapsedTime = Long
@@ -780,17 +788,17 @@ public class AnalyzerUtil {
                        rear = ByteUtils.getByte(apiType, elapsedTime, contextValue);
                        result = ByteUtils.concatByteArray(front, rear);
                        break;
-               case AnalyzerConstants.MSG_PROBE_LIFECYCLE:
+               case DataChannelConstants.MSG_PROBE_LIFECYCLE:
                        result = front;
                        break;
-               case AnalyzerConstants.MSG_PROBE_SCREENSHOT:
+               case DataChannelConstants.MSG_PROBE_SCREENSHOT:
                        String imgFilePath = input[LogCenterConstants.SNAPSHOT_IMAGE_PATH_INDEX];
                        int orientation = Integer
                                        .parseInt(input[LogCenterConstants.SNAPSHOT_ROTATE_INDEX]);
                        rear = ByteUtils.getByte(imgFilePath, orientation);
                        result = ByteUtils.concatByteArray(front, rear);
                        break;
-               case AnalyzerConstants.MSG_PROBE_SCENE:
+               case DataChannelConstants.MSG_PROBE_SCENE:
                        String sceneName = input[LogCenterConstants.USER_INTERFACE_SCENE_TRANSFORMS_LIST_SCENE_NAME_INDEX];
                        String formName = input[LogCenterConstants.USER_INTERFACE_SCENE_TRANSFORMS_LIST_FORM_NAME_INDEX];
                        long formPointer = Long
@@ -807,13 +815,13 @@ public class AnalyzerUtil {
                                                        panelPointer, transitionTime, userTransitionTime);
                        result = ByteUtils.concatByteArray(front, rear);
                        break;
-               case AnalyzerConstants.MSG_DATA_SYSTEM:
+               case DataChannelConstants.MSG_DATA_SYSTEM:
                        result = front;
                        break;
-               case AnalyzerConstants.MSG_DATA_SAMPLE:
+               case DataChannelConstants.MSG_DATA_SAMPLE:
                        result = ByteUtils.concatByteArray(front, rear);
                        break;
-               case AnalyzerConstants.MSG_PROBE_THREAD:
+               case DataChannelConstants.MSG_PROBE_THREAD:
                        long pThreadId = Long
                                        .parseLong(input[LogCenterConstants.THREAD_PTHREAD_ID_INDEX]);
                        long ospThradId = Long
@@ -826,7 +834,7 @@ public class AnalyzerUtil {
                                        threadApiType);
                        result = ByteUtils.concatByteArray(front, rear);
                        break;
-               case AnalyzerConstants.MSG_PROBE_CUSTOM:
+               case DataChannelConstants.MSG_PROBE_CUSTOM:
                        int handle = Integer
                                        .parseInt(input[LogCenterConstants.CUSTOM_CHART_HANDLE]);
                        int customType = Integer
@@ -840,7 +848,7 @@ public class AnalyzerUtil {
                                        value);
                        result = ByteUtils.concatByteArray(front, rear);
                        break;
-               case AnalyzerConstants.MSG_PROBE_SYNC:
+               case DataChannelConstants.MSG_PROBE_SYNC:
                        long syncVal = Long
                                        .parseLong(input[LogCenterConstants.SYNC_VAL_INDEX]);
                        int syncType = Integer
@@ -873,7 +881,7 @@ public class AnalyzerUtil {
 
        private static byte[] makeSystemData(String[] input) {
                String[] newLog = new String[LogDataFactory
-                               .getLogColumnCountbyId(AnalyzerConstants.MSG_DATA_SYSTEM)];
+                               .getLogColumnCountbyId(DataChannelConstants.MSG_DATA_SYSTEM)];
                // energy
                newLog[0] = input[LogCenterConstants.DEVICE_ENERGY_INDEX];
                newLog[1] = input[LogCenterConstants.DEVICE_WIFI_INDEX];
@@ -1024,19 +1032,19 @@ public class AnalyzerUtil {
                String apiFilePath = AnalyzerPaths.TEMP_FOLDER_PATH + File.separator
                                + device.getSerialNumber() + CommonConstants.UNDERBAR
                                + AnalyzerConstants.API_NAME_FILE_NAME;
-//             try {
-//                     DACommunicator.getSelectedDevice().getIDevice()
-//                                     .becomeSuperUser(true);
-//             } catch (TimeoutException e) {
-//                     // TODO Auto-generated catch block
-//                     e.printStackTrace();
-//             } catch (SdbCommandRejectedException e) {
-//                     // TODO Auto-generated catch block
-//                     e.printStackTrace();
-//             } catch (IOException e) {
-//                     // TODO Auto-generated catch block
-//                     e.printStackTrace();
-//             }
+               try {
+                       device.setRootUser(true);
+               } catch (TimeoutException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (SdbCommandRejectedException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+
                SyncResult res = CommunicatorUtils.pull(device,
                                AnalyzerPaths.DA_API_MAP_PATH, apiFilePath);
                if (null != res && res.isOk()) {
@@ -1082,4 +1090,47 @@ public class AnalyzerUtil {
                String output = String.format("%x", value);
                System.out.print(output);
        }
+
+       public static String getBinaryPath(int pid) {
+               ProcessInfo processInfo = AnalyzerManager.getProject().getProcessInfo(
+                               pid);
+               if (null != processInfo) {
+                       return processInfo.getBinaryPath();
+               }
+               return null;
+       }
+
+       public static boolean isPieBuild(int pid) {
+               ProcessInfo processInfo = AnalyzerManager.getProject().getProcessInfo(
+                               pid);
+               if (null == processInfo) {
+                       return false;
+               }
+
+               String path = processInfo.getBinaryPath();
+               HashMap<String, BinaryInfo> binMap = DACommunicator.getSelectedApp()
+                               .getBinaryInfoMap();
+               BinaryInfo binInfo = binMap.get(path);
+               if (null == binInfo) {
+                       return false;
+               }
+               if (binInfo.getType() == 1) {
+                       return true;
+               }
+               return false;
+       }
+
+       public static boolean getBinaryBuildType(String binPath) {
+               HashMap<String, BinaryInfo> binMap = DACommunicator.getSelectedApp()
+                               .getBinaryInfoMap();
+               BinaryInfo binInfo = binMap.get(binPath);
+               if (null == binInfo) {
+                       return false;
+               }
+
+               if (binInfo.getType() == 1) {
+                       return true;
+               }
+               return false;
+       }
 }
diff --git a/org.tizen.dynamicanalyzer/theme/white/img/device.gif b/org.tizen.dynamicanalyzer/theme/white/img/device.gif
new file mode 100644 (file)
index 0000000..abedbb0
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/white/img/device.gif differ
diff --git a/org.tizen.dynamicanalyzer/theme/white/img/directory.gif b/org.tizen.dynamicanalyzer/theme/white/img/directory.gif
new file mode 100644 (file)
index 0000000..5e0cb94
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/white/img/directory.gif differ
diff --git a/org.tizen.dynamicanalyzer/theme/white/img/directory_link.gif b/org.tizen.dynamicanalyzer/theme/white/img/directory_link.gif
new file mode 100644 (file)
index 0000000..ac83747
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/white/img/directory_link.gif differ
diff --git a/org.tizen.dynamicanalyzer/theme/white/img/emulator.gif b/org.tizen.dynamicanalyzer/theme/white/img/emulator.gif
new file mode 100644 (file)
index 0000000..7559ba1
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/white/img/emulator.gif differ
diff --git a/org.tizen.dynamicanalyzer/theme/white/img/file.gif b/org.tizen.dynamicanalyzer/theme/white/img/file.gif
new file mode 100644 (file)
index 0000000..b84737e
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/white/img/file.gif differ
diff --git a/org.tizen.dynamicanalyzer/theme/white/img/file_link.gif b/org.tizen.dynamicanalyzer/theme/white/img/file_link.gif
new file mode 100644 (file)
index 0000000..e77773d
Binary files /dev/null and b/org.tizen.dynamicanalyzer/theme/white/img/file_link.gif differ