Merged ui_enhencement to ui_e4_migration
authordongkyu6 lee <dongkyu6.lee@samsung.com>
Thu, 19 May 2016 05:14:30 +0000 (14:14 +0900)
committerdongkyu6 lee <dongkyu6.lee@samsung.com>
Thu, 19 May 2016 05:14:30 +0000 (14:14 +0900)
Change-Id: Ic23682ad8526c6a528724ad17d054d0d9172d861

54 files changed:
1  2 
org.tizen.dynamicanalyzer.appearance/src/org/tizen/dynamicanalyzer/resources/ImageResources.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/combo/DACustomCombo.java
org.tizen.dynamicanalyzer.workbench/dynamic-analyzer/config/setting
org.tizen.dynamicanalyzer.workbench/dynamic-analyzer/tool/debuginfo.bat
org.tizen.dynamicanalyzer.workbench/dynamic-analyzer/tool/rpm2cpio.bat
org.tizen.dynamicanalyzer.workbench/dynamicanalyzer.product
org.tizen.dynamicanalyzer.workbench/src/org/tizen/dynamicanalyzer/common/path/PathManager.java
org.tizen.dynamicanalyzer.workbench/src/org/tizen/dynamicanalyzer/workbench/ApplicationWorkbenchWindowAdvisor.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerShellCommands.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/BaseCommunicator.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DeviceManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/control/StopTraceManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.properties
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/InformationViewLabels.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/InformationViewLabels.properties
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/MemoryPageLabels.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/MemoryPageLabels.properties
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/setting/Feature.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/DataChannelThread.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/LogParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/appStartup/AppStartupTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/MemoryAllocationTraceTableView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/MemoryChartView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/MemoryDetailsTableView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/MemoryMapView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/MemoryPage.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/MemoryStatisticsTableView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/chart/HeapMemoryChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/chart/MemoryChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/chart/MemoryChartBoard.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/chart/ProcessMemoryChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/chart/SystemMemoryChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/data/MemoryDataManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/data/ProcessMemoryDBTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/data/SystemMemoryDBTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/table/MemoryAllocationTraceTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/table/MemoryDetailsTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/table/MemoryMapTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/table/MemoryStatisticsTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/GLPage.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadAPIListView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ProcessMemoryChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineTableView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/AboutDialog.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/Toolbar.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/setting/SettingDialogTemplatePage.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableComposite.java
os_stubs/macos/dynamic-analyzer.sh
package/build.linux

@@@ -587,66 -504,6 +587,64 @@@ public class ImageResources 
        public static final Image FILTER_DIALOG_DELETE_FILTER_HOVER = getPngImage("btn_delete_filter_hover");   //$NON-NLS-1$
        public static final Image FILTER_DIALOG_DELETE_FILTER_PUSH = getPngImage("btn_delete_filter_push");     //$NON-NLS-1$
  
-       
-       
 +      /** tooltip **/
 +      public static final Image TOOLTIP_INFO_FEATURELIST_NORMAL = getPngImage("tooltip_icon-nor");
 +      public static final Image TOOLTIP_INFO_FEATURELIST_HOVER = getPngImage("tooltip_icon-hov");
 +
 +      /** etc **/
 +      public static final Image DELETE = getPngImage("delete");
 +      
 +      
 +      /** new timeline **/
 +      public static final Image APP_NOR = getPngImage("app_nor");
 +      public static final Image APP_OVER = getPngImage("app_over");
 +      public static final Image APP_SEL = getPngImage("app_sel");
 +      public static final Image BOX_TIME_NOW = getPngImage("box_time_now");
 +      public static final Image BTN_IC_CONNECT_ICON = getPngImage("btn_ic_connect_icon");
 +      public static final Image CAPTURE_POINT = getPngImage("capture_point");
 +      public static final Image DA_INFO_ICON_DIM = getPngImage("da_info_icon_dim");
 +      public static final Image DA_INFO_ICON_NOR = getPngImage("da_info_icon_nor");
 +      public static final Image DA_INFO_ICON_OVER = getPngImage("da_info_icon_over");
 +      public static final Image DA_INFO_ICON_SEL = getPngImage("da_info_icon_sel");
 +      public static final Image DA_PREFERENCES_ICON_DIM = getPngImage("da_preferences_icon_dim");
 +      public static final Image DA_PREFERENCES_ICON_NOR = getPngImage("da_preferences_icon_nor");
 +      public static final Image DA_PREFERENCES_ICON_OVER = getPngImage("da_preferences_icon_over");
 +      public static final Image DA_PREFERENCES_ICON_SEL = getPngImage("da_preferences_icon_sel");
 +      public static final Image DA_SCREENSHOT_ICON_DIM = getPngImage("da_screenshot_icon_dim");
 +      public static final Image DA_SCREENSHOT_ICON_FOC = getPngImage("da_screenshot_icon_foc");
 +      public static final Image DA_SCREENSHOT_ICON_NOR = getPngImage("da_screenshot_icon_nor");
 +      public static final Image DA_SCREENSHOT_ICON_OVER = getPngImage("da_screenshot_icon_over");
 +      public static final Image DROP_ARROW_DOWN_EDIT = getPngImage("drop_arrow_down_edit");
 +      public static final Image DROP_ARROW_DOWN_NOR = getPngImage("drop_arrow_down_nor");
 +      public static final Image DROP_ARROW_UP_NORL = getPngImage("drop_arrow_up_norl");
 +      public static final Image DROP_ARROW_UP_SEL = getPngImage("drop_arrow_up_sel");
 +      public static final Image DVICE_MOBILE_NOR = getPngImage("dvice_mobile_nor");
 +      public static final Image DVICE_MOBILE_OVER = getPngImage("dvice_mobile_over");
 +      public static final Image DVICE_MOBILE_SEL = getPngImage("dvice_mobile_sel");
 +      public static final Image DVICE_TV_NOR = getPngImage("dvice_tv_nor");
 +      public static final Image DVICE_TV_OVER = getPngImage("dvice_tv_over");
 +      public static final Image DVICE_TV_SEL = getPngImage("dvice_tv_sel");
 +      public static final Image DVICE_WEARABLE_NOR = getPngImage("dvice_wearable_nor");
 +      public static final Image DVICE_WEARABLE_OVER = getPngImage("dvice_wearable_over");
 +      public static final Image DVICE_WEARABLE_SEL = getPngImage("dvice_wearable_sel");
 +      public static final Image EMULATOR_TITLE_BG_02 = getPngImage("emulator_title_bg_02");
 +      public static final Image END_MARKER = getPngImage("end_marker");
 +      public static final Image IC_ZOOM = getPngImage("ic_zoom");
 +      public static final Image IC_ZOOM_OUT = getPngImage("ic_zoom_out");
 +      public static final Image MARKER = getPngImage("marker");
 +      public static final Image P_ARROW_B = getPngImage("p_arrow_b");
 +      public static final Image P_ARROW_R = getPngImage("p_arrow_r");
 +      public static final Image START_MARKER = getPngImage("start_marker");
 +      public static final Image TIP_BOX_ARROW = getPngImage("tip_box_arrow");
 +      public static final Image TOGGLE_OFF = getPngImage("toggle_off");
 +      public static final Image TOGGLE_ON = getPngImage("toggle_on");
 +      public static final Image TOOLTIP_ICON_FOC = getPngImage("tooltip_icon_foc");
 +      public static final Image TOOLTIP_ICON_NOR = getPngImage("tooltip_icon_nor");
 +      public static final Image ZOOM_IN_ICON = getPngImage("zoom_in_icon");
 +      public static final Image ZOOM_IN_ICON_MV = getPngImage("zoom_in_icon_mv");
 +      public static final Image ZOOM_OUT_ICON = getPngImage("zoom_out_icon");
 +      public static final Image ZOOM_OUT_ICON_MV = getPngImage("zoom_out_icon_mv");
 +
        private static Image getImage(String pluginId, String folderName,
                        String imageName, String extension) {
                if (null == imageRegistry.get(imageName)
@@@ -4,27 -4,23 +4,27 @@@ Debug Print|
  Available Target List|mobile|wearable
  Selected Target|mobile
  Options Selected Feature List|5002:0
- Selected Preferences|2001|2002:100|2004
++Selected Preferences|2001
  Default Feature List|2|3|103
  Total Overhead Range|1000000|3000000|7000000|15000000
  mobile|Protocol Version|4.0
  mobile|Available Template List|1|2|3|4|5|6|7|8|9|10|11
  mobile|Selected Template|1
- mobile|Available Feature List|1|4|5|6|7|8|9|102|200|201|202|203|204|206
+ mobile|Available Feature List|1|1000|4|5|6|7|8|9|100|101|1001|301|200|201|202|203|204|206
 +mobile|Available FlatFeature List|101|102|103|201|202|203|301|302|401|501|502|601|602|603|701|702|801|802
  mobile|Selected Feature List|1|5|1000:1000|100|101|1001:10
- mobile|Available Chart List|CPU|CPU core|CPU frequency|Heap allocation|Process Size|Memory|Screenshot|UI event|Disk IO|Network IO|Device|Energy
+ mobile|Available Chart List|CPU|CPU core|CPU frequency|Memory|Process Size|Heap allocation|Screenshot|UI event|Disk IO|Network IO|Device|Energy
  wearable|Protocol Version|3.0
  wearable|Available Template List|1|2|3|4|5|6|7|8|9|10|11
  wearable|Selected Template|1
- wearable|Available Feature List|1|1000|4|5|6|7|8|9|100|101|1001|102|200|201|202|203|204|206
+ wearable|Available Feature List|1|1000|4|5|6|7|8|9|100|101|1001|301|200|201|202|203|204|206
 +wearable|Available FlatFeature List|101|102|103|201|202|203|301|302|401|501|502|601|602|603|701|702|801|802
  wearable|Selected Feature List|1|5|1000:1000|100|101|1001:10
- wearable|Available Chart List|CPU|CPU core|CPU frequency|Heap allocation|Process Size|Memory|Screenshot|UI event|Disk IO|Network IO|Device|Energy
+ wearable|Available Chart List|CPU|CPU core|CPU frequency|Memory|Process Size|Heap allocation|Screenshot|UI event|Disk IO|Network IO|Device|Energy
  tv|Protocol Version|3.0
- tv|Available Template List|1|3|9|10
+ tv|Available Template List|1|2|3|4|5|6|7|8|10
  tv|Selected Template|1
- tv|Available Feature List|1|1000|4|5|6|7|8|9|100|101|1001|204
+ tv|Available Feature List|1|1000|4|5|6|7|100|101|1001|102|200|201|202|203
 +tv|Available FlatFeature List|101|102|103|201|202|203|301|302|401|501|502|601|602|603|701|702|801|802
  tv|Selected Feature List|1|5|1000:1000|100|101|1001:10
- tv|Available Chart List|CPU|CPU core|CPU frequency|Heap allocation|Process Size|Memory|Screenshot|UI event|Disk IO|Network IO|Device|Energy
+ tv|Available Chart List|CPU|CPU core|CPU frequency|Heap allocation|Process Size|Memory|Screenshot|Disk IO|Network IO
@@@ -1,72 -1,56 +1,72 @@@
- <?xml version="1.0" encoding="UTF-8"?>\r
- <?pde version="3.5"?>\r
\r
- <product name="%DynamicAnalyzer" uid="org.tizen.dynamicanalyzer.workbench.product" id="org.tizen.dynamicanalyzer.workbench.product" application="org.tizen.dynamicanalyzer.workbench.application" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="false">\r
\r
-    <aboutInfo>\r
-       <image path="/org.tizen.dynamicanalyzer.workbench/icons/about_tizen_sdk.png"/>\r
-       <text>\r
-          %AboutDescription\r
-       </text>\r
-    </aboutInfo>\r
\r
-    <configIni use="default">\r
-    </configIni>\r
\r
-    <launcherArgs>\r
-       <programArgs>-data -clearPersistedState @noDefault\r
-       </programArgs>\r
-       <vmArgs>-XX:MaxPermSize=64m\r
- -Xms256m\r
- -Xmx512m\r
- -XX:+UseParNewGC\r
- -XX:+UseConcMarkSweepGC\r
-       </vmArgs>\r
-       <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts\r
-       </vmArgsMac>\r
-    </launcherArgs>\r
\r
-    <windowImages i16="/org.tizen.dynamicanalyzer.workbench/icons/16_DA_icon.png" i32="/org.tizen.dynamicanalyzer.workbench/icons/32_DA_icon.png" i48="/org.tizen.dynamicanalyzer.workbench/icons/48_DA_icon.png" i64="/org.tizen.dynamicanalyzer.workbench/icons/64_DA_icon.png" i128="/org.tizen.dynamicanalyzer.workbench/icons/128_DA_icon.png"/>\r
\r
-    <launcher name="dynamic-analyzer">\r
-       <macosx icon="/org.tizen.dynamicanalyzer.workbench/icons/DA_icon.icns"/>\r
-       <solaris/>\r
-       <win useIco="true">\r
-          <ico path="/org.tizen.dynamicanalyzer.workbench.feature/rootfiles/resources/icons/tizen-sdk-dynamicanalyzer.ico"/>\r
-          <bmp/>\r
-       </win>\r
-    </launcher>\r
\r
-    <vm>\r
-       <windows include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7</windows>\r
-    </vm>\r
\r
-    <plugins>\r
-    </plugins>\r
\r
-    <features>\r
-       <feature id="org.eclipse.rcp"/>\r
-       <feature id="org.tizen.dynamicanalyzer.workbench.feature"/>\r
-       <feature id="org.eclipse.emf.ecore"/>\r
-       <feature id="org.eclipse.emf.common"/>\r
-       <feature id="org.eclipse.e4.rcp"/>\r
-    </features>\r
\r
-    <configurations>\r
-       <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />\r
-       <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />\r
-       <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />\r
-       <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />\r
-       <plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="0" />\r
-       <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />\r
-       <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />\r
-    </configurations>\r
\r
-    <preferencesInfo>\r
-       <targetfile overwrite="false"/>\r
-    </preferencesInfo>\r
\r
-    <cssInfo>\r
-    </cssInfo>\r
\r
- </product>\r
+ <?xml version="1.0" encoding="UTF-8"?>
+ <?pde version="3.5"?>
+ <product name="%DynamicAnalyzer" uid="org.tizen.dynamicanalyzer.workbench.product" id="org.tizen.dynamicanalyzer.workbench.product" application="org.tizen.dynamicanalyzer.workbench.application" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="false">
+    <aboutInfo>
+       <image path="/org.tizen.dynamicanalyzer.workbench/icons/about_tizen_sdk.png"/>
+       <text>
+          %AboutDescription
+       </text>
+    </aboutInfo>
+    <configIni use="default">
+    </configIni>
+    <launcherArgs>
 -      <programArgs>-data @noDefault</programArgs>
++      <programArgs>-data -clearPersistedState @noDefault
++      </programArgs>
+       <vmArgs>-XX:MaxPermSize=64m
+ -Xms256m
+ -Xmx512m
+ -XX:+UseParNewGC
 --XX:+UseConcMarkSweepGC</vmArgs>
 -      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
++-XX:+UseConcMarkSweepGC
++      </vmArgs>
++      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
++      </vmArgsMac>
+    </launcherArgs>
+    <windowImages i16="/org.tizen.dynamicanalyzer.workbench/icons/16_DA_icon.png" i32="/org.tizen.dynamicanalyzer.workbench/icons/32_DA_icon.png" i48="/org.tizen.dynamicanalyzer.workbench/icons/48_DA_icon.png" i64="/org.tizen.dynamicanalyzer.workbench/icons/64_DA_icon.png" i128="/org.tizen.dynamicanalyzer.workbench/icons/128_DA_icon.png"/>
+    <launcher name="dynamic-analyzer">
 -      <linux icon="/org.tizen.dynamicanalyzer.workbench/icons/linux_icon.xpm"/>
+       <macosx icon="/org.tizen.dynamicanalyzer.workbench/icons/DA_icon.icns"/>
+       <solaris/>
+       <win useIco="true">
+          <ico path="/org.tizen.dynamicanalyzer.workbench.feature/rootfiles/resources/icons/tizen-sdk-dynamicanalyzer.ico"/>
+          <bmp/>
+       </win>
+    </launcher>
+    <vm>
+       <windows include="true">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7</windows>
+    </vm>
+    <plugins>
+    </plugins>
+    <features>
+       <feature id="org.eclipse.rcp"/>
+       <feature id="org.tizen.dynamicanalyzer.workbench.feature"/>
++      <feature id="org.eclipse.emf.ecore"/>
++      <feature id="org.eclipse.emf.common"/>
++      <feature id="org.eclipse.e4.rcp"/>
+    </features>
+    <configurations>
+       <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />
+       <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
++      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
++      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
++      <plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="0" />
++      <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
+       <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
+    </configurations>
++   <preferencesInfo>
++      <targetfile overwrite="false"/>
++   </preferencesInfo>
++
++   <cssInfo>
++   </cssInfo>
++
+ </product>
@@@ -94,9 -98,11 +96,13 @@@ public class ApplicationWorkbenchWindow
                configurer.setInitialSize(new Point(width, height));
                configurer.setShowStatusLine(false);
                configurer.setShellStyle(SWT.SHELL_TRIM);
 +              configurer.setTitle("Dynamic Analyzer");
 +              configurer.setShowCoolBar(false);
                configurer.setShowFastViewBars(false);
+               if (PathManager.isPlatformSDK())
+                       configurer.setTitle(WorkbenchLabels.DA_PLATFORM_WORKBENCH_TITLE);
+               else
+                       configurer.setTitle(WorkbenchLabels.DA_PUBLIC_WORKBENCH_TITLE);
        }
  
        public void postWindowOpen() {
index 4cade1b,d45417a..4fe3522
mode 100755,100644..100755
@@@ -32,8 -32,9 +32,10 @@@ import org.tizen.dynamicanalyzer.common
  import org.tizen.dynamicanalyzer.communicator.DACommunicator;
  import org.tizen.dynamicanalyzer.handlers.ReplayManager;
  import org.tizen.dynamicanalyzer.handlers.UIAction;
 +import org.tizen.dynamicanalyzer.nl.MenuBarLabels;
  import org.tizen.dynamicanalyzer.project.Project;
+ import org.tizen.dynamicanalyzer.setting.Feature;
+ import org.tizen.dynamicanalyzer.setting.SettingDataManager;
  import org.tizen.dynamicanalyzer.shortcut.ShortCutManager;
  import org.tizen.dynamicanalyzer.swap.communicator.DataChannelThread;
  import org.tizen.dynamicanalyzer.swap.logparser.DataManagerRegistry;
@@@ -41,10 -42,9 +43,11 @@@ import org.tizen.dynamicanalyzer.swap.l
  import org.tizen.dynamicanalyzer.swap.logparser.MessageParser;
  import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackInserter;
  import org.tizen.dynamicanalyzer.ui.info.screenshot.ScreenshotTimer;
+ import org.tizen.dynamicanalyzer.ui.memory.data.HeapDataManager;
  import org.tizen.dynamicanalyzer.ui.page.BaseView;
 +import org.tizen.dynamicanalyzer.ui.page.MenuBar;
  import org.tizen.dynamicanalyzer.ui.page.UpdateViewTimer;
 +import org.tizen.dynamicanalyzer.ui.timeline.dlog.DADlogReceiver;
  import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar;
  import org.tizen.dynamicanalyzer.util.Logger;
  import org.tizen.dynamicanalyzer.util.WorkbenchUtil;
index ea5b6cb,457e78c..70c6691
mode 100644,100755..100644
@@@ -149,15 -149,19 +149,16 @@@ public class AnalyzerLabels extends NL
        public static String LICENSE_DIALOG_NOT_FOUND;
  
        public static String ABOUT_DIALOG_TITLE;
 -      public static String ABOUT_DIALOG_BUILD_ID_TAB;
 -      public static String ABOUT_DIALOG_VERSION_TAB;
 -      public static String ABOUT_DIALOG_VISIT;
 -      public static String ABOUT_DIALOG_SITE_URL;
 -      public static String ABOUT_DIALOG_LICENSE;
 -      public static String ABOUT_DIALOG_REPORT;
 -      public static String ABOUT_DIALOG_CONTACT_US;
 -      public static String ABOUT_DIALOG_DEVELOPER_TIZEN;
 -      public static String ABOUT_DIALOG_TIZEN_COMMUNITY;
 -      public static String ABOUT_DIALOG_TIZEN_PERF_DESK;
 -      public static String ABOUT_DIALOG_DEVELOPER_TIZEN_ADDR;
 -      public static String ABOUT_DIALOG_TIZEN_COMMUNITY_ADDR;
 -      public static String ABOUT_DIALOG_TIZEN_PERF_DESK_ADDR;
++
 +      public static String ABOUT_DIALOG_TIZEN;
 +      public static String ABOUT_DIALOG_DA; 
 +      public static String ABOUT_DIALOG_SDK_VERSION; 
 +      public static String ABOUT_DIALOG_DA_VERSION;
 +      public static String ABOUT_DIALOG_BUILD_TIME;
 +      public static String ABOUT_DIALOG_TIZEN_SITE;
 +      public static String ABOUT_DIALOG_TIZEN_SITE_LINK;
 +      public static String ABOUT_DIALOG_RELEASE_NOTE;
 +      public static String ABOUT_DIALOG_RELEASE_NOTE_LINK;
  
        public static String CONFIGURATION_DIALOG_AUTO_RANGE;
        public static String CONFIGURATION_DIALOG_INTERNAL_LEAK;
index c94e679,5ecbcdd..32bfee3
mode 100644,100755..100644
@@@ -113,16 -113,20 +113,19 @@@ COOLBAR_AREA_CONFIGURATION_OPTION=Optio
  
  LICENSE_DIALOG_NOT_FOUND=License file not found
  
 -ABOUT_DIALOG_TITLE=Tizen SDK
 -ABOUT_DIALOG_BUILD_ID_TAB=Build id\t: 
 -ABOUT_DIALOG_VERSION_TAB=Version\t: 
 -ABOUT_DIALOG_VISIT=Visit 
 -ABOUT_DIALOG_SITE_URL=https://developer.tizen.org
 -ABOUT_DIALOG_LICENSE=License
 -ABOUT_DIALOG_REPORT=Report issue
 -ABOUT_DIALOG_CONTACT_US=Contact us\t:
 -ABOUT_DIALOG_DEVELOPER_TIZEN=developer.tizen.org
 -ABOUT_DIALOG_TIZEN_COMMUNITY=Tizen community
 -ABOUT_DIALOG_TIZEN_PERF_DESK=Tizen performance helpdesk
 +ABOUT_DIALOG_TITLE=About Tizen Dynamic Analyzer
 +ABOUT_DIALOG_TIZEN=Tizen
 +ABOUT_DIALOG_DA=Dynamic Analyzer 
 +ABOUT_DIALOG_SDK_VERSION=SDK Version 
 +ABOUT_DIALOG_DA_VERSION=DA Version
 +ABOUT_DIALOG_BUILD_TIME=Build Time
 +ABOUT_DIALOG_TIZEN_SITE=Tizen Site
 +ABOUT_DIALOG_TIZEN_SITE_LINK=http://www.tizen.org
 +ABOUT_DIALOG_RELEASE_NOTE=Release Note
 +ABOUT_DIALOG_RELEASE_NOTE_LINK=http://developer.tizen.org
+ ABOUT_DIALOG_DEVELOPER_TIZEN_ADDR=http://developer.tizen.org/forums/sdk-ide
+ ABOUT_DIALOG_TIZEN_COMMUNITY_ADDR=http://mosaic.sec.samsung.net/club/club.main.index.screen?p_club_id=30689
+ ABOUT_DIALOG_TIZEN_PERF_DESK_ADDR=http://mosaic.sec.samsung.net/club/swc_perfdesk.club
  
  CONFIGURATION_DIALOG_AUTO_RANGE=Auto Range View Transmit
  CONFIGURATION_DIALOG_INTERNAL_LEAK=Internal Leak Analysis
@@@ -102,8 -102,10 +102,11 @@@ public class InformationViewLabels exte
        public static String APP_STARTUP_VIEW_END_TIME;
        public static String APP_STARTUP_VIEW_ELAPSED_TIME;
        
-       
 +      public static String DLOG_VIEW_TITLE;
+       public static String APP_PROCESS_VIEW_TITLE;
+       public static String APP_PROCESS_VIEW_PROCESS_NAME;
+       public static String APP_PROCESS_VIEW_PID;
+       public static String APP_PROCESS_VIEW_CPU;
        static {
                // initialize resource bundle
                NLS.initializeMessages(BUNDLE_NAME, InformationViewLabels.class);
@@@ -70,4 -70,7 +70,9 @@@ APP_STARTUP_VIEW_START_TIME=Start Tim
  APP_STARTUP_VIEW_END_TIME=End Time
  APP_STARTUP_VIEW_ELAPSED_TIME=Elapsed Time
  
 -APP_PROCESS_VIEW_PID = PID
 -APP_PROCESS_VIEW_CPU = CPU
 +DLOG_VIEW_TITLE=Dlog
++
+ APP_PROCESS_VIEW_TITLE=Process
+ APP_PROCESS_VIEW_PROCESS_NAME=Name
++APP_PROCESS_VIEW_PID=PID
++APP_PROCESS_VIEW_CPU=CPU
index cec1f5e,8d1b174..047a10b
mode 100644,100755..100644
@@@ -33,8 -33,9 +33,9 @@@ import org.tizen.dynamicanalyzer.nl.Ana
  import org.tizen.dynamicanalyzer.resources.ColorResources;
  import org.tizen.dynamicanalyzer.shortcut.ShortCutManager;
  import org.tizen.dynamicanalyzer.swap.logparser.DataManagerRegistry;
+ import org.tizen.dynamicanalyzer.ui.memory.data.HeapDataManager;
  import org.tizen.dynamicanalyzer.ui.memory.data.MemoryDataManager;
 -import org.tizen.dynamicanalyzer.ui.page.ScreenshotTabComposite;
 +import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineTableView;
  import org.tizen.dynamicanalyzer.widgets.da.view.DAPageComposite;
  import org.tizen.dynamicanalyzer.widgets.da.view.DATabComposite;
  
@@@ -58,57 -59,68 +59,68 @@@ public class MemoryPage extends DAPageC
  
        public MemoryPage(Composite parent, int style) {
                super(parent, style);
 -              
                setTitle(AnalyzerLabels.COOLBAR_AREA_MEMORY);
                this.setData(DAPageComposite.KEY_TOOLTIP, ShortCutManager.COOLBAR_AREA_GRAPHICS_TOOLTIP);
 -              this.setBackground(ColorResources.CONFIGURATION_TABLE_COVER_BACKGROUND_COLOR);
 +              this.setBackground(ColorResources.WHITE);
                this.setLayout(new FillLayout());
-               
++
                baseForm = new SashForm(this, SWT.VERTICAL);
                baseForm.setLayout(new FillLayout());
                baseForm.setForeground(ColorResources.TAB_SELECTED_COLOR_START);
- //            ((FillLayout) getLayout()).marginHeight = 15;
- //            ((FillLayout) getLayout()).marginWidth = 5;
 -              ((FillLayout) getLayout()).marginHeight = 15;
 -              ((FillLayout) getLayout()).marginWidth = 5;
--              
-               topForm = new SashForm(baseForm, SWT.HORIZONTAL);
-               memoryChartView = new MemoryChartView(topForm, SWT.NONE);
++
+               memoryChartView = new MemoryChartView(baseForm, SWT.NONE);
                addView(memoryChartView);
                
                bottomForm = new SashForm(baseForm, SWT.HORIZONTAL);
-               bottomForm.setForeground(ColorResources.TAB_SELECTED_COLOR_START);
-               bottomForm.setLayout(new FillLayout());
                
-               DATabComposite memoryLeftTabView = new DATabComposite(bottomForm, SWT.NONE, false, true);
+               bottomLeftForm = new SashForm(bottomForm, SWT.NONE);
+               bottomLeftForm.setForeground(ColorResources.TAB_SELECTED_COLOR_START);
+               bottomLeftForm.setLayout(new FillLayout());
+               
+               bottomRightForm = new SashForm(bottomForm, SWT.NONE);
+               bottomRightForm.setForeground(ColorResources.TAB_SELECTED_COLOR_START);
+               bottomRightForm.setLayout(new FillLayout());
+               
+               DATabComposite memoryTabView = new DATabComposite(bottomLeftForm, SWT.NONE, false);
+               memoryTabView.setTabWidth(130);
                {
-                       memoryDetailsTableView = new MemoryDetailsTableView(memoryLeftTabView.getContentComposite(), SWT.NONE);
-                       memoryLeftTabView.addView(memoryDetailsTableView, false);
+                       memoryDetailsTableView = new MemoryDetailsTableView(memoryTabView.getContentComposite(), SWT.NONE);
 -                      addView(memoryDetailsTableView);
+                       memoryTabView.addView(memoryDetailsTableView, false);
 +                      addView(memoryDetailsTableView);
                        
-                       memoryStatisticsTableView = new MemoryStatisticsTableView(memoryLeftTabView.getContentComposite(), SWT.NONE);
-                       memoryLeftTabView.addView(memoryStatisticsTableView, false);
+                       memoryStatisticsTableView = new MemoryStatisticsTableView(memoryTabView.getContentComposite(), SWT.NONE);
 -                      addView(memoryStatisticsTableView);
+                       memoryTabView.addView(memoryStatisticsTableView, false);
 +                      addView(memoryStatisticsTableView);
  
-                       memoryAllocationTraceTableView = new MemoryAllocationTraceTableView(memoryLeftTabView.getContentComposite(), SWT.NONE);
-                       memoryLeftTabView.addView(memoryAllocationTraceTableView, false);
+                       memoryAllocationTraceTableView = new MemoryAllocationTraceTableView(memoryTabView.getContentComposite(), SWT.NONE);
 -                      addView(memoryAllocationTraceTableView);
+                       memoryTabView.addView(memoryAllocationTraceTableView, false);
 +                      addView(memoryAllocationTraceTableView);
                }
-               addView(memoryLeftTabView);
--              
-               DATabComposite memoryRightTabView = new DATabComposite(bottomForm, SWT.NONE, false, true);
++              addView(memoryTabView);
++
+               DATabComposite memoryMapCallStackView = new DATabComposite(bottomRightForm, SWT.NONE, false);
+               memoryMapCallStackView.setTabWidth(100);
                {
-                       memoryMapView = new MemoryMapView(memoryRightTabView.getContentComposite(), SWT.NONE);
-                       memoryRightTabView.addView(memoryMapView);
+                       memoryMapView = new MemoryMapView(memoryMapCallStackView.getContentComposite(), SWT.NONE);
                        addView(memoryMapView);
+                       memoryMapCallStackView.addView(memoryMapView, false);
                        
-                       memoryCallStackView = new MemoryCallStackView(memoryRightTabView.getContentComposite(), SWT.NONE);
-                       memoryRightTabView.addView(memoryCallStackView);
+                       memoryCallStackView = new MemoryCallStackView(memoryMapCallStackView.getContentComposite(), SWT.NONE);
                        addView(memoryCallStackView);
+                       memoryMapCallStackView.addView(memoryCallStackView, false);
                }
-               addView(memoryRightTabView);
++              addView(memoryMapCallStackView);
+               
+               baseForm.setWeights(new int[] { 60, 40 });
+               bottomForm.setWeights(new int[] { 75, 25 });
                
-               topForm.setSashWidth(AnalyzerConstants.SASH_WIDTH);
+               baseForm.setSashWidth(AnalyzerConstants.SASH_WIDTH);
                bottomForm.setSashWidth(AnalyzerConstants.SASH_WIDTH);
+               bottomLeftForm.setSashWidth(AnalyzerConstants.SASH_WIDTH);
+               bottomRightForm.setSashWidth(AnalyzerConstants.SASH_WIDTH);
                
                DataManagerRegistry.registerPageDataManager(MemoryDataManager.getInstance());
+               DataManagerRegistry.registerPageDataManager(HeapDataManager.getInstance());
        }
  
        @Override
index ac030c0,7f49a5f..c345c2a
mode 100644,100755..100644
@@@ -182,69 -176,247 +176,247 @@@ public class MemoryDataManager extends 
                                        if (libraryAllocByte == null) {\r
                                                libraryAllocByte = new Long(0);\r
                                        }\r
-                                       libraryAllocByteMap.get(log.getPid()).put(libraryInfo.getID(),\r
-                                                       libraryAllocByte + size);\r
                                }\r
-                               allocationSeriesDataSetMap.put(address, size);\r
-                       } catch (NumberFormatException ne) {\r
-                               Logger.exception(ne);\r
+                               else {\r
+                                       libraryAllocByte = new Long(0);\r
+                               }\r
+                               \r
+                               libraryAllocByteMap.get(pid).put(binaryId,libraryAllocByte + allocsize);\r
+                       }\r
+                       \r
+                       if(!allocAddressDataMap.containsKey(keystring)) {\r
+                               List<List<Object>> newlist = new ArrayList<List<Object>>();\r
+                               List<Object> onedata = new ArrayList<Object>();\r
+                               onedata.add(tracetime);\r
+                               onedata.add(allocsize);\r
+                               onedata.add(binaryId);\r
+                               \r
+                               newlist.add(onedata);\r
+                               allocAddressDataMap.put(keystring, newlist);\r
+                       }\r
+                       else {\r
+                               List<Object> onedata = new ArrayList<Object>();\r
+                               onedata.add(tracetime);\r
+                               onedata.add(allocsize);\r
+                               onedata.add(binaryId);\r
+                               \r
+                               allocAddressDataMap.get(keystring).add(onedata);\r
+                       }\r
+               } catch (NumberFormatException ne) {\r
+                       Logger.exception(ne);\r
+               }\r
+       }\r
+       \r
+       private void minusFreeData(MemoryData log) {\r
+               int pid = log.getPid();\r
+               long address = log.getAddress();\r
+               long tracetime = log.getTime();\r
+               \r
+               String keystring = String.format("%d-%d", pid, address);\r
+               \r
+               if (!allocAddressDataMap.containsKey(keystring)) {\r
+                       return;\r
+               }\r
+               \r
+               long allocsize = -1;\r
+               int alloclib = 0;\r
+               \r
+               if(allocAddressDataMap.containsKey(keystring)) {\r
+                       int listsize = allocAddressDataMap.get(keystring).size();\r
+                       for(int j = 0; j < listsize ; j++) {\r
+                               List<Object> onedata = allocAddressDataMap.get(keystring).get(j);\r
+                               \r
+                               if((Long) onedata.get(0)  <= tracetime) {\r
+                                       allocsize = (Long) onedata.get(1);\r
+                                       alloclib = (Integer) onedata.get(2);\r
+                                       allocAddressDataMap.get(keystring).remove(j);\r
+                                       break;\r
+                               }\r
                        }\r
-               } else if (MEM_API_TYPE_FREE == fdApiType) {\r
-                       if (!allocationSeriesDataSetMap.containsKey(address)) {\r
-                               return;\r
+               }\r
+               \r
+               if(allocsize == -1)\r
+                       return;\r
+               \r
+               if (alloclib == appAllocSeriesID) {\r
+                       Long allocByte = mainAllocByteMap.get(pid);\r
+                       mainAllocByteMap.put(pid, allocByte - allocsize);\r
+               } else {\r
+                       if(libraryAllocByteMap.get(pid).containsKey(alloclib)) {\r
+                               Long libraryAllocByte = libraryAllocByteMap.get(pid).get(alloclib);\r
+                               if (libraryAllocByte != null) {\r
+                                       long calsize = libraryAllocByte - allocsize;\r
+                                       \r
+                                       if (calsize < 0){\r
+                                               calsize = 0;\r
+                                       }\r
+                                       libraryAllocByteMap.get(pid).put(alloclib,calsize);\r
+                               }\r
+                               else {\r
+                                       libraryAllocByte = new Long(0);\r
+                                       libraryAllocByteMap.get(pid).put(alloclib,libraryAllocByte);\r
+                               }\r
                        }\r
-                       size = allocationSeriesDataSetMap.get(address);\r
+               }\r
+       }\r
  \r
-                       if (libraryInfo == null) {\r
-                               allocByteMap.put(log.getPid(), allocByte - size);\r
-                       } else {\r
-                               Long libraryAllocByte = libraryAllocByteMap.get(log.getPid()).get(\r
-                                               libraryInfo.getID());\r
-                               libraryAllocByteMap.get(log.getPid()).put(libraryInfo.getID(),\r
-                                               libraryAllocByte - size);\r
+       private void GetAllocationData(List<LogData> memoryLogList) {\r
+               int size = memoryLogList.size();\r
+               for (int i = 0; i < size; i++) {\r
+                       MemoryData logData = (MemoryData) memoryLogList.get(i);\r
+                       \r
+                       long errorNo = logData.getErrno();\r
+                       \r
+                       if(errorNo != 0)\r
+                               continue;\r
+                       \r
+                       int pid = logData.getPid();\r
+                       int memApiType = logData.getMemoryApiType();\r
+                       \r
+                       if (mainAllocByteMap.get(pid) == null) {\r
+                               mainAllocByteMap.put(Integer.valueOf(pid), new Long(0));\r
+                               libraryAllocByteMap.put(Integer.valueOf(pid), new HashMap<Integer, Long>());\r
+                       }\r
+                       \r
+                       if(memApiType == MEM_API_TYPE_ALLOC) {\r
+                               plusAllocData(logData);\r
                        }\r
+                       else if(memApiType == MEM_API_TYPE_FREE) {\r
+                               freedatalist.add(logData);\r
+                       }                       \r
+               }\r
\r
+       }\r
+       \r
+       private void calculateFreeData(){\r
+               for(MemoryData freelog : freedatalist) {\r
+                       minusFreeData(freelog);\r
                }\r
+               freedatalist.clear();\r
        }\r
  \r
-       public void makeAllocData(MemoryData log) {\r
-               ArrayList<Object> dbAllocData = new ArrayList<Object>();\r
+       private void GetSystemMemoryData(List<LogData> systemLogList) {\r
+               ArrayList<List<Object>> systemDataList = new ArrayList<List<Object>>();\r
+               ArrayList<List<Object>> targetProcessDataList = new ArrayList<List<Object>>();\r
  \r
-               MemoryData mData = log;\r
+               int size = systemLogList.size();\r
+               for (int i = 0; i < size; i++) {\r
+                       SystemData log = (SystemData) systemLogList.get(i);\r
+                       \r
+                       /*\r
+                        * Make information for other process\r
+                        */\r
+                       List<Object> pIDList = new ArrayList<Object>();\r
+                       List<Object> processLoadList = new ArrayList<Object>();\r
+                       String[] processLoadDatas = log.getOtherProcessLoad().split(CommonConstants.COMMA);\r
+                       for (int ii = 0; ii < processLoadDatas.length; ii++) {\r
+                               String processLoad = processLoadDatas[ii];\r
+                               if (processLoad == null || processLoad.isEmpty()) {\r
+                                       continue;\r
+                               }\r
+                               pIDList.add(new Integer(processLoad));\r
+                               processLoadList.add(processLoadDatas[++ii]);\r
+                       }\r
\r
+                       /*\r
+                        * Make SystemData Table data\r
+                        */\r
+                       ArrayList<Object> dbSystemData = new ArrayList<Object>();\r
+                       dbSystemData.add(new Long(log.getTime()));\r
+                       dbSystemData.add(new Long(log.getSystemMemoryUsed()));\r
+                       dbSystemData.add(pIDList);\r
+                       dbSystemData.add(processLoadList);\r
+                       systemDataList.add(dbSystemData);\r
+                       \r
+                       /*\r
+                        * Make target Process Table data\r
+                        */\r
+                       ProcessProfileData[] targetProcessList = log.getProcessProfileDataList();\r
+                       if (targetProcessList != null) {\r
+                               for (int j = 0; j < targetProcessList.length; j++) {\r
+                                       ProcessProfileData process = targetProcessList[j];\r
  \r
-               dbAllocData.add(Long.valueOf(mData.getSeq()));\r
-               dbAllocData.add(Integer.valueOf(mData.getPid()));\r
-               dbAllocData.add(Integer.valueOf(mData.getApiId()));\r
-               dbAllocData.add(Integer.valueOf(mData.getMemoryApiType()));\r
-               dbAllocData.add(Long.valueOf(mData.getAddress()));\r
-               dbAllocData.add(Long.valueOf(mData.getTime()));\r
-               dbAllocData.add(Long.valueOf(mData.getCallerPcAddr()));\r
-               dbAllocData.add(String.valueOf(mData.getArgs()));\r
-               dbAllocData.add(String.valueOf(mData.getReturn()));\r
-               dbAllocData.add(String.valueOf(mData.getLibName()));\r
-               dbAllocData.add(Integer.valueOf(mData.getMsgID()));\r
-               dbAllocData.add(Integer.valueOf(mData.getTid()));\r
-               dbAllocData.add(Long.valueOf(mData.getSize()));\r
+                                       ArrayList<Object> dbTargetProcessData = new ArrayList<Object>();\r
  \r
-               memoryAllocDataList.add(dbAllocData);\r
-       }\r
+                                       /*\r
+                                        * Set inform for Heap allocation\r
+                                        */\r
+                                       \r
+                                       calculateFreeData();\r
+                                       \r
+                                       List<Object> binaryIDList = new ArrayList<Object>();\r
+                                       List<Object> allocByteList = new ArrayList<Object>();\r
+                                       binaryIDList.add(appAllocSeriesID);\r
+                                       if (mainAllocByteMap.get(process.getPid()) == null) {\r
+                                               allocByteList.add(new Long(0));\r
+                                       } else {\r
+                                               allocByteList.add(mainAllocByteMap.get(process.getPid()));\r
+                                       }\r
  \r
-       public void makeFreeData(MemoryData log) {\r
-               ArrayList<Object> dbFreeData = new ArrayList<Object>();\r
+                                       Map<Integer, Long> libraryList = libraryAllocByteMap.get(process.getPid());\r
+                                       if (libraryList == null) {\r
+                                               libraryList = new HashMap<Integer, Long>();\r
+                                       }\r
  \r
-               MemoryData mData = log;\r
+                                       Iterator<Integer> iter = libraryList.keySet().iterator();\r
+                                       while (iter.hasNext()) {\r
+                                               Integer binaryID = iter.next();\r
+                                               binaryIDList.add(binaryID);\r
+                                               allocByteList.add(libraryList.get(binaryID));\r
+                                       }\r
  \r
-               dbFreeData.add(Long.valueOf(mData.getSeq()));\r
-               dbFreeData.add(Integer.valueOf(mData.getPid()));\r
-               dbFreeData.add(Integer.valueOf(mData.getMsgID()));\r
-               dbFreeData.add(Long.valueOf(mData.getTime()));\r
-               dbFreeData.add(Long.valueOf(mData.getAddress()));\r
+                                       /*\r
+                                        * Set inform for Thread\r
+                                        */\r
+                                       List<Object> threadIdList = new ArrayList<Object>();\r
+                                       List<Object> threadLoadList = new ArrayList<Object>();\r
+                                       // TODO Remove unnecessary String parsing. first Fix in SystemData.java\r
+                                       String[] threadLoads = process.getThreadLoad().split(CommonConstants.COMMA);\r
+                                       for (int iii = 0; iii < threadLoads.length; iii++) {\r
+                                               String threadLoad = threadLoads[iii];\r
+                                               if (threadLoad == null || threadLoad.isEmpty()) {\r
+                                                       continue;\r
+                                               }\r
+                                               threadIdList.add(new Integer(threadLoad));\r
+                                               threadLoadList.add(threadLoads[++iii]);\r
+                                       }\r
+                                       \r
+                                       dbTargetProcessData.add(new Long(log.getTime()));\r
+                                       dbTargetProcessData.add(new Integer(process.getPid()));\r
+                                       dbTargetProcessData.add(new Float(process.getProcessLoad()));\r
+                                       dbTargetProcessData.add(new Long(process.getVirtualMemory()));\r
+                                       dbTargetProcessData.add(new Long(process.getResidentMemory()));\r
+                                       dbTargetProcessData.add(new Long(process.getSharedMemory()));\r
+                                       dbTargetProcessData.add(new Long(process.getPssMemory()));\r
+                                       // for new version\r
+                                       dbTargetProcessData.add(new Long(process.getThreeDMemory()));\r
+                                       dbTargetProcessData.add(new Long(process.getGemMemory()));\r
+                                       \r
+                                       dbTargetProcessData.add(new Integer(process.getThreadCount()));\r
+                                       dbTargetProcessData.add(new Long(process.getTotalAllocSize()));\r
+                                       \r
+                                       dbTargetProcessData.add(binaryIDList);\r
+                                       dbTargetProcessData.add(allocByteList);\r
+                                       dbTargetProcessData.add(threadIdList);\r
+                                       dbTargetProcessData.add(threadLoadList);\r
  \r
-               memoryfreeDataList.add(dbFreeData);\r
+                                       targetProcessDataList.add(dbTargetProcessData);\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               systemMemoryDBInserter.pushData(systemDataList);\r
+               processMemoryDBInserter.pushData(targetProcessDataList);\r
        }\r
--\r
++
        public List<List<Object>> getSystemDataFromDB(long start, long end) {\r
-               String where = "WHERE SAMPLING_TIME BETWEEN " + start + " AND " + end\r
-                               + " ORDER BY SAMPLING_TIME";\r
+               String where = "";              \r
+               if (start != 0 || end != 0) {\r
+                       where = String.format("WHERE %s BETWEEN %s AND %s", SystemMemoryDBTable.COLUMN.SAMPLING_TIME.name, Long.toString(start), Long.toString(end));\r
+               }\r
+               \r
+               where += " ORDER BY " + SystemMemoryDBTable.COLUMN.SAMPLING_TIME.name;\r
\r
                List<List<Object>> result = systemMemoryDBTable.selectAllColumnData(where);\r
  \r
                if (result != null) {\r
                }\r
                return processedResult;\r
        }\r
\r
-       public long getProcessMemoriesFromDB(long time) {\r
-               long processMemories = 0;\r
-               String query = "SELECT MEMORY_RESIDENT FROM MEMORY_PROCESS_DATA WHERE SAMPLING_TIME = "\r
-                               + "(SELECT MAX(SAMPLING_TIME) FROM MEMORY_PROCESS_DATA WHERE SAMPLING_TIME <= "\r
-                               + time + ")";\r
-               ResultSet rs = SqlConnectionManager.executeQueryRS(query);\r
-               if (rs != null) {\r
-                       try {\r
-                               while (rs.next()) {\r
-                                       processMemories += rs.getLong(1);\r
-                               }\r
-                       } catch (SQLException e) {\r
-                               Logger.exception(e);\r
-                       } finally {\r
-                               SqlConnectionManager.releaseResultSet(rs);\r
-                       }\r
-               }\r
-               return processMemories;\r
-       }\r
        \r
-       public List<List<Object>> getAllocationDataFromDB(long start, long end, String targetPIDs) {\r
-               List<List<Object>> allocatedResult = new ArrayList<List<Object>> ();\r
-               String where = "WHERE";         \r
-               if (start != 0 || end != 0) {\r
-                       where += String.format(" %s BETWEEN %s AND %s AND", AllocateDBTable.COLUMN.ALLOCATED_TIME.name, Long.toString(start), Long.toString(end));\r
-               }\r
-               \r
-               where += String.format(" %s IN %s", AllocateDBTable.COLUMN.PID.name, targetPIDs);\r
-               \r
-               where += " ORDER BY " + AllocateDBTable.COLUMN.SEQUENCE_NUMBER.name;\r
\r
-               List<List<Object>> queryResult = allocateDBTable.selectAllColumnData(where);\r
-               if (queryResult == null) {\r
-                       return allocatedResult;\r
-               }\r
-               allocatedResult = queryResult;\r
\r
-               return allocatedResult;\r
-       }\r
\r
-       public List<List<Object>> getFreeDataFromDB(long start, long end, String targetPIDs) {\r
-               List<List<Object>> freeResult = new ArrayList<List<Object>> ();\r
+       public Map<Integer, List<List<Object>>> getTargetProcessDataMapFromDB(long start, long end, String targetPIDs) {\r
+               Map<Integer, List<List<Object>>> processedResult = new HashMap<Integer, List<List<Object>>>();\r
                String where = "WHERE";\r
                if (start != 0 || end != 0) {           \r
-                       where += String.format(" %s BETWEEN %s AND %s AND", FreeDBTable.COLUMN.FREE_TIME.name, Long.toString(start), Long.toString(end));\r
+                       where += String.format(" SAMPLING_TIME BETWEEN %s AND %s AND", Long.toString(start), Long.toString(end));\r
                }\r
                \r
-               where += String.format(" %s IN %s", FreeDBTable.COLUMN.PID.name, targetPIDs);\r
-               \r
-               where += " ORDER BY " + FreeDBTable.COLUMN.FREE_TIME.name;\r
+               where += String.format(" PID IN %s", targetPIDs);\r
+               where += " ORDER BY SAMPLING_TIME";\r
  \r
-               List<List<Object>> queryResult = freeDBTable.selectAllColumnData(where);\r
+               List<List<Object>> queryResult = processMemoryDBTable.selectAllColumnData(where);\r
                if (queryResult == null) {\r
-                       return freeResult;\r
+                       return processedResult;\r
                }\r
-               freeResult = queryResult;\r
\r
-               return freeResult;\r
-       }\r
-       \r
-       public List<List<Object>> makeLeakDataForRange(long startTime, long endTime, String targetPIDs) {\r
-               List<List<Object>> rangeDataList = new ArrayList<List<Object>> ();\r
  \r
-               List<List<Object>> allocDataList = getAllocationDataFromDB(startTime, endTime, targetPIDs);\r
-               List<List<Object>> freeDataList = getFreeDataFromDB(startTime, endTime, targetPIDs);\r
-               \r
-               if (allocDataList != null) {\r
-                       if (freeDataList == null) {\r
-                               rangeDataList.addAll(allocDataList);\r
-                       } else {\r
-                               List<List<Object>> result = makeSubLeakDataForRange(allocDataList, freeDataList);\r
-                               if (result != null && !result.isEmpty())\r
-                                       rangeDataList.addAll(result);\r
+               for (int i = 0; i < queryResult.size(); i++) {\r
+                       List<Object> row = queryResult.get(i);\r
+                       Integer pid = (Integer) row.get(TargetProcessDBTable.COLUMN.PID.ordinal());\r
+                       List<List<Object>> processData = processedResult.get(pid);\r
+                       if (processData == null) {\r
+                               processData = new ArrayList<List<Object>>();\r
+                               processedResult.put(pid, processData);\r
                        }\r
+                       processData.add(row);\r
                }\r
-               \r
-               return rangeDataList;\r
+               return processedResult;\r
        }\r
        \r
-       private List<List<Object>> makeSubLeakDataForRange(List<List<Object>> allocData, List<List<Object>> freeData) {\r
-               for (int i = 0; i < freeData.size(); i++) {\r
-                       List<Object> iFreeData = freeData.get(i);\r
-                       long address = (Long) iFreeData.get(4);\r
-                       long freeTime = (Long) iFreeData.get(3);\r
\r
-                       int allocDataSize = allocData.size();\r
-                       for (int j = 0; j < allocDataSize; j++) {\r
-                               List<Object> iAllocData = allocData.get(j);\r
-                               long allocatedTime = (Long) iAllocData.get(AllocateDBTable.COLUMN.ALLOCATED_TIME.index);\r
-                               if (allocatedTime <= freeTime) {\r
-                                       if (address == (Long) iAllocData.get(AllocateDBTable.COLUMN.ALLOCATED_ADDRESS.index)) {\r
-                                               allocData.remove(j);\r
-                                               break;\r
-                                       }\r
-                               } else {\r
-                                       break;\r
-                               }\r
-                       }\r
-               }\r
\r
-               return allocData;\r
-       }\r
\r
-       private void GetAllocationData(List<LogData> memoryLogList) {\r
-               int size = memoryLogList.size();\r
-               for (int i = 0; i < size; i++) {\r
-                       MemoryData logData = (MemoryData) memoryLogList.get(i);\r
-                       if (allocByteMap.get(logData.getPid()) == null) {\r
-                               allocByteMap.put(Integer.valueOf(logData.getPid()), new Long(0));\r
-                               libraryAllocByteMap.put(Integer.valueOf(logData.getPid()), new HashMap<Integer, Long>());\r
-                       }\r
\r
-                       int memApiType = logData.getMemoryApiType();\r
-                       int internalFlag = logData.getInternalCall();\r
-                       long errorNo = logData.getErrno();\r
+       public long getSystemMemoriesFromDB(long time) {\r
+               long processMemories = 0;\r
+               String tableName = systemMemoryDBTable.getTableName();\r
+               String columnName = SystemMemoryDBTable.COLUMN.MEMORY_USAGE_SYSTEM.name;\r
+               String timecolumn = SystemMemoryDBTable.COLUMN.SAMPLING_TIME.name;\r
                \r
-                       /*\r
-                        * Check library allocation\r
-                        */\r
-                       BinaryInfo binaryInfo = null;\r
-                       Project project = Global.getProject();\r
-                       ProcessMemoryMap pmap = project.getProcessInformation(logData.getPid()).getProcessMemoryMap(logData.getTime());\r
\r
-                       if (pmap != null) {\r
-                               LibraryObject lib = pmap.getLibraryByAddress(logData.getCallerPcAddr());\r
-                               if (lib != null && lib != pmap.getMainbinary()) {\r
-                                       binaryInfo = project.getDeviceStatusInfo().getBinaryInfo(lib.getBinaryID());\r
-                               }\r
-                       }\r
\r
-                       if (errorNo == 0 && MEM_USER == internalFlag) {\r
-                               if (MEM_API_TYPE_ALLOC == memApiType || MEM_API_TYPE_FREE == memApiType) {\r
-                                       addNewSeriesUserAllocData(memApiType, logData, binaryInfo);\r
-                               }\r
-                       }\r
\r
-                       /*\r
-                        * Save allocation and free api call \r
-                        */\r
-                       if(MEM_API_TYPE_ALLOC == memApiType) {\r
-                               makeAllocData(logData);\r
-                       }\r
-                       else if(MEM_API_TYPE_FREE == memApiType) {\r
-                               makeFreeData(logData);\r
-                       }\r
-               }\r
\r
-       }\r
\r
-       private void GetSystemMemoryData(List<LogData> systemLogList) {\r
-               ArrayList<List<Object>> systemDataList = new ArrayList<List<Object>>();\r
-               ArrayList<List<Object>> targetProcessDataList = new ArrayList<List<Object>>();\r
\r
-               int size = systemLogList.size();\r
-               for (int i = 0; i < size; i++) {\r
-                       SystemData log = (SystemData) systemLogList.get(i);\r
-                       \r
-                       /*\r
-                        * Make information for other process\r
-                        */\r
-                       List<Object> pIDList = new ArrayList<Object>();\r
-                       List<Object> processLoadList = new ArrayList<Object>();\r
-                       String[] processLoadDatas = log.getOtherProcessLoad().split(CommonConstants.COMMA);\r
-                       for (int ii = 0; ii < processLoadDatas.length; ii++) {\r
-                               String processLoad = processLoadDatas[ii];\r
-                               if (processLoad == null || processLoad.isEmpty()) {\r
-                                       continue;\r
-                               }\r
-                               pIDList.add(new Integer(processLoad));\r
-                               processLoadList.add(processLoadDatas[++ii]);\r
-                       }\r
\r
-                       /*\r
-                        * Make SystemData Table data\r
-                        */\r
-                       ArrayList<Object> dbSystemData = new ArrayList<Object>();\r
-                       dbSystemData.add(new Long(log.getTime()));\r
-                       dbSystemData.add(new Long(log.getSystemMemoryUsed()));\r
-                       dbSystemData.add(pIDList);\r
-                       dbSystemData.add(processLoadList);\r
-                       systemDataList.add(dbSystemData);\r
\r
-                       /*\r
-                        * Make target Process Table data\r
-                        */\r
-                       ProcessProfileData[] targetProcessList = log.getProcessProfileDataList();\r
-                       if (targetProcessList != null) {\r
-                               for (int j = 0; j < targetProcessList.length; j++) {\r
-                                       ProcessProfileData process = targetProcessList[j];\r
\r
-                                       ArrayList<Object> dbTargetProcessData = new ArrayList<Object>();\r
-                                       dbTargetProcessData.add(new Long(log.getTime()));\r
-                                       dbTargetProcessData.add(new Integer(process.getPid()));\r
-                                       dbTargetProcessData.add(new Float(process.getProcessLoad()));\r
-                                       dbTargetProcessData.add(new Long(process.getVirtualMemory()));\r
-                                       dbTargetProcessData.add(new Long(process.getResidentMemory()));\r
-                                       dbTargetProcessData.add(new Long(process.getSharedMemory()));\r
-                                       dbTargetProcessData.add(new Long(process.getPssMemory()));\r
-                                       dbTargetProcessData.add(new Integer(process.getThreadCount()));\r
-                                       dbTargetProcessData.add(new Long(process.getTotalAllocSize()));\r
\r
-                                       /*\r
-                                        * Set inform for Heap allocation\r
-                                        */\r
-                                       List<Object> binaryIDList = new ArrayList<Object>();\r
-                                       List<Object> allocByteList = new ArrayList<Object>();\r
-                                       binaryIDList.add(appAllocSeriesID);\r
-                                       if (allocByteMap.get(process.getPid()) == null) {\r
-                                               allocByteList.add(new Long(0));\r
-                                       } else {\r
-                                               allocByteList.add(allocByteMap.get(process.getPid()));\r
-                                       }\r
\r
-                                       Map<Integer, Long> libraryList = libraryAllocByteMap.get(process.getPid());\r
-                                       if (libraryList == null) {\r
-                                               libraryList = new HashMap<Integer, Long>();\r
-                                       }\r
\r
-                                       Iterator<Integer> iter = libraryList.keySet().iterator();\r
-                                       while (iter.hasNext()) {\r
-                                               Integer binaryID = iter.next();\r
-                                               binaryIDList.add(binaryID);\r
-                                               allocByteList.add(libraryList.get(binaryID));\r
-                                       }\r
-                                       dbTargetProcessData.add(binaryIDList);\r
-                                       dbTargetProcessData.add(allocByteList);\r
\r
-                                       /*\r
-                                        * Set inform for Thread\r
-                                        */\r
-                                       List<Object> threadIdList = new ArrayList<Object>();\r
-                                       List<Object> threadLoadList = new ArrayList<Object>();\r
-                                       // TODO Remove unnecessary String parsing. first Fix in SystemData.java\r
-                                       String[] threadLoads = process.getThreadLoad().split(CommonConstants.COMMA);\r
-                                       for (int iii = 0; iii < threadLoads.length; iii++) {\r
-                                               String threadLoad = threadLoads[iii];\r
-                                               if (threadLoad == null || threadLoad.isEmpty()) {\r
-                                                       continue;\r
-                                               }\r
-                                               threadIdList.add(new Integer(threadLoad));\r
-                                               threadLoadList.add(threadLoads[++iii]);\r
-                                       }\r
-                                       dbTargetProcessData.add(threadIdList);\r
-                                       dbTargetProcessData.add(threadLoadList);\r
\r
-                                       targetProcessDataList.add(dbTargetProcessData);\r
+               String query = "SELECT "+columnName+" FROM "+tableName+" WHERE "+timecolumn+" = "\r
+                               + "(SELECT MAX("+timecolumn+") FROM "+tableName+" WHERE "+timecolumn+" <= "\r
+                               + time + ")";\r
+               ResultSet rs = SqlConnectionManager.executeQueryRS(query);\r
+               if (rs != null) {\r
+                       try {\r
+                               while (rs.next()) {\r
+                                       processMemories += rs.getLong(1);\r
                                }\r
+                       } catch (SQLException e) {\r
+                               Logger.exception(e);\r
+                       } finally {\r
+                               SqlConnectionManager.releaseResultSet(rs);\r
                        }\r
                }\r
-               \r
-               systemMemoryDBInserter.pushData(systemDataList);\r
-               processMemoryDBInserter.pushData(targetProcessDataList);\r
-       }\r
+               return processMemories;\r
 -      }\r
++      }
  }\r
index 992244f,182dfb3..5778789
mode 100644,100755..100644
@@@ -58,7 -60,8 +60,8 @@@ public class MemoryDetailsTable extend
        \r
        private int keyindex = 0;\r
        private Long StartTime;\r
 -      private Long EndTime;\r
 -      private Long Current;
 +      private Long EndTime;
++      private Long Current;\r
        
        private String[] columnNames = { 
                        MemoryPageLabels.MEMORY_DETAILS_VIEW_ITEM,
index e158175,56e0600..3fdb788
mode 100644,100755..100644
@@@ -138,139 -134,69 +134,69 @@@ public class MemoryStatisticsTable exte
                        if (staticInput != null){\r
                                output.add(staticInput);\r
                        }\r
-               }\r
-               \r
-               return output;\r
-       }\r
-       \r
-       private Map<String, List<Object>> calculateAllocateData(List<List<Object>> allocData, List<List<Object>> freeData) {\r
-               // Map for result\r
-               Map<String, List<Object>> output = new HashMap<String, List<Object>> ();\r
-               // Map for saving allocation address\r
-               Map<Long, List<Object>> addresmap = new HashMap<Long, List<Object>> ();\r
-               \r
-               for (int i = 0; i < allocData.size(); i++) {\r
-                       // Get one allocation api data\r
-                       List<Object> iAllocData = allocData.get(i);\r
-                       String libname = (String) iAllocData.get(AllocateDBTable.COLUMN.CALLER_LIBRARY_NAME.index);\r
-                       Long address = (Long) iAllocData.get(AllocateDBTable.COLUMN.ALLOCATED_ADDRESS.index);\r
-                       Long size = (Long) iAllocData.get(AllocateDBTable.COLUMN.ALLOCATED_MEMORY_SIZE.index);\r
                        \r
-                       // Save each library to Map\r
-                       if(!output.containsKey(libname)) {\r
-                               List<Object> allocdata = new ArrayList<Object>();\r
-                               \r
-                               // Persistent Byte\r
-                               allocdata.add(size);\r
-                               // Persistent Count\r
-                               allocdata.add((Integer) 1);\r
-                               // Free count\r
-                               allocdata.add((Integer) 0);\r
-                               // Total Byte\r
-                               allocdata.add(size);\r
-                               \r
-                               output.put(libname, allocdata);\r
-                       }\r
-                       else {\r
-                               Long sumsize = (Long)output.get(libname).get(0) + size;\r
-                               output.get(libname).set(0, sumsize);\r
-                               output.get(libname).set(1, (Integer) output.get(libname).get(1) + 1);\r
-                               output.get(libname).set(3, sumsize);\r
-                       }\r
-                       \r
-                       List<Object> onedata = new ArrayList<Object> ();\r
-                       onedata.add(libname);\r
-                       onedata.add(size);\r
-                       \r
-                       addresmap.put(address, onedata);\r
+                       persistentSize += (Long) elem.getValue().get(0);\r
+                       persistentCount += (Long) elem.getValue().get(1);\r
+                       freecount += (Long) elem.getValue().get(2);\r
+                       totalSize += (Long) elem.getValue().get(3);\r
                }\r
                \r
-               for (int i = 0; i < freeData.size(); i++) {\r
-                       List<Object> iFreeData = freeData.get(i);\r
-                       long address = (Long) iFreeData.get(4);\r
-                       \r
-                       if(addresmap.containsKey(address)) {\r
-                               String libname = (String) addresmap.get(address).get(0);\r
-                               Long allocsize = (Long) addresmap.get(address).get(1);\r
-                               output.get(libname).set(0, (Long) output.get(libname).get(0) - allocsize);\r
-                               output.get(libname).set(2, (Integer) output.get(libname).get(2) + 1);\r
-                               \r
-                               addresmap.remove(address);\r
-                       }\r
-               }\r
+               List<Object> total = new ArrayList<Object> ();\r
+               \r
+               total.add(persistentSize);\r
+               total.add(persistentCount);\r
+               total.add(freecount);\r
+               total.add(totalSize);\r
+               total.add(persistentCount + freecount);\r
                \r
+               TableInput totalInput = HeapDataManager.getInstance().makeTreeInputForDatas("Total", total, index++);\r
+               output.add(totalInput);\r
\r
                return output;\r
        }\r
-       \r
-       private TableInput makeTreeInputForDatas(String path, List<Object> staticdata, int index) {\r
-               DATableDataFormat tableData = new DATableDataFormat(index);\r
  \r
-               List<String> text = new ArrayList<String>();\r
-               List<Object> data = new ArrayList<Object>();\r
+       private String getTargetPIDString(){\r
+               List<Integer> pidlist = new ArrayList<Integer>();\r
 -\r
++
+               int[] pids = Global.getProject().getProcessIDs();\r
+               int targetPID = Toolbar.INSTANCE.getSelectedPid();\r
  \r
-               if (staticdata == null) {\r
-                       Logger.error("very strange case !!");\r
-                       return null;\r
-               }\r
-               \r
-               // Path\r
-               String libname = path;\r
-               \r
-               if(path == Global.getCurrentApplication().getMainApp().getExecPath()) {\r
-                       libname = MemoryPageLabels.MEMORY_MAIN_EXCUTABLE;\r
+               if(targetPID > 0) {\r
+                       pidlist.add(targetPID);\r
                }\r
-               \r
-               text.add(libname);\r
-               data.add(libname);\r
\r
-               // Persistent byte\r
-               Long PByte = (Long) staticdata.get(0);\r
-               data.add(PByte);\r
-               \r
-               String pbytestr = String.format("%,d B", PByte);                \r
-               if (PByte > 1024) {\r
-                       PByte /= 1024;\r
-                       pbytestr = String.format("%,d KB", PByte);\r
+               else {\r
+                       for (int i = 0; i < pids.length; i++) {\r
+                               pidlist.add(pids[i]);\r
+                       }       \r
                }\r
-               \r
-               text.add(pbytestr);\r
  \r
-               // Persistent count\r
-               Integer PCount = (Integer) staticdata.get(1);\r
-               text.add(PCount.toString());\r
-               data.add(PCount);\r
+               String pidliststring = "(";\r
  \r
-               // Free count\r
-               Integer FCount = (Integer) staticdata.get(2);\r
-               text.add(FCount.toString());\r
-               data.add(FCount);\r
+               for(int i = 0 ; i < pidlist.size() ; i++) {\r
+                       pidliststring += Integer.toString(pidlist.get(i));\r
  \r
-               // Total Byte\r
-               Long TotalByte = (Long) staticdata.get(3);              \r
-               data.add(TotalByte);\r
-               \r
-               String tbytestr = String.format("%,d B", TotalByte);    \r
-               if (TotalByte > 1024) {\r
-                       TotalByte /= 1024;\r
-                       tbytestr = String.format("%,d KB", TotalByte);\r
+                       if(i != pidlist.size() - 1) {\r
+                               pidliststring += ", ";\r
+                       }\r
                }\r
-               text.add(tbytestr);\r
  \r
-               // Total count\r
-               Integer TotalCount = PCount + FCount;\r
-               text.add(TotalCount.toString());\r
-               data.add(TotalCount);\r
-               \r
-               TreeInput output = new TreeInput();\r
-               output.setText(text);\r
-               tableData.getData().addAll(data);\r
-               output.setData(tableData);\r
+               pidliststring += ")";\r
  \r
-               return output;\r
+               return pidliststring;\r
        }\r
-       \r
-       public void removeSelection() {\r
\r
+       public void removeSelection() {         \r
                table.removeAll();\r
                updateTable();\r
        }\r
- }\r
+       \r
+       @Override\r
+       public void clear() {\r
+               table.removeAll();\r
+               getSelectionIndex().clear();\r
+               getSelections().clear();\r
+               \r
+               StartTime = (long)0;\r
+               EndTime = (long)0;\r
+       }\r
 -}
++}
index 1da2dbb,b652d69..a0462f7
mode 100644,100755..100644
@@@ -43,8 -43,8 +43,7 @@@ import org.tizen.dynamicanalyzer.ui.ope
  import org.tizen.dynamicanalyzer.ui.opengl.table.state.GLRedundantTableView;
  import org.tizen.dynamicanalyzer.ui.opengl.table.state.GLStatisticsTableView;
  import org.tizen.dynamicanalyzer.ui.opengl.table.state.GLTextureTableView;
 -import org.tizen.dynamicanalyzer.ui.page.ScreenshotTabComposite;
 -import org.tizen.dynamicanalyzer.ui.widgets.DAAdvancedTabComposite;
 +import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineTableView;
- import org.tizen.dynamicanalyzer.ui.widgets.DAAdvancedTabComposite;
  import org.tizen.dynamicanalyzer.widgets.da.view.DAPageComposite;
  import org.tizen.dynamicanalyzer.widgets.da.view.DATabComposite;
  import org.tizen.dynamicanalyzer.resources.ColorResources;
@@@ -77,60 -78,87 +76,58 @@@ public class GLPage extends DAPageCompo
        GLTextureTableView glTextureView;
        GLStatisticsTableView glStatisticsView;
        GLRedundantTableView glRedundantView;
 -
 +      
        public GLPage(Composite parent, int style) {
                super(parent, style);
 -
                setTitle(AnalyzerLabels.COOLBAR_AREA_OPENGLES);
                this.setData(DAPageComposite.KEY_TOOLTIP, ShortCutManager.COOLBAR_AREA_GRAPHICS_TOOLTIP);
 -              this.setBackground(ColorResources.CONFIGURATION_TABLE_COVER_BACKGROUND_COLOR);
 +              this.setBackground(ColorResources.WHITE);
                this.setLayout(new FillLayout());
 -              baseForm = new SashForm(this, SWT.HORIZONTAL);
 +              
 +              baseForm = new SashForm(this, SWT.VERTICAL);
                baseForm.setLayout(new FillLayout());
                baseForm.setForeground(ColorResources.TAB_SELECTED_COLOR_START);
- //            ((FillLayout) getLayout()).marginHeight = 15;
- //            ((FillLayout) getLayout()).marginWidth = 5;
 -              ((FillLayout) getLayout()).marginHeight = 15;
 -              ((FillLayout) getLayout()).marginWidth = 5;
 -
 -              leftForm = new SashForm(baseForm, SWT.VERTICAL);
                
 -              glChartView = new GLChartView(leftForm, SWT.NONE);
 +              topForm = new SashForm(baseForm, SWT.VERTICAL);
 +              GLChartView glChartView = new GLChartView(topForm, SWT.NONE);
                addView(glChartView);
 -
 -              bottomForm = new SashForm(leftForm, SWT.HORIZONTAL);
 -              bottomForm.setForeground(ColorResources.TAB_SELECTED_COLOR_START);
 -              bottomForm.setLayout(new FillLayout());
 -
 -              DATabComposite glLeftTabView = new DAAdvancedTabComposite(bottomForm, SWT.NONE, false);
 +              
 +              bottomForm = new SashForm(baseForm, SWT.HORIZONTAL);
 +              DATabComposite glLeftTableView = new DATabComposite(bottomForm, SWT.NONE, false, true);
                {
 -                      glStatisticsView = new GLStatisticsTableView(glLeftTabView.getContentComposite(),
 -                                      SWT.NONE);
 +                      GLStatisticsTableView glStatisticsView = new GLStatisticsTableView(glLeftTableView.getContentComposite(), SWT.NONE);
 +                      glLeftTableView.addView(glStatisticsView);
                        addView(glStatisticsView);
 -                      glLeftTabView.addView(glStatisticsView, false);
 -
 -                      glAPIListView = new GLAPIListView(glLeftTabView.getContentComposite(), SWT.NONE);
 +                      
 +                      GLAPIListView glAPIListView = new GLAPIListView(glLeftTableView.getContentComposite(), SWT.NONE);
 +                      glLeftTableView.addView(glAPIListView);
                        addView(glAPIListView);
 -                      glLeftTabView.addView(glAPIListView, false);
                }
 -
 -
 -              DATabComposite glRightTabView = new DAAdvancedTabComposite(bottomForm, SWT.NONE, false);
 -              glRightTabView.setTabWidth(RIGHT_TAB_WIDTH);
 -
 +              addView(glLeftTableView);
 +              
 +              DATabComposite glRightTableView = new DATabComposite(bottomForm, SWT.NONE, false, true);
                {
 -                      glRedundantView = new GLRedundantTableView(glRightTabView.getContentComposite(),
 -                                      SWT.NONE);
 +                      GLRedundantTableView glRedundantView = new GLRedundantTableView(glRightTableView.getContentComposite(), SWT.NONE);
 +                      glRightTableView.addView(glRedundantView);
                        addView(glRedundantView);
 -                      glRightTabView.addView(glRedundantView, false);
 -
 -                      glContextView = new GLContextTableView(glRightTabView.getContentComposite(), SWT.NONE);
 -                      addView(glContextView);
 -                      glRightTabView.addView(glContextView, false);
 -
 -                      glProgramView = new GLProgramTableView(glRightTabView.getContentComposite(), SWT.NONE);
 -                      addView(glProgramView);
 -                      glRightTabView.addView(glProgramView, false);
 -
 -                      glTextureView = new GLTextureTableView(glRightTabView.getContentComposite(), SWT.NONE);
 -                      addView(glTextureView);
 -                      glRightTabView.addView(glTextureView, false);
 +                      
 +                      GLContextTableView glContextTableView = new GLContextTableView(glRightTableView.getContentComposite(), SWT.NONE);
 +                      glRightTableView.addView(glContextTableView);
 +                      addView(glContextTableView);
 +                      
 +                      GLProgramTableView glProgramTableView = new GLProgramTableView(glRightTableView.getContentComposite(), SWT.NONE);
 +                      glRightTableView.addView(glProgramTableView);
 +                      addView(glProgramTableView);
 +                      
 +                      GLTextureTableView glTextureTableView = new GLTextureTableView(glRightTableView.getContentComposite(), SWT.NONE);
 +                      glRightTableView.addView(glTextureTableView);
 +                      addView(glTextureTableView);
                }
 -
 -              leftForm.setWeights(new int[] { 46, 54 });
 -              bottomForm.setWeights(new int[] { 50, 50 });
 -              rightForm = new SashForm(baseForm, SWT.VERTICAL);
 -
 -              GLDetailsView detailsView = new GLDetailsView(rightForm, SWT.NONE);
 -              addView(detailsView);
 -
 -              ScreenshotTabComposite tabView = new ScreenshotTabComposite(rightForm, SWT.NONE,
 -                              GLPage.pageID);
 -              tabView.setObservingViews(ScreenshotTabComposite.screenshotViewID,
 -                              new String[] { GLPage.apiListViewID });
 -              tabView.setObservingViews(ScreenshotTabComposite.callstackViewID,
 -                              new String[] { GLPage.apiListViewID });
 -              addView(tabView);
 -
 -              rightForm.setWeights(new int[] { 50, 50 });
 -              baseForm.setWeights(new int[] { 75, 25 });
 -
 -              baseForm.setSashWidth(AnalyzerConstants.SASH_WIDTH);
 -              leftForm.setSashWidth(AnalyzerConstants.SASH_WIDTH);
 -              rightForm.setSashWidth(AnalyzerConstants.SASH_WIDTH);
 +              addView(glRightTableView);
 +              
 +              topForm.setSashWidth(AnalyzerConstants.SASH_WIDTH);
                bottomForm.setSashWidth(AnalyzerConstants.SASH_WIDTH);
 -
 +              
                DataManagerRegistry.registerPageDataManager(GLDataManager.getInstance());
        }
  
@@@ -73,7 -73,7 +73,8 @@@ public class ThreadAPIListView extends 
        ThreadAPIListTable tableComp = null;
  
        public ThreadAPIListView(Composite parent, int style) {
 -              super(parent, style, true, true);
 +              super(parent, style, false, true);
++
                this.setLayout(new FillLayout());
  
                setTitle(ThreadPageLabels.THREAD_API_LIST_VEIW_TITLE);
index a60a005,8297222..7896dd8
mode 100644,100755..100644
@@@ -29,47 -29,73 +29,50 @@@ package org.tizen.dynamicanalyzer.ui.ti
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.widgets.Composite;
  import org.tizen.dynamicanalyzer.appearance.DesignConstants;
+ import org.tizen.dynamicanalyzer.setting.Feature;
+ import org.tizen.dynamicanalyzer.setting.SettingDataManager;
  import org.tizen.dynamicanalyzer.ui.info.appStartup.AppStartupView;
  import org.tizen.dynamicanalyzer.ui.info.callstack.CallstackView;
+ import org.tizen.dynamicanalyzer.ui.info.process.ProcessView;
  import org.tizen.dynamicanalyzer.ui.info.screenshot.ImageViewer;
  import org.tizen.dynamicanalyzer.ui.info.screenshot.ScreenshotView;
 -import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;
 -import org.tizen.dynamicanalyzer.widgets.da.view.DABaseComposite;
 +import org.tizen.dynamicanalyzer.ui.timeline.calltrace.CallTraceView;
 +import org.tizen.dynamicanalyzer.ui.timeline.dlog.DlogView;
  import org.tizen.dynamicanalyzer.widgets.da.view.DATabComposite;
  
 -public class ScreenshotTabComposite extends DATabComposite {
 -      public static final String tabID = ScreenshotTabComposite.class.getName();
 +public class TimelineTableView extends DATabComposite {
 +      public static final String tabID = TimelineTableView.class.getName();
        public static final String screenshotViewID = ScreenshotView.class.getName();
        public static final String callstackViewID = CallstackView.class.getName();
        public static final String imageViewerID = ImageViewer.class.getName();
        public static final String appStartupViewID = AppStartupView.class.getName();
+       public static final String processViewID = ProcessView.class.getName();
  
        public static final double DEFAULT_WIDTH = DesignConstants.SCREENSHOT_VIEW_WIDTH + 30;
 -      public static final double DEFAULT_HEIGHT = DesignConstants.SCREENSHOT_VIEW_HEIGHT
 -                      + 30 + DesignConstants.VIEW_TITLEBAR_HEIGHT;
 +      public static final double DEFAULT_TABLE_VIEW_HEIGHT = DesignConstants.TABLE_VIEW_HEIGHT
 +                      + DesignConstants.TAB_BUTTON_HEIGHT;
        
        {
                ID = tabID;
        }
  
 -      public ScreenshotTabComposite(Composite parent, int style, String pageID) {
 +      public TimelineTableView(Composite parent, int style) {
                super(parent, style, false);
 +              this.enableImageTab(true);
  
 -              ScreenshotView screenshotView = new ScreenshotView(getContentComposite(), SWT.NONE, false, pageID);
 -              addView(screenshotView, false);
 +              DlogView dlogView = new DlogView(getContentComposite(),
 +                              SWT.NONE);
 +              addView(dlogView);
 +              
 +              CallTraceView callTraceView = new CallTraceView(getContentComposite(),
 +                              SWT.NONE);
 +              addView(callTraceView, false);
  
-               CallstackView callstack = new CallstackView(getContentComposite(),
-                               SWT.NONE);
+               CallstackView callstack = new CallstackView(getContentComposite(), SWT.NONE);
                addView(callstack, false);
 -
 -              if (TimelinePage.pageID.equals(pageID)) {
 -                      AppStartupView appStartup = new AppStartupView(getContentComposite(), SWT.NONE);
 -                      addView(appStartup, false);
 -              }
 -              if (isVisibleProcessView(pageID)) {
 -                      ProcessView processView = new ProcessView(getContentComposite(), SWT.NONE);
 -                      addView(processView, false);
 -              }
 -      }
 -
 -      public void setObservingViews(String viewid, String[] observingIDs) {
 -              DABaseComposite view = getView(viewid);
 -              if (view instanceof ScreenshotView) {
 -                      ((ScreenshotView) view).setObservingViews(observingIDs);
 -              } else if (view instanceof CallstackView) {
 -                      ((CallstackView) view).setObservingViews(observingIDs);
 -              } else if (view instanceof AppStartupView) {
 -                      ((AppStartupView) view).setObservingViews(observingIDs);
 -              } else if (view instanceof ProcessView) {
 -                      ((ProcessView) view).setObservingViews(observingIDs);
 -              } else {
 -                      // do nothing
 -              }
 -      }
 -
 -      private boolean isVisibleProcessView(String pageID) {
 -              if (TimelinePage.pageID.equals(pageID)
 -                              && SettingDataManager.INSTANCE.getConnectedTarget().isSelectedFeature(Feature.SYSTEM_ALL_PROCESSES)) {
 -                      return true;
 -              } else {
 -                      return false;
 -              }
 +              
 +              AppStartupView appStartup = new AppStartupView(getContentComposite(),
 +                              SWT.NONE);
 +              addView(appStartup, false);
        }
  }
index 46cea93,a3f81f0..8f6fc4f
mode 100644,100755..100644
@@@ -681,13 -666,7 +680,13 @@@ public enum Toolbar 
                data.width = DesignConstants.COMBO_APP_WIDTH;
                data.height = DesignConstants.COMBO_APP_HEIGHT;
                processCombo.setLayoutData(data);
--              
++
 +              data.top = new FormAttachment(0, DesignConstants.START_BUTTON_TOP);
 +              data.left = new FormAttachment(appCombo, 8, SWT.RIGHT);
 +              data.width = 60;
 +              data.height = 24;
 +              startButton.setLayoutData(data);
-               
++
                initDeviceCombo();
                initProcessCombo();
  
                // add pkglist to combo box
                if (pkglist != null && !pkglist.isEmpty()) {
                        int itemsSize = pkglist.size();
 +                      appCombo.add("===[App List]===");
                        for (int i = 0; i < itemsSize; i++) {
 -                              appCombo.add(pkglist.get(i).getMainApp().getLabel());
 +                              String appLabel = pkglist.get(i).getMainApp().getLabel();
 +                              appCombo.add(appLabel);
                        }
-                       //appCombo.select(0);
 -                      
                        // Tooltip Disabled
                        // set tooltip
                        /*
                        synchronized(oldPkgList){
                                composeAppCombo(oldPkgList);
                        }                       
--                      
++
 +                      ShowAppComboTitle();
-                       
++
                        if (oldPackageName == null || (appCombo.getItems().indexOf(oldPackageName) < 0)) {
                                // there is no such item
 -                              selectAppCombo(0);
 +                              selectAppCombo(0);                              
                        } else {
 -                              appCombo.setText(oldPackageName);
 +                              //appCombo.setText(oldPackageName);
                        }
                }
  
@@@ -686,7 -686,7 +684,6 @@@ public class SettingDialogTemplatePage 
                                                TargetData target = SettingDataManager.INSTANCE.getTarget(null);
                                                String preSelectedTemplate = target.getSelectedTemplate().getName();
  
-                                               // TODO : redefine custom template usage
 -                                              // template change
                                                if (!preSelectedTemplate.equals(toggleButton.getText())) {
                                                        Template template = Template.getTemplate(toggleButton.getText());
                                                        target.setSelectedTemplate(template);
index f81b07f,45090f1..6573373
mode 100644,100755..100755
@@@ -113,14 -113,12 +113,13 @@@ public abstract class DATableComposite 
        protected DAPopupMenu popupMenu = null;
  
        protected Point mousePoint = new Point(0, 0);
-       
        protected int totalColumnSize = 0;
 -      private int itemHeightSize = 19;
 +      
 +      private int itemHeightSize = 16;
  
-       protected RangeDataManager rangeDataManager = RangeDataManager
-                       .getInstance();
-       
+       protected RangeDataManager rangeDataManager = RangeDataManager.getInstance();
        protected static final Image filterImg = ImageResources.COLUMN_FILTER_NORMAL;
        protected static final int filterImgOffset = 12;
  
Simple merge