*/
package org.tizen.dynamicanalyzer.shortcut;
+import java.io.File;
+
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
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.DAState;
-import org.tizen.dynamicanalyzer.common.DAResult.ErrorCode;
+import org.tizen.dynamicanalyzer.common.Global;
import org.tizen.dynamicanalyzer.handlers.CommandAction;
-import org.tizen.dynamicanalyzer.handlers.ReplayManager;
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;
-import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
public class ShortCutKeyBindingHandler extends AbstractHandler {
private int CTRL_STATE_MASK = SWT.CTRL;
if (!enabled) {
return null;
}
+
+ Shell currentShell = WorkbenchUtil.getWorkbenchWindow().getShell();
if (e.keyCode == SWT.F1) {
Logger.debug("about");
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);
+ }
+ }
+ }
/*
else if (e.keyCode == SWT.F2) {
Logger.debug("configuration");
import java.util.List;
import java.util.Set;
+import org.eclipse.jface.bindings.Binding;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.keys.IBindingService;
import org.eclipse.ui.part.ViewPart;
import org.tizen.dynamicanalyzer.annotation.UIMethod;
import org.tizen.dynamicanalyzer.callback.ExecutionCallbackManager;
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.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.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.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.widgets.da.view.DABaseComposite;
import org.tizen.dynamicanalyzer.widgets.da.view.DAPageComposite;
import org.tizen.dynamicanalyzer.widgets.da.view.DATabComposite;
+import org.tizen.dynamicanalyzer.widgets.scale.DAScale;
import org.tizen.dynamicanalyzer.workbench.LayoutManager;
public class BaseView extends ViewPart {
RunInitializing();
MenuBar.getInstance().makeMenuBar();
setMinumumShellSize();
+ unbindNeedlessCommand();
+ addKeyListener();
}
+
+ private void unbindNeedlessCommand() {
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IBindingService bindingService = (IBindingService) workbench.getAdapter(IBindingService.class);
+ for (Binding binding : bindingService.getBindings()) {
+ if(binding.getTriggerSequence().toString().equals("CTRL+N")) {
+ binding.getParameterizedCommand().getCommand().undefine();
+ }
+ }
+ }
+
+ public void addKeyListener() {
+ PlatformUI.getWorkbench().getDisplay().addFilter(SWT.KeyDown, new Listener() {
+ public void handleEvent(Event e) {
+ Shell currentShell = WorkbenchUtil.getWorkbenchWindow().getShell();
+
+ if(((e.stateMask & SWT.CTRL) == SWT.CTRL) && (e.keyCode == 'q')) {
+ currentShell.close();
+ } else if(((e.stateMask & SWT.CTRL) == SWT.CTRL) && (e.keyCode == 'n')) {
+ CommonAction.clear();
+ Toolbar.INSTANCE.clearMarkerTimeList();
+ RangeDataManager.getInstance().clearMarkerTime();
+ RangeDataManager.getInstance().clearTimelineMarker();
+
+ // change UI state
+ Toolbar.INSTANCE.changeUIState(DAState.INIT);
+ Toolbar.INSTANCE.setScaleSelection(DAScale.DEFAULT_SCALE_INDEX);
+
+ FlatFeatureDialog featureDialog = new FlatFeatureDialog(currentShell);
+ featureDialog.open();
+
+ /// if Feature Select changed and OK, is NewSetting is true.
+ if(SettingDataManager.INSTANCE.isNewSetting()){
+ // reset checks on ReportMenu items
+// resetReportItemCheck();
+ }
+ } else if(((e.stateMask & SWT.CTRL) == SWT.CTRL) && (e.keyCode == 't')) {
+ TargetDialog targetDialog = new TargetDialog(currentShell);
+ targetDialog.open();
+ } else if(((e.stateMask & SWT.CTRL) == SWT.CTRL) && (e.keyCode == 'h')) {
+ if(MenuBar.getInstance().getViewDetail().getSelection()) {
+ MenuBar.getInstance().getViewDetail().setSelection(false);
+ } else {
+ MenuBar.getInstance().getViewDetail().setSelection(true);
+ }
+ MenuBar.getInstance().getViewDetail().notifyListeners(SWT.Selection, new Event());
+ } else if(e.keyCode == 16777234) { //f9
+ if(DAState.isRunning()) {
+ TargetData target = SettingDataManager.INSTANCE.getConnectedTarget();
+ Set<String> targetChartList = SettingDataManager.INSTANCE.getSelectedChartSet(target
+ .getTargetName());
+ if(!targetChartList.contains(TimelineChartLabels.SCREENSHOT_CHART_TITLE)) {
+ BaseView baseView = (BaseView) WorkbenchUtil.getViewPart(BaseView.ID);
+ if(baseView.getTopComposite() instanceof TimelinePage) {
+ TimelinePage timelinePage = (TimelinePage)baseView.getTopComposite();
+ timelinePage.getTimelineChartView().addScreenshotChart();
+ target.addSelectedFlatFeature(FlatFeature.SCREENSHOT.getName());
+ }
+ }
+ }
+
+ try {
+ if (!DACommunicator.captureScreenshot().isSuccess()) {
+ Logger.error("Failed to capture screenshot");
+ }
+ } catch (InterruptedException ex) {
+ Logger.warning("Interrupted during send screenshot message");
+ } catch (UnsupportedProtocolException ex) {
+ Logger.warning("Message to capture screenshot is not supported by communicator");
+ }
+ }
+ }
+ });
+
+ PlatformUI.getWorkbench().getDisplay().addFilter(SWT.KeyUp, new Listener() {
+ public void handleEvent(Event e) {
+ if(e.keyCode == 16777235) { //f10 calls keyPress listener twice
+ Shell currentShell = WorkbenchUtil.getWorkbenchWindow().getShell();
+ PreferencesDialog preferencesDialog = new PreferencesDialog(currentShell);
+ preferencesDialog.open();
+ }
+ }
+ });
+ }
+
public void RunInitializing(){
DAState.changeCurrentState(DAState.INIT);