From: p.privalov
Date: Wed, 20 Jul 2016 08:26:22 +0000 (+0300)
Subject: SRADA-941 Short cut Ctrl-o and Ctrl-s now opens same dialogs as menu items.
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a8e50f87fb498bfd48eb629144b1e8a276ccae8f;p=sdk%2Ftools%2Fdynamic-analyzer.git
SRADA-941 Short cut Ctrl-o and Ctrl-s now opens same dialogs as menu items.
* In MenuBar added public void showLoadDialog(), that encapsulates all
trace load call activity.
* showLoadDialog() calls from ShortCutKeyBindingHandler to avoid another
implementation of same functionality.
* showSaveDialog is public now and calls from ShortCutKeyBindingHandler too.
* In MenuBar added public method isMenuItemEnabled(..).
* Check for buttons being enabled added to ShortCutKeyBindingHandler to
make Ctrl-s and Ctrl-o enabled only if Menu button is enabled.
Change-Id: I43b4b82b3fb56dae36e8ae6ec09c276c025fdc79
---
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 1578b29..16bd6f6 100644
--- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutKeyBindingHandler.java
+++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutKeyBindingHandler.java
@@ -25,32 +25,15 @@
*/
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.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.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.page.MenuBar;
import org.tizen.dynamicanalyzer.ui.toolbar.AboutDialog;
-import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar;
-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;
@@ -90,53 +73,11 @@ public class ShortCutKeyBindingHandler extends AbstractHandler {
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();
- }
+ if (MenuBar.getInstance().isMenuItemEnabled(MenuBarLabels.FILE_LOAD))
+ MenuBar.getInstance().showLoadDialog();
} 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)) {
- UIActionHolder.getUIAction().showWarning(AnalyzerLabels.SAVE_FAILED);
- }
- }
+ if (MenuBar.getInstance().isMenuItemEnabled(MenuBarLabels.FILE_SAVE))
+ MenuBar.getInstance().showSaveDialog();
}
/*
else if (e.keyCode == SWT.F2) {
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 701b0dd..4bf0707 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
@@ -284,30 +284,7 @@ public class MenuBar {
} else if (menuName.equals(MenuBarLabels.FILE_LOAD)) {
if (showSaveWarning() == true) {
- 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);
- dialog.setFilterPath(PathManager.DA_SAVE_PATH);
-
- 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();
- }
+ showLoadDialog();
}
} else if (menuName.equals(MenuBarLabels.FILE_SAVE)) {
showSaveDialog();
@@ -682,6 +659,40 @@ public class MenuBar {
return false;
}
+ /**
+ * Checks is menu item specified with menuName enabled.
+ *
+ * @param menuName name of item to check.
+ * @return true if item is enabled and falls otherwise.
+ */
+ public boolean isMenuItemEnabled(String menuName){
+ int i = checkMenuitemStatus(menubar, menuName);
+ // TODO may be we need check for i==-1 here, that means that menu,
+ // specified with menuName, does not exists
+ return i == 1;
+ }
+
+ /**
+ * Looks through menus and sub menus for menu with name equals to menuName
+ * and returns its status: is it enabled or not.
+ *
+ * @param menu menu, that contains a number of items
+ * @param menuName name of item to check.
+ * @return 1 if item enabled, 0 if not, and -1 if item not found.
+ */
+ private int checkMenuitemStatus(Menu menu, String menuName) {
+ for (MenuItem item : menu.getItems()) {
+ if (item.getText().equals(menuName))
+ return item.isEnabled() ? 1 : 0;
+ if (item.getMenu() == null)
+ continue;
+ int res = checkMenuitemStatus(item.getMenu(), menuName);
+ if (res >= 0)
+ return res;
+ }
+ return -1;
+ }
+
private boolean setMenuItemenable(MenuItem menuitem, String menuName, boolean enable) {
if (menuitem.getText().equals(menuName)) {
@@ -749,8 +760,33 @@ public class MenuBar {
return clear;
}
-
- private void showSaveDialog() {
+
+ public void showLoadDialog(){
+ 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);
+ dialog.setFilterPath(PathManager.DA_SAVE_PATH);
+
+ 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();
+ }
+ }
+
+ public void showSaveDialog() {
Project project = Global.getProject();
if (project == null) {
return;