From: jaeyong lee Date: Tue, 12 Jul 2016 06:43:51 +0000 (+0900) Subject: [SRADA-893] Add shortcut feature X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f5fccb5aa3c9abc69cdb880db727fdcb2250b10a;p=sdk%2Ftools%2Fdynamic-analyzer.git [SRADA-893] Add shortcut feature Conflicts: org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/BaseView.java Change-Id: Ic0ec8a4c9e42e3646ec87a297df0287b31254d9d --- diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutKeyBindingHandler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutKeyBindingHandler.java index 5d386f2..3bd8ae4 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutKeyBindingHandler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutKeyBindingHandler.java @@ -25,41 +25,29 @@ */ 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; @@ -87,13 +75,63 @@ public class ShortCutKeyBindingHandler extends AbstractHandler { 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"); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/BaseView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/BaseView.java index 81e0a12..afc9367 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/BaseView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/BaseView.java @@ -32,11 +32,17 @@ import java.util.ArrayList; 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; @@ -45,12 +51,18 @@ import org.tizen.dynamicanalyzer.common.AnalyzerManager; 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; @@ -60,11 +72,14 @@ 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.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; @@ -73,6 +88,7 @@ import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; 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 { @@ -112,7 +128,94 @@ 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 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); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/MenuBar.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/MenuBar.java index 5b7fb77..d43f552 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/MenuBar.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/MenuBar.java @@ -90,6 +90,12 @@ public class MenuBar { private Menu menubar = null; private boolean sourceView = false; + + private MenuItem viewDetail; + + public MenuItem getViewDetail() { + return viewDetail; + } public MenuBar() { currentShell = WorkbenchUtil.getWorkbenchWindow().getShell(); @@ -158,7 +164,7 @@ public class MenuBar { Menu viewMenu = new Menu(currentShell, SWT.DROP_DOWN); viewItem.setMenu(viewMenu); - MenuItem viewDetail = new MenuItem(viewMenu, SWT.CHECK); + viewDetail = new MenuItem(viewMenu, SWT.CHECK); viewDetail.setText(MenuBarLabels.VIEW_DETAIL); viewDetail.addSelectionListener(viewMenuListener); viewDetail.setSelection(true);