* The deletion of variables from the Variable Browser is now possible.
[scilab.git] / scilab / modules / ui_data / src / java / org / scilab / modules / ui_data / variablebrowser / actions / DeleteAction.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2010 - DIGITEO - Vincent COUVERT
4  * Copyright (C) 2013 - S/E - Sylvestre Ledru
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-en.txt
11  *
12  */
13
14 package org.scilab.modules.ui_data.variablebrowser.actions;
15
16 import org.scilab.modules.ui_data.variablebrowser.SwingScilabVariableBrowser;
17 import java.lang.reflect.InvocationTargetException;
18 import java.awt.event.ActionEvent;
19 import javax.swing.ImageIcon;
20 import javax.swing.KeyStroke;
21 import java.awt.event.ActionEvent;
22 import java.awt.event.MouseEvent;
23 import java.awt.event.ActionListener;
24 import javax.swing.JTable;
25
26 import org.scilab.modules.ui_data.utils.UiDataMessages;
27
28 import static org.scilab.modules.action_binding.highlevel.ScilabInterpreterManagement.asynchronousScilabExec;
29
30 import org.scilab.modules.action_binding.highlevel.ScilabInterpreterManagement.InterpreterException;
31
32 import org.scilab.modules.gui.bridge.pushbutton.SwingScilabPushButton;
33 import org.scilab.modules.gui.bridge.menuitem.SwingScilabMenuItem;
34 import org.scilab.modules.gui.events.callback.CommonCallBack;
35 import org.scilab.modules.gui.menuitem.MenuItem;
36 import org.scilab.modules.gui.menuitem.ScilabMenuItem;
37 import org.scilab.modules.gui.pushbutton.PushButton;
38 import org.scilab.modules.gui.pushbutton.ScilabPushButton;
39 import org.scilab.modules.gui.utils.ScilabSwingUtilities;
40
41 /**
42  * Manage Delete Actions
43  * @author Vincent COUVERT
44  */
45 public final class DeleteAction extends CommonCallBack {
46
47     private static final long serialVersionUID = 1L;
48
49     private static ImageIcon icon = new ImageIcon(ScilabSwingUtilities.findIcon("edit-delete"));
50
51     private static final char MNEMONIC = 'D';
52
53     private static final String KEY = "DELETE";
54     private static final String SUPPR = "Suppr";
55
56     private final SwingScilabVariableBrowser variableBrowser;
57
58     /**
59      * Constructor
60      */
61     public DeleteAction(SwingScilabVariableBrowser variableBrowser) {
62         super("");
63         this.variableBrowser = variableBrowser;
64     }
65
66     /**
67      * Create a button for a tool bar
68      * @param title tooltip for the button
69      * @return the button
70      */
71     public static PushButton createButton(SwingScilabVariableBrowser variableBrowser, String title) {
72         PushButton button = ScilabPushButton.createPushButton();
73         ((SwingScilabPushButton) button.getAsSimplePushButton()).addActionListener(new DeleteAction(variableBrowser));
74         button.setToolTipText(title);
75         ((SwingScilabPushButton) button.getAsSimplePushButton()).setIcon(icon);
76
77         return button;
78     }
79
80     /**
81      * Create the associated menu
82      * @return the menu
83      */
84     public MenuItem createMenuItem() {
85         MenuItem menuItem = ScilabMenuItem.createMenuItem();
86         menuItem.setText(UiDataMessages.DELETE + " '" + getSelectedVariable() + "'");
87         menuItem.setMnemonic(MNEMONIC);
88         menuItem.setCallback(this);
89         ((SwingScilabMenuItem) menuItem.getAsSimpleMenuItem()).setIcon(icon);
90         return menuItem;
91     }
92
93
94     /**
95      * Action!
96      * @see org.scilab.modules.gui.events.callback.CallBack#callBack()
97      */
98     @Override
99     public void callBack() {
100         try {
101             asynchronousScilabExec(null, "clear('" + getSelectedVariable() + "'); updatebrowsevar()");
102         } catch (InterpreterException e1) {
103             System.err.println("An error in the interpreter has been catched: " + e1.getLocalizedMessage());
104         }
105     }
106
107     private String getSelectedVariable() {
108
109         int clickedRow = variableBrowser.getTable().getSelectedRow();
110         // Does nothing if no variable selected
111         if (clickedRow != -1) {
112             return variableBrowser.getTable().getValueAt(clickedRow, 1).toString();
113         }
114         return "";
115     }
116 }