[new_scs_m, y, typ] = interfaceAlias('set', scs_m, []);
export_to_hdf5(hdf5FileToSave, "new_scs_m");
- xcosNotify(hdf5FileToSave);
endfunction
[new_scs_m, y, typ] = interfaceAlias(job, scs_m, []);
export_to_hdf5(hdf5FileToSave, "new_scs_m");
- xcosNotify(hdf5FileToSave);
endfunction
import org.scilab.modules.gui.tab.Tab;
import org.scilab.modules.gui.utils.UIElementMapper;
import org.scilab.modules.gui.window.ScilabWindow;
-import org.scilab.modules.localization.Messages;
import org.scilab.modules.xcos.utils.XcosComponent;
import com.mxgraph.swing.mxGraphComponent;
import javax.swing.SwingUtilities;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.gui.tab.Tab;
import org.scilab.modules.xcos.block.BasicBlock;
import org.scilab.modules.xcos.block.SuperBlock;
import org.scilab.modules.xcos.palette.XcosPaletteManager;
import org.scilab.modules.xcos.palette.actions.ViewPaletteBrowserAction;
import org.scilab.modules.xcos.utils.ConfigXcosManager;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
public final class Xcos {
/** Palette creation */
static {
/* load scicos libraries (macros) */
- InterpreterManagement.requestScilabExec("loadScicosLibs();");
+ XcosInterpreterManagement.requestScilabExec("loadScicosLibs();");
}
/**
package org.scilab.modules.xcos.actions;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.io.File;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.xcos.block.SuperBlock;
import org.scilab.modules.xcos.graph.XcosDiagram;
import org.scilab.modules.xcos.io.BlockReader;
-import org.scilab.modules.xcos.utils.Signal;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
import com.mxgraph.util.mxConstants;
H5Write.writeInDataSet(file_id, "scs_m", block.getAsScilabObj());
H5Write.closeFile(file_id);
- InterpreterManagement.requestScilabExec("xcosCodeGeneration(\""+tempOutput.getAbsolutePath()+"\""+
- ", \""+tempInput.getAbsolutePath()+"\");");
- Thread launchMe = new Thread() {
- public void run() {
- Signal.wait(tempInput.getAbsolutePath());
- // Now read new Block
- BasicBlock modifiedBlock = BlockReader.readBlockFromFile(tempInput.getAbsolutePath());
- block.updateBlockSettings(modifiedBlock);
- block.setInterfaceFunctionName(modifiedBlock.getInterfaceFunctionName());
- block.setSimulationFunctionName(modifiedBlock.getSimulationFunctionName());
- block.setSimulationFunctionType(modifiedBlock.getSimulationFunctionType());
- block.setStyle("blockWithLabel");
- mxUtils.setCellStyles(block.getParentDiagram().getModel(),
- new Object[] {block}, mxConstants.STYLE_SHAPE, mxConstants.SHAPE_RECTANGLE);
- block.setValue(block.getSimulationFunctionName());
- block.setChild(null);
- ((XcosDiagram) getGraph(null)).info(XcosMessages.EMPTY_INFO);
- }
- };
- launchMe.start();
+ String command = "xcosCodeGeneration(\""
+ + tempOutput.getAbsolutePath() + "\"" + ", \""
+ + tempInput.getAbsolutePath() + "\");";
+
+ XcosInterpreterManagement.AsynchronousScilabExec(command, new ActionListener() {
+ public void actionPerformed(ActionEvent arg0) {
+ // Now read new Block
+ BasicBlock modifiedBlock = BlockReader.readBlockFromFile(tempInput.getAbsolutePath());
+ block.updateBlockSettings(modifiedBlock);
+ block.setInterfaceFunctionName(modifiedBlock.getInterfaceFunctionName());
+ block.setSimulationFunctionName(modifiedBlock.getSimulationFunctionName());
+ block.setSimulationFunctionType(modifiedBlock.getSimulationFunctionType());
+ block.setStyle("blockWithLabel");
+ mxUtils.setCellStyles(block.getParentDiagram().getModel(),
+ new Object[] {block}, mxConstants.STYLE_SHAPE, mxConstants.SHAPE_RECTANGLE);
+ block.setValue(block.getSimulationFunctionName());
+ block.setChild(null);
+ ((XcosDiagram) getGraph(null)).info(XcosMessages.EMPTY_INFO);
+ }
+ });
}
catch (Exception e) {
package org.scilab.modules.xcos.actions;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.xcos.graph.XcosDiagram;
-import org.scilab.modules.xcos.utils.Signal;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
/**
temp = File.createTempFile("xcos", ".h5");
temp.deleteOnExit();
((XcosDiagram) getGraph(null)).dumpToHdf5File(temp.getAbsolutePath());
- InterpreterManagement.requestScilabExec(
- "import_from_hdf5(\"" + temp.getAbsolutePath() + "\");" +
- "xcos_compile(scs_m);" +
- "xcosNotify(\""+compilationEnd+"\");"
- );
- Signal.wait(compilationEnd);
- ((XcosDiagram) getGraph(null)).info(XcosMessages.EMPTY_INFO);
+
+ String command = "import_from_hdf5(\"" + temp.getAbsolutePath() + "\");" +
+ "xcos_compile(scs_m);" +
+ "xcosNotify(\""+compilationEnd+"\");";
+ XcosInterpreterManagement.AsynchronousScilabExec(command, new ActionListener() {
+ public void actionPerformed(ActionEvent arg0) {
+ ((XcosDiagram) getGraph(null)).info(XcosMessages.EMPTY_INFO);
+ }
+ });
} catch (IOException e) {
e.printStackTrace();
}
import javax.swing.JPanel;
import javax.swing.ListSelectionModel;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.xcos.graph.XcosDiagram;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
public class DebugLevelAction extends DefaultAction {
public void actionPerformed(ActionEvent e) {
int value = ((DebugLevel)debugList.getSelectedValue()).getValue();
diagram.setDebugLevel(value);
- InterpreterManagement.requestScilabExec("scicos_debug("+value+");");
+ XcosInterpreterManagement.SynchronousScilabExec("scicos_debug("+value+");");
mainFrame.dispose();
}
import java.io.File;
import java.io.IOException;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.gui.pushbutton.PushButton;
import org.scilab.modules.xcos.graph.XcosDiagram;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
public class DumpAction extends DefaultAction {
File temp = File.createTempFile("xcos",".h5");
temp.deleteOnExit();
((XcosDiagram) getGraph(e)).dumpToHdf5File(temp.getAbsolutePath());
- InterpreterManagement.requestScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");deletefile(\"" + temp.getAbsolutePath()+"\");");
+ XcosInterpreterManagement.SynchronousScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");deletefile(\"" + temp.getAbsolutePath()+"\");");
} catch (IOException e1) {
e1.printStackTrace();
}
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.bridge.filechooser.SwingScilabFileChooser;
-import org.scilab.modules.gui.filechooser.FileChooser;
import org.scilab.modules.gui.filechooser.ScilabFileChooser;
-import org.scilab.modules.gui.filechooser.SimpleFileChooser;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.gui.pushbutton.PushButton;
import org.scilab.modules.gui.utils.SciFileFilter;
import org.scilab.modules.xcos.XcosTab;
import org.scilab.modules.xcos.graph.XcosDiagram;
import org.scilab.modules.xcos.utils.ConfigXcosManager;
-import org.scilab.modules.xcos.utils.XcosFileType;
import org.scilab.modules.xcos.utils.XcosMessages;
/**
package org.scilab.modules.xcos.actions;
import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.gui.pushbutton.PushButton;
import org.scilab.modules.xcos.XcosTab;
import org.scilab.modules.xcos.graph.XcosDiagram;
-import org.scilab.modules.xcos.utils.Signal;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
public class StartAction extends DefaultAction {
((XcosDiagram) getGraph(null)).getParentTab().getInfoBar().draw();
try {
temp = File.createTempFile("xcos",".h5");
- temp.deleteOnExit();
((XcosDiagram) getGraph(e)).getRootDiagram().dumpToHdf5File(temp.getAbsolutePath());
- Thread launchMe = new Thread() {
- public void run() {
- Signal.wait(simulationEnd);
- ((XcosDiagram) getGraph(null)).info(XcosMessages.EMPTY_INFO);
- XcosTab.setStartEnabled(true);
- }
- };
- launchMe.start();
- InterpreterManagement.requestScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");"
- +"scicos_debug("+((XcosDiagram) getGraph(e)).getDebugLevel()+");"
- +"xcos_simulate(scs_m);"
- +"xcosNotify(\"" + simulationEnd + "\");"
- +"deletefile(\"" + temp.getAbsolutePath()+"\");");
+
+ String command = "import_from_hdf5(\""+temp.getAbsolutePath()+"\");"
+ +"scicos_debug("+((XcosDiagram) getGraph(e)).getDebugLevel()+");"
+ +"xcos_simulate(scs_m);"
+ +"xcosNotify(\"" + simulationEnd + "\");"
+ +"deletefile(\"" + temp.getAbsolutePath()+"\");";
+ XcosInterpreterManagement.AsynchronousScilabExec(command, new ActionListener() {
+ public void actionPerformed(ActionEvent arg0) {
+ ((XcosDiagram) getGraph(null)).info(XcosMessages.EMPTY_INFO);
+ XcosTab.setStartEnabled(true);
+ }
+ });
} catch (IOException e1) {
e1.printStackTrace();
XcosTab.setStartEnabled(true);
import java.awt.event.ActionEvent;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.gui.pushbutton.PushButton;
import org.scilab.modules.xcos.XcosTab;
import org.scilab.modules.xcos.graph.XcosDiagram;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
public class StopAction extends DefaultAction {
}
public void actionPerformed(ActionEvent e) {
- InterpreterManagement.requestScilabExec("haltscicos");
+ XcosInterpreterManagement.requestScilabExec("haltscicos");
((XcosDiagram) getGraph(null)).info(XcosMessages.EMPTY_INFO);
XcosTab.setStartEnabled(true);
}
import java.io.File;
import java.io.IOException;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.xcos.graph.XcosDiagram;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
File temp = File.createTempFile("xcos",".h5");
temp.deleteOnExit();
((XcosDiagram) getGraph(null)).dumpToHdf5File(temp.getAbsolutePath());
- InterpreterManagement.requestScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");"
+ XcosInterpreterManagement.SynchronousScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");"
+"tree_show(scs_m);"
+"deletefile(\"" + temp.getAbsolutePath()+"\");");
} catch (IOException e1) {
import java.io.File;
import java.io.IOException;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.gui.pushbutton.PushButton;
import org.scilab.modules.xcos.graph.XcosDiagram;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
public class ViewInScicosAction extends DefaultAction {
temp = File.createTempFile("xcos",".h5");
temp.deleteOnExit();
((XcosDiagram) getGraph(e)).dumpToHdf5File(temp.getAbsolutePath());
- InterpreterManagement.requestScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");scicos(scs_m);deletefile(\"" + temp.getAbsolutePath()+"\");");
+ XcosInterpreterManagement.SynchronousScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");scicos(scs_m);deletefile(\"" + temp.getAbsolutePath()+"\");");
} catch (IOException e1) {
e1.printStackTrace();
}
import java.awt.event.ActionEvent;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.gui.pushbutton.PushButton;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
/**
* @see org.scilab.modules.gui.events.callback.CallBack#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
- InterpreterManagement.requestScilabExec("exec(\"" + System.getenv("SCI") + "/modules/xcos/demos/xcos_demos.sce\", -1)");
+ XcosInterpreterManagement.requestScilabExec("exec(\"" + System.getenv("SCI") + "/modules/xcos/demos/xcos_demos.sce\", -1)");
}
}
import java.awt.event.ActionEvent;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.gui.pushbutton.PushButton;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
/**
* @see org.scilab.modules.gui.events.callback.CallBack#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
- InterpreterManagement.requestScilabExec("help xcos");
+ XcosInterpreterManagement.requestScilabExec("help xcos");
}
}
import java.awt.MouseInfo;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import ncsa.hdf.hdf5lib.exceptions.HDF5Exception;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.CopyAction;
import org.scilab.modules.graph.actions.CutAction;
import org.scilab.modules.xcos.port.input.InputPort;
import org.scilab.modules.xcos.port.output.OutputPort;
import org.scilab.modules.xcos.utils.BlockPositioning;
-import org.scilab.modules.xcos.utils.Signal;
import org.scilab.modules.xcos.utils.XcosConstants;
import org.scilab.modules.xcos.utils.XcosEvent;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
import com.mxgraph.model.mxGeometry;
cmd += ", \"set\"";
cmd += ", \""+tempContext.getAbsolutePath()+"\");";
- InterpreterManagement.putCommandInScilabQueue(cmd);
final BasicBlock currentBlock = this;
- Thread launchMe = new Thread() {
- public void run() {
- Signal.wait(tempInput.getAbsolutePath());
- // Now read new Block
- BasicBlock modifiedBlock = BlockReader.readBlockFromFile(tempInput.getAbsolutePath());
- updateBlockSettings(modifiedBlock);
- getParentDiagram().fireEvent(XcosEvent.ADD_PORTS, new mxEventObject(new Object[] {currentBlock}));
- setLocked(false);
- }
- };
- launchMe.start();
+ XcosInterpreterManagement.AsynchronousScilabExec(cmd, new ActionListener() {
+ public void actionPerformed(ActionEvent arg0) {
+ // Now read new Block
+ BasicBlock modifiedBlock = BlockReader.readBlockFromFile(tempInput.getAbsolutePath());
+ updateBlockSettings(modifiedBlock);
+ getParentDiagram().fireEvent(XcosEvent.ADD_PORTS, new mxEventObject(new Object[] {currentBlock}));
+ setLocked(false);
+ }
+ });
setLocked(true);
} catch (IOException e) {
private static final long serialVersionUID = -1480947262397441951L;
public void callBack() {
- InterpreterManagement.requestScilabExec("help " + getInterfaceFunctionName());
+ XcosInterpreterManagement.requestScilabExec("help " + getInterfaceFunctionName());
}
});
menu.add(help);
import java.io.File;
import java.io.IOException;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.xcos.io.BlockReader;
-import org.scilab.modules.xcos.utils.Signal;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
public abstract class ContextUpdate extends BasicBlock{
cmd += ", \""+tempContext.getAbsolutePath()+"\");";
synchronized (_mutex_) {
- InterpreterManagement.putCommandInScilabQueue(cmd);
- Signal.wait(tempInput.getAbsolutePath());
+ XcosInterpreterManagement.SynchronousScilabExec(cmd);
BasicBlock modifiedBlock = BlockReader.readBlockFromFile(tempInput.getAbsolutePath());
updateBlockSettings(modifiedBlock);
}
import java.awt.event.ActionEvent;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.xcos.block.BasicBlock;
import org.scilab.modules.xcos.graph.XcosDiagram;
import org.scilab.modules.xcos.utils.XcosDialogs;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
/**
public void actionPerformed(ActionEvent e) {
BasicBlock selectedBlock = ((BasicBlock) getGraph(e).getSelectionCell());
if (selectedBlock != null) {
- InterpreterManagement.requestScilabExec("help " + selectedBlock.getInterfaceFunctionName());
+ XcosInterpreterManagement.requestScilabExec("help " + selectedBlock.getInterfaceFunctionName());
} else {
XcosDialogs.noBlockSelected((XcosDiagram) getGraph(e));
}
import java.io.File;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.xcos.graph.XcosDiagram;
import org.scilab.modules.xcos.io.BasicBlockInfo;
import org.scilab.modules.xcos.link.BasicLink;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
int file_id = H5Write.createFile(temp.getAbsolutePath());
H5Write.writeInDataSet(file_id, "scs_m", BasicBlockInfo.getAsScilabObj((BasicBlock) selectedCells[i]));
H5Write.closeFile(file_id);
- InterpreterManagement.requestScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");tree_show(scs_m);deletefile(\"" + temp.getAbsolutePath()+"\");");
+ XcosInterpreterManagement.SynchronousScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");tree_show(scs_m);deletefile(\"" + temp.getAbsolutePath()+"\");");
}
catch (Exception e) {
// Do Nothing !!!
int file_id = H5Write.createFile(temp.getAbsolutePath());
H5Write.writeInDataSet(file_id, "scs_m", ((BasicLink) selectedCells[i]).getAsScilabObj());
H5Write.closeFile(file_id);
- InterpreterManagement.requestScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");tree_show(scs_m);deletefile(\"" + temp.getAbsolutePath()+"\");");;
+ XcosInterpreterManagement.SynchronousScilabExec("import_from_hdf5(\""+temp.getAbsolutePath()+"\");tree_show(scs_m);deletefile(\"" + temp.getAbsolutePath()+"\");");;
}
catch (Exception e) {
// Do Nothing !!!
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
-import java.util.logging.Logger;
-
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import java.util.Map;
import org.scilab.modules.xcos.block.BasicBlock;
-import org.scilab.modules.xcos.block.SplitBlock;
import org.scilab.modules.xcos.io.XcosObjectCodec;
import org.scilab.modules.xcos.port.BasicPort;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.mxgraph.io.mxCodec;
-import com.mxgraph.model.mxICell;
public class BasicPortCodec extends XcosObjectCodec {
import javax.swing.border.Border;
import org.flexdock.plaf.common.border.ShadowBorder;
-import org.scilab.modules.action_binding.InterpreterManagement;
import org.scilab.modules.gui.bridge.contextmenu.SwingScilabContextMenu;
import org.scilab.modules.gui.contextmenu.ContextMenu;
import org.scilab.modules.gui.contextmenu.ScilabContextMenu;
import org.scilab.modules.xcos.graph.XcosDiagram;
import org.scilab.modules.xcos.io.BlockReader;
import org.scilab.modules.xcos.utils.XcosConstants;
+import org.scilab.modules.xcos.utils.XcosInterpreterManagement;
import org.scilab.modules.xcos.utils.XcosMessages;
import com.mxgraph.swing.util.mxGraphTransferable;
private static final long serialVersionUID = -8720228686621887887L;
public void callBack() {
- InterpreterManagement.requestScilabExec("help " + BlockPalette.this.getText());
+ XcosInterpreterManagement.requestScilabExec("help " + BlockPalette.this.getText());
}
});
menu.add(help);
import org.scilab.modules.graph.ScilabGraph;
import org.scilab.modules.graph.actions.DefaultAction;
import org.scilab.modules.gui.bridge.filechooser.SwingScilabFileChooser;
-import org.scilab.modules.gui.filechooser.FileChooser;
import org.scilab.modules.gui.filechooser.ScilabFileChooser;
import org.scilab.modules.gui.menuitem.MenuItem;
import org.scilab.modules.gui.pushbutton.PushButton;
import org.scilab.modules.gui.utils.SciFileFilter;
import org.scilab.modules.xcos.palette.XcosPaletteManager;
-import org.scilab.modules.xcos.utils.XcosFileType;
import org.scilab.modules.xcos.utils.XcosMessages;
public class LoadAsPalAction extends DefaultAction {
import org.scilab.modules.xcos.graph.PaletteDiagram;
import com.mxgraph.swing.mxGraphComponent;
-import com.mxgraph.util.mxRectangle;
import com.mxgraph.view.mxGraph;
import com.mxgraph.view.mxGraphView;
import java.io.IOException;
import java.util.Arrays;
-import org.scilab.modules.action_binding.InterpreterManagement;
-
/**
* All the filetype recognized by Xcos.
*/
String cmd = "scs_m = importScicosDiagram(\"" + filename.getAbsolutePath() + "\");";
cmd += "export_to_hdf5(\"" + tempOutput.getAbsolutePath() + "\", \"scs_m\");";
cmd += "xcosNotify(\"" + tempOutput.getAbsolutePath() + "\");";
- InterpreterManagement.requestScilabExec(cmd);
+ XcosInterpreterManagement.SynchronousScilabExec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
- Signal.wait(tempOutput.getAbsolutePath());
return tempOutput;
}
}
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2009 - DIGITEO - Clément DAVID
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+package org.scilab.modules.xcos.utils;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+
+import javax.swing.SwingUtilities;
+
+import org.scilab.modules.action_binding.InterpreterManagement;
+
+/**
+ * Implements useful methods to communicate with the Scilab interpreter.
+ */
+public class XcosInterpreterManagement extends InterpreterManagement {
+
+ private static Executor executor = Executors.newSingleThreadExecutor();
+
+ private XcosInterpreterManagement() {
+ // full static class so private constructor
+ }
+
+ /**
+ * Execute the command and wait for the end of the execution.
+ *
+ * @param command
+ * The scilab command
+ * @return Status of the execution
+ */
+ public static int SynchronousScilabExec(String command) {
+ final String uid = Integer.toString(command.hashCode());
+
+ command += ";xcosNotify(\"" + uid + "\");";
+ int ret = InterpreterManagement.requestScilabExec(command);
+ Signal.wait(uid);
+ return ret;
+ }
+
+ /**
+ * Execute the command asynchronously and call the callback actionPerformed
+ * method when the execution ends.
+ *
+ * The ActionEvent send to the callback actionPerformed method is composed
+ * of :
+ * <ul>
+ * <li>source: The XcosInterpreterManagement.class value which is unique.</li>
+ * <li>id: the command.hashCode() value use it to compare to your own.</li>
+ * <li>command: the command passed to the interpreter.</li>
+ * </ul>
+ *
+ * Note: the callback is called on the EDT thread so your are free to
+ * manipulate AWT/SWING objects on it.
+ *
+ * @param command
+ * The command to execute
+ * @param callback
+ * The callback which is called at the end of the execution.
+ */
+ public static void AsynchronousScilabExec(final String command,
+ final ActionListener callback) {
+ final int uid = command.hashCode();
+ final String uidDesc = Integer.toString(uid);
+ final String fullCommand = command + ";xcosNotify(\"" + uidDesc + "\");";
+ final ActionEvent event = new ActionEvent(
+ XcosInterpreterManagement.class, uid, command);
+
+ executor.execute(new Runnable() {
+ public void run() {
+ InterpreterManagement.putCommandInScilabQueue(fullCommand);
+ Signal.wait(Integer.toString(uid));
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ callback.actionPerformed(event);
+ }
+ });
+ }
+ });
+ }
+}