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;