2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
4 * Copyright (C) 2010 - DIGITEO - Vincent COUVERT
5 * Copyright (C) 2011 - Calixte DENIZET
7 * Copyright (C) 2012 - 2016 - Scilab Enterprises
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.
17 package org.scilab.modules.ui_data.variablebrowser;
19 import static org.scilab.modules.action_binding.highlevel.ScilabInterpreterManagement.asynchronousScilabExec;
21 import java.awt.Color;
22 import java.awt.MouseInfo;
23 import java.awt.event.MouseEvent;
24 import java.awt.event.MouseListener;
25 import java.util.ArrayList;
26 import java.util.HashSet;
27 import java.util.List;
29 import javax.swing.JButton;
30 import javax.swing.JScrollPane;
31 import javax.swing.JTable;
32 import javax.swing.ListSelectionModel;
33 import javax.swing.RowFilter;
34 import javax.swing.SwingUtilities;
35 import javax.swing.table.DefaultTableCellRenderer;
36 import javax.swing.table.TableColumn;
37 import javax.swing.table.TableModel;
38 import javax.swing.table.TableRowSorter;
40 import org.scilab.modules.action_binding.highlevel.ScilabInterpreterManagement;
41 import org.scilab.modules.action_binding.highlevel.ScilabInterpreterManagement.InterpreterException;
42 import org.scilab.modules.gui.bridge.tab.SwingScilabDockablePanel;
43 import org.scilab.modules.gui.bridge.toolbar.SwingScilabToolBar;
44 import org.scilab.modules.gui.bridge.contextmenu.SwingScilabContextMenu;
45 import org.scilab.modules.gui.contextmenu.ContextMenu;
46 import org.scilab.modules.gui.contextmenu.ScilabContextMenu;
47 import org.scilab.modules.gui.checkboxmenuitem.CheckBoxMenuItem;
48 import org.scilab.modules.gui.menu.Menu;
49 import org.scilab.modules.gui.menu.ScilabMenu;
50 import org.scilab.modules.gui.menubar.MenuBar;
51 import org.scilab.modules.gui.menubar.ScilabMenuBar;
52 import org.scilab.modules.gui.messagebox.ScilabModalDialog;
53 import org.scilab.modules.gui.messagebox.ScilabModalDialog.IconType;
54 import org.scilab.modules.gui.textbox.TextBox;
55 import org.scilab.modules.gui.toolbar.ScilabToolBar;
56 import org.scilab.modules.gui.toolbar.ToolBar;
57 import org.scilab.modules.gui.utils.WindowsConfigurationManager;
58 import org.scilab.modules.localization.Messages;
59 import org.scilab.modules.types.ScilabTypeEnum;
60 import org.scilab.modules.ui_data.BrowseVar;
61 import org.scilab.modules.ui_data.actions.BooleanFilteringAction;
62 import org.scilab.modules.ui_data.actions.CompiledFunctionFilteringAction;
63 import org.scilab.modules.ui_data.actions.DoubleFilteringAction;
64 import org.scilab.modules.ui_data.actions.FunctionLibFilteringAction;
65 import org.scilab.modules.ui_data.actions.GraphicHandlesFilteringAction;
66 import org.scilab.modules.ui_data.actions.HelpAction;
67 import org.scilab.modules.ui_data.actions.ImplicitPolynomialFilteringAction;
68 import org.scilab.modules.ui_data.actions.IntegerFilteringAction;
69 import org.scilab.modules.ui_data.actions.IntrinsicFunctionFilteringAction;
70 import org.scilab.modules.ui_data.actions.ListFilteringAction;
71 import org.scilab.modules.ui_data.actions.MListFilteringAction;
72 import org.scilab.modules.ui_data.actions.MatlabSparseFilteringAction;
73 import org.scilab.modules.ui_data.actions.PointerFilteringAction;
74 import org.scilab.modules.ui_data.actions.PolynomialFilteringAction;
75 import org.scilab.modules.ui_data.actions.ScilabVarFilteringAction;
76 import org.scilab.modules.ui_data.actions.ScilabVarFilteringButtonAction;
77 import org.scilab.modules.ui_data.actions.SparseBoolFilteringAction;
78 import org.scilab.modules.ui_data.actions.SparseFilteringAction;
79 import org.scilab.modules.ui_data.actions.StringFilteringAction;
80 import org.scilab.modules.ui_data.actions.TListFilteringAction;
81 import org.scilab.modules.ui_data.actions.UncompiledFunctionFilteringAction;
82 import org.scilab.modules.ui_data.datatable.SwingTableModel;
83 import org.scilab.modules.ui_data.utils.UiDataMessages;
84 import org.scilab.modules.ui_data.variableeditor.actions.ExportToCsvAction;
85 import org.scilab.modules.ui_data.variableeditor.actions.PlotAction;
86 import org.scilab.modules.ui_data.variablebrowser.actions.CloseAction;
87 import org.scilab.modules.ui_data.variablebrowser.actions.DeleteAction;
88 import org.scilab.modules.ui_data.variablebrowser.actions.ModifyAction;
89 import org.scilab.modules.ui_data.variablebrowser.actions.RefreshAction;
90 import org.scilab.modules.ui_data.variablebrowser.rowfilter.VariableBrowserRowDataFilter;
91 import org.scilab.modules.ui_data.variablebrowser.rowfilter.VariableBrowserRowTypeFilter;
94 * Swing implementation of Scilab Variable browser
97 public final class SwingScilabVariableBrowser extends SwingScilabDockablePanel implements SimpleVariableBrowser {
99 public static final String VARBROWSERUUID = "3b649047-6a71-4998-bd8e-00d367a4793c";
101 private static final long serialVersionUID = 2169382559550113917L;
103 private SwingTableModel<Object> dataModel;
104 private JTable table;
106 private MenuBar menuBar;
107 private Menu fileMenu;
108 private Menu helpMenu;
109 private Menu filterMenu;
110 private CheckBoxMenuItem filterDoubleCheckBox;
111 private CheckBoxMenuItem filterPolynomialCheckBox;
112 private CheckBoxMenuItem filterScilabVarCheckBox;
113 private CheckBoxMenuItem filterBooleanCheckBox;
114 private CheckBoxMenuItem filterSparseCheckBox;
115 private CheckBoxMenuItem filterSparseBoolCheckBox;
116 private CheckBoxMenuItem filterIntegerCheckBox;
117 private CheckBoxMenuItem filterGraphicHandlesCheckBox;
118 private CheckBoxMenuItem filterStringCheckBox;
119 private CheckBoxMenuItem filterUncompiledFuncCheckBox;
120 private CheckBoxMenuItem filtercompiledFuncCheckBox;
121 private CheckBoxMenuItem filterFunctionLibCheckBox;
122 private CheckBoxMenuItem filterListCheckBox;
123 private CheckBoxMenuItem filterTListCheckBox;
124 private CheckBoxMenuItem filterMListCheckBox;
125 private CheckBoxMenuItem filterPointerCheckBox;
126 private CheckBoxMenuItem filterIntrinsicFunctionCheckBox;
127 private CheckBoxMenuItem filterMatlabSparseCheckBox;
128 private CheckBoxMenuItem filterImplicitPolynomialCheckBox;
129 private JButton filteringButton;
131 private boolean isSetData = false;
133 private TableRowSorter < ? > rowSorter;
136 * Create a JTable with data Model.
137 * @param columnsName : Titles of JTable columns.
139 public SwingScilabVariableBrowser(String[] columnsName, int[] aligment) {
140 super(UiDataMessages.VARIABLE_BROWSER, VARBROWSERUUID);
142 setAssociatedXMLIDForHelp("browsevar");
147 ToolBar toolBar = ScilabToolBar.createToolBar();
148 SwingScilabToolBar stb = (SwingScilabToolBar) toolBar.getAsSimpleToolBar();
149 stb.add(RefreshAction.createButton(UiDataMessages.REFRESH));
151 stb.add(ModifyAction.createButton(this, UiDataMessages.MODIFY));
152 stb.add(DeleteAction.createButton(this, UiDataMessages.DELETE));
154 stb.add(HelpAction.createButton(UiDataMessages.HELP));
155 filteringButton = ScilabVarFilteringButtonAction.createButton("Show/hide Scilab variable");
156 // toolBar.add(filteringButton);
159 dataModel = new SwingTableModel<Object>(columnsName);
161 table = new JTable(dataModel) {
162 //Implement table cell tool tips.
163 public String getToolTipText(MouseEvent e) {
165 TableModel model = ((JTable) e.getSource()).getModel();
166 java.awt.Point p = e.getPoint();
167 int rowIndex = rowAtPoint(p);
170 rowIndex = convertRowIndexToModel(rowIndex);
171 int colIndex = columnAtPoint(p);
172 if (colIndex == BrowseVar.TYPE_DESC_COLUMN_INDEX) { /* Scilab type */
174 tip = Messages.gettext("Scilab type:") + " " + model.getValueAt(rowIndex, BrowseVar.TYPE_COLUMN_INDEX).toString();
175 } catch (IllegalArgumentException exception) {
176 /* If the type is not known/managed, don't crash */
184 table.setFillsViewportHeight(true);
185 table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
186 table.setAutoCreateRowSorter(true);
188 /* Size of the icon column */
189 table.getColumnModel().getColumn(0).setPreferredWidth(30);
191 /* Hide the columns. But keep it in memory for the tooltip */
192 TableColumn column = table.getColumnModel().getColumn(BrowseVar.NB_COLS_INDEX);
193 table.removeColumn(column);
195 /* The order to removing does matter since it changes the positions */
197 column = table.getColumnModel().getColumn(BrowseVar.NB_ROWS_INDEX);
198 table.removeColumn(column);
200 column = table.getColumnModel().getColumn(BrowseVar.TYPE_COLUMN_INDEX);
201 table.removeColumn(column);
203 column = table.getColumnModel().getColumn(BrowseVar.FROM_SCILAB_COLUMN_INDEX);
204 table.removeColumn(column);
206 column = table.getColumnModel().getColumn(BrowseVar.BYTES_COLUMN_INDEX);
207 //table.removeColumn(column);
209 table.addMouseListener(new BrowseVarMouseListener());
210 // Mouse selection mode
211 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
212 table.setCellSelectionEnabled(true);
214 table.setBackground(Color.WHITE);
215 if (table.getGridColor().equals(Color.WHITE)) {
216 table.setGridColor(new Color(128, 128, 128));
218 table.setShowHorizontalLines(true);
219 table.setShowVerticalLines(true);
221 for (int i = 0; i < aligment.length; i++) {
222 align(table, columnsName[i], aligment[i]);
225 // Plug the shortcuts
226 ExportToCsvAction.registerAction(this, table);
228 JScrollPane scrollPane = new JScrollPane(table);
229 setContentPane(scrollPane);
230 WindowsConfigurationManager.restorationFinished(this);
236 public void addInfoBar(TextBox infoBarToAdd) {
237 setInfoBar(infoBarToAdd);
243 public void addMenuBar(MenuBar menuBarToAdd) {
244 setMenuBar(menuBarToAdd);
250 public void addToolBar(ToolBar toolBarToAdd) {
251 setToolBar(toolBarToAdd);
257 public void setColumnNames(String[] columnNames) {
258 dataModel.setColumnNames(columnNames);
264 public void setData(Object[][] data) {
266 dataModel.setData(data);
267 rowSorter = new TableRowSorter<TableModel>(dataModel);
268 this.updateRowFiltering();
271 private static void align(JTable table, String name, int alignment) {
272 if (alignment != -1) {
273 DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
274 renderer.setHorizontalAlignment(alignment);
276 TableColumn col = table.getColumn(name);
278 col.setCellRenderer(renderer);
280 } catch (IllegalArgumentException e) { }
285 * Update the display after filtering
286 * @see org.scilab.modules.ui_data.variablebrowser.SimpleVariableBrowser#updateRowFiltering()
288 public void updateRowFiltering() {
289 if (isSetData == false) { /* If the pull of the data has not been done, do it (please) */
291 ScilabInterpreterManagement.synchronousScilabExec("browsevar");
293 } catch (InterpreterException e) {
294 System.err.println(e);
297 VariableBrowserRowTypeFilter rowTypeFilter = new VariableBrowserRowTypeFilter(getFilteredTypeValues());
298 VariableBrowserRowDataFilter rowDataFilter = new VariableBrowserRowDataFilter(getFilteredDataValues());
300 List<RowFilter<Object, Object>> filters = new ArrayList<RowFilter<Object, Object>>();
301 RowFilter<Object, Object> compoundRowFilter = null;
302 filters.add(rowTypeFilter);
303 filters.add(rowDataFilter);
304 compoundRowFilter = RowFilter.andFilter(filters);
306 rowSorter.setRowFilter(compoundRowFilter);
307 table.setRowSorter(rowSorter);
311 * MouseListener inner class
313 private class BrowseVarMouseListener implements MouseListener {
318 public BrowseVarMouseListener() {
323 * Mouse CLICKED event handling
325 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
327 public void mouseClicked(MouseEvent e) {
329 // Right click management
330 if ((e.getClickCount() == 1 && SwingUtilities.isRightMouseButton(e)) || e.isPopupTrigger()) {
333 int clickedRow = ((JTable) e.getSource()).rowAtPoint(e.getPoint());
334 // Does nothing if no variable selected
335 if (clickedRow != -1) {
336 // Right click ? We force the selection of the current row
337 table.setRowSelectionInterval(clickedRow, clickedRow);
338 table.setEditingRow(clickedRow);
340 displayContextMenu();
344 if (e.getClickCount() >= 2) {
345 int clickedRow = ((JTable) e.getSource()).rowAtPoint(e.getPoint());
346 if (clickedRow != -1) {
347 String variableName = table.getValueAt(clickedRow, BrowseVar.NAME_COLUMN_INDEX).toString();
349 String variableVisibility = ((JTable) e.getSource())
350 .getValueAt(((JTable) e.getSource()).getSelectedRow(), BrowseVar.VISIBILITY_COLUMN_INDEX).toString();
351 SwingScilabVariableBrowser.this.startEditVar(variableVisibility, variableName);
357 * Mouse ENTERED event handling
359 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
361 public void mouseEntered(MouseEvent e) {
365 * Mouse EXITED event handling
367 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
369 public void mouseExited(MouseEvent e) {
373 * Mouse PRESSED event handling
375 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
377 public void mousePressed(MouseEvent e) {
381 * Mouse RELEASED event handling
383 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
385 public void mouseReleased(MouseEvent e) {
390 * Create and display the context menu
392 private void displayContextMenu() {
393 ContextMenu menu = ScilabContextMenu.createContextMenu();
394 ModifyAction modify = new ModifyAction(SwingScilabVariableBrowser.this);
395 menu.add(modify.createMenuItem());
397 DeleteAction delete = new DeleteAction(SwingScilabVariableBrowser.this);
398 menu.add(delete.createMenuItem());
400 menu.add(ExportToCsvAction.createMenuItem(SwingScilabVariableBrowser.this, UiDataMessages.EXPORTCSV));
402 Menu menuPlot = ScilabMenu.createMenu();
403 menuPlot.setText(UiDataMessages.PLOTALL);
404 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "plot2d", false));
405 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "Matplot", false));
406 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "grayplot", false));
407 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "Sgrayplot", false));
408 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "champ", false));
409 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "histplot", false));
410 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "mesh", false));
411 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "surf", false));
412 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "hist3d", false));
413 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "contour2d", false));
414 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "pie", false));
417 menu.setVisible(true);
419 ((SwingScilabContextMenu) menu.getAsSimpleContextMenu()).setLocation(
420 MouseInfo.getPointerInfo().getLocation().x,
421 MouseInfo.getPointerInfo().getLocation().y);
429 * Creates the menuBar
431 public void buildMenuBar() {
432 menuBar = ScilabMenuBar.createMenuBar();
434 fileMenu = ScilabMenu.createMenu();
435 fileMenu.setText(UiDataMessages.FILE);
436 fileMenu.setMnemonic('F');
437 fileMenu.add(RefreshAction.createMenuItem(UiDataMessages.REFRESH));
438 fileMenu.addSeparator();
439 fileMenu.add(CloseAction.createMenu());
441 menuBar.add(fileMenu);
443 filterMenu = ScilabMenu.createMenu();
444 filterMenu.setText(UiDataMessages.FILTER);
445 filterMenu.setMnemonic('I');
447 filterScilabVarCheckBox = ScilabVarFilteringAction.createCheckBoxMenu();
448 filterScilabVarCheckBox.setChecked(true);
449 filterMenu.add(filterScilabVarCheckBox);
451 filterMenu.addSeparator();
453 filterBooleanCheckBox = BooleanFilteringAction.createCheckBoxMenu();
454 filterBooleanCheckBox.setChecked(true);
455 filterMenu.add(filterBooleanCheckBox);
457 filterDoubleCheckBox = DoubleFilteringAction.createCheckBoxMenu();
458 filterDoubleCheckBox.setChecked(true);
459 filterMenu.add(filterDoubleCheckBox);
461 filterPolynomialCheckBox = PolynomialFilteringAction.createCheckBoxMenu();
462 filterPolynomialCheckBox.setChecked(true);
463 filterMenu.add(filterPolynomialCheckBox);
465 filterFunctionLibCheckBox = FunctionLibFilteringAction.createCheckBoxMenu();
466 filterMenu.add(filterFunctionLibCheckBox);
468 filterStringCheckBox = StringFilteringAction.createCheckBoxMenu();
469 filterStringCheckBox.setChecked(true);
470 filterMenu.add(filterStringCheckBox);
472 filterSparseCheckBox = SparseFilteringAction.createCheckBoxMenu();
473 filterSparseCheckBox.setChecked(true);
474 filterMenu.add(filterSparseCheckBox);
476 filterSparseBoolCheckBox = SparseBoolFilteringAction.createCheckBoxMenu();
477 filterSparseBoolCheckBox.setChecked(true);
478 filterMenu.add(filterSparseBoolCheckBox);
480 filterIntegerCheckBox = IntegerFilteringAction.createCheckBoxMenu();
481 filterIntegerCheckBox.setChecked(true);
482 filterMenu.add(filterIntegerCheckBox);
484 filterGraphicHandlesCheckBox = GraphicHandlesFilteringAction.createCheckBoxMenu();
485 filterGraphicHandlesCheckBox.setChecked(true);
486 filterMenu.add(filterGraphicHandlesCheckBox);
488 filterUncompiledFuncCheckBox = UncompiledFunctionFilteringAction.createCheckBoxMenu();
489 filterMenu.add(filterUncompiledFuncCheckBox);
491 filtercompiledFuncCheckBox = CompiledFunctionFilteringAction.createCheckBoxMenu();
492 filterMenu.add(filtercompiledFuncCheckBox);
494 filterListCheckBox = ListFilteringAction.createCheckBoxMenu();
495 filterListCheckBox.setChecked(true);
496 filterMenu.add(filterListCheckBox);
498 filterTListCheckBox = TListFilteringAction.createCheckBoxMenu();
499 filterTListCheckBox.setChecked(true);
500 filterMenu.add(filterTListCheckBox);
502 filterMListCheckBox = MListFilteringAction.createCheckBoxMenu();
503 filterMListCheckBox.setChecked(true);
504 filterMenu.add(filterMListCheckBox);
506 filterPointerCheckBox = PointerFilteringAction.createCheckBoxMenu();
507 filterPointerCheckBox.setChecked(true);
508 filterMenu.add(filterPointerCheckBox);
510 filterIntrinsicFunctionCheckBox = IntrinsicFunctionFilteringAction.createCheckBoxMenu();
511 filterMenu.add(filterIntrinsicFunctionCheckBox);
513 filterMatlabSparseCheckBox = MatlabSparseFilteringAction.createCheckBoxMenu();
514 filterMenu.add(filterMatlabSparseCheckBox);
516 filterImplicitPolynomialCheckBox = ImplicitPolynomialFilteringAction.createCheckBoxMenu();
517 filterMenu.add(filterImplicitPolynomialCheckBox);
519 menuBar.add(filterMenu);
521 helpMenu = ScilabMenu.createMenu();
522 helpMenu.setText("?");
523 helpMenu.setMnemonic('?');
524 helpMenu.add(HelpAction.createMenuItem(UiDataMessages.HELP));
525 menuBar.add(helpMenu);
530 * Filter management of data (Scilab or user data)
531 * @return the set of filtered values
533 public boolean getFilteredDataValues() {
534 return filterScilabVarCheckBox.isChecked();
539 * Filter management of type
540 * @return the set of filtered values
542 public HashSet<ScilabTypeEnum> getFilteredTypeValues() {
543 HashSet<ScilabTypeEnum> filteredValues = new HashSet<ScilabTypeEnum>();
544 // TODO to replace later by something which smells less
545 if (!filterBooleanCheckBox.isChecked()) {
546 filteredValues.add(ScilabTypeEnum.sci_boolean);
549 if (!filterDoubleCheckBox.isChecked()) {
550 filteredValues.add(ScilabTypeEnum.sci_matrix);
553 if (!filterFunctionLibCheckBox.isChecked()) {
554 filteredValues.add(ScilabTypeEnum.sci_lib);
557 if (!filterStringCheckBox.isChecked()) {
558 filteredValues.add(ScilabTypeEnum.sci_strings);
561 if (!filterPolynomialCheckBox.isChecked()) {
562 filteredValues.add(ScilabTypeEnum.sci_poly);
565 if (!filterSparseCheckBox.isChecked()) {
566 filteredValues.add(ScilabTypeEnum.sci_sparse);
569 if (!filterSparseBoolCheckBox.isChecked()) {
570 filteredValues.add(ScilabTypeEnum.sci_boolean_sparse);
573 if (!filterIntegerCheckBox.isChecked()) {
574 filteredValues.add(ScilabTypeEnum.sci_ints);
577 if (!filterGraphicHandlesCheckBox.isChecked()) {
578 filteredValues.add(ScilabTypeEnum.sci_handles);
581 if (!filterUncompiledFuncCheckBox.isChecked()) {
582 filteredValues.add(ScilabTypeEnum.sci_u_function);
585 if (!filtercompiledFuncCheckBox.isChecked()) {
586 filteredValues.add(ScilabTypeEnum.sci_c_function);
589 if (!filterListCheckBox.isChecked()) {
590 filteredValues.add(ScilabTypeEnum.sci_list);
593 if (!filterTListCheckBox.isChecked()) {
594 filteredValues.add(ScilabTypeEnum.sci_tlist);
597 if (!filterMListCheckBox.isChecked()) {
598 filteredValues.add(ScilabTypeEnum.sci_mlist);
601 if (!filterPointerCheckBox.isChecked()) {
602 filteredValues.add(ScilabTypeEnum.sci_pointer);
605 if (!filterIntrinsicFunctionCheckBox.isChecked()) {
606 filteredValues.add(ScilabTypeEnum.sci_intrinsic_function);
609 if (!filterMatlabSparseCheckBox.isChecked()) {
610 filteredValues.add(ScilabTypeEnum.sci_matlab_sparse);
613 if (!filterImplicitPolynomialCheckBox.isChecked()) {
614 filteredValues.add(ScilabTypeEnum.sci_implicit_poly);
617 return filteredValues;
621 * Get this browser as a Tab object
624 public SwingScilabDockablePanel getBrowserTab() {
630 * Return the variable Browser Table
631 * @return The variable Browser Table
633 public JTable getTable() {
638 * Start the variable editor
640 * @param variableVisibility the visibility of the variable
641 * @param variableName The variable name
643 public void startEditVar(String variableVisibility, String variableName) {
644 // Global variables are not editable yet
645 if (variableVisibility.equals("global")) {
646 ScilabModalDialog.show(getBrowserTab(),
647 UiDataMessages.GLOBAL_NOT_EDITABLE,
648 UiDataMessages.VARIABLE_EDITOR,
649 IconType.ERROR_ICON);
654 asynchronousScilabExec(null,
655 "if exists(\"" + variableName + "\") == 1 then "
657 + " editvar(\"" + variableName + "\"); "
659 + " messagebox(\"Variables of type \"\"\" + typeof ("
660 + variableName + ") + \"\"\" can not be edited.\""
661 + ",\"" + UiDataMessages.VARIABLE_EDITOR + "\", \"error\", \"modal\");"
662 + " clear ans;" // clear return value of messagebox
665 + " messagebox(\"Variable \"\""
666 + variableName + "\"\" no more exists.\""
667 + ",\"" + UiDataMessages.VARIABLE_EDITOR + "\", \"error\", \"modal\");"
668 + " clear ans;" // clear return value of messagebox
669 + " browsevar();" // Reload browsevar to remove cleared variables
671 } catch (InterpreterException e1) {
672 System.err.println("An error in the interpreter has been catched: " + e1.getLocalizedMessage());