* Bug #14586 - Xcos simulation stop button did not work.
[scilab.git] / scilab / modules / xcos / src / java / org / scilab / modules / xcos / actions / StopAction.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2009 - DIGITEO - Bruno JOFRET
4  * Copyright (C) 2009 - DIGITEO - Vincent COUVERT
5  * Copyright (C) 2010 - DIGITEO - Clement DAVID
6  * Copyright (C) 2011-2015 - Scilab Enterprises - Clement DAVID
7  *
8  * Copyright (C) 2012 - 2016 - Scilab Enterprises
9  *
10  * This file is hereby licensed under the terms of the GNU GPL v2.0,
11  * pursuant to article 5.3.4 of the CeCILL v.2.1.
12  * This file was originally licensed under the terms of the CeCILL v2.1,
13  * and continues to be available under such terms.
14  * For more information, see the COPYING file which you should have received
15  * along with this program.
16  *
17  */
18
19 package org.scilab.modules.xcos.actions;
20
21 import java.awt.event.ActionEvent;
22
23 import javax.swing.JButton;
24
25 import org.scilab.modules.graph.ScilabComponent;
26 import org.scilab.modules.graph.ScilabGraph;
27 import org.scilab.modules.graph.actions.base.DefaultAction;
28 import org.scilab.modules.graph.actions.base.GraphActionManager;
29 import org.scilab.modules.gui.menuitem.MenuItem;
30 import org.scilab.modules.xcos.JavaController;
31 import org.scilab.modules.xcos.graph.XcosDiagram;
32 import org.scilab.modules.xcos.utils.XcosMessages;
33
34 /**
35  * Stop the simulation
36  */
37 @SuppressWarnings(value = { "serial" })
38 public final class StopAction extends DefaultAction {
39     /** Name of the action */
40     public static final String NAME = XcosMessages.STOP;
41     /** Icon name of the action */
42     public static final String SMALL_ICON = "process-stop";
43     /** Mnemonic key of the action */
44     public static final int MNEMONIC_KEY = 0;
45     /** Accelerator key for the action */
46     public static final int ACCELERATOR_KEY = 0;
47
48     /**
49      * @param scilabGraph
50      *            graph
51      */
52     public StopAction(ScilabGraph scilabGraph) {
53         super(scilabGraph);
54         setEnabled(false);
55     }
56
57     /**
58      * @param scilabGraph
59      *            graph
60      * @return push button
61      */
62     public static JButton createButton(ScilabGraph scilabGraph) {
63         return createButton(scilabGraph, StopAction.class);
64     }
65
66     /**
67      * @param scilabGraph
68      *            graph
69      * @return menu item
70      */
71     public static MenuItem createMenu(ScilabGraph scilabGraph) {
72         return createMenu(scilabGraph, StopAction.class);
73     }
74
75     /**
76      * Action !!!
77      *
78      * @param e
79      *            source event
80      * @see org.scilab.modules.gui.events.callback.CallBack#actionPerformed(java.awt.event.ActionEvent)
81      */
82     @Override
83     public void actionPerformed(ActionEvent e) {
84         final XcosDiagram graph = (XcosDiagram) getGraph(e);
85
86         // action disabled when the cell is edited
87         final ScilabComponent comp = ((ScilabComponent) graph.getAsComponent());
88         if (comp.isEditing()) {
89             return;
90         }
91
92         if (!GraphActionManager.getEnable(StartAction.class)) {
93             JavaController.end_simulation();
94
95             graph.info(XcosMessages.EMPTY_INFO);
96             GraphActionManager.setEnable(StartAction.class, true);
97             GraphActionManager.setEnable(StopAction.class, false);
98             graph.setReadOnly(false);
99         }
100     }
101 }