SRADA-941 Short cut Ctrl-o and Ctrl-s now opens same dialogs as menu items.
authorp.privalov <p.privalov@partner.samsung.com>
Wed, 20 Jul 2016 08:26:22 +0000 (11:26 +0300)
committerMaria Guseva <m.guseva@samsung.com>
Thu, 21 Jul 2016 17:00:01 +0000 (02:00 +0900)
 * 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

org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutKeyBindingHandler.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/page/MenuBar.java

index 1578b29..16bd6f6 100644 (file)
  */
 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) {
index 701b0dd..4bf0707 100644 (file)
@@ -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;