Improve HelpOnKeywordAction in right click 27/1827/4
Calixte DENIZET [Mon, 6 Sep 2010 20:12:16 +0000 (22:12 +0200)]
Change-Id: Id50d6996017453f6fb4e74b8c0f2d8c4bc868310

scilab/modules/scinotes/etc/scinotesGUIConfiguration.xml
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/HelpOnKeywordAction.java
scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/HelpOnKeywordInPopupAction.java [new file with mode: 0644]

index 88d617e..30a7d20 100644 (file)
     <menuitem action="CutAction" label="Cut"/>
     <menuitem action="PasteAction" label="Paste"/>
     <separator/>
-    <menuitem action="HelpOnKeywordAction" label="Help on ;Help on selection"/>
+    <menuitem action="HelpOnKeywordInPopupAction" label="Help on ;Help on selection"/>
     <menuitem action="OpenSourceFileOnKeywordAction" label="Open function source file"/>
     <menuitem action="OpenURLAction" label="Open URL"/>
   </RightClickMenu>
index 454cdac..4382446 100644 (file)
@@ -34,6 +34,8 @@ import org.scilab.modules.action_binding.InterpreterManagement;
  */
 public class HelpOnKeywordAction extends DefaultAction {
 
+    protected boolean isPopup;
+
     /**
      * Constructor
      * @param name the name of the action
@@ -52,7 +54,7 @@ public class HelpOnKeywordAction extends DefaultAction {
         int end = getEditor().getTextPane().getSelectionEnd();
         try {
             if (start == end) {
-                KeywordEvent kwe = ((ScilabEditorPane) getEditor().getTextPane()).getKeywordEvent();
+                KeywordEvent kwe = ((ScilabEditorPane) getEditor().getTextPane()).getKeywordEvent(!isPopup, true);
                 if (ScilabLexerConstants.isHelpable(kwe.getType())) {
                     selection = getEditor().getTextPane().getDocument().getText(kwe.getStart(), kwe.getLength());
                 }
@@ -68,19 +70,31 @@ public class HelpOnKeywordAction extends DefaultAction {
      * createMenu
      * @param label label of the menu
      * @param editor SciNotes
-     * @param key Keystroke
+     * @param key KeyStroke
      * @return MenuItem
      */
     public static MenuItem createMenu(String label, final SciNotes editor, KeyStroke key) {
         StringTokenizer token = new StringTokenizer(label, ";");
         final String label1 = token.nextToken();
         final String label2 = token.nextToken();
-        final MenuItem menuitem = createMenu(label1, null, new HelpOnKeywordAction(label1 + SciNotesMessages.DOTS, editor), key);
+        return createMenu(label1, label2, editor, key, new HelpOnKeywordAction(label1 + SciNotesMessages.DOTS, editor));
+    }
+
+    /**
+     * createMenu
+     * @param label label of the menu
+     * @param editor SciNotes
+     * @param key Keystroke
+     * @param hoka the HelpOnKeyword action
+     * @return MenuItem
+     */
+    protected static MenuItem createMenu(final String label1, final String label2, final SciNotes editor, KeyStroke key, final HelpOnKeywordAction hoka) {
+        final MenuItem menuitem = createMenu(label1, null, hoka, key);
         ((JMenuItem) menuitem.getAsSimpleMenuItem()).addPropertyChangeListener(new PropertyChangeListener() {
                 public void propertyChange(PropertyChangeEvent e) {
                     String select = editor.getTextPane().getSelectedText();
                     if (select == null) {
-                        KeywordEvent kwe = ((ScilabEditorPane) editor.getTextPane()).getKeywordEvent();
+                        KeywordEvent kwe = ((ScilabEditorPane) editor.getTextPane()).getKeywordEvent(!hoka.isPopup, true);
                         if (ScilabLexerConstants.isHelpable(kwe.getType())) {
                             try {
                                 String kw = editor.getTextPane().getDocument().getText(kwe.getStart(), kwe.getLength());
diff --git a/scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/HelpOnKeywordInPopupAction.java b/scilab/modules/scinotes/src/java/org/scilab/modules/scinotes/actions/HelpOnKeywordInPopupAction.java
new file mode 100644 (file)
index 0000000..8bae0fc
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+package org.scilab.modules.scinotes.actions;
+
+import java.util.StringTokenizer;
+
+import javax.swing.KeyStroke;
+
+import org.scilab.modules.gui.menuitem.MenuItem;
+import org.scilab.modules.scinotes.SciNotes;
+import org.scilab.modules.scinotes.utils.SciNotesMessages;
+
+/**
+ * HelpOnKeywordAction Class
+ * @author Calixte DENIZET
+ */
+public class HelpOnKeywordInPopupAction extends HelpOnKeywordAction {
+
+    /**
+     * Constructor
+     * @param name the name of the action
+     * @param editor SciNotes
+     */
+    public HelpOnKeywordInPopupAction(String name, SciNotes editor) {
+        super(name, editor);
+       isPopup = true;
+    }
+
+    /**
+     * createMenu
+     * @param label label of the menu
+     * @param editor SciNotes
+     * @param key KeyStroke
+     * @return MenuItem
+     */
+    public static MenuItem createMenu(String label, final SciNotes editor, KeyStroke key) {
+       StringTokenizer token = new StringTokenizer(label, ";");
+        final String label1 = token.nextToken();
+        final String label2 = token.nextToken();
+        return createMenu(label1, label2, editor, key, new HelpOnKeywordInPopupAction(label1 + SciNotesMessages.DOTS, editor));
+    }
+}
\ No newline at end of file