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 */
180 if (colIndex == BrowseVar.SIZE_COLUMN_INDEX) {
181 /* Use the getModel() method because the
182 * column 5 has been removed from display
183 * but still exist in the model */
184 tip = Messages.gettext("Bytes:") + " " + model.getValueAt(rowIndex, BrowseVar.BYTES_COLUMN_INDEX).toString();
192 table.setFillsViewportHeight(true);
193 table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
194 table.setAutoCreateRowSorter(true);
196 /* Size of the icon column */
197 table.getColumnModel().getColumn(0).setPreferredWidth(30);
199 /* Hide the columns. But keep it in memory for the tooltip */
200 TableColumn column = table.getColumnModel().getColumn(BrowseVar.NB_COLS_INDEX);
201 table.removeColumn(column);
203 /* The order to removing does matter since it changes the positions */
205 column = table.getColumnModel().getColumn(BrowseVar.NB_ROWS_INDEX);
206 table.removeColumn(column);
208 column = table.getColumnModel().getColumn(BrowseVar.TYPE_COLUMN_INDEX);
209 table.removeColumn(column);
211 column = table.getColumnModel().getColumn(BrowseVar.FROM_SCILAB_COLUMN_INDEX);
212 table.removeColumn(column);
214 column = table.getColumnModel().getColumn(BrowseVar.BYTES_COLUMN_INDEX);
215 table.removeColumn(column);
217 table.addMouseListener(new BrowseVarMouseListener());
218 // Mouse selection mode
219 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
220 table.setCellSelectionEnabled(true);
222 table.setBackground(Color.WHITE);
223 if (table.getGridColor().equals(Color.WHITE)) {
224 table.setGridColor(new Color(128, 128, 128));
226 table.setShowHorizontalLines(true);
227 table.setShowVerticalLines(true);
229 for (int i = 0; i < aligment.length; i++) {
230 align(table, columnsName[i], aligment[i]);
233 // Plug the shortcuts
234 ExportToCsvAction.registerAction(this, table);
236 JScrollPane scrollPane = new JScrollPane(table);
237 setContentPane(scrollPane);
238 WindowsConfigurationManager.restorationFinished(this);
244 public void addInfoBar(TextBox infoBarToAdd) {
245 setInfoBar(infoBarToAdd);
251 public void addMenuBar(MenuBar menuBarToAdd) {
252 setMenuBar(menuBarToAdd);
258 public void addToolBar(ToolBar toolBarToAdd) {
259 setToolBar(toolBarToAdd);
265 public void setColumnNames(String[] columnNames) {
266 dataModel.setColumnNames(columnNames);
272 public void setData(Object[][] data) {
274 dataModel.setData(data);
275 rowSorter = new TableRowSorter<TableModel>(dataModel);
276 this.updateRowFiltering();
279 private static void align(JTable table, String name, int alignment) {
280 if (alignment != -1) {
281 DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
282 renderer.setHorizontalAlignment(alignment);
284 TableColumn col = table.getColumn(name);
286 col.setCellRenderer(renderer);
288 } catch (IllegalArgumentException e) { }
293 * Update the display after filtering
294 * @see org.scilab.modules.ui_data.variablebrowser.SimpleVariableBrowser#updateRowFiltering()
296 public void updateRowFiltering() {
297 if (isSetData == false) { /* If the pull of the data has not been done, do it (please) */
299 ScilabInterpreterManagement.synchronousScilabExec("browsevar");
301 } catch (InterpreterException e) {
302 System.err.println(e);
305 VariableBrowserRowTypeFilter rowTypeFilter = new VariableBrowserRowTypeFilter(getFilteredTypeValues());
306 VariableBrowserRowDataFilter rowDataFilter = new VariableBrowserRowDataFilter(getFilteredDataValues());
308 List<RowFilter<Object, Object>> filters = new ArrayList<RowFilter<Object, Object>>();
309 RowFilter<Object, Object> compoundRowFilter = null;
310 filters.add(rowTypeFilter);
311 filters.add(rowDataFilter);
312 compoundRowFilter = RowFilter.andFilter(filters);
314 rowSorter.setRowFilter(compoundRowFilter);
315 table.setRowSorter(rowSorter);
319 * MouseListener inner class
321 private class BrowseVarMouseListener implements MouseListener {
326 public BrowseVarMouseListener() {
331 * Mouse CLICKED event handling
333 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
335 public void mouseClicked(MouseEvent e) {
337 // Right click management
338 if ((e.getClickCount() == 1 && SwingUtilities.isRightMouseButton(e)) || e.isPopupTrigger()) {
341 int clickedRow = ((JTable) e.getSource()).rowAtPoint(e.getPoint());
342 // Does nothing if no variable selected
343 if (clickedRow != -1) {
344 // Right click ? We force the selection of the current row
345 table.setRowSelectionInterval(clickedRow, clickedRow);
346 table.setEditingRow(clickedRow);
348 displayContextMenu();
352 if (e.getClickCount() >= 2) {
353 int clickedRow = ((JTable) e.getSource()).rowAtPoint(e.getPoint());
354 if (clickedRow != -1) {
355 String variableName = table.getValueAt(clickedRow, BrowseVar.NAME_COLUMN_INDEX).toString();
357 String variableVisibility = ((JTable) e.getSource())
358 .getValueAt(((JTable) e.getSource()).getSelectedRow(), BrowseVar.VISIBILITY_COLUMN_INDEX).toString();
359 SwingScilabVariableBrowser.this.startEditVar(variableVisibility, variableName);
365 * Mouse ENTERED event handling
367 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
369 public void mouseEntered(MouseEvent e) {
373 * Mouse EXITED event handling
375 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
377 public void mouseExited(MouseEvent e) {
381 * Mouse PRESSED event handling
383 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
385 public void mousePressed(MouseEvent e) {
389 * Mouse RELEASED event handling
391 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
393 public void mouseReleased(MouseEvent e) {
398 * Create and display the context menu
400 private void displayContextMenu() {
401 ContextMenu menu = ScilabContextMenu.createContextMenu();
402 ModifyAction modify = new ModifyAction(SwingScilabVariableBrowser.this);
403 menu.add(modify.createMenuItem());
405 DeleteAction delete = new DeleteAction(SwingScilabVariableBrowser.this);
406 menu.add(delete.createMenuItem());
408 menu.add(ExportToCsvAction.createMenuItem(SwingScilabVariableBrowser.this, UiDataMessages.EXPORTCSV));
410 Menu menuPlot = ScilabMenu.createMenu();
411 menuPlot.setText(UiDataMessages.PLOTALL);
412 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "plot2d", false));
413 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "Matplot", false));
414 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "grayplot", false));
415 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "Sgrayplot", false));
416 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "champ", false));
417 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "histplot", false));
418 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "mesh", false));
419 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "surf", false));
420 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "hist3d", false));
421 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "contour2d", false));
422 menuPlot.add(PlotAction.createMenuItem((SwingScilabDockablePanel)SwingScilabVariableBrowser.this, "pie", false));
425 menu.setVisible(true);
427 ((SwingScilabContextMenu) menu.getAsSimpleContextMenu()).setLocation(
428 MouseInfo.getPointerInfo().getLocation().x,
429 MouseInfo.getPointerInfo().getLocation().y);
437 * Creates the menuBar
439 public void buildMenuBar() {
440 menuBar = ScilabMenuBar.createMenuBar();
442 fileMenu = ScilabMenu.createMenu();
443 fileMenu.setText(UiDataMessages.FILE);
444 fileMenu.setMnemonic('F');
445 fileMenu.add(RefreshAction.createMenuItem(UiDataMessages.REFRESH));
446 fileMenu.addSeparator();
447 fileMenu.add(CloseAction.createMenu());
449 menuBar.add(fileMenu);
451 filterMenu = ScilabMenu.createMenu();
452 filterMenu.setText(UiDataMessages.FILTER);
453 filterMenu.setMnemonic('I');
455 filterScilabVarCheckBox = ScilabVarFilteringAction.createCheckBoxMenu();
456 filterScilabVarCheckBox.setChecked(true);
457 filterMenu.add(filterScilabVarCheckBox);
459 filterMenu.addSeparator();
461 filterBooleanCheckBox = BooleanFilteringAction.createCheckBoxMenu();
462 filterBooleanCheckBox.setChecked(true);
463 filterMenu.add(filterBooleanCheckBox);
465 filterDoubleCheckBox = DoubleFilteringAction.createCheckBoxMenu();
466 filterDoubleCheckBox.setChecked(true);
467 filterMenu.add(filterDoubleCheckBox);
469 filterPolynomialCheckBox = PolynomialFilteringAction.createCheckBoxMenu();
470 filterPolynomialCheckBox.setChecked(true);
471 filterMenu.add(filterPolynomialCheckBox);
473 filterFunctionLibCheckBox = FunctionLibFilteringAction.createCheckBoxMenu();
474 filterMenu.add(filterFunctionLibCheckBox);
476 filterStringCheckBox = StringFilteringAction.createCheckBoxMenu();
477 filterStringCheckBox.setChecked(true);
478 filterMenu.add(filterStringCheckBox);
480 filterSparseCheckBox = SparseFilteringAction.createCheckBoxMenu();
481 filterSparseCheckBox.setChecked(true);
482 filterMenu.add(filterSparseCheckBox);
484 filterSparseBoolCheckBox = SparseBoolFilteringAction.createCheckBoxMenu();
485 filterSparseBoolCheckBox.setChecked(true);
486 filterMenu.add(filterSparseBoolCheckBox);
488 filterIntegerCheckBox = IntegerFilteringAction.createCheckBoxMenu();
489 filterIntegerCheckBox.setChecked(true);
490 filterMenu.add(filterIntegerCheckBox);
492 filterGraphicHandlesCheckBox = GraphicHandlesFilteringAction.createCheckBoxMenu();
493 filterGraphicHandlesCheckBox.setChecked(true);
494 filterMenu.add(filterGraphicHandlesCheckBox);
496 filterUncompiledFuncCheckBox = UncompiledFunctionFilteringAction.createCheckBoxMenu();
497 filterMenu.add(filterUncompiledFuncCheckBox);
499 filtercompiledFuncCheckBox = CompiledFunctionFilteringAction.createCheckBoxMenu();
500 filterMenu.add(filtercompiledFuncCheckBox);
502 filterListCheckBox = ListFilteringAction.createCheckBoxMenu();
503 filterListCheckBox.setChecked(true);
504 filterMenu.add(filterListCheckBox);
506 filterTListCheckBox = TListFilteringAction.createCheckBoxMenu();
507 filterTListCheckBox.setChecked(true);
508 filterMenu.add(filterTListCheckBox);
510 filterMListCheckBox = MListFilteringAction.createCheckBoxMenu();
511 filterMListCheckBox.setChecked(true);
512 filterMenu.add(filterMListCheckBox);
514 filterPointerCheckBox = PointerFilteringAction.createCheckBoxMenu();
515 filterPointerCheckBox.setChecked(true);
516 filterMenu.add(filterPointerCheckBox);
518 filterIntrinsicFunctionCheckBox = IntrinsicFunctionFilteringAction.createCheckBoxMenu();
519 filterMenu.add(filterIntrinsicFunctionCheckBox);
521 filterMatlabSparseCheckBox = MatlabSparseFilteringAction.createCheckBoxMenu();
522 filterMenu.add(filterMatlabSparseCheckBox);
524 filterImplicitPolynomialCheckBox = ImplicitPolynomialFilteringAction.createCheckBoxMenu();
525 filterMenu.add(filterImplicitPolynomialCheckBox);
527 menuBar.add(filterMenu);
529 helpMenu = ScilabMenu.createMenu();
530 helpMenu.setText("?");
531 helpMenu.setMnemonic('?');
532 helpMenu.add(HelpAction.createMenuItem(UiDataMessages.HELP));
533 menuBar.add(helpMenu);
538 * Filter management of data (Scilab or user data)
539 * @return the set of filtered values
541 public boolean getFilteredDataValues() {
542 return filterScilabVarCheckBox.isChecked();
547 * Filter management of type
548 * @return the set of filtered values
550 public HashSet<ScilabTypeEnum> getFilteredTypeValues() {
551 HashSet<ScilabTypeEnum> filteredValues = new HashSet<ScilabTypeEnum>();
552 // TODO to replace later by something which smells less
553 if (!filterBooleanCheckBox.isChecked()) {
554 filteredValues.add(ScilabTypeEnum.sci_boolean);
557 if (!filterDoubleCheckBox.isChecked()) {
558 filteredValues.add(ScilabTypeEnum.sci_matrix);
561 if (!filterFunctionLibCheckBox.isChecked()) {
562 filteredValues.add(ScilabTypeEnum.sci_lib);
565 if (!filterStringCheckBox.isChecked()) {
566 filteredValues.add(ScilabTypeEnum.sci_strings);
569 if (!filterPolynomialCheckBox.isChecked()) {
570 filteredValues.add(ScilabTypeEnum.sci_poly);
573 if (!filterSparseCheckBox.isChecked()) {
574 filteredValues.add(ScilabTypeEnum.sci_sparse);
577 if (!filterSparseBoolCheckBox.isChecked()) {
578 filteredValues.add(ScilabTypeEnum.sci_boolean_sparse);
581 if (!filterIntegerCheckBox.isChecked()) {
582 filteredValues.add(ScilabTypeEnum.sci_ints);
585 if (!filterGraphicHandlesCheckBox.isChecked()) {
586 filteredValues.add(ScilabTypeEnum.sci_handles);
589 if (!filterUncompiledFuncCheckBox.isChecked()) {
590 filteredValues.add(ScilabTypeEnum.sci_u_function);
593 if (!filtercompiledFuncCheckBox.isChecked()) {
594 filteredValues.add(ScilabTypeEnum.sci_c_function);
597 if (!filterListCheckBox.isChecked()) {
598 filteredValues.add(ScilabTypeEnum.sci_list);
601 if (!filterTListCheckBox.isChecked()) {
602 filteredValues.add(ScilabTypeEnum.sci_tlist);
605 if (!filterMListCheckBox.isChecked()) {
606 filteredValues.add(ScilabTypeEnum.sci_mlist);
609 if (!filterPointerCheckBox.isChecked()) {
610 filteredValues.add(ScilabTypeEnum.sci_pointer);
613 if (!filterIntrinsicFunctionCheckBox.isChecked()) {
614 filteredValues.add(ScilabTypeEnum.sci_intrinsic_function);
617 if (!filterMatlabSparseCheckBox.isChecked()) {
618 filteredValues.add(ScilabTypeEnum.sci_matlab_sparse);
621 if (!filterImplicitPolynomialCheckBox.isChecked()) {
622 filteredValues.add(ScilabTypeEnum.sci_implicit_poly);
625 return filteredValues;
629 * Get this browser as a Tab object
632 public SwingScilabDockablePanel getBrowserTab() {
638 * Return the variable Browser Table
639 * @return The variable Browser Table
641 public JTable getTable() {
646 * Start the variable editor
648 * @param variableVisibility the visibility of the variable
649 * @param variableName The variable name
651 public void startEditVar(String variableVisibility, String variableName) {
652 // Global variables are not editable yet
653 if (variableVisibility.equals("global")) {
654 ScilabModalDialog.show(getBrowserTab(),
655 UiDataMessages.GLOBAL_NOT_EDITABLE,
656 UiDataMessages.VARIABLE_EDITOR,
657 IconType.ERROR_ICON);
662 asynchronousScilabExec(null,
663 "if exists(\"" + variableName + "\") == 1 then "
665 + " editvar(\"" + variableName + "\"); "
667 + " messagebox(\"Variables of type \"\"\" + typeof ("
668 + variableName + ") + \"\"\" can not be edited.\""
669 + ",\"" + UiDataMessages.VARIABLE_EDITOR + "\", \"error\", \"modal\");"
670 + " clear ans;" // clear return value of messagebox
673 + " messagebox(\"Variable \"\""
674 + variableName + "\"\" no more exists.\""
675 + ",\"" + UiDataMessages.VARIABLE_EDITOR + "\", \"error\", \"modal\");"
676 + " clear ans;" // clear return value of messagebox
677 + " browsevar();" // Reload browsevar to remove cleared variables
679 } catch (InterpreterException e1) {
680 System.err.println("An error in the interpreter has been catched: " + e1.getLocalizedMessage());