* Bug #15072 fixed: The context was stored as a root diagram attribute instead of...
[scilab.git] / scilab / modules / xcos / src / java / org / scilab / modules / xcos / actions / DebugLevelAction.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2009 - DIGITEO - Allan SIMON
4  * Copyright (C) 2010 - DIGITEO - Clement DAVID
5  * Copyright (C) 2011-2015 - Scilab Enterprises - Clement DAVID
6  *
7  * Copyright (C) 2012 - 2016 - Scilab Enterprises
8  *
9  * This file is hereby licensed under the terms of the GNU GPL v2.0,
10  * pursuant to article 5.3.4 of the CeCILL v.2.1.
11  * This file was originally licensed under the terms of the CeCILL v2.1,
12  * and continues to be available under such terms.
13  * For more information, see the COPYING file which you should have received
14  * along with this program.
15  *
16  */
17
18 package org.scilab.modules.xcos.actions;
19
20 import java.awt.event.ActionEvent;
21
22 import org.scilab.modules.graph.ScilabComponent;
23 import org.scilab.modules.graph.ScilabGraph;
24 import org.scilab.modules.gui.menuitem.MenuItem;
25 import org.scilab.modules.xcos.Xcos;
26 import org.scilab.modules.xcos.actions.dialog.DebugLevelDialog;
27 import org.scilab.modules.xcos.graph.ScicosParameters;
28 import org.scilab.modules.xcos.graph.XcosDiagram;
29 import org.scilab.modules.xcos.graph.model.ScicosObjectOwner;
30 import org.scilab.modules.xcos.utils.XcosMessages;
31
32 /**
33  * Set the debug level
34  */
35 @SuppressWarnings(value = { "serial" })
36 public final class DebugLevelAction extends SimulationNotRunningAction {
37     /** Name of the action */
38     public static final String NAME = XcosMessages.SET_DEBUG;
39     /** Icon name of the action */
40     public static final String SMALL_ICON = "";
41     /** Mnemonic key of the action */
42     public static final int MNEMONIC_KEY = 0;
43     /** Accelerator key for the action */
44     public static final int ACCELERATOR_KEY = 0;
45
46     /**
47      * Get the enum level value
48      */
49     public static enum DebugLevel {
50         /** No trace nor debug */
51         ZERO(0, XcosMessages.DEBUGLEVEL_0), /** Discrete/Continuous switch */
52         ONE(1, XcosMessages.DEBUGLEVEL_1), /** Per block trace */
53         TWO(2, XcosMessages.DEBUGLEVEL_2), /** Debug blocks without trace */
54         THREE(3, XcosMessages.DEBUGLEVEL_3);
55
56         private int level;
57         private String debugName;
58
59         /**
60          * @param realNumber
61          *            level
62          * @param name
63          *            debug name
64          */
65         private DebugLevel(int realNumber, String name) {
66             level = realNumber;
67             debugName = name;
68         }
69
70         /**
71          * @return value
72          */
73         public int getValue() {
74             return level;
75         }
76
77         /**
78          * @return the localized debug name
79          * @see java.lang.Enum#toString()
80          */
81         @Override
82         public String toString() {
83             return debugName;
84         }
85     }
86
87     /**
88      * Constructor
89      *
90      * @param scilabGraph
91      *            corresponding Scilab Graph
92      */
93     public DebugLevelAction(ScilabGraph scilabGraph) {
94         super(scilabGraph);
95     }
96
97     /**
98      * Action !!!
99      *
100      * @param e
101      *            action parameters
102      * @see org.scilab.modules.graph.actions.base.DefaultAction#actionPerformed(java.awt.event.ActionEvent)
103      */
104     @Override
105     public void actionPerformed(ActionEvent e) {
106         final XcosDiagram graph = (XcosDiagram) getGraph(e);
107
108         // action disabled when the cell is edited
109         final ScilabComponent comp = ((ScilabComponent) graph.getAsComponent());
110         if (comp.isEditing()) {
111             return;
112         }
113
114         final DebugLevelDialog dialog = new DebugLevelDialog(graph.getAsComponent(), new ScicosParameters(Xcos.findRoot(graph), new ScicosObjectOwner(graph.getUID(), graph.getKind())));
115
116         dialog.pack();
117         dialog.setVisible(true);
118     }
119
120     /**
121      * @param scilabGraph
122      *            graph
123      * @return menu item
124      */
125     public static MenuItem createMenu(ScilabGraph scilabGraph) {
126         return createMenu(scilabGraph, DebugLevelAction.class);
127     }
128 }