Bug 12037 fixed: Simplified Chinese version SciNotes warnings at startup
[scilab.git] / scilab / modules / scinotes / src / java / org / scilab / modules / scinotes / actions / EvaluateSelectionAction.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2009 - DIGITEO - Bruno JOFRET
4  * Copyright (C) 2010 - Calixte DENIZET
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
11  *
12  */
13
14 package org.scilab.modules.scinotes.actions;
15
16 import java.beans.PropertyChangeEvent;
17 import java.beans.PropertyChangeListener;
18 import java.util.StringTokenizer;
19 import javax.swing.JMenuItem;
20 import javax.swing.KeyStroke;
21
22 import org.scilab.modules.gui.console.ScilabConsole;
23 import org.scilab.modules.gui.menuitem.MenuItem;
24 import org.scilab.modules.scinotes.SciNotes;
25 import org.scilab.modules.scinotes.ScilabEditorPane;
26
27 import org.scilab.modules.history_manager.HistoryManagement;
28
29 /**
30  * EvaluateSelectionAction class
31  * @author Bruno JOFRET
32  * @author Calixte DENIZET
33  */
34 public final class EvaluateSelectionAction extends DefaultAction {
35
36     /**
37      * serialVersionUID
38      */
39     private static final long serialVersionUID = 320938663765236236L;
40
41     /**
42      * Constructor
43      * @param name the name of the action
44      * @param editor SciNotes
45      */
46     public EvaluateSelectionAction(String name, SciNotes editor) {
47         super(name, editor);
48     }
49
50     /**
51      * doAction
52      */
53     public void doAction() {
54         /* Will do the job as if it was copy / paste in scilab Console */
55         ScilabEditorPane sep = getEditor().getTextPane();
56         String selection = sep.getCodeToExecute();
57         if (selection.compareTo("") != 0) {
58             StringTokenizer tokens = new StringTokenizer(selection, "\n");
59             String[] lines = new String[tokens.countTokens()];
60             int i = 0;
61             while (tokens.hasMoreTokens()) {
62                 lines[i++] = tokens.nextToken();
63             }
64             HistoryManagement.appendLinesToScilabHistory(lines, lines.length);
65             ScilabConsole.getConsole().getAsSimpleConsole().sendCommandsToScilab(selection, true, false);
66         }
67     }
68
69     /**
70      * createMenu
71      * @param label label of the menu
72      * @param editor scinotes
73      * @param key KeyStroke
74      * @return MenuItem
75      */
76     public static MenuItem createMenu(String label, final SciNotes editor, KeyStroke key) {
77         StringTokenizer token = new StringTokenizer(label, ";\uff1b");
78         final String label1 = token.nextToken();
79         final String label2 = token.nextToken();
80         final MenuItem menuitem = createMenu(label1, null, new EvaluateSelectionAction(label1, editor), key);
81         if (!ScilabConsole.isExistingConsole()) { // Only available in STD mode
82             ((JMenuItem) menuitem.getAsSimpleMenuItem()).setEnabled(false);
83         }
84         ((JMenuItem) menuitem.getAsSimpleMenuItem()).addPropertyChangeListener(new PropertyChangeListener() {
85             public void propertyChange(PropertyChangeEvent e) {
86                 if (editor.getTextPane() != null) {
87                     String select = editor.getTextPane().getSelectedText();
88                     if (select == null) {
89                         menuitem.setText(label2);
90                     } else {
91                         menuitem.setText(label1);
92                     }
93                 }
94             }
95         });
96
97         return menuitem;
98     }
99 }