--- /dev/null
- DADialog dialog = new DADialog(shell, SWT.NONE, width, height);
- dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
+/*
+ * Dynamic Analyzer
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Jaewon Lim <jaewon81.lim@samsung.com>
+ * Juyoung Kim <j0.kim@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+package org.tizen.dynamicanalyzer.handlers;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.swt.SWT;
++import org.eclipse.swt.events.SelectionEvent;
++import org.eclipse.swt.events.SelectionListener;
++import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.common.DALogExport;
+import org.tizen.dynamicanalyzer.common.DAResult;
+import org.tizen.dynamicanalyzer.constant.CommonConstants;
+import org.tizen.dynamicanalyzer.project.Project;
+import org.tizen.dynamicanalyzer.resources.ImageResources;
+import org.tizen.dynamicanalyzer.setting.SettingDataManager;
+import org.tizen.dynamicanalyzer.setting.TargetData;
+import org.tizen.dynamicanalyzer.setting.UILayoutDataManager;
+import org.tizen.dynamicanalyzer.ui.info.appStartup.AppStartupView;
+import org.tizen.dynamicanalyzer.ui.page.BaseView;
+import org.tizen.dynamicanalyzer.ui.page.PageInfoRegistry;
+import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfilingView;
+import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;
+import org.tizen.dynamicanalyzer.ui.timeline.calltrace.CallTraceView;
+import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager;
+import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineTableView;
+import org.tizen.dynamicanalyzer.util.Logger;
+import org.tizen.dynamicanalyzer.util.WorkbenchUtil;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+import org.tizen.dynamicanalyzer.widgets.da.base.DADialog;
+import org.tizen.dynamicanalyzer.widgets.da.view.DATabComposite;
+
+public class GUIAction implements UIAction {
+ public static final int DEFAULT_WARNING_WIDTH = 446;
+ public static final int DEFAULT_WARNING_HEIGHT = 153;
+
+ /**
+ * Reset UI. Disable lastest button in screenshot view, and change leak view title.
+ */
+ @Override
+ public void applyStartTraceUI() {
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ AnalyzerUtil.setLatestTraceMode(TimelinePage.pageID, true);
+ }
+ });
+ }
+
+ @Override
+ public void applyStopTraceUI() {
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ AnalyzerUtil.setLatestTraceMode(TimelinePage.pageID, true);
+ }
+ });
+ }
+
+ @Override
+ public void applyWebProfilingUI(final boolean isWeb) {
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ // change startup table in timeline page
+ DATabComposite timelineTabComp = (DATabComposite) AnalyzerUtil.getView(
+ TimelinePage.pageID, TimelineTableView.tabID);
+ AppStartupView appStartup = (AppStartupView) timelineTabComp
+ .getView(TimelineTableView.appStartupViewID);
+ appStartup.changeTable(isWeb);
+
+ // change call trace table in timeline page
+ CallTraceView apiListView = (CallTraceView) AnalyzerUtil.getView(
+ TimelinePage.pageID, TimelinePage.calltraceViewID);
+ apiListView.changeTable(isWeb);
+
+ // change profiling table in summary page
+ FunctionUsageProfilingView userFunctionProfilingView = (FunctionUsageProfilingView) AnalyzerUtil
+ .getView(TimelinePage.pageID, FunctionUsageProfilingView.class.getName());
+ if(userFunctionProfilingView != null) {
+ userFunctionProfilingView.changeTable(isWeb);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void showWarning(final String message, final int width,
+ final int height) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();
- dialog.setDialog(true);
- dialog.getExportButton().addClickListener(exportListener);
++ DADialog dialog = new DADialog(shell, DADialog.DIALOGTYPE.ERROR_WITH_EXPORT, SWT.NONE, width, height);
++ dialog.setIcon(ImageResources.DIALOG_ERROR_ICON);
+ dialog.setMessage(message);
- DADialog dialog = new DADialog(shell, SWT.NONE);
- dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
- dialog.setMessage(message);
- dialog.setDialog(true);
- dialog.getExportButton().addClickListener(exportListener);
++ dialog.setDialog();
++ dialog.getExportButton().addSelectionListener(exportButtonListener);
+ dialog.open();
+ }
+ });
+ }
+
+ @Override
+ public void showWarning(final DAResult result, final int width,
+ final int height) {
+ showWarning(result.getMessage() + " (" + result.getErrorNumber() + ")", width, height);
+ }
+
+ @Override
+ public void showWarning(final String message) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();
- Display.getDefault().asyncExec(new Runnable() {
- @Override
- public void run() {
- Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();
- DADialog dialog = new DADialog(shell, SWT.NONE);
- dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
- dialog.setTitleText(title);
- dialog.setMessage(message);
- dialog.open();
- }
- });
++ DADialog dialog = new DADialog(shell, DADialog.DIALOGTYPE.ERROR_WITH_EXPORT, SWT.NONE);
++ dialog.setIcon(ImageResources.DIALOG_ERROR_ICON);
++ dialog.setMessage(message);
++ dialog.setDialog();
++ dialog.getExportButton().addSelectionListener(exportButtonListener);
+ dialog.open();
+ }
+ });
+ }
+
+ @Override
+ public void showWarning(final String title, final String message) {
- DADialog dialog = new DADialog(shell, SWT.NONE);
- dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
++// Display.getDefault().asyncExec(new Runnable() {
++// @Override
++// public void run() {
++// Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();
++// DADialog dialog = new DADialog(shell, SWT.NONE);
++// dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
++// dialog.setTitleText(title);
++// dialog.setMessage(message);
++// dialog.open();
++// }
++// });
+ }
+
+ @Override
+ public void showWarning(final DAResult result) {
+ showWarning(result.getMessage() + CommonConstants.SPACE + CommonConstants.OPEN_BRACKET
+ + result.getErrorNumber() + CommonConstants.CLOSE_BRACKET);
+ }
+
+ @Override
+ public void showWarning(final Shell shell, final String message) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
- dialog.setDialog(true);
- dialog.getExportButton().addClickListener(exportListener);
++ DADialog dialog = new DADialog(shell, DADialog.DIALOGTYPE.ERROR_WITH_EXPORT, SWT.NONE);
++ dialog.setIcon(ImageResources.DIALOG_ERROR_ICON);
+ dialog.setMessage(message);
++ dialog.setDialog();
++ dialog.getExportButton().addSelectionListener(exportButtonListener);
+ dialog.open();
+ }
+ });
+ }
+
+ @Override
+ public void showWarning(final Shell shell, final DAResult result) {
+ showWarning(shell, result.getMessage() + CommonConstants.SPACE
+ + CommonConstants.OPEN_BRACKET + result.getErrorNumber()
+ + CommonConstants.CLOSE_BRACKET);
+ }
+
+ @Override
+ public List<String> getPageNames() {
+ BaseView bv = (BaseView) WorkbenchUtil.getViewPart(BaseView.ID);
+ List<String> idList = bv.getMainTab().getViewIDList();
+ List<String> nameList = PageInfoRegistry.convertPageIDtoPageName(idList);
+
+ return nameList;
+ }
+
+ @Override
+ public void setUIElements(Project project) {
+ setPages(project.getPageTabList());
+ setCharts(project.getTimelineChartList());
+ }
+
+ /**
+ * Set tab pages to be shown on UI.
+ *
+ * @param pageNames list of page names.
+ */
+ private void setPages(String[] pageNames) {
+ if (pageNames != null) {
+ final Set<String> pageNameSet = new HashSet<String>(Arrays.asList(pageNames));
+
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ BaseView bv = (BaseView) WorkbenchUtil.getViewPart(BaseView.ID);
+ bv.compositePages(pageNameSet);
+ }
+ });
+ }
+ }
+
+ /**
+ * Set charts to be shown on UI.
+ *
+ * @param chartNames list of chart names.
+ */
+ private void setCharts(String[] chartNames) {
+ if (chartNames != null) {
+ final List<String> chartNameList = Arrays.asList(chartNames);
+
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ TimelineChartManager.getInstance().loadSelectedChartListByFile(chartNameList);
+ }
+ });
+ }
+ }
+
+ @Override
+ public void setUIElementsBySetting() {
+ setPageBySetting();
+ setChartBySetting();
+ }
+
+ @Override
+ public void setPageBySetting() {
+ TargetData target = SettingDataManager.INSTANCE.getConnectedTarget();
+ final String targetName = target.getTargetName();
+
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ Logger.debug(targetName);
+ BaseView bv = (BaseView) WorkbenchUtil.getViewPart(BaseView.ID);
+ bv.createPagesByTarget(targetName);
+ }
+ });
+
+ UILayoutDataManager.INSTANCE.setDirty(false);
+ }
+
+ /**
+ * Update charts to be shown on UI based on current settings.
+ */
+ private void setChartBySetting() {
+ final Set<String> selectedChartSet = new HashSet<String>();
+
+ // set selected chart list
+ TargetData target = SettingDataManager.INSTANCE.getConnectedTarget();
+ Set<String> targetChartList = SettingDataManager.INSTANCE.getSelectedChartSet(target
+ .getTargetName());
+ selectedChartSet.addAll(targetChartList);
+ selectedChartSet.addAll(SettingDataManager.INSTANCE.getOptionsSelectedFeatureChartSet());
+ Logger.debug(selectedChartSet);
+
+ Display.getDefault().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ // update chart list in timeline page
+ Logger.debug(selectedChartSet);
+ TimelineChartManager.getInstance().loadSelectedChartList(selectedChartSet);
+ }
+ });
+ }
+
+ private static DACustomButtonClickEventListener exportListener = new DACustomButtonClickEventListener() {
+ @Override
+ public void handleClickEvent(DACustomButton button) {
+ DALogExport export = new DALogExport();
+ }
+ };
++
++ private static SelectionListener exportButtonListener = new SelectionListener() {
++
++ @Override
++ public void widgetSelected(SelectionEvent e) {
++ new DALogExport();
++ if(e.getSource() != null && e.getSource() instanceof Button) {
++ ((Button)e.getSource()).getParent().getParent().dispose();
++ }
++ }
++
++ @Override
++ public void widgetDefaultSelected(SelectionEvent e) {
++ }
++
++ };
+}
ERROR_LIBTRACE_START=Library tracing cannot be started properly.
- ERROR_RPM_NOT_FOUND=Library rpm package file cannot be found.
- ERROR_LIB_NOT_FOUND_INRPM=Library file cannot be found in rpm package.
- ERROR_NO_APPID_FOR_LAUNCHPAD=There is no appid for launch_app.
- ERROR_DEVICE_CONNECTION= Failed to connect with the device. \nPlease re-run Dynamic Analyzer and reboot the device.
- ERROR_DEVICE_NOT_SUPPORTED=Current device is not supported. \nPlease ask to administrator.
- ERROR_DEVICE_IS_BUSY=Current device is occupied by another tracing process. \nPlease stop it before new requests.
- ERROR_TRACING_NOT_RUNNING=There are no tracing activities on current device.
- ERROR_DEVICE_NOT_FOUND=There is no connected device. \nPlease check the connection with device.
- ERROR_UNSUPPORTED_PROTOCOL=This version of platform of the device is not supported.\nPlease update the platform of device and retry.
-
- ERROR_BY_SECURITY_REASON=Current Device is not avaliable Root or developer account mode.
- ERROR_APP_SELECT_BY_SECURITY=Selected application cannot be traced due to security reason.
-
- ERROR_NONEXIST_APPLICATION=Does not exist in device.\nPlease check that the application has been installed successfully.
- ERROR_UNSUPPORTED_APPLICATION=Selected Application is invalid. \nPlease select another application or restart DA.
-
- ERROR_CONFIGURATION_FAILED=Could not retrieve configuration from device. \nPlease check the connection with device.
- ERROR_CONNECTION_CLOSED="dataSocketClosed" status was checked in DataChannelThread. \nPlease re-connect device.
- ERROR_DOWNLOAD_FILE_FAILED=Downloading file is failed.
-
- ERROR_FAILED_OPERATION=Could not retrieve binary information from device. \nPlease re-connect device.
- ERROR_INTERNAL_REASON=Failed by internal reason.\nPlease try again or restart DA.
- ERROR_BY_UNKNOWN_REASON=Failed by unknown reason.
- ERROR_OUT_OF_MEMORY=Out of memory in Dynamic Analyzer.
- ERROR_START_TRACE_FAILED=Sending TraceStartMessage is failed. \nSelect another application available for trace.
-
- ERROR_NONEXIST_BINARY=Binary does not exist in device.
- ERROR_NONELF_BINARY=Binary is not ELF format.
-
- ERROR_SCREENSHOT_FAILED=Communicator don't receive AckMessage for Screenshot from device. \nPlease re-connect device.
-
- ERROR_UIHIERARCHY_FAILED=Communicator failed to get information of UI objects. Please try again.
- ERROR_UI_OBJECT_NOT_FOUND=Communicator didn't find Requested UI object from device. Please try again.
- ERROR_UI_OBJECT_SCREENSHOT_NOT_AVAILABLE=Application is running in background.\nTo get screenshot, application should be in foreground.
- ERROR_UIHIERARCHY_CANCEL_FAILED=It was unable to cancel getting information of UI objects.
-
+ ERROR_RPM_NOT_FOUND=Library RPM package file cannot be found.
+ ERROR_LIB_NOT_FOUND_INRPM=Library file cannot be found in the RPM package.
+ ERROR_NO_APPID_FOR_LAUNCHPAD=No app ID for launch_app
+ ERROR_DEVICE_CONNECTION= Failed to connect with the device. \nRe-run the dynamic analyzer and reboot the device.
+ ERROR_DEVICE_NOT_SUPPORTED=Current device is not supported.
+ ERROR_DEVICE_NOT_FOUND=No connected device is found. \nCheck the connection.
+ ERROR_UNSUPPORTED_PROTOCOL=Device platform version is not supported.\nUpdate the device platform and retry.
+ ERROR_BY_SECURITY_REASON=Current device is not available in the root or developer account mode.
+ ERROR_APP_SELECT_BY_SECURITY=Application cannot be traced due to security reasons.
+ ERROR_NONEXIST_APPLICATION=Application does not exist in the device.\nCheck that it has been installed successfully.
+ ERROR_UNSUPPORTED_APPLICATION=Invalid application. \nSelect another application or restart the dynamic analyzer.
+ ERROR_CONFIGURATION_FAILED=Configuration cannot be retrieved from the device. \nCheck the connection.
+ ERROR_CONNECTION_CLOSED=Socket seems to be closed. \nReconnect the device.
+ ERROR_DOWNLOAD_FILE_FAILED=Download failed.
+ ERROR_FAILED_OPERATION=Binary information cannot be retrieved from the device. \nReconnect the device.
+ ERROR_INTERNAL_REASON=Failed for an internal reason.\nTry again or restart the dynamic analyzer.
+ ERROR_BY_UNKNOWN_REASON=Failed for some reason.
+ ERROR_OUT_OF_MEMORY=Dynamic analyzer is out of memory.
+ ERROR_START_TRACE_FAILED=Starting the trace failed. \nSelect another application available for trace.
+ ERROR_NONEXIST_BINARY=Binary does not exist in the device.
+ ERROR_NONELF_BINARY=Binary is not in the ELF format.
+ ERROR_SCREENSHOT_FAILED=Communicator did not receive the acknowledgement for the screenshot from the device. \nRe-connect the device.
+ ERROR_UIHIERARCHY_FAILED=Communicator failed to get the UI object information. Try again.
+ ERROR_UI_OBJECT_NOT_FOUND=Communicator did not find the UI object from the device. Try again.
+ ERROR_UI_OBJECT_SCREENSHOT_NOT_AVAILABLE=Application is running in the background.\nTo get a screenshot, the application must be in the foreground.
+ ERROR_UIHIERARCHY_CANCEL_FAILED=Canceling the UI object information retrieval failed.
WARNING_PATH_NOT_FOUND=Path cannot be found.
WARNING_FILE_NOT_FOUND=File cannot be found.
-
- WARNING_RUNNING_PROCESS_LIMIT=Only some limited features (System, Function profiling / sampling) can be worked in Running process tracing.
- WARNING_OVERHEAD_EXPLODE=Tracing overhead is too heavy to show the accurate \nresult. Please except some features in Settings to \nreduce overhead.
-
- WARNING_USER_CANCEL=Operation is canceled by user.
-
- WARNING_FILENAME_INVALID_CHAR=File name contains invalid character.
+ WARNING_RUNNING_PROCESS_LIMIT=Only some limited features (system, function profiling/sampling) can be used in the running process tracing.
+ WARNING_OVERHEAD_EXPLODE=Tracing overhead is too heavy to show the accurate \nresult. Disable some features in Settings to \nreduce the overhead.
+ WARNING_USER_CANCEL=Operation is canceled by the user.
+ WARNING_FILENAME_INVALID_CHAR=File name contains an invalid character.
WARNING_FILENAME_EMPTY=File name is empty.
WARNING_FILENAME_TOO_LONG=File name is too long.
-
- ERR_START_DATA_CHANNEL=Failed to start StartDataChannel. \nPlease try again or restart DA.
- ERR_START_MESSAGE_PARSER=Failed to start MessageParser. \nPlease try again or restart DA.
- ERR_START_LOG_PARSER=Failed to start LogParser. \nPlease try again or restart DA.
- ERR_NO_PROCINFO=The process is not possible tracing. \nPlease select another process.
- ERR_WRONG_MESSAGE_FORMAT=Payload of AckMessage is null or exceeded "MAX_PAYLOAD_SIZE". \nPlease re-connect device.
- ERR_MSG_SEND_FAIL=No ack from device. \nPlease re-connect device.
-
+ ERR_START_DATA_CHANNEL=Failed to start the data channel. \nTry again or restart the dynamic analyzer.
+ ERR_START_MESSAGE_PARSER=Failed to start the MessageParser. \nTry again or restart the dynamic analyzer.
+ ERR_START_LOG_PARSER=Failed to start the LogParser. \nTry again or restart the dynamic analyzer.
+ ERR_NO_PROCINFO=Process cannot be traced. \nSelect another process.
+ ERR_WRONG_MESSAGE_FORMAT=AckMessage payload is null or exceeds the maximum size. \nRe-connect the device.
-ERR_MSG_SEND_FAIL=No acknowledgement from the device. \nRe-connect the device.
++ERR_MSG_SEND_FAIL=No acknowledgement from the device. \nRe-connect the device.
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
+ import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.common.DAResult;
+import org.tizen.dynamicanalyzer.common.DAResult.ErrorCode;
+import org.tizen.dynamicanalyzer.common.DAState;
+import org.tizen.dynamicanalyzer.handlers.CommandAction;
+import org.tizen.dynamicanalyzer.handlers.ReplayManager;
+import org.tizen.dynamicanalyzer.handlers.UIActionHolder;
+ import org.tizen.dynamicanalyzer.common.Global;
+ import org.tizen.dynamicanalyzer.handlers.CommandAction;
+ import org.tizen.dynamicanalyzer.handlers.UIAction;
import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
- import org.tizen.dynamicanalyzer.ui.file.FilePage;
- import org.tizen.dynamicanalyzer.ui.kernel.KernelPage;
- import org.tizen.dynamicanalyzer.ui.memory.MemoryPage;
- import org.tizen.dynamicanalyzer.ui.network.NetworkPage;
- import org.tizen.dynamicanalyzer.ui.opengl.GLPage;
+ import org.tizen.dynamicanalyzer.nl.MenuBarLabels;
+ import org.tizen.dynamicanalyzer.project.Project;
+ import org.tizen.dynamicanalyzer.swap.logparser.DataManagerRegistry;
import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
- import org.tizen.dynamicanalyzer.ui.range.RangePage;
- import org.tizen.dynamicanalyzer.ui.summary.SummaryPage;
- import org.tizen.dynamicanalyzer.ui.thread.ThreadPage;
- import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;
import org.tizen.dynamicanalyzer.ui.toolbar.AboutDialog;
- import org.tizen.dynamicanalyzer.ui.toolbar.SaveAsDialog;
import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar;
- import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceDialog;
- import org.tizen.dynamicanalyzer.ui.toolbar.replayEditor.ReplayEditDialog;
- import org.tizen.dynamicanalyzer.ui.toolbar.setting.FlatFeatureDialog;
- import org.tizen.dynamicanalyzer.ui.toolbar.setting.SettingDialog;
- import org.tizen.dynamicanalyzer.ui.userinterface.UIPage;
+ import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceProgressManager;
import org.tizen.dynamicanalyzer.util.CommonUtil;
import org.tizen.dynamicanalyzer.util.Logger;
import org.tizen.dynamicanalyzer.util.WorkbenchUtil;
Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();
AboutDialog dialog = new AboutDialog(shell);
dialog.open();
- }
+ } else if (e.stateMask == CTRL_STATE_MASK && e.keyCode == 'o') {
+ FileDialog dialog = new FileDialog(currentShell, SWT.OPEN);
+ dialog.setFilterNames(new String[] { "Zip file" });
+ dialog.setFilterExtensions(new String[] { "*.zip" });
+ dialog.setText(MenuBarLabels.FILE_LOAD_DIALOG_TITLE);
+
+ final Object result = dialog.open();
+ if (null != result) {
+ Toolbar.INSTANCE.clearMarkerTimeList();
+ RangeDataManager.getInstance().clearMarkerTime();
+ RangeDataManager.getInstance().clearTimelineMarker();
+ Thread loadthread = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ String decompresspath = CommandAction.loadFromZip((String) result);
+
+ OpenTraceProgressManager.getInstance().setSavePath(decompresspath);
+ OpenTraceProgressManager.getInstance().startOpenTraceThread();
+ }
+ });
+
+ loadthread.run();
+ }
+ } else if (e.stateMask == CTRL_STATE_MASK && e.keyCode == 's') {
+ Project project = Global.getProject();
+ if (project == null) {
+ return null;
+ }
+
+ project.save();
+ DataManagerRegistry.saveData();
+
+ String savefilename = project.getSavePath()
+ .substring(project.getSavePath().lastIndexOf(File.separator) + 1);
+
+ FileDialog dialog = new FileDialog(currentShell, SWT.SAVE);
+ dialog.setFilterNames(new String[] { "Zip file" });
+ dialog.setFilterExtensions(new String[] { "*.zip" });
+ dialog.setFileName(savefilename + ".zip");
+ dialog.setText(MenuBarLabels.FILE_SAVE_DIALOG_TITLE);
+
+ Object result = dialog.open();
+ if (null != result) {
+ if (!CommandAction.saveToZip((String) result)) {
- UIAction.showWarning(AnalyzerLabels.SAVE_FAILED);
++ UIActionHolder.getUIAction().showWarning(AnalyzerLabels.SAVE_FAILED);
+ }
+ }
+ }
/*
else if (e.keyCode == SWT.F2) {
Logger.debug("configuration");
import org.tizen.dynamicanalyzer.common.DAState;
import org.tizen.dynamicanalyzer.common.PreWindowShellCloseCallback;
import org.tizen.dynamicanalyzer.common.path.PathManager;
+ import org.tizen.dynamicanalyzer.communicator.DACommunicator;
import org.tizen.dynamicanalyzer.communicator.DeviceManager;
import org.tizen.dynamicanalyzer.communicator.IDECommunicator;
+ import org.tizen.dynamicanalyzer.communicator.UnsupportedProtocolException;
import org.tizen.dynamicanalyzer.control.SideWorker;
+ import org.tizen.dynamicanalyzer.handlers.CommonAction;
+ import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.swap.logparser.DataManagerRegistry;
+ import org.tizen.dynamicanalyzer.setting.FlatFeature;
+ import org.tizen.dynamicanalyzer.setting.SettingConstants;
+ import org.tizen.dynamicanalyzer.setting.SettingDataManager;
+ import org.tizen.dynamicanalyzer.setting.TargetData;
+ import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager;
+ import org.tizen.dynamicanalyzer.ui.file.FilePage;
+ import org.tizen.dynamicanalyzer.ui.hierarchy.HierarchyPage;
+ import org.tizen.dynamicanalyzer.ui.interactive.InteractivePage;
+ import org.tizen.dynamicanalyzer.ui.interactive.data.InteractiveDataManager;
+ import org.tizen.dynamicanalyzer.ui.kernel.KernelPage;
+ import org.tizen.dynamicanalyzer.ui.memory.MemoryPage;
+ import org.tizen.dynamicanalyzer.ui.network.NetworkPage;
+ import org.tizen.dynamicanalyzer.ui.opengl.GLPage;
+ import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
+ import org.tizen.dynamicanalyzer.ui.summary.SummaryPage;
+ import org.tizen.dynamicanalyzer.ui.thread.ThreadPage;
+ import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;
import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar;
+import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager;
import org.tizen.dynamicanalyzer.ui.toolbar.setting.FlatFeatureDialog;
+ import org.tizen.dynamicanalyzer.ui.toolbar.setting.PreferencesDialog;
+ import org.tizen.dynamicanalyzer.ui.toolbar.setting.TargetDialog;
+ import org.tizen.dynamicanalyzer.ui.userinterface.UIPage;
import org.tizen.dynamicanalyzer.util.CommonUtil;
import org.tizen.dynamicanalyzer.util.Logger;
import org.tizen.dynamicanalyzer.util.WorkbenchUtil;
return false;
}
- UIAction.showWarning(AnalyzerLabels.SAVE_FAILED);
+
+ private boolean showSaveWarning() {
+ boolean clear = true;
+
+ if (Global.getProject() != null && Global.getProject().getIsSavedData() == false) {
+ Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();
+ DADialog dialog = new DADialog(shell, DADialog.DIALOGTYPE.SAVE, SWT.NONE);
+ dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
+ dialog.setMessage("Tracing data is not saved.\nAre you sure to remove it?");
+ dialog.setDialog();
+ dialog.getSaveButton().addSelectionListener(saveButtonListener);
+ dialog.open();
+ clear = dialog.getResult();
+ }
+
+ return clear;
+ }
+
+ private void showSaveDialog() {
+ Project project = Global.getProject();
+ if (project == null) {
+ return;
+ }
+
+ project.save();
+ DataManagerRegistry.saveData();
+
+ String savefilename = project.getSavePath()
+ .substring(project.getSavePath().lastIndexOf(File.separator) + 1);
+
+ FileDialog dialog = new FileDialog(currentShell, SWT.SAVE);
+ dialog.setFilterNames(new String[] { "Zip file" });
+ dialog.setFilterExtensions(new String[] { "*.zip" });
+ dialog.setFileName(savefilename + ".zip");
+ dialog.setText(MenuBarLabels.FILE_SAVE_DIALOG_TITLE);
+
+ Object result = dialog.open();
+ if (null != result) {
+ if (!CommandAction.saveToZip((String) result)) {
++ UIActionHolder.getUIAction().showWarning(AnalyzerLabels.SAVE_FAILED);
+ }
+ else {
+ setMenuItemEnable(MenuBarLabels.FILE_SAVE, false);
+ project.setSavedData(true);
+ }
+ }
+ }
+
+ private SelectionListener saveButtonListener = new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ showSaveDialog();
+ if(e.getSource() != null && e.getSource() instanceof Button) {
+ ((Button)e.getSource()).getParent().getParent().dispose();
+ }
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ };
}