r36105 - in /packages/scilab/trunk/debian: control patches/jgraphx-1.2.0.diff

sylvestre at users.alioth.debian.org sylvestre at users.alioth.debian.org
Sun Jan 24 14:32:23 UTC 2010


Author: sylvestre
Date: Sun Jan 24 14:32:22 2010
New Revision: 36105

URL: http://svn.debian.org/wsvn/debian-science/?sc=1&rev=36105
Log:
Version of runtime

Modified:
    packages/scilab/trunk/debian/control
    packages/scilab/trunk/debian/patches/jgraphx-1.2.0.diff

Modified: packages/scilab/trunk/debian/control
URL: http://svn.debian.org/wsvn/debian-science/packages/scilab/trunk/debian/control?rev=36105&op=diff
==============================================================================
--- packages/scilab/trunk/debian/control (original)
+++ packages/scilab/trunk/debian/control Sun Jan 24 14:32:22 2010
@@ -79,7 +79,7 @@
  libflexdock-java, libjogl-java (>= 1.1.1), libjrosetta-java (>= 1.0.1),
  libjlatexmath-java,  
  javahelp2, ${misc:Depends},
- libjgraphx-java, libjhdf5-java
+ libjgraphx-java (>= 1.2.0.7), libjhdf5-java (>= 2.6)
 Recommends: pvm
 Replaces: scilab (< 5.0)
 Description: Scientific software package for numerical computations (binary files)

Modified: packages/scilab/trunk/debian/patches/jgraphx-1.2.0.diff
URL: http://svn.debian.org/wsvn/debian-science/packages/scilab/trunk/debian/patches/jgraphx-1.2.0.diff?rev=36105&op=diff
==============================================================================
--- packages/scilab/trunk/debian/patches/jgraphx-1.2.0.diff (original)
+++ packages/scilab/trunk/debian/patches/jgraphx-1.2.0.diff Sun Jan 24 14:32:22 2010
@@ -188,2766 +188,160 @@
  
 Seulement dans scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/block/: SuperBlock.java.orig
 Seulement dans scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/block/: SuperBlock.java.rej
-Index: scilab-5.2.0/home/sylvestre/dev/debian/debian-science/packages/scilab/build-area/scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/actions/ShowHideShadowAction.java
-===================================================================
---- scilab-5.2.0.orig/home/sylvestre/dev/debian/debian-science/packages/scilab/build-area/scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/actions/ShowHideShadowAction.java	2010-01-23 23:59:51.000000000 +0100
-+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
-@@ -1,82 +0,0 @@
--/*
-- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-- * Copyright (C) 2009 - DIGITEO - Vincent COUVERT
-- * 
-- * 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.actions;
--
--import java.util.Hashtable;
--
--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.XcosMessages;
--
--import com.mxgraph.util.mxConstants;
--import com.mxgraph.util.mxUtils;
--import com.mxgraph.view.mxCellState;
--
--/**
-- * Block shadow handling
-- * @author Vincent COUVERT
-- */
--public class ShowHideShadowAction extends DefaultAction {
--
--	private static final long serialVersionUID = 1L;
--
--	/**
--	 * Constructor
--	 * @param scilabGraph associated diagram
--	 */
--	public ShowHideShadowAction(ScilabGraph scilabGraph) {
--		super(XcosMessages.SHOWHIDE_SHADOW, scilabGraph);
--	}
--
--	/**
--	 * Menu added to the menubar
--	 * @param scilabGraph associated diagram
--	 * @return the menu
--	 */
--	public static MenuItem createMenu(ScilabGraph scilabGraph) {
--		return createMenu(XcosMessages.SHOWHIDE_SHADOW, null, new ShowHideShadowAction(scilabGraph), null);
--	}
--	
--	/**
--	 * Action !!
--	 * @see org.scilab.modules.graph.actions.DefaultAction#doAction()
--	 */
--	public void doAction() {
--	    if (((XcosDiagram) getGraph(null)).getSelectionCells().length != 0) {
--		
--		Object[] allCells = ((XcosDiagram) getGraph(null)).getSelectionCells();
--		
--		for (int i = 0 ; i < allCells.length ; ++i) {
--		    if (allCells[i] instanceof BasicBlock) {
--			//((BasicBlock) allCells[i])
--				mxCellState state = getGraph(null).getView().getState(allCells[i]);
--				Map<String, Object> style;
--				if (state != null) {
--					style = state.getStyle();
--				} else {
--					style = getGraph(null).getCellStyle(allCells[i]);
--				}
--				if (style != null)
--				{
--					String value = Boolean.toString(mxUtils.isTrue(style, mxConstants.STYLE_SHADOW, false));
--					getGraph(null).setCellStyles(mxConstants.STYLE_SHADOW, value, new Object[] { allCells[i] });
--				}
--		    }
--		}
--	    }
--	}
--
--}
-Index: scilab-5.2.0/home/sylvestre/dev/debian/debian-science/packages/scilab/build-area/scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/graph/XcosDiagram.java
-===================================================================
---- scilab-5.2.0.orig/home/sylvestre/dev/debian/debian-science/packages/scilab/build-area/scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/graph/XcosDiagram.java	2010-01-23 23:37:15.000000000 +0100
-+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
-@@ -1,2217 +0,0 @@
--/*
-- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-- * Copyright (C) 2009 - DIGITEO - Bruno JOFRET
-- *
-- * 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.graph;
--
--import java.awt.Color;
--import java.awt.MouseInfo;
--import java.awt.event.KeyEvent;
--import java.awt.event.KeyListener;
--import java.awt.event.MouseEvent;
--import java.awt.event.MouseListener;
--import java.beans.PropertyChangeEvent;
--import java.beans.PropertyChangeListener;
--import java.io.File;
--import java.io.FileWriter;
--import java.io.IOException;
--import java.rmi.server.UID;
--import java.util.ArrayList;
--import java.util.Collections;
--import java.util.HashMap;
--import java.util.List;
--
--import javax.swing.JFileChooser;
--import javax.swing.JOptionPane;
--import javax.swing.SwingUtilities;
--import javax.xml.parsers.DocumentBuilder;
--import javax.xml.parsers.DocumentBuilderFactory;
--import javax.xml.parsers.ParserConfigurationException;
--
--import org.scilab.modules.graph.ScilabGraph;
--import org.scilab.modules.graph.actions.PasteAction;
--import org.scilab.modules.graph.actions.RedoAction;
--import org.scilab.modules.graph.actions.SelectAllAction;
--import org.scilab.modules.graph.actions.UndoAction;
--import org.scilab.modules.graph.actions.ZoomInAction;
--import org.scilab.modules.graph.actions.ZoomOutAction;
--import org.scilab.modules.gui.bridge.contextmenu.SwingScilabContextMenu;
--import org.scilab.modules.gui.bridge.filechooser.SwingScilabFileChooser;
--import org.scilab.modules.gui.checkboxmenuitem.CheckBoxMenuItem;
--import org.scilab.modules.gui.contextmenu.ContextMenu;
--import org.scilab.modules.gui.contextmenu.ScilabContextMenu;
--import org.scilab.modules.gui.filechooser.FileChooser;
--import org.scilab.modules.gui.filechooser.ScilabFileChooser;
--import org.scilab.modules.gui.messagebox.ScilabModalDialog;
--import org.scilab.modules.gui.messagebox.ScilabModalDialog.AnswerOption;
--import org.scilab.modules.gui.messagebox.ScilabModalDialog.ButtonType;
--import org.scilab.modules.gui.messagebox.ScilabModalDialog.IconType;
--import org.scilab.modules.gui.tab.Tab;
--import org.scilab.modules.gui.utils.SciFileFilter;
--import org.scilab.modules.gui.utils.UIElementMapper;
--import org.scilab.modules.gui.window.ScilabWindow;
--import org.scilab.modules.hdf5.scilabTypes.ScilabMList;
--import org.scilab.modules.xcos.Xcos;
--import org.scilab.modules.xcos.XcosTab;
--import org.scilab.modules.xcos.actions.DiagramBackgroundAction;
--import org.scilab.modules.xcos.actions.SetContextAction;
--import org.scilab.modules.xcos.actions.SetupAction;
--import org.scilab.modules.xcos.actions.XcosDocumentationAction;
--import org.scilab.modules.xcos.actions.XcosShortCut;
--import org.scilab.modules.xcos.block.AfficheBlock;
--import org.scilab.modules.xcos.block.BasicBlock;
--import org.scilab.modules.xcos.block.ContextUpdate;
--import org.scilab.modules.xcos.block.SplitBlock;
--import org.scilab.modules.xcos.block.SuperBlock;
--import org.scilab.modules.xcos.block.TextBlock;
--import org.scilab.modules.xcos.block.actions.ShowParentAction;
--import org.scilab.modules.xcos.io.BlockReader;
--import org.scilab.modules.xcos.io.BlockWriter;
--import org.scilab.modules.xcos.io.XcosCodec;
--import org.scilab.modules.xcos.link.BasicLink;
--import org.scilab.modules.xcos.link.commandcontrol.CommandControlLink;
--import org.scilab.modules.xcos.link.explicit.ExplicitLink;
--import org.scilab.modules.xcos.link.implicit.ImplicitLink;
--import org.scilab.modules.xcos.port.BasicPort;
--import org.scilab.modules.xcos.port.PortCheck;
--import org.scilab.modules.xcos.port.command.CommandPort;
--import org.scilab.modules.xcos.port.control.ControlPort;
--import org.scilab.modules.xcos.port.input.ExplicitInputPort;
--import org.scilab.modules.xcos.port.input.ImplicitInputPort;
--import org.scilab.modules.xcos.port.input.InputPort;
--import org.scilab.modules.xcos.port.output.ExplicitOutputPort;
--import org.scilab.modules.xcos.port.output.ImplicitOutputPort;
--import org.scilab.modules.xcos.port.output.OutputPort;
--import org.scilab.modules.xcos.utils.BlockPositioning;
--import org.scilab.modules.xcos.utils.ConfigXcosManager;
--import org.scilab.modules.xcos.utils.XcosDialogs;
--import org.scilab.modules.xcos.utils.XcosEvent;
--import org.scilab.modules.xcos.utils.XcosFileType;
--import org.scilab.modules.xcos.utils.XcosMessages;
--import org.w3c.dom.Document;
--import org.xml.sax.SAXException;
--
--import com.mxgraph.io.mxCodec;
--import com.mxgraph.model.mxCell;
--import com.mxgraph.model.mxGeometry;
--import com.mxgraph.model.mxGraphModel;
--import com.mxgraph.model.mxICell;
--import com.mxgraph.model.mxGraphModel.mxChildChange;
--import com.mxgraph.model.mxGraphModel.mxStyleChange;
--import com.mxgraph.util.mxEvent;
--import com.mxgraph.util.mxEventObject;
--import com.mxgraph.util.mxPoint;
--import com.mxgraph.util.mxRectangle;
--import com.mxgraph.util.mxUndoableEdit;
--import com.mxgraph.util.mxUtils;
--import com.mxgraph.util.mxUndoableEdit.mxUndoableChange;
--import com.mxgraph.view.mxMultiplicity;
--
--public class XcosDiagram extends ScilabGraph {
--
--    // Default values : SCI/modules/scicos/macros/scicos_scicos/scicos_params.sci
--    private double finalIntegrationTime = 100000;
--    private double integratorAbsoluteTolerance = 1e-4;
--    private double integratorRelativeTolerance = 1e-6;
--    private double toleranceOnTime = 1e-10;
--    private double maxIntegrationTimeinterval = finalIntegrationTime + 1;
--    private double realTimeScaling = 0;
--    private double solver = 0;
--    private double maximumStepSize = 0;
--    private int debugLevel = 0;
--    private String[] context = new String[]{""};
--    private String version = "scicos4.2";
--    //private Window palette;
--    private Tab viewPort;
--    
--    /*to manage splitLink*/
--    private BasicLink splitLink = null;
--    private BasicPort splitPort = null;
--    private mxPoint dragSplitPos = null;
--    private boolean waitSplitRelease = false;
--    
--    /*to manage path link*/
--    private BasicLink drawLink = null;
--    private boolean waitPathAddEdge = false;
--    private boolean waitPathRelease = false;
--
--    private CheckBoxMenuItem viewPortMenu;
--    private CheckBoxMenuItem gridMenu;
--    private SetContextAction action;
--    
--    protected mxIEventListener undoEnabler = new mxIEventListener()
--    {
--	public void invoke(Object source, mxEventObject evt) {
--		if (getParentTab() != null) {
--			((XcosTab)getParentTab()).setEnabledUndo(true);
--		}
--	}
--    };
--
--    public Object addEdge(Object edge, Object parent, Object source,
--    		Object target, Integer index) {	
--    	
--    	// Command -> Control
--    	if (source instanceof CommandPort) {
--    		if (target instanceof ControlPort) {
--    			return super.addEdge(new CommandControlLink(), parent, source, target, index);
--    		}
--    	}
--
--    	// Control -> Command
--    	// Switch source and target !
--    	if (target instanceof CommandPort) {
--    		if (source instanceof ControlPort) {
--    			return super.addEdge(new CommandControlLink(), parent, target, source, index);
--    		}
--    	}
--
--    	// ExplicitOutput -> ExplicitInput
--    	if (source instanceof ExplicitOutputPort) {
--    		if (target instanceof ExplicitInputPort) {
--    			return super.addEdge(new ExplicitLink(), parent, source, target, index);
--    		}
--    	}
--    	// ExplicitInput -> ExplicitOutput
--    	// Switch source and target !
--    	if (target instanceof ExplicitOutputPort) {
--    		if (source instanceof ExplicitInputPort) {
--    			return super.addEdge(new ExplicitLink(), parent, target, source, index);
--    		}
--    	}
--
--    	// ImplicitOutput -> ImplicitInput
--    	if (source instanceof ImplicitOutputPort) {
--    		if (target instanceof ImplicitInputPort) {
--    			return super.addEdge(new ImplicitLink(), parent, source, target, index);
--    		}
--    	}
--    	// ImplicitInput -> ImplicitOutput
--    	// Switch source and target !
--    	if (target instanceof ImplicitOutputPort) {
--    		if (source instanceof ImplicitInputPort) {
--    			return super.addEdge(new ImplicitLink(), parent, target, source, index);
--    		}
--    	}
--
--    	// ImplicitInput -> ImplicitInput
--    	if (source instanceof ImplicitInputPort) {
--    		if (target instanceof ImplicitInputPort) {
--    			return super.addEdge(new ImplicitLink(), parent, source, target, index);
--    		}
--    	}
--    	// ImplicitOutputPort -> ImplicitOutput
--    	// Switch source and target !
--    	if (target instanceof ImplicitOutputPort) {
--    		if (source instanceof ImplicitOutputPort) {
--    			return super.addEdge(new ImplicitLink(), parent, target, source, index);
--    		}
--    	}
--    	
--    	// ExplicitLink -> ExplicitInputPort
--    	if (source instanceof ExplicitLink) {
--    		if (target instanceof ExplicitInputPort) {
--    			return addSplitEdge((BasicLink) source, (BasicPort) target);
--    		}
--    	}
--    	// ExplicitOutput -> ExpliciLink
--    	// Switch source and target !
--    	if (target instanceof ExplicitLink) {
--    		if (source instanceof ExplicitInputPort) {
--    			waitSplitRelease = true;
--    			splitLink = (BasicLink) target;
--    			splitPort = (BasicPort) source;
--    			return null;
--    			//return addSplitEdge((BasicLink) target, (BasicPort)source);
--    		}
--    	}
--
--    	// ImplicitLink -> ImplicitInputPort
--    	if (source instanceof ImplicitLink) {
--    		if (target instanceof ImplicitInputPort) {
--    			return addSplitEdge((BasicLink) source, (BasicPort) target);
--    		}
--    	}
--    	// ImplicitInputPort -> ImplicitLink
--    	// Switch source and target !
--    	if (target instanceof ImplicitLink) {
--    		if (source instanceof ImplicitInputPort) {
--    			waitSplitRelease = true;
--    			splitLink = (BasicLink) target;
--    			splitPort = (BasicPort) source;
--    			return null;
--    			//return addSplitEdge((BasicLink) target, (BasicPort)source);
--    		}
--    	}
--    	
--    	// ImplicitLink -> ImplicitOutputPort
--    	if (source instanceof ImplicitLink) {
--    		if (target instanceof ImplicitOutputPort) {
--    			return addSplitEdge((BasicLink) source, (BasicPort) target);
--    		}
--    	}
--    	// ImplicitOutputPort -> ImplicitLink
--    	// Switch source and target !
--    	if (target instanceof ImplicitLink) {
--    		if (source instanceof ImplicitOutputPort) {
--    			waitSplitRelease = true;
--    			splitLink = (BasicLink) target;
--    			splitPort = (BasicPort) source;
--    			return null;
--    			//return addSplitEdge((BasicLink) target, (BasicPort)source);
--    		}
--    	}
--
--    	// CommandControlLink -> ControlPort
--    	if (source instanceof CommandControlLink) {
--    		if (target instanceof ControlPort) {
--    			return addSplitEdge((BasicLink) source, (BasicPort) target);
--    		}
--    	}
--    	// ControlPort -> CommandControlLink
--    	// Switch source and target !
--    	if (target instanceof CommandControlLink) {
--    		if (source instanceof ControlPort) {
--    			waitSplitRelease = true;
--    			splitLink = (BasicLink) target;
--    			splitPort = (BasicPort) source;
--    			return null;
--    			//return addSplitEdge((BasicLink) target, (BasicPort)source);
--    		}
--    	}
--
--    	
--    	if(source != null && target == null) {
--    		drawLink = null;
--    		if(source instanceof ExplicitInputPort || source instanceof ExplicitOutputPort) {
--    			drawLink = (BasicLink) super.addEdge(new ExplicitLink(), getDefaultParent(), source, target, index);
--    		} else if(source instanceof ImplicitInputPort || source instanceof ImplicitOutputPort) {
--    			drawLink = (BasicLink) super.addEdge(new ImplicitLink(), getDefaultParent(), source, target, index);
--    		} else if(source instanceof ControlPort || source instanceof CommandPort) {
--    			drawLink = (BasicLink) super.addEdge(new CommandControlLink(), getDefaultParent(), source, target, index);
--    		} else if(source instanceof BasicLink) {
--    			SplitBlock split = (SplitBlock) addSplitEdge((BasicLink)source, (BasicPort)target);
--    			drawLink = (BasicLink) split.getOut2().getEdgeAt(0);
--    	    }
--
--    		if(drawLink != null) {
--    	    	waitPathRelease = true;
--    	    }
--    	    
--    		info(XcosMessages.DRAW_LINK);
--    	    return drawLink;
--    	}
--    	return null;
--    }
--
--    private Object addSplitEdge(BasicLink link, mxICell target) {
--    	BasicPort linkSource =  (BasicPort) link.getSource();
--    	BasicPort linkTarget =  (BasicPort) link.getTarget();
--
--    	getModel().beginUpdate();
--    	if (dragSplitPos == null) {
--    		dragSplitPos = new mxPoint();
--
--            //check splitPosition values
--            double srcX = linkSource.getParent().getGeometry().getX() + linkSource.getGeometry().getCenterX();
--            double tgtX = linkTarget.getParent().getGeometry().getX() + linkTarget.getGeometry().getCenterX();
--            double srcY = linkSource.getParent().getGeometry().getY() + linkSource.getGeometry().getCenterY();
--            double tgtY = linkTarget.getParent().getGeometry().getY() + linkTarget.getGeometry().getCenterY();
--
--            double offsetX = (tgtX - srcX) / 2;
--            double offsetY = (tgtY - srcY) / 2;
--            dragSplitPos.setX(srcX + offsetX);
--            dragSplitPos.setY(srcY + offsetY);
--    	}
--   	
--    	SplitBlock splitBlock = null;
--    	
--    	if (target instanceof BasicLink) {
--    	    splitBlock = new SplitBlock("SPLIT_f", linkSource, linkTarget, (BasicPort) ((BasicLink)target).getSource());
--    	} else {
--    	    splitBlock = new SplitBlock("SPLIT_f", linkSource, linkTarget, (BasicPort) target);
--    	}
--    	
--    	splitBlock.setStyle("SPLIT_f");
--    	mxGeometry geom = new mxGeometry();
--    	geom.setX(dragSplitPos.getX() - 3); //-3 for splitBlock size
--    	geom.setY(dragSplitPos.getY() - 3); //-3 for splitBlock size
--    	splitBlock.setGeometry(geom);
--    	addCell(splitBlock);
--    	
--    	
--    	//Update old link
--    	
--    	//get breaking segment
--    	int pos = link.findNearestSegment(dragSplitPos);
--
--    	//save points after breaking point
--    	mxPoint[] saveStartPoints = link.getPoints(pos, true);
--    	mxPoint[] saveEndPoints = link.getPoints(pos, false);
--    	
--    	
--    	//disable events
--    	getModel().beginUpdate();
--    	getModel().remove(link);
--    	getModel().endUpdate();
--
--    	BasicLink newLink1 = BasicLink.createLinkFromPorts(linkSource, splitBlock.getIn());
--    	newLink1.setGeometry(new mxGeometry(0,0,80,80));
--    	newLink1.setSource(linkSource);
--    	newLink1.setTarget(splitBlock.getIn());
--
--    	//add points after breaking point in the new link
--    	if (saveStartPoints != null) {
--    		for (int i = 0; i < saveStartPoints.length; i++) {
--    			newLink1.addPoint(saveStartPoints[i].getX(), saveStartPoints[i].getY());
--    		}
--       	}
--    	addCell(newLink1);
--    	
--    	BasicLink newLink2 = BasicLink.createLinkFromPorts(splitBlock.getOut1(), linkTarget);
--    	newLink2.setGeometry(new mxGeometry(0,0,80,80));
--    	newLink2.setSource(splitBlock.getOut1());
--    	newLink2.setTarget(linkTarget);
--    	//add points after breaking point in the new link
--    	if (saveEndPoints != null) {
--    		for (int i = 0; i < saveEndPoints.length; i++) {
--    			newLink2.addPoint(saveEndPoints[i].getX(), saveEndPoints[i].getY());
--    		}
--       	}
--    	addCell(newLink2);
--
--    	if(target instanceof BasicLink) {
--    	    //build link inverted ! it will be invert later
--    	    ((BasicLink)target).setTarget(splitBlock.getOut2());
--    	    addCell(target);
--    	} else {
--    	    BasicLink newLink3 = BasicLink.createLinkFromPorts(splitBlock.getOut2(), (BasicPort) target);
--    	    newLink3.setGeometry(new mxGeometry(0,0,80,80));
--    	    newLink3.setSource(splitBlock.getOut2());
--    	    newLink3.setTarget((mxCell) target);
--    	    addCell(newLink3);
--    	}
--    	
--    	dragSplitPos = null;
--	refresh();
--	getModel().endUpdate();
--	
--    	return splitBlock;
--    }
--    
--    public XcosDiagram() {
--	super();
--	getModel().addListener(mxEvent.UNDO, undoEnabler);
--	getView().addListener(mxEvent.UNDO, undoEnabler);
--	keyboardHandler = new XcosShortCut(this);
--	mxCodec codec = new mxCodec();
--
--	try {
--	    File uri = new File(System.getenv("SCI"));
--	    String xml = mxUtils.readFile(System.getenv("SCI")+ "/modules/xcos/etc/Xcos-style.xml");
--	    xml = xml.replaceAll("\\$SCILAB", uri.toURI().toURL().toString());
--	    Document document = mxUtils.parse(xml);
--	    codec.decode(document.getDocumentElement(), getStylesheet());
--	} catch (IOException e) {
--	    e.printStackTrace();
--	}
--
--	getAsComponent().setToolTips(true);
--
--	// Forbid disconnecting cells once it is connected.
--	setCellsDisconnectable(false);
--
--	// Forbid pending edges.
--	//setAllowDanglingEdges(false);
--	setAllowDanglingEdges(true);
--
--	// Cannot connect port to itself.
--	setAllowLoops(false);
--
--	// Override isCellResizable to filter what the user can resize
--	setCellsResizable(true);
--
--	// force auto resize cell
--	setAutoSizeCells(true);
--
--	/* Labels use HTML if not equal to interface function name */
--	setHtmlLabels(true);
--
--	//
--	//setCloneInvalidEdges(false);
--	setCloneInvalidEdges(true);
--
--	// Override isCellEditable to filter what the user can edit
--	setCellsEditable(true);
--	// This enable stop editing cells when pressing Enter.
--	getAsComponent().setEnterStopsCellEditing(false);
--
--	setConnectableEdges(true);
--	getAsComponent().setTolerance(1);
--	
--	getAsComponent().getViewport().setOpaque(false);
--	getAsComponent().setBackground(Color.WHITE);
--
--	setMultiplicities();
--	
--	// Add a listener to track when model is changed
--	getModel().addListener(XcosEvent.CHANGE, new ModelTracker());
--	
--	setGridVisible(true);
--	
--	((mxCell) getDefaultParent()).setId((new UID()).toString());
--	((mxCell) getModel().getRoot()).setId((new UID()).toString());
--    }
--
--    /**
--     * Install the multiplicities (use for link checking)
--     */
--    private void setMultiplicities() {
--	mxMultiplicity[] multiplicities = new mxMultiplicity[10];
--
--	
--	// Input data port
--	multiplicities[0] = new PortCheck(ExplicitInputPort.class, Collections
--		.unmodifiableList(new ArrayList<Class<? extends mxCell>>() {
--		    private static final long serialVersionUID = -4987163442006736665L;
--		    {
--			add(ExplicitOutputPort.class);
--			add(ExplicitLink.class);
--		    }
--		}), XcosMessages.LINK_ERROR_EXPLICIT_IN);
--	multiplicities[1] = new PortCheck(ImplicitInputPort.class, Collections
--		.unmodifiableList(new ArrayList<Class<? extends mxCell>>() {
--		    private static final long serialVersionUID = 886376532181210926L;
--		    {
--			add(ImplicitOutputPort.class);
--			add(ImplicitInputPort.class);
--			add(ImplicitLink.class);
--		    }
--		}), XcosMessages.LINK_ERROR_IMPLICIT_IN);
--
--	// Output data port
--	multiplicities[2] = new PortCheck(ExplicitOutputPort.class, Collections
--		.unmodifiableList(new ArrayList<Class<? extends mxCell>>() {
--		    private static final long serialVersionUID = 4594127972486054821L;
--		    {
--			add(ExplicitInputPort.class);
--		    }
--		}), XcosMessages.LINK_ERROR_EXPLICIT_OUT);
--	multiplicities[3] = new PortCheck(ImplicitOutputPort.class, Collections
--		.unmodifiableList(new ArrayList<Class<? extends mxCell>>() {
--		    private static final long serialVersionUID = -3719677806532507973L;
--		    {
--			add(ImplicitInputPort.class);
--			add(ImplicitOutputPort.class);
--			add(ImplicitLink.class);
--		    }
--		}), XcosMessages.LINK_ERROR_IMPLICIT_OUT);
--
--	// Control port
--	multiplicities[4] = new PortCheck(ControlPort.class, Collections
--		.unmodifiableList(new ArrayList<Class<? extends mxCell>>() {
--		    private static final long serialVersionUID = 2941077191386058497L;
--		    {
--			add(CommandPort.class);
--			add(CommandControlLink.class);
--		    }
--		}), XcosMessages.LINK_ERROR_EVENT_IN);
--
--	// Command port
--	multiplicities[5] = new PortCheck(CommandPort.class, Collections
--		.unmodifiableList(new ArrayList<Class<? extends mxCell>>() {
--		    private static final long serialVersionUID = -3470370027962480362L;
--		    {
--			add(ControlPort.class);
--		    }
--		}), XcosMessages.LINK_ERROR_EVENT_OUT);
--
--	// ExplicitLink connections
--	multiplicities[6] = new PortCheck(ExplicitLink.class, Collections
--		.unmodifiableList(new ArrayList<Class<? extends mxCell>>() {
--		    private static final long serialVersionUID = 7423543162930147373L;
--
--		    {
--			add(ExplicitInputPort.class);
--		    }
--		}), XcosMessages.LINK_ERROR_EVENT_OUT);
--
--	// ImplicitLink connections
--	multiplicities[7] = new PortCheck(ImplicitLink.class, Collections
--		.unmodifiableList(new ArrayList<Class<? extends mxCell>>() {
--		    private static final long serialVersionUID = 7775100011122283282L;
--
--		    {
--			add(ImplicitInputPort.class);
--			add(ImplicitOutputPort.class);
--		    }
--		}), XcosMessages.LINK_ERROR_EVENT_OUT);
--
--	// CommandControlLink connections
--	multiplicities[8] = new PortCheck(CommandControlLink.class, Collections
--		.unmodifiableList(new ArrayList<Class<? extends mxCell>>() {
--		    private static final long serialVersionUID = 3260421433507192386L;
--
--		    {
--			add(ControlPort.class);
--		    }
--		}), XcosMessages.LINK_ERROR_EVENT_OUT);
--
--	// Already connected port
--	multiplicities[9] = new PortCheck(BasicPort.class, Collections
--		.unmodifiableList(new ArrayList<Class<? extends mxCell>>() {
--		    private static final long serialVersionUID = 6376349598052836660L;
--
--		    {
--			add(BasicPort.class);
--		    }
--		}), XcosMessages.LINK_ERROR_ALREADY_CONNECTED);
--
--	setMultiplicities(multiplicities);
--    }
--
--    /**
--     * Install all needed Listeners.
--     */
--    public void installListeners() {
--
--	// Property change Listener
--	// Will say if a diagram has been modified or not.
--	getAsComponent().addPropertyChangeListener(new PropertyChangeListener() {
--	    public void propertyChange(PropertyChangeEvent e) {
--		if (e.getPropertyName().compareTo("modified") == 0) {
--		    if ((Boolean) e.getOldValue() != (Boolean) e.getNewValue()) {
--			updateTabTitle();
--		    }
--		}
--	    }
--	});
--
--	// Track when superblock ask a parent refresh.
--	addListener(XcosEvent.SUPER_BLOCK_UPDATED, new SuperBlockUpdateTracker()); 
--
--	// Track when cells are added.
--	addListener(XcosEvent.CELLS_ADDED, new CellAddedTracker(this)); 
--
--	// Track when cells are deleted.
--	addListener(XcosEvent.CELLS_REMOVED, new CellRemovedTracker(this)); 
--		
--	// Track when resizing a cell.
--	addListener(XcosEvent.CELLS_RESIZED, new CellResizedTracker());
--
--	// Track when we have to force a Block to reshape
--	addListener(XcosEvent.FORCE_CELL_RESHAPE, new ForceCellReshapeTracker());
--	
--	// Track when we have to force a Block value
--	addListener(XcosEvent.FORCE_CELL_VALUE_UPDATE, new ForceCellValueUpdate());
--	
--	// Update the blocks view on undo/redo
--	undoManager.addListener(mxEvent.UNDO, new UndoUpdateTracker());
--	undoManager.addListener(mxEvent.REDO, new UndoUpdateTracker());
--	
--	getAsComponent().getGraphControl().addMouseListener(new XcosMouseListener(this));
--
--	getAsComponent().addKeyListener(new XcosKeyListener(this));
--
--	addListener(XcosEvent.ADD_PORTS, new mxIEventListener() {
--	    public void invoke(Object source, mxEventObject evt) {
--		getModel().beginUpdate();
--		refresh();
+--- scilab-5.2.0.obsolete.0.714259042478265/modules/xcos/src/java/org/scilab/modules/xcos/utils/XcosCanvas.java	2010-01-23 22:49:59.000000000 +0100
++++ scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/utils/XcosCanvas.java	2010-01-23 23:32:57.000000000 +0100
+@@ -7,6 +7,7 @@
+ import java.awt.Stroke;
+ import java.awt.geom.AffineTransform;
+ import java.util.Hashtable;
++import java.util.Map;
+ 
+ import com.mxgraph.swing.view.mxInteractiveCanvas;
+ import com.mxgraph.util.mxConstants;
+--- scilab-5.2.0.obsolete.0.714259042478265/modules/xcos/src/java/org/scilab/modules/xcos/palette/XcosPalette.java	2009-12-16 08:25:20.000000000 +0100
++++ scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/palette/XcosPalette.java	2010-01-24 00:01:43.000000000 +0100
+@@ -187,8 +187,9 @@
+ 	    selectedEntry.setOpaque(true);
+ 	}
+ 
+-	eventSource.fireEvent(mxEvent.SELECT, new mxEventObject(new Object[] {
+-		selectedEntry, t, last }));
++
++	eventSource.fireEvent(new mxEventObject(mxEvent.SELECT, "entry",
++	selectedEntry, "transferable", t, "previous", last));
+     }
+ 
+ 
+--- scilab-5.2.0.obsolete.0.714259042478265/modules/xcos/src/java/org/scilab/modules/xcos/actions/ShowHideShadowAction.java	2010-01-23 22:49:59.000000000 +0100
++++ scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/actions/ShowHideShadowAction.java	2010-01-23 23:59:58.000000000 +0100
+@@ -13,6 +13,7 @@
+ package org.scilab.modules.xcos.actions;
+ 
+ import java.util.Hashtable;
++import java.util.Map;
+ 
+ import org.scilab.modules.graph.ScilabGraph;
+ import org.scilab.modules.graph.actions.DefaultAction;
+--- scilab-5.2.0.obsolete.0.714259042478265/modules/xcos/src/java/org/scilab/modules/xcos/graph/XcosDiagram.java	2009-12-16 08:25:20.000000000 +0100
++++ scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/graph/XcosDiagram.java	2010-01-23 23:57:56.000000000 +0100
+@@ -625,7 +625,7 @@
+ 	    public void invoke(Object source, mxEventObject evt) {
+ 		getModel().beginUpdate();
+ 		refresh();
 -		BasicBlock updatedBlock = (BasicBlock) evt.getArgAt(0);
--		BlockPositioning.updateBlockView(updatedBlock);
--		getModel().endUpdate();
--	    }
--	});	
--	
--    }
--
--    /**
--     * modelTracker
--     * Called when mxEvents.CHANGE occurs on a model
--     */
--    private class ModelTracker implements mxIEventListener {
--	public void invoke(Object source, mxEventObject evt) {
++		BasicBlock updatedBlock = (BasicBlock) evt.getProperty("block");
+ 		BlockPositioning.updateBlockView(updatedBlock);
+ 		getModel().endUpdate();
+ 	    }
+@@ -639,7 +639,7 @@
+      */
+     private class ModelTracker implements mxIEventListener {
+ 	public void invoke(Object source, mxEventObject evt) {
 -	    List<mxUndoableChange> changes = (List<mxUndoableChange>) evt.getArgAt(0);
--	    List<Object> objects = new ArrayList<Object>();
--	    getModel().beginUpdate();
--	    for (int i = 0; i < changes.size(); ++i) {
--		if (changes.get(i) instanceof mxChildChange) {
--		    if (((mxChildChange) changes.get(i)).getChild() instanceof SplitBlock) {
--			continue;
--		    }
--
--		    if (((mxChildChange) changes.get(i)).getChild() instanceof BasicBlock) {
--			BasicBlock currentCell = (BasicBlock) ((mxChildChange) changes.get(i)).getChild();
--			objects.add(currentCell);
--		    }
--		}
--	    }
--	    if (!objects.isEmpty()) {
--		Object[] firedCells = new Object[objects.size()];
--		for (int j = 0;  j < objects.size(); ++j) {
--		    firedCells[j] = objects.get(j);
--		}
--		//fireEvent(XcosEvent.FORCE_CELL_RESHAPE, new mxEventObject(new Object[] {firedCells}));
++	    List<mxUndoableChange> changes = (List<mxUndoableChange>) evt.getProperty("edit");
+ 	    List<Object> objects = new ArrayList<Object>();
+ 	    getModel().beginUpdate();
+ 	    for (int i = 0; i < changes.size(); ++i) {
+@@ -660,7 +660,8 @@
+ 		    firedCells[j] = objects.get(j);
+ 		}
+ 		//fireEvent(XcosEvent.FORCE_CELL_RESHAPE, new mxEventObject(new Object[] {firedCells}));
 -		fireEvent(XcosEvent.FORCE_CELL_VALUE_UPDATE, new mxEventObject(new Object[] {firedCells}));
--	    }
--	    getModel().endUpdate();
--	}
--    }
--    /**
--     * ForceCellValueUpdate
--     * Called when we want a block content to update.
--     */
--    private class ForceCellValueUpdate implements mxIEventListener {
--	public void invoke(Object source, mxEventObject evt) {
++                fireEvent(new mxEventObject(XcosEvent.FORCE_CELL_VALUE_UPDATE, "cells", firedCells));
++
+ 	    }
+ 	    getModel().endUpdate();
+ 	}
+@@ -671,7 +672,7 @@
+      */
+     private class ForceCellValueUpdate implements mxIEventListener {
+ 	public void invoke(Object source, mxEventObject evt) {
 -	    Object[] cells = (Object[]) evt.getArgs()[0];
--
--	    getModel().beginUpdate();
--
--	    for (int i = 0; i < cells.length; ++i) {
--		
--		Object cell = cells[i];
--		
--		if (cell instanceof BasicBlock) {
--		    if (getCellStyle(cell).get("displayedLabel") != null) {
--			((mxCell) cell).setValue("<html><body> " + getCellStyle(cell).get("displayedLabel") + " </body></html>");
--		    }
--
--		    mxRectangle preferedSize = getPreferredSizeForCell(cell);
--		    mxGeometry cellSize = ((mxCell) cell).getGeometry();
--
--		    ((mxCell) cell).setGeometry(new mxGeometry(cellSize.getX(), cellSize.getY(),
--			    Math.max(preferedSize.getWidth(), cellSize.getWidth()),
--			    Math.max(preferedSize.getHeight(), cellSize.getHeight())));
--		    cellsResized(new Object[] {cell}, new mxRectangle[]{((mxCell) cell).getGeometry()});
--		}
--	    }
--	    getModel().endUpdate();
--	    refresh();
--	}
--    }
--    
--    /**
--     *  ForceCellReshapeTracker
--     *  Called when we want a Block to reshape for it's ports positions.
--     */
--    private class ForceCellReshapeTracker implements mxIEventListener {
--	public void invoke(Object source, mxEventObject evt) {
++	    Object[] cells = (Object[]) evt.getProperty("cells");
+ 
+ 	    getModel().beginUpdate();
+ 
+@@ -704,7 +705,7 @@
+      */
+     private class ForceCellReshapeTracker implements mxIEventListener {
+ 	public void invoke(Object source, mxEventObject evt) {
 -	    Object[] cells =  (Object[]) evt.getArgs()[0];
--	    getModel().beginUpdate();
--	    for (int i = 0; i <  cells.length; ++i) {
--		Object cell = cells[i];
--		if (cell instanceof BasicBlock) {
--		    BlockPositioning.updateBlockView((BasicBlock) cell);
--		}
--	    }
--	    getModel().endUpdate();
--	}
--    }
--    
--    /**
--     *  SuperBlockUpdateTracker
--     *  Called when adding some port in a SuperBlock diagram
--     *  to update current sub-diagram (i.e SuperBlock) representation.
--     */
--    private class SuperBlockUpdateTracker implements mxIEventListener {
--	public void invoke(Object source, mxEventObject evt) {
++	    Object[] cells =  (Object[]) evt.getProperty("cells");
+ 	    getModel().beginUpdate();
+ 	    for (int i = 0; i <  cells.length; ++i) {
+ 		Object cell = cells[i];
+@@ -723,16 +724,15 @@
+      */
+     private class SuperBlockUpdateTracker implements mxIEventListener {
+ 	public void invoke(Object source, mxEventObject evt) {
 -	    assert evt.getArgs()[0] instanceof SuperBlock;
 -	    SuperBlock updatedBlock = (SuperBlock) evt.getArgs()[0];
--	    updatedBlock.setRealParameters(BlockWriter
--		    .convertDiagramToMList(updatedBlock.getChild()));
--	    if (updatedBlock.getParentDiagram() instanceof SuperBlockDiagram) {
--		SuperBlock parentBlock = ((SuperBlockDiagram) updatedBlock
--			.getParentDiagram()).getContainer();
++	    assert evt.getProperty("block") instanceof SuperBlock;
++	    SuperBlock updatedBlock = (SuperBlock) evt.getProperty("block");
+ 	    updatedBlock.setRealParameters(BlockWriter
+ 		    .convertDiagramToMList(updatedBlock.getChild()));
+ 	    if (updatedBlock.getParentDiagram() instanceof SuperBlockDiagram) {
+ 		SuperBlock parentBlock = ((SuperBlockDiagram) updatedBlock
+ 			.getParentDiagram()).getContainer();
 -		parentBlock.getParentDiagram().fireEvent(
 -			XcosEvent.SUPER_BLOCK_UPDATED,
 -			new mxEventObject(new Object[] { parentBlock }));
--	    }
--	    BlockPositioning.updateBlockView(updatedBlock);
--	    refresh();
--	}
--    }
--
--    /**
--     * CellAddedTracker
--     * Called when mxEvents.CELLS_ADDED is fired.
--     */
--    private class CellAddedTracker implements mxIEventListener {
--    	private XcosDiagram diagram = null;
--
--    	public CellAddedTracker(XcosDiagram diagram) {
--    		this.diagram = diagram;
--    	}
--
--    	public void invoke(Object source, mxEventObject evt) {
++		parentBlock.getParentDiagram().fireEvent(new mxEventObject(XcosEvent.SUPER_BLOCK_UPDATED,"block", parentBlock));
++
+ 	    }
+ 	    BlockPositioning.updateBlockView(updatedBlock);
+ 	    refresh();
+@@ -751,7 +751,7 @@
+     	}
+ 
+     	public void invoke(Object source, mxEventObject evt) {
 -    		Object[] cells = (Object[]) evt.getArgs()[0];
--    		
--    		diagram.getModel().beginUpdate();
--    		for (int i = 0; i < cells.length; ++i) {
--
--//    			((mxCell) cells[i]).setId((new UID()).toString());
--
--				if (cells[i] instanceof BasicBlock) {
--					// Store all AfficheBlocks in a dedicated HasMap
--					if (cells[i] instanceof AfficheBlock) {
--						AfficheBlock affich = (AfficheBlock) cells[i];
--						XcosTab.getAfficheBlocks().put(affich.getHashCode(), affich);
--					}
--					// Update parent on cell addition
--					((BasicBlock) cells[i]).setParentDiagram(diagram);
--				}
--    		}
--    		//fireEvent(XcosEvent.FORCE_CELL_VALUE_UPDATE, new mxEventObject(new Object[] {cells}));
--    		diagram.getModel().endUpdate();
--    	}
--    }
--
--    /**
--     * CellRemovedTracker
--     * Called when mxEvents.CELLS_REMOVED is fired.
--     */
--    private class CellRemovedTracker implements mxIEventListener {
--	public CellRemovedTracker(XcosDiagram diagram) {
--	}
--
--	public void invoke(Object source, mxEventObject evt) {
++    		Object[] cells = (Object[]) evt.getProperty("cells");
+     		
+     		diagram.getModel().beginUpdate();
+     		for (int i = 0; i < cells.length; ++i) {
+@@ -782,7 +782,7 @@
+ 	}
+ 
+ 	public void invoke(Object source, mxEventObject evt) {
 -	    Object[] cells = (Object[]) evt.getArgs()[0];
--	    for (int i = 0; i < cells.length; i++) {
--		if (cells[i] instanceof BasicLink) {
--		    BasicLink link = (BasicLink) cells[i];
--		    removeLink(link);
--		    if(waitPathAddEdge) {
--			cancelDrawLinkAction();
--		    }
--		}
--	    }
--
--	}
--    }
--
--    private void removeLink(BasicLink link) {
--	if(!(link.getSource() instanceof BasicPort)) {
--	    return;
--	}
--	
--	if(!(link.getTarget() instanceof BasicPort)) {
--	    return;
--	}
--
--	BasicPort portSource = (BasicPort) link.getSource();
--    	BasicPort portTarget = (BasicPort) link.getTarget();
--
--    	SplitBlock split = null;
--    	BasicPort saveSource = null;
--    	BasicPort saveTarget = null;
--
--    	if (portSource == null) { return; }
--    	if (portTarget == null) { return; }
--
--    	//remove input link
--    	if (portTarget.getParent() instanceof SplitBlock) {
--    		split = (SplitBlock) portTarget.getParent();
--    		
--    		Object[] outLinks = getAllEdges(new Object[] {split.getOut1(), split.getOut2()});
--    		for (int i = 0; i < outLinks.length; i++) {
--    			BasicLink outLink = (BasicLink) outLinks[i];
--    			if (outLink.getTarget().getParent() instanceof SplitBlock) {
--    				removeCells(new Object[]{outLink});
--    			}
--    		}
--    	}
--    	
--    	//Finally delete split and old associated links
--    	if (split != null) {
--    		removeCells(new Object[]{split});
--    	}
--
--    	//reset variables
--    	split = null;
--    	saveSource = null;
--    	saveTarget = null;
--
--    	if (portSource.getParent() instanceof SplitBlock) {
--    		split = (SplitBlock) portSource.getParent();
--
--    		//remove out1, so link between in.source and out2.target
--    		if (split.getOut1() == portSource) {
--    			//save source and target ports 
--    			saveSource = getOppositePort(split.getIn());
--    			saveTarget = getOppositePort(split.getOut2());
--    		} else if (split.getOut2() == portSource) {
--    			//save source and target ports 
--    			saveSource = getOppositePort(split.getIn());
--    			saveTarget = getOppositePort(split.getOut1());
--    		}
--    	}
--
--    	if (saveSource != null && saveTarget != null) {
--    		//create new link
--    		BasicLink newLink = BasicLink.createLinkFromPorts(saveSource, saveTarget);
--    		newLink.setGeometry(new mxGeometry(0,0,80,80));
--
--    		Object[] saveLinks = getAllEdges(new Object[]{saveSource, saveTarget});
--    		for (int k = 0; k < saveLinks.length; k++) {
--    			mxPoint[] savePts = ((BasicLink) saveLinks[k]).getPoints(0, false);
--    			if (savePts != null) {
--    				for (int j = 0; j < savePts.length; j++) {
--    					newLink.addPoint(savePts[j].getX(), savePts[j].getY());
--    				}
--    			}
--    		}
--
--    		newLink.setSource(saveSource);
--    		newLink.setTarget(saveTarget);
--    		addCell(newLink);
--
--    		//unlink split and delete unlinked links
--    	}
--
--    	if (split != null) {
--    		split.unlinkAndClean();
--    		removeCells(new Object[]{split});
--    	}
--    }
--
--    private BasicPort getOppositePort(BasicPort source) {
--    	Object[] objs = getAllEdges(new Object[]{source});
--    	if (objs.length == 0 || objs.length > 1) {
--    		return null;
--    	}
--    	
--    	BasicLink link = (BasicLink) objs[0];
--    	if (link.getSource() == source) {
--    		return (BasicPort) link.getTarget();
--    	} else {
--    		return (BasicPort) link.getSource();
--    	}
--    }
--    /**
--     * CellResizedTracker
--     * Called when mxEvents.CELLS_RESIZED is fired. 
--     */
--    private class CellResizedTracker implements mxIEventListener {
--	public void invoke(Object source, mxEventObject evt) {
++	    Object[] cells = (Object[]) evt.getProperty("cells");
+ 	    for (int i = 0; i < cells.length; i++) {
+ 		if (cells[i] instanceof BasicLink) {
+ 		    BasicLink link = (BasicLink) cells[i];
+@@ -900,7 +900,7 @@
+      */
+     private class CellResizedTracker implements mxIEventListener {
+ 	public void invoke(Object source, mxEventObject evt) {
 -	    Object[] cells = (Object[]) evt.getArgs()[0];
--	    getModel().beginUpdate();
--	    for (int i = 0; i < cells.length; ++i) {
--		if (cells[i] instanceof BasicBlock) {
--		    BlockPositioning.updateBlockView((BasicBlock) cells[i]);
--		}
--	    }
--	    getModel().endUpdate();
--	}
--    }
--
--    /**
--     * Update the modified block on undo/redo
--     */
--   private class UndoUpdateTracker implements mxIEventListener {
--        public void invoke(Object source, mxEventObject evt) {
++	    Object[] cells = (Object[]) evt.getProperty("cells");
+ 	    getModel().beginUpdate();
+ 	    for (int i = 0; i < cells.length; ++i) {
+ 		if (cells[i] instanceof BasicBlock) {
+@@ -916,7 +916,7 @@
+      */
+    private class UndoUpdateTracker implements mxIEventListener {
+         public void invoke(Object source, mxEventObject evt) {
 -            List<mxUndoableChange> changes = ((mxUndoableEdit) evt.getArgAt(0)).getChanges();
--            Object[] changedCells = getSelectionCellsForChanges(changes);
--            getModel().beginUpdate();
--            for (Object object : changedCells) {
--		if (object instanceof BasicBlock) {
--		    BasicBlock current = (BasicBlock) object;
--		    
--		    // When we change the style property we have to update some
--		    // BasiBlock fields
--		    if (changes.get(0) instanceof mxStyleChange) {
--			current.updateFieldsFromStyle();
--		    }
--		    
--		    // Update the block position
--		    BlockPositioning.updateBlockView(current);
--		}
--	    }
--            getModel().endUpdate();
--            refresh();
--        }
--    };
--    
--    private class XcosKeyListener implements KeyListener{
--
--	public XcosKeyListener(XcosDiagram diagram) {}
--
--	public void keyTyped(KeyEvent e) {}
--
--	public void keyPressed(KeyEvent e) {}	
--
--	public void keyReleased(KeyEvent e) {
--	    if(e.getKeyChar() == KeyEvent.VK_ESCAPE) {
--		if(drawLink != null) {
--		    getModel().remove(drawLink);
--		    cancelDrawLinkAction();
--		}		    
--	    }
--	}
--    }
--    /**
--     * MouseListener inner class
--     */
--    private class XcosMouseListener implements MouseListener {
--    	private XcosDiagram diagram = null;
--
--    	public XcosMouseListener(XcosDiagram diagram) {
--    		this.diagram = diagram;
--    	}
--
--    	public void mouseClicked(MouseEvent e) {
--    		Object cell = getAsComponent().getCellAt(e.getX(), e.getY());
--
--    		// Double Click within empty diagram Area
--    		if (e.getClickCount() >= 2 && SwingUtilities.isLeftMouseButton(e) && cell == null) {
--    			TextBlock textBlock = new TextBlock("Edit me !!!");
--    			textBlock.getGeometry().setX(e.getX() - textBlock.getGeometry().getWidth() / 2.0);
--    			textBlock.getGeometry().setY(e.getY() - textBlock.getGeometry().getWidth() / 2.0);
--    			addCell(textBlock);
--    			return;
--    		}
--
--    		// Double Click within some component
--    		if (e.getClickCount() >= 2 && SwingUtilities.isLeftMouseButton(e) && cell != null)
--    		{
--    			getModel().beginUpdate();
--    			if (cell instanceof BasicBlock) {
--    				BasicBlock block = (BasicBlock) cell;
--    				e.consume();
--    				block.openBlockSettings(buildEntireContext());
--    			}
--    			if (cell instanceof BasicLink) {
--    				((BasicLink) cell).insertPoint(e.getX(), e.getY());
--    			}
--    			getModel().endUpdate();
--    			refresh();
--    		}
--
--    		// Ctrl + Shift + Right Middle Click : for debug !!
--    		if (e.getClickCount() >= 2 && SwingUtilities.isMiddleMouseButton(e)
--    				&& e.isShiftDown() && e.isControlDown())
--    		{
--    			System.err.println("[DEBUG] Click at position : " + e.getX() + " , " + e.getY());
--    			if (cell == null) {
--    				System.err.println("[DEBUG] Click on diagram");
--    				System.err.println("Default Parent ID : " + ((mxCell) getDefaultParent()).getId());
--    				System.err.println("Model root ID : " + ((mxCell) getModel().getRoot()).getId());
--    				System.err.println("getParentWindow : " + (getParentTab() == null ? null : getParentTab().getParentWindow()));
--    			} else {
--    				System.err.println("[DEBUG] Click on : " + cell);
--    				System.err.println("[DEBUG] Style : " + ((mxCell) cell).getStyle());
--    				System.err.println("[DEBUG] NbEdges : " + ((mxCell) cell).getEdgeCount());
--    				System.err.println("[DEBUG] NbChildren : " + ((mxCell) cell).getChildCount());
--    				for (int i = 0; i < ((mxCell) cell).getChildCount(); i++) {
--    					System.err.println("[DEBUG] Child NbEdges : " + ((mxCell) cell).getChildAt(i).getEdgeCount());
--    				}
--
--    				if(cell instanceof BasicLink) {
--    					System.err.println("[DEBUG] Link Points : " + ((BasicLink) cell).getPointCount());
--    				}
--    			}
--
--    		}
--
--    		// Context menu
--    		if ((e.getClickCount() == 1 && SwingUtilities.isRightMouseButton(e))
--    				|| e.isPopupTrigger()
--    				|| XcosMessages.isMacOsPopupTrigger(e)) {
--
--    			if (cell == null) {
--    				// Display diagram context menu
--    				ContextMenu menu = ScilabContextMenu.createContextMenu();
--
--    				menu.add(UndoAction.undoMenu((ScilabGraph) getAsComponent().getGraph()));
--    				menu.add(RedoAction.redoMenu((ScilabGraph) getAsComponent().getGraph()));
--    				menu.add(PasteAction.pasteMenu((ScilabGraph) getAsComponent().getGraph()));
--    				menu.add(SelectAllAction.createMenu((ScilabGraph) getAsComponent().getGraph()));
--    				/*---*/
--    				menu.getAsSimpleContextMenu().addSeparator();
--    				/*---*/
--    				menu.add(SetContextAction.createMenu((ScilabGraph) getAsComponent().getGraph()));
--    				menu.add(SetupAction.createMenu((ScilabGraph) getAsComponent().getGraph()));
--
--    				if(diagram instanceof SuperBlockDiagram) {
--    					/*---*/
--    					menu.getAsSimpleContextMenu().addSeparator();
--    					/*---*/
--    					menu.add(ShowParentAction.createMenu(diagram));
--    				}
--    				/*---*/
--    				menu.getAsSimpleContextMenu().addSeparator();
--    				/*---*/
--    				menu.add(ZoomInAction.zoominMenu((ScilabGraph) getAsComponent().getGraph()));
--    				menu.add(ZoomOutAction.zoomoutMenu((ScilabGraph) getAsComponent().getGraph()));
--    				/*---*/
--    				menu.getAsSimpleContextMenu().addSeparator();
--    				/*---*/
--    				menu.add(DiagramBackgroundAction.createMenu((ScilabGraph) getAsComponent().getGraph()));
--    				/*---*/
--    				menu.getAsSimpleContextMenu().addSeparator();
--    				/*---*/
--    				menu.add(XcosDocumentationAction.createMenu((ScilabGraph) getAsComponent().getGraph()));
--
--    				((SwingScilabContextMenu) menu.getAsSimpleContextMenu()).setLocation(MouseInfo.getPointerInfo().getLocation().x, MouseInfo.getPointerInfo().getLocation().y);
--
--    				menu.setVisible(true);
--
--    			} else {
--    				// Display object context menu
--    				if (cell instanceof BasicBlock) {
--    					BasicBlock block = (BasicBlock) cell;
--    					block.openContextMenu((ScilabGraph) getAsComponent().getGraph());
--    				}
--    				if (cell instanceof BasicLink) {
--    					BasicLink link = (BasicLink) cell;
--    					link.openContextMenu((ScilabGraph) getAsComponent().getGraph());
--    				}
--    			}
--    		}
--    	}
--
--    	public void mouseEntered(MouseEvent e) {
--    	}
--
--    	public void mouseExited(MouseEvent e) {
--    	}
--
--    	public void mousePressed(MouseEvent e) {
--    	}
--
--    	public void mouseReleased(MouseEvent e) {
--    		Object cell = getAsComponent().getCellAt(e.getX(), e.getY());
--
--    		if(SwingUtilities.isLeftMouseButton(e)) {
--    			if (waitSplitRelease) {
--    				dragSplitPos = new mxPoint(e.getX(), e.getY());
--    				waitSplitRelease = false;
--    				addSplitEdge(splitLink, splitPort);
--    			} else if(waitPathRelease){
--    				//Tips for ignore first mouse release after drag
--    				waitPathRelease = false;
--    				waitPathAddEdge = true;
--
--    				if(!e.isControlDown()) {
--    					//adjust final point
--    					mxGeometry geoPort = drawLink.getSource().getGeometry();
--    					mxGeometry geoBlock = drawLink.getSource().getParent().getGeometry();
--    					mxPoint lastPoint = new mxPoint(geoBlock.getX() + geoPort.getCenterX(), geoBlock.getY() + geoPort.getCenterY());
--    					mxPoint point = getPointPosition(lastPoint, new mxPoint(e.getX(), e.getY()));
--
--    					getModel().beginUpdate();
--    					drawLink.getGeometry().setTargetPoint(point);
--    					getModel().endUpdate();
--    					refresh();
--    				}
--    			} else if(waitPathAddEdge){
--    				System.err.println("mouseReleased : waitPathAddEdge");
--    				if(drawLink != null) {
--    					getModel().beginUpdate();
--    					//move end of link and add point at old position
--    					mxGeometry geo = drawLink.getGeometry();
--    					drawLink.addPoint(geo.getTargetPoint().getX(), geo.getTargetPoint().getY());
--    					setSelectionCell(drawLink);
--
--    					if(cell != null) {
--    						mxICell source = drawLink.getSource();
--
--    						StringBuffer error = checkMultiplicities(drawLink, source, cell);
--    						if(error == null) {
--    							if(cell instanceof BasicLink && cell != drawLink) { //no loop
--    								//draw link with a SplitBlock
--    								dragSplitPos = new mxPoint(e.getX(), e.getY());
--    								addSplitEdge((BasicLink)cell, drawLink);
--    							} else {
--    								getModel().setTerminal(drawLink, cell, false);
--    							}
--
--    							//invert source and target if needed
--    							if(checkEdgeDirection(source, cell) == false) {
--    								getModel().beginUpdate();
--    								drawLink.invertDirection();
--    								getModel().endUpdate();
--    							}
--
--    							//reset info, flags and object
--    							cancelDrawLinkAction();
--    						} else {
--    							if(cell != drawLink) {
--    								JOptionPane.showMessageDialog(getAsComponent(), error);
--    							}
--    							setSelectionCell(drawLink);
--    						}
--    					} else {
--    						if(!e.isControlDown()) {
--    							geo.setTargetPoint(getPointPosition(geo.getTargetPoint(), new mxPoint(e.getX(), e.getY())));
--    						} else {
--    							geo.setTargetPoint(new mxPoint(e.getX(), e.getY()));
--    						}
--    					}
--    					getModel().endUpdate();
--    					refresh();
--    				} else {
--    					cancelDrawLinkAction();
--    				}
--    			} else {
--    				dragSplitPos = null;
--    			}
--    		}
--    	}
--    }
--
--    static mxPoint getPointPosition(mxPoint origin, mxPoint click) {
--	boolean signX = click.getX() > origin.getX();
--	boolean signY = click.getY() > origin.getY();
--	double diffX = Math.abs(click.getX() - origin.getX());
--	double diffY = Math.abs(click.getY() - origin.getY());
--
--	if(diffX > diffY) {
--	    if(diffY > (diffX / 2)) { //diagonal
--		diffY = diffX;
--	    } else { //orthogonal
--		diffY = 0;
--	    }
--	} else { // < or ==
--	    if(diffX > (diffY / 2)) { //diagonal
--		diffX = diffY;
--	    } else { //orthogonal
--		diffX = 0;
--	    }
--	}
--
--	//restore signs
--	if(signX == false) {
--	    diffX = -diffX;
--	}
--
--	if(signY == false) {
--	    diffY = - diffY;
--	}
--
--	return new mxPoint(origin.getX() + diffX, origin.getY() + diffY); 
--    }
--    /*
--     * Manage Group to be CellFoldable i.e with a (-) to reduce
--     * and a (+) to expand them.
--     * Only non-Block / non-Port Cell are foldable. 
--     * 
--     * (non-Javadoc)
--     * @see com.mxgraph.view.mxGraph#isCellFoldable(java.lang.Object, boolean)
--     */
--    public boolean isCellFoldable(Object cell, boolean collapse) {
--		return !(cell instanceof BasicBlock) && super.isCellFoldable(cell, collapse);
--    }
--
--	public boolean isCellClonable(Object cell) {
--		return true;
--	}
--	
--	public boolean isCellSelectable(Object cell) {
--	    if(cell instanceof BasicPort) {
--		return false;
--	    }
--	    return super.isCellSelectable(cell);
--	}
--	
--	public boolean isCellMovable(Object cell) {
--		if (cell instanceof BasicPort) {
--			return false;
--		}
--
--		boolean movable = false;
--		Object[] cells =  this.getSelectionCells();
--
--		//don't move if selection is only links
--		for (int i = 0; i < cells.length; i++) {
--			if (!(cells[i] instanceof BasicLink)) {
--				movable = true;
--				break;
--			}
--		}
--
--		return movable && super.isCellMovable(cell);
--    }
--
--    public boolean isCellResizable(Object cell) {
--    	if (cell instanceof SplitBlock) {
--    		return false;
--    	}
--    	return (cell instanceof BasicBlock) && super.isCellResizable(cell);
--    }
--
--    public boolean isCellDeletable(Object cell) {
--    	if (cell instanceof BasicBlock && ((BasicBlock) cell).isLocked()) {
--    		return false;
--    	}
--
--    	return !(cell instanceof BasicPort)	&& super.isCellDeletable(cell);
--    }
--
--    public boolean isCellEditable(Object cell) {
--    	return (cell instanceof TextBlock) && super.isCellDeletable(cell);
--    }
--
--    public boolean isCellDisconnectable(Object cell, Object terminal,boolean source) {
--        return super.isCellDisconnectable(cell, terminal, source);
--    }
--    
--    public boolean isCellConnectable(Object cell)
--    {
--	//currently in draw link action
--	if(waitPathAddEdge) {
--	    if(drawLink != null) {
--		StringBuffer error = checkMultiplicities(drawLink, drawLink.getSource(), cell);
--		if(error == null) {
--		    return true;
--		}
--		return false;
--	    }
--	}
--	
--	if(cell instanceof BasicBlock)  {
--	    return false;
--	}
--	
--	if(cell instanceof BasicPort) {
--	    int sourceOut = mxGraphModel.getDirectedEdgeCount(getModel(), cell, true);
--	    int targetIn = mxGraphModel.getDirectedEdgeCount(getModel(), cell, false);
--	    
--	    if(sourceOut > 0 || targetIn > 0) {
--		return false;
--	    }
--	}
--    	return !(cell instanceof BasicBlock) && super.isCellConnectable(cell);
--    }
--
--    public boolean isAutoSizeCell(Object cell) {
--    	return (cell instanceof AfficheBlock) || super.isAutoSizeCell(cell);
--    }
--
--
--    public void dumpToHdf5File(String fileName) {
--	if (fileName == null) {
--	    FileChooser fc = ScilabFileChooser.createFileChooser();
--	    fc.setInitialDirectory(getSavedFile());
--	    fc.setMultipleSelection(false);
--	    fc.displayAndWait();
--
--	    if (fc.getSelection() == null || fc.getSelection().length == 0 || fc.getSelection()[0].equals("")) {
--		return;
--	    }
--	    fileName = fc.getSelection()[0];
--	    System.out.println("Saving to file : {" + fileName + "}");
--	}
--
--	BlockWriter.writeDiagramToFile(fileName, this);
--    }
--
--    public double getFinalIntegrationTime() {
--	return finalIntegrationTime;
--    }
--
--    public void setFinalIntegrationTime(double finalIntegrationTime) {
--	this.finalIntegrationTime = finalIntegrationTime;
--    }
--
--    public double getIntegratorAbsoluteTolerance() {
--	return integratorAbsoluteTolerance;
--    }
--
--    public void setIntegratorAbsoluteTolerance(double integratorAbsoluteTolerance) {
--	this.integratorAbsoluteTolerance = integratorAbsoluteTolerance;
--    }
--
--    public double getIntegratorRelativeTolerance() {
--	return integratorRelativeTolerance;
--    }
--
--    public void setIntegratorRelativeTolerance(double integratorRelativeTolerance) {
--	this.integratorRelativeTolerance = integratorRelativeTolerance;
--    }
--
--    public double getMaximumStepSize() {
--	return maximumStepSize;
--    }
--
--    public void setMaximumStepSize(double maximumStepSize) {
--	this.maximumStepSize = maximumStepSize;
--    }
--
--    public double getMaxIntegrationTimeinterval() {
--	return maxIntegrationTimeinterval;
--    }
--
--    public void setMaxIntegrationTimeinterval(double maxIntegrationTimeinterval) {
--	this.maxIntegrationTimeinterval = maxIntegrationTimeinterval;
--    }
--
--    public double getRealTimeScaling() {
--	return realTimeScaling;
--    }
--
--    public void setRealTimeScaling(double realTimeScaling) {
--	this.realTimeScaling = realTimeScaling;
--    }
--
--    public double getSolver() {
--	return solver;
--    }
--
--    public void setSolver(double solver) {
--	this.solver = solver;
--    }
--
--    public double getToleranceOnTime() {
--	return toleranceOnTime;
--    }
--
--    public void setToleranceOnTime(double toleranceOnTime) {
--	this.toleranceOnTime = toleranceOnTime;
--    }
--
--    /**
--     * Set the associated ViewPort
--     * @param viewPort the Viewport
--     */
--    public void setViewPort(Tab viewPort) {
--	this.viewPort = viewPort;
--    }
--
--    /**
--     * Get the associated ViewPort
--     * @return the Viewport
--     */
--    public Tab getViewPort() {
--	return viewPort;
--    }
--
--    /**
--     * Manage the visibility of the associated viewport
--     * @param status new status
--     */
--    public void setViewPortVisible(boolean status) {
--	// Hide/Show parent window if the viewport is the only tab
--	if (viewPort.getParentWindow().getNbDockedObjects() == 1) {
--	    viewPort.getParentWindow().setVisible(status);
--	}
--	// Hide/Show viewport tab
--	viewPort.setVisible(status);
--
--	// (Un)Check the corresponding menu
--	viewPortMenu.setChecked(status);
--    }
--
--    /**
--     * Set menu used to manage Viewport visibility
--     * @param menu the menu
--     */
--    public void setViewPortMenuItem(CheckBoxMenuItem menu) {
--	this.viewPortMenu = menu;
--    }
--    /**
--     * Manage the visibility of the grid and the associated menu
--     * @param status new status
--     */
--    public void setGridVisible(boolean status) {
--	setGridEnabled(status);
--	getAsComponent().setGridVisible(status);
--	getAsComponent().repaint();
--
--	// (Un)Check the corresponding menu
--	if(gridMenu != null) {
--	    gridMenu.setChecked(status);
--	}
--    }
--
--    /**
--     * Set menu used to manage Grid visibility
--     * @param menu the menu
--     */
--    public void setGridMenuItem(CheckBoxMenuItem menu) {
--	this.gridMenu = menu;
--    }
--
--    /**
--     * Close Xcos instance including all tabs
--     */
--    public void closeDiagram() {
--	closeDiagram(false);
--    }
--    
--    /**
--     * Close Xcos instance including all tabs
--     */
--    public void closeDiagram(boolean fromScilab) {
--
--	boolean wantToClose = true;
--
--	if(canClose() == false) {
--	    setVisible(false);
--	    return;
--	}
--	
--	if (isModified()) {
--	    // The diagram has been modified
--	    // Ask the user want he want to do !
--	    
--	    AnswerOption answer; 
--	    if(fromScilab == true) {
--		answer = ScilabModalDialog.show(getParentTab(), XcosMessages.DIAGRAM_MODIFIED, XcosMessages.XCOS, 
--			IconType.QUESTION_ICON, ButtonType.YES_NO);
--	    } else {
--		answer = ScilabModalDialog.show(getParentTab(), XcosMessages.DIAGRAM_MODIFIED, XcosMessages.XCOS, 
--			IconType.QUESTION_ICON, ButtonType.YES_NO_CANCEL);
--	    }
--
--	    switch(answer) {
--	    case YES_OPTION :
--	    	// Save the diagram
--	    	if (!saveDiagram()) {
--	    		//if save is canceled, cancel close windows
--	    		wantToClose = false;
--	    	}
--		break;
--	    case NO_OPTION :
--		break;
--	    case CANCEL_OPTION :
--		// The user cancels
--		wantToClose = false;
--		break;
--	    }
--	}
--
--	if (wantToClose) {
--	    if(getParentTab() != null) {
--		ScilabWindow xcosWindow = (ScilabWindow) UIElementMapper.getCorrespondingUIElement(getParentTab().getParentWindowId());
--		xcosWindow.removeTab(getParentTab());
--		viewPort.close();
--	    }
--	    XcosTab.closeDiagram(this);
--	    setOpened(false);
--	}
--    }
--
--    public boolean saveDiagram() {
--	boolean isSuccess = false;
--	if (getSavedFile() == null) {
--	    isSuccess = saveDiagramAs(null);
--	} else {
--	    isSuccess = saveDiagramAs(getSavedFile());
--	}
--
--	if (isSuccess) {
--	    setModified(false);
--	}
--
--	return isSuccess;
--    }
--
--    public boolean saveDiagramAs(String fileName) {
--
--	boolean isSuccess = false;
--	info(XcosMessages.SAVING_DIAGRAM);
--	this.getParentTab().getInfoBar().draw();
--	if (fileName == null) {
--	    // Choose a filename
--	    SwingScilabFileChooser fc = ((SwingScilabFileChooser) ScilabFileChooser.createFileChooser().getAsSimpleFileChooser());
--	    fc.setTitle(XcosMessages.SAVE_AS);
--	    fc.setUiDialogType(JFileChooser.SAVE_DIALOG);
--	    fc.setMultipleSelection(false);
--	    if (this.getSavedFile() != null) {
--		fc.setSelectedFile(new File(this.getSavedFile()));
--	    }
--
--	    SciFileFilter xcosFilter = new SciFileFilter("*.xcos", null, 0);
--	    SciFileFilter allFilter = new SciFileFilter("*.*", null, 1);
--	    fc.addChoosableFileFilter(xcosFilter);
--	    fc.addChoosableFileFilter(allFilter);
--	    fc.setFileFilter(xcosFilter);
--
--	    fc.setAcceptAllFileFilterUsed(false);
--	    fc.displayAndWait();
--
--	    if (fc.getSelection() == null || fc.getSelection().length == 0 || fc.getSelection()[0].equals("")) {
--		info(XcosMessages.EMPTY_INFO);
--		return isSuccess;
--	    }
--	    fileName = fc.getSelection()[0];
--	}
--	/* Extension checks */
--	File file = new File(fileName);
--	if(!file.exists()) {
--	    String extension = fileName.substring(fileName.lastIndexOf('.') + 1);
--
--	    if (extension.equals(fileName)) {
--		/* No extension given --> .xcos added */
--		fileName += ".xcos";
--	    }
--	}
--
--	XcosCodec codec = new XcosCodec();
--	String xml = mxUtils.getXml(codec.encode(this));
--
--	try {
--	    mxUtils.writeFile(xml, fileName);
--	    isSuccess = true;
--	    resetUndoCounter();
--	} catch (IOException e1) {
--	    e1.printStackTrace();
--	    isSuccess = false;
--	}
--
--	if (isSuccess) {
--	    this.setSavedFile(fileName);
--	    File theFile = new File(fileName);
--	    setTitle(theFile.getName().substring(0, theFile.getName().lastIndexOf('.')));
--	    ConfigXcosManager.saveToRecentOpenedFiles(fileName);
--	    setModified(false);
--	} else {
--	    XcosDialogs.couldNotSaveFile(this);
--	}
--	info(XcosMessages.EMPTY_INFO);
--	return isSuccess;
--    }
--
--    public void setTitle(String title) {
--	super.setTitle(title);
--	updateTabTitle();
--    }
--
--    public void updateTabTitle() {
--	String tabTitle = !isModified() ? getTitle() : "* " + getTitle();
--	if (getParentTab() != null) {
--	    getParentTab().setName(tabTitle);
--	    getParentTab().draw();
--	}
--    }
--
--    public String[] buildEntireContext() {
--	return getContext();
--    }
--    
--    public void setContext(String[] context) {
--	this.context = context;
--	updateCellsContext();
--    }
--
--    public String[] getContext() {
--	return context;
--    }
--
--    public void updateCellsContext() {
--	for (int i = 0; i < getModel().getChildCount(getDefaultParent()); ++i) {
--	    Object obj = getModel().getChildAt(getDefaultParent(), i);
--	    if ( obj instanceof ContextUpdate) {
--		((ContextUpdate)obj).onContextChange(buildEntireContext());
--	    } else if (obj instanceof SuperBlock) {
--		SuperBlock superBlock = (SuperBlock)obj;
--		if(superBlock.getChild() != null) {
--		    superBlock.getChild().updateCellsContext();
--		}
--	    }
--	}
--    }
--
--    public String getVersion() {
--	return version;
--    }
--    
--    public int getDebugLevel() {
--    	return debugLevel;
--    }
--    
--    public void setDebugLevel(int debugLevel) {
--    	this.debugLevel = debugLevel;
--    }
--
--    /**
--     * Open a Diagram :
--     * If current Diagram is empty, open within it
--     * else open a new window.
--     * 
--     * @param diagramm
--     */
--    public void openDiagram(HashMap<String, Object> diagramm) {
--	if (diagramm != null) {
--	    if (getModel().getChildCount(getDefaultParent()) == 0) {
--		loadDiagram(diagramm);
--	    } else {
--		XcosDiagram xcosDiagram = Xcos.createANotShownDiagram();
--		xcosDiagram.loadDiagram(diagramm);
--		setChildrenParentDiagram(xcosDiagram);
--		XcosTab.showTabFromDiagram(xcosDiagram);
--	    }
--	} else {
--	    XcosDialogs.couldNotLoadFile(this);
--	}
--    }
--
--    /**
--     * Load a Diagramm structure into current window.
--     * 
--     * @param diagramm
--     */
--    public void loadDiagram(HashMap<String, Object> diagramm) {
--	List<BasicBlock> allBlocks = (List<BasicBlock>) diagramm.get("Blocks");
--	List<TextBlock> allTextBlocks = (List<TextBlock>) diagramm.get("TextBlocks");
--	HashMap<String, Object> allLinks = (HashMap<String, Object>) diagramm.get("Links");
--	HashMap<String, Object> properties = (HashMap<String, Object>) diagramm.get("Properties");
--
--	setFinalIntegrationTime((Double) properties.get("finalIntegrationTime"));
--	setIntegratorAbsoluteTolerance((Double) properties.get("integratorAbsoluteTolerance"));
--	setIntegratorRelativeTolerance((Double) properties.get("integratorRelativeTolerance"));
--	setToleranceOnTime((Double) properties.get("toleranceOnTime"));
--	setMaxIntegrationTimeinterval((Double) properties.get("maxIntegrationTimeinterval"));
--	setRealTimeScaling((Double) properties.get("realTimeScaling"));
--	setSolver((Double) properties.get("solver"));
--	setMaximumStepSize((Double) properties.get("maximumStepSize"));
--	setContext((String[]) properties.get("context"));
--
--	List<BasicPort[]> linkPorts = (List<BasicPort[]>) allLinks.get("Ports");
--	List<double[][]> linkPoints = (List<double[][]>) allLinks.get("Points");
--
--	Object[] objs = new Object[allBlocks.size() + linkPorts.size() + allTextBlocks.size()];
--	getModel().beginUpdate();
--	for (int i = 0; i < allBlocks.size(); ++i) {
--		objs[i] = allBlocks.get(i);
--	}
--
--	for (int i = 0; i < linkPorts.size(); ++i) {
--	    BasicLink link = BasicLink.createLinkFromPorts(linkPorts.get(i)[0], linkPorts.get(i)[1]);
--	    link.setGeometry(new mxGeometry(0,0,80,80));
--	    link.setSource(linkPorts.get(i)[0]);
--	    link.setTarget(linkPorts.get(i)[1]);
--	    double[][] points = linkPoints.get(i);
--
--	    if (points != null) {
--		for (int point = 0; point < points.length; point++) {
--		    link.addPoint(points[point][0], points[point][1]);
--		}
--	    }
--	    objs[i + allBlocks.size()] = link;
--	}
--	
--	for (int i = 0; i < allTextBlocks.size(); ++i) {
--		objs[i + allBlocks.size() + linkPorts.size() ] = allTextBlocks.get(i);
--	}
--	
--	addCells(objs);
--	getModel().endUpdate();
--
--	//this.setTitle(fileToLoad);
--	//this.getParentTab().setName(fileToLoad);
--
--	setTitle((String) properties.get("title"));
--	//getParentTab().setName((String) properties.get("title"));
--
--	// Clear all undo events in Undo Manager
++            List<mxUndoableChange> changes = ((mxUndoableEdit) evt.getProperty("edit")).getChanges();
+             Object[] changedCells = getSelectionCellsForChanges(changes);
+             getModel().beginUpdate();
+             for (Object object : changedCells) {
+@@ -1712,7 +1712,7 @@
+ 	//getParentTab().setName((String) properties.get("title"));
+ 
+ 	// Clear all undo events in Undo Manager
 -	undoManager.reset();
--	setModified(false);
--    }
--
--    /**
--     * Read a diagram from an HDF5 file (ask for creation if the file does not exist) 
--     * @param diagramFileName file to open
--     */
--    public void openDiagramFromFile(String diagramFileName) {
--	if (XcosTab.focusOnExistingFile(diagramFileName) == false) {
--	    File theFile = new File(diagramFileName);
--	    info(XcosMessages.LOADING_DIAGRAM);
--	    ((XcosTab) getParentTab()).setActionsEnabled(false);
--
--	    if (theFile.exists()) {
--		transformAndLoadFile(theFile, false);
--	    } else {
--		AnswerOption answer = ScilabModalDialog.show(getParentTab(), String.format(
--			XcosMessages.FILE_DOESNT_EXIST, theFile.getAbsolutePath()),
--			XcosMessages.XCOS, IconType.QUESTION_ICON,
--			ButtonType.YES_NO);
--
--		if (answer == AnswerOption.YES_OPTION) {
--		    try {
--			FileWriter writer = new FileWriter(diagramFileName);
--			writer.write("");
--			writer.flush();
--			writer.close();
--			setSavedFile(diagramFileName);
--			setTitle(theFile.getName().substring(0,
--				theFile.getName().lastIndexOf('.')));
--		    } catch (IOException ioexc) {
--			JOptionPane.showMessageDialog(this.getAsComponent(), ioexc);
--		    }
--		}
--	    }
--	    info(XcosMessages.EMPTY_INFO);
--	    ((XcosTab) getParentTab()).setActionsEnabled(true);
--	    this.resetUndoManager();
--	}
--    }
--    
--
--    /**
--     * Load a file with different method depending on it extension 
--     * @param theFile File to load
--     */
--    protected boolean transformAndLoadFile(File theFile, boolean wait) {
--	final File fileToLoad = theFile;
--	final XcosFileType filetype = XcosFileType.findFileType(fileToLoad);
--	boolean result = false;
--
--	switch (filetype) {
--	case COSF:
--	case COS:
--	    if(wait) {
--		File newFile;
--		newFile = filetype.exportToHdf5(fileToLoad);
--		result = transformAndLoadFile(newFile, wait);
--	    } else {
--		Thread transformAction = new Thread() {
--		    public void run() {
--			File newFile;
--			newFile = filetype.exportToHdf5(fileToLoad);
--			transformAndLoadFile(newFile, false);
--		    }
--		};
--		transformAction.start();
--		result = true;
--	    }
--	    break;
--
--	case XCOS:
--	    
--	    Document document = loadXcosDocument(theFile.getAbsolutePath());
--	    if(document == null) {
--		XcosDialogs.couldNotLoadFile(this);
--		return false;
--	    }
--
--	    XcosCodec codec = new XcosCodec(document);
--
--	    if (getModel().getChildCount(getDefaultParent()) == 0) {
--		codec.decode(document.getDocumentElement(), this);
--		setModified(false);
--		setSavedFile(theFile.getAbsolutePath());
--		setTitle(theFile.getName().substring(0,	theFile.getName().lastIndexOf('.')));
--		setChildrenParentDiagram();
--		generateUID();
--	    } else {
--		XcosDiagram xcosDiagram = Xcos.createANotShownDiagram();
--		xcosDiagram.info(XcosMessages.LOADING_DIAGRAM);
--		codec.decode(document.getDocumentElement(), xcosDiagram);
--		xcosDiagram.setModified(false);
--		xcosDiagram.setSavedFile(theFile.getAbsolutePath());
--		xcosDiagram.setTitle(theFile.getName().substring(0,	theFile.getName().lastIndexOf('.')));
--		setChildrenParentDiagram(xcosDiagram);
--		XcosTab.showTabFromDiagram(xcosDiagram);
--		xcosDiagram.generateUID();
--	    }
--	    
--	    result = true;
--	    break;
--
--	case HDF5:
--	    openDiagram(BlockReader.readDiagramFromFile(fileToLoad.getAbsolutePath()));
--	    generateUID();
--	    setModified(false);
--	    result = true;
--	    break;
--
--	default:
--	    XcosDialogs.couldNotLoadFile(this);
--	    break;
--	}
--	return result;
--    }
--
--    static Document loadXcosDocument(String xcosFile) {
--	DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
--	DocumentBuilder docBuilder;
--	try {
--	    docBuilder = docBuilderFactory.newDocumentBuilder();
--	    return docBuilder.parse(xcosFile);
--	} catch (ParserConfigurationException e) {
--	    return null;
--	} catch (SAXException e) {
--	    return null;
--	} catch (IOException e) {
--	    return null;
--	}
--    }
--    
--    public void generateUID() {
--	for (int i = 0; i < getModel().getChildCount(getDefaultParent()); ++i) {
--	    if (getModel().getChildAt(getDefaultParent(), i) instanceof BasicBlock) {
--		BasicBlock block = (BasicBlock)getModel().getChildAt(getDefaultParent(), i);
--		if(block.getRealParameters() instanceof ScilabMList) {
--		    //we have a hidden SuperBlock, create a real one
--		    SuperBlock newSP = (SuperBlock)BasicBlock.createBlock("SUPER_f");
--		    newSP.setRealParameters(block.getRealParameters());
--		    newSP.createChildDiagram(true);
--		    newSP.setParentDiagram(this);
--		    block.setRealParameters(BlockWriter.convertDiagramToMList(newSP.getChild()));
--		} else if(block.getId() == null || block.getId().compareTo("") == 0) {
--		    block.setId();
--		}
--	    }
--	}
--    }
--
--    /**
--     * Update all the children of the current graph.
--     */
--    public void setChildrenParentDiagram() {
--	setChildrenParentDiagram(this);
--    }
--
--    /**
--     * For each block in the argument, call its setParentDiagram method
--     * @param diagram The new parent of the blocks.
--     */
--    private void setChildrenParentDiagram(XcosDiagram diagram) {
--	for (int i = 0; i < diagram.getModel().getChildCount(diagram.getDefaultParent()); i++) {
--	    mxCell cell = (mxCell) diagram.getModel().getChildAt(diagram.getDefaultParent(), i);
--	    if (cell instanceof BasicBlock) {
--		BasicBlock block = (BasicBlock) cell;
--		block.setParentDiagram(diagram);
--		if (block instanceof AfficheBlock) {
--		    AfficheBlock affich = (AfficheBlock) block;
--		    XcosTab.getAfficheBlocks().put(affich.getHashCode(), affich);
--		}
--	    }
--	}
--    }
--
--    /**
--     * Getting the root diagram of a decomposed diagram
--     * @return Root parent of the whole parent
--     */
--    public XcosDiagram getRootDiagram() {
--	XcosDiagram rootGraph = this;
--	while (rootGraph instanceof SuperBlockDiagram) {
--	    rootGraph = ((SuperBlockDiagram) rootGraph).getContainer().getParentDiagram();
--	}
--	return rootGraph;
--    }
--
--    /**
--     * Returns the tooltip to be used for the given cell.
--     */
--    public String getToolTipForCell(Object cell)
--    {
--	if (cell instanceof BasicBlock) {
--	    return ((BasicBlock) cell).getToolTipText();
--	} else if(cell instanceof BasicPort) {
--	    return ((BasicPort) cell).getToolTipText();
--	}
--	return "";
--    }
--
--    /**
--     * Set any text to an Afficheblock specified by its ID.
--     * @param blockID ID of the AfficheBlock to be modified.
--     * @param blockValue Content to be apply to the block.
--     * @param iRows Number of Row in the blockValue.
--     * @param iCols Number of Collumns in the blockValue.
--     */
--    public static void setBlockTextValue(int blockID, String[] blockValue, int iRows, int iCols) {
--
--	AfficheBlock block = XcosTab.getAfficheBlocks().get(blockID);
--	if (block == null) {
--	    return;
--	}
--
--	String blockResult = "";
--	for (int i = 0; i < iRows; i++) {
--	    for (int j = 0; j < iCols; j++) {
--		if (iCols != 0) {
--		    blockResult += "  ";
--		}
--		blockResult += blockValue[j * iRows + i];
--	    }
--	    blockResult += System.getProperty("line.separator");
--	}
--
--	block.setValue(blockResult);
--	block.getParentDiagram().refresh();
--    }
--
--
--    /**
--     * Display the message in info bar.
--     * @param message Informations
--     */
--    public void info(String message) {
--	final String localMessage = message;
--	if (getParentTab() != null && getParentTab().getInfoBar() != null) {
--	    getParentTab().getInfoBar().setText(localMessage);
--	}
--    }
--
--    /**
--     * Display the message into an error popup
--     * @param message Error of the message
--     */
--    public void error(String message) {
--	JOptionPane.showMessageDialog(getAsComponent(), message, XcosMessages.XCOS, JOptionPane.ERROR_MESSAGE);
--    }
--
--    /**
--     * Find the block corresponding to the given uid
--     * and display a warning message.
--     * 
--     * @param uid - A String as UID.
--     * @param message - The message to display.
--     */
--    public void warnCellByUID(String uid, String message) {
--	for (int i = 0; i < getModel().getChildCount(getDefaultParent()); ++i) {
--	    if (getModel().getChildAt(getDefaultParent(), i) instanceof mxCell) {
--		if (((mxCell) getModel().getChildAt(getDefaultParent(), i)).getId().compareTo(uid) == 0) {
--		    //to put on top, only for new message, no for reset
--		    if(message.compareTo("") != 0) {
--			setVisible(true);
--		    }
--
--		    getAsComponent().setCellWarning(getModel().getChildAt(getDefaultParent(), i), message);
--		}
--	    }
--	}
--    }
--
--    /**
--     * Set the current diagram in a modified state
--     * @param modified True or False whether the current diagram must be saved or not. 
--     */
--    public void setModified(boolean modified) {
--	super.setModified(modified);
--	updateTabTitle();
--    }
--
--    /**
--     * Revert an action
--     */
--    public void undo() {
--	super.undo();
--
--	if (getParentTab() != null) {
--	    if (undoManager.canUndo()) {
--		((XcosTab) getParentTab()).setEnabledUndo(true);
--	    } else {
--		((XcosTab) getParentTab()).setEnabledUndo(false);
--	    }
--	    ((XcosTab) getParentTab()).setEnabledRedo(true);
--	}
--
--	updateUndoModifiedState();
--	/*
--	 * if (undoManager.canRedo()){
--	 * ((Xcos)getParentTab()).setEnabledRedo(true); } else {
--	 * ((Xcos)getParentTab()).setEnabledRedo(false); }
--	 */
--	
--	if(waitPathAddEdge) {
--	    if(drawLink != null) {
--		getModel().remove(drawLink);
--	    }
--	    cancelDrawLinkAction();
--	}
--    }
--
--
--
--    /**
--     * Apply the previously reverted action
--     */
--    public void redo() {
--	super.redo();
--
--	updateUndoModifiedState();
--
--	if (getParentTab() != null) {
--	    if (undoManager.canUndo()) {
--		((XcosTab) getParentTab()).setEnabledUndo(true);
--	    } else {
--		((XcosTab) getParentTab()).setEnabledUndo(false);
--	    }
--	    if (undoManager.canRedo()) {
--		((XcosTab) getParentTab()).setEnabledRedo(true);
--	    } else {
--		((XcosTab) getParentTab()).setEnabledRedo(false);
--	    }
--	}
--    }
--
--    /**
--     * This function will reset the UndoManager in a stable state.
--     */
--    public void resetUndoManager() {
++	undoManager.clear();
+ 	setModified(false);
+     }
+ 
+@@ -2051,7 +2051,7 @@
+      * This function will reset the UndoManager in a stable state.
+      */
+     public void resetUndoManager() {
 -	undoManager.reset();
--
--	resetUndoCounter();
--
--	if (getParentTab() != null) {
--	    ((XcosTab) getParentTab()).setEnabledRedo(false);
--	    ((XcosTab) getParentTab()).setEnabledUndo(false);
--	}
--    }
--
--    private void updateUndoModifiedState() {
--	if (isZeroUndoCounter()) {
--	    setModified(false);
--	}
--	else
--	{
--	    setModified(true);
--	}
--    }
--
--    public void setContextAction(SetContextAction action) {
--	this.action = action;
--    }
--
--   public SetContextAction getContextAction() {
--	return action;
--    }
--
--    public BasicBlock getChildById(String uid) {
--	BasicBlock returnBlock = null;
--	for (int i = 0; i < getModel().getChildCount(getDefaultParent()); ++i) {
--	    if (getModel().getChildAt(getDefaultParent(), i) instanceof BasicBlock) {
--		BasicBlock block = (BasicBlock)getModel().getChildAt(getDefaultParent(), i);
--		if (block.getId().compareTo(uid) == 0) { //find it
--		    returnBlock = block;
--		} else {
--		    if(block instanceof SuperBlock) {
--			boolean created = false;
--			if(((SuperBlock)block).getChild() == null) { 
--			    //create temporary SuperBlock to find child
--			    ((SuperBlock)block).createChildDiagram();
--			    created = true;
--			}
--
--			//search in child
--			returnBlock = ((SuperBlock)block).getChild().getChildById(uid);
--
--			if(created) { //if temporary, destroy it
--			    ((SuperBlock)block).getChild().closeDiagram();
--			}
--		    } else if(block.getRealParameters() instanceof ScilabMList) { 
--			//we have a hidden SuperBlock, create a real one
--			SuperBlock newSP = (SuperBlock)BasicBlock.createBlock("SUPER_f");
--			newSP.setParentDiagram(block.getParentDiagram());
--			newSP.setRealParameters(block.getRealParameters());
--			newSP.createChildDiagram();
--			//search in child
--			returnBlock = newSP.getChild().getChildById(uid);
--			newSP.getChild().closeDiagram();
--			newSP = null;
--		    }
--		}
--	    }
--
--	    if(returnBlock != null) {
--		return returnBlock;
--	    }
--	}
--	return returnBlock;
--    }
--
--    public boolean isChildVisible() {
--	for (int i = 0; i < getModel().getChildCount(getDefaultParent()); i++) {
--	    Object child = getModel().getChildAt(getDefaultParent(), i);
--	    if (child instanceof SuperBlock) {
--		XcosDiagram diag = ((SuperBlock) child).getChild();
--		if (diag != null && diag.isOpened()) {
--		    // if child or sub child is visible
--		    if (diag.isChildVisible() || diag.isVisible()) {
--			return true;
--		    }
--		}
--	    }
--	}
--	return false;
--    }
--
--    public boolean canClose() {
--	if (isChildVisible() == false) {
--	    return true;
--	}
--	return false;
--    }
--
--    public void closeChildren() {
--	for (int i = 0; i < getModel().getChildCount(getDefaultParent()); i++) {
--	    Object child = getModel().getChildAt(getDefaultParent(), i);
--	    if (child instanceof SuperBlock) {
--		SuperBlock diag = (SuperBlock) child;
--
--		if (diag.getChild() != null && diag.getChild().isOpened()) {
--		    diag.closeBlockSettings();
--		}
--	    }
--	}
--    }
--    
--    private StringBuffer checkMultiplicities(Object edge, Object source, Object target) {
--	mxMultiplicity multi[] = getMultiplicities();
--	StringBuffer error = new StringBuffer();
--	for(mxMultiplicity current : multi) {
--	    if(current instanceof PortCheck) {
--		int sourceOut = mxGraphModel.getDirectedEdgeCount(getModel(), source, true);
--		int targetIn = mxGraphModel.getDirectedEdgeCount(getModel(), target, false);
--		
--		String str = ((PortCheck)current).checkDrawLink(this, edge, source, target, sourceOut, targetIn);
--		if(str != null) {
--		    error.append(str);
--		}
--	    }
--	}
--	
--	if(error.length() > 0) {
--	    return error;
--	}
--	return null;
--    }
--
--    private boolean checkEdgeDirection(Object source, Object target) {
--	
--	if(source instanceof InputPort && target instanceof OutputPort) {
--	    Object temp = source;
--	    source = target;
--	    target = temp;
--	    return false;
--	}
--
--	if(source instanceof ControlPort && target instanceof CommandPort) {
--	    Object temp = source;
--	    source = target;
--	    target = temp;
--	    return false;
--	}
--
--	if((source instanceof InputPort || source instanceof ControlPort) &&  target instanceof BasicLink) {
--	    Object temp = source;
--	    source = target;
--	    target = temp;
--	    return false;
--	}
--	
--	
--	return true;
--    }
--    
--    private void cancelDrawLinkAction() {
--	waitPathAddEdge = false;
--	waitPathRelease = false;
--	drawLink = null;
--	info(XcosMessages.EMPTY_INFO);
--    }
--    
--}
--
-Index: scilab-5.2.0/home/sylvestre/dev/debian/debian-science/packages/scilab/build-area/scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/palette/XcosPalette.java
-===================================================================
---- scilab-5.2.0.orig/home/sylvestre/dev/debian/debian-science/packages/scilab/build-area/scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/palette/XcosPalette.java	2010-01-24 00:00:11.000000000 +0100
-+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
-@@ -1,313 +0,0 @@
--/*
-- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-- * Copyright (C) 2009 - DIGITEO - Bruno JOFRET
-- * 
-- * 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.palette;
--
--import java.awt.Color;
--import java.awt.Dimension;
--import java.awt.FlowLayout;
--import java.awt.GradientPaint;
--import java.awt.Graphics;
--import java.awt.Graphics2D;
--import java.awt.Point;
--import java.awt.Rectangle;
--import java.awt.datatransfer.DataFlavor;
--import java.awt.dnd.DnDConstants;
--import java.awt.dnd.DragGestureEvent;
--import java.awt.dnd.DragGestureListener;
--import java.awt.dnd.DragSource;
--import java.awt.event.ComponentEvent;
--import java.awt.event.ComponentListener;
--import java.awt.event.MouseEvent;
--import java.awt.event.MouseListener;
--
--import javax.swing.ImageIcon;
--import javax.swing.JComponent;
--import javax.swing.JPanel;
--import javax.swing.JScrollPane;
--import javax.swing.TransferHandler;
--
--import org.flexdock.plaf.common.border.ShadowBorder;
--import org.scilab.modules.xcos.utils.XcosConstants;
--
--import com.mxgraph.swing.util.mxGraphTransferable;
--import com.mxgraph.util.mxConstants;
--import com.mxgraph.util.mxEvent;
--import com.mxgraph.util.mxEventObject;
--import com.mxgraph.util.mxEventSource;
--import com.mxgraph.util.mxEventSource.mxIEventListener;
--
--public class XcosPalette extends JScrollPane implements ComponentListener {
--    private static final long serialVersionUID = 5693635134906513755L;
--
--    private JPanel panel = null;
--    private String name;
--
--    protected BlockPalette selectedEntry;
--
--    protected mxEventSource eventSource = new mxEventSource(this);
--
--    protected Color gradientColor = Color.LIGHT_GRAY;
--
--    public XcosPalette(String name) {
--	super(new JPanel());
--	panel = (JPanel) getViewport().getComponent(0);
--	this.name = name;
--	setBackground(Color.WHITE);
--
--	panel.setBackground(Color.WHITE);
--	panel.setLayout(new FlowLayout(FlowLayout.LEADING, XcosConstants.PALETTE_HMARGIN, XcosConstants.PALETTE_VMARGIN));
--	panel.setPreferredSize(new Dimension((XcosConstants.PALETTE_BLOCK_WIDTH + XcosConstants.PALETTE_HMARGIN), 0));
--
--	getVerticalScrollBar().setBlockIncrement(XcosConstants.PALETTE_BLOCK_HEIGHT + XcosConstants.PALETTE_VMARGIN);
--	getVerticalScrollBar().setUnitIncrement(XcosConstants.PALETTE_BLOCK_HEIGHT + XcosConstants.PALETTE_VMARGIN);
--
--	//getHorizontalScrollBar().setVisible(false);
--	getHorizontalScrollBar().setBlockIncrement(XcosConstants.PALETTE_BLOCK_WIDTH + XcosConstants.PALETTE_HMARGIN);
--	getHorizontalScrollBar().setUnitIncrement(XcosConstants.PALETTE_BLOCK_WIDTH + XcosConstants.PALETTE_HMARGIN);
--
--	addComponentListener(this);
--	// Clears the current selection when the background is clicked
--	addMouseListener(new MouseListener()
--	{
--
--	    /*
--	     * (non-Javadoc)
--	     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
--	     */
--	    public void mousePressed(MouseEvent e) {
--		clearSelection();
--	    }
--
--	    /*
--	     * (non-Javadoc)
--	     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
--	     */
--	    public void mouseClicked(MouseEvent e) {
--	    }
--
--	    /*
--	     * (non-Javadoc)
--	     * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
--	     */
--	    public void mouseEntered(MouseEvent e) {
--	    }
--
--	    /*
--	     * (non-Javadoc)
--	     * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
--	     */
--	    public void mouseExited(MouseEvent e) {
--	    }
--
--	    /*
--	     * (non-Javadoc)
--	     * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
--	     */
--	    public void mouseReleased(MouseEvent e) {
--	    }
--
--	});
--
--	// Shows a nice icon for drag and drop but doesn't import anything
--	setTransferHandler(new TransferHandler() {
--	    private static final long serialVersionUID = 1L;
--
--	    public boolean canImport(JComponent comp, DataFlavor[] flavors) {
--		return true;
--	    }
--	});
--    }
--
--    /**
--     * 
--     */
--    public void setGradientColor(Color c) {
--	gradientColor = c;
--    }
--
--    /**
--     * 
--     */
--    public Color getGradientColor() {
--	return gradientColor;
--    }
--
--    /**
--     * 
--     */
--    public void paintComponent(Graphics g) {
--	if (gradientColor == null) {
--	    super.paintComponent(g);
--	} else {
--	    Rectangle rect = getVisibleRect();
--
--	    if (g.getClipBounds() != null) {
--		rect = rect.intersection(g.getClipBounds());
--	    }
--
--	    Graphics2D g2 = (Graphics2D) g;
--
--	    g2.setPaint(new GradientPaint(0, 0, getBackground(), getWidth(), 0,
--		    gradientColor));
--	    g2.fill(rect);
--	}
--    }
--
--    /**
--     * 
--     */
--    public void clearSelection() {
--	setSelectionEntry(null, null);
--    }
--
--    /**
--     * 
--     */
--    public void setSelectionEntry(BlockPalette entry, mxGraphTransferable t) {
--	BlockPalette last = selectedEntry;
--	selectedEntry = entry;
--
--	if (last != null) {
--	    last.setBorder(null);
--	    last.setOpaque(false);
--	}
--
--	if (selectedEntry != null) {
--	    selectedEntry.setBorder(new ShadowBorder());
--	    selectedEntry.setOpaque(true);
--	}
--
--	eventSource.fireEvent(mxEvent.SELECT, new mxEventObject(new Object[] {
--		selectedEntry, t, last }));
--    }
--
--
--
--    /**
--     * 
--     * @param name
--     * @param icon
--     * @param style
--     * @param width
--     * @param height
--     * @param value
--     */
--    public void addTemplate(final String name, ImageIcon icon) {
--
--	final BlockPalette entry = new BlockPalette(icon);
--
--	entry.setPalette(this);
--	entry.setToolTipText(name);
--	entry.setText(name);
--
--	// Install the handler for dragging nodes into a graph
--	DragGestureListener dragGestureListener = new DragGestureListener()
--	{
--	    /**
--	     * 
--	     */
--	    public void dragGestureRecognized(DragGestureEvent e) {
--		e.startDrag(null, mxConstants.EMPTY_IMAGE, new Point(), entry.getTransferable(), null);
--	    }
--
--	};
--
--	DragSource dragSource = new DragSource();
--	dragSource.createDefaultDragGestureRecognizer(entry,
--		DnDConstants.ACTION_COPY, dragGestureListener);
--
--	panel.add(entry);
--    }
--
--    /**
--     * @param eventName
--     * @param listener
--     * @see com.mxgraph.util.mxEventSource#addListener(java.lang.String, com.mxgraph.util.mxEventSource.mxIEventListener)
--     */
--    public void addListener(String eventName, mxIEventListener listener) {
--	eventSource.addListener(eventName, listener);
--    }
--
--    /**
--     * @return
--     * @see com.mxgraph.util.mxEventSource#isEventsEnabled()
--     */
--    public boolean isEventsEnabled() {
--	return eventSource.isEventsEnabled();
--    }
--
--    /**
--     * @param listener
--     * @see com.mxgraph.util.mxEventSource#removeListener(com.mxgraph.util.mxEventSource.mxIEventListener)
--     */
--    public void removeListener(mxIEventListener listener) {
--	eventSource.removeListener(listener);
--    }
--
--    /**
--     * @param eventName
--     * @param listener
--     * @see com.mxgraph.util.mxEventSource#removeListener(java.lang.String, com.mxgraph.util.mxEventSource.mxIEventListener)
--     */
--    public void removeListener(mxIEventListener listener, String eventName) {
--	eventSource.removeListener(listener, eventName);
--    }
--
--    /**
--     * @param eventsEnabled
--     * @see com.mxgraph.util.mxEventSource#setEventsEnabled(boolean)
--     */
--    public void setEventsEnabled(boolean eventsEnabled) {
--	eventSource.setEventsEnabled(eventsEnabled);
--    }
--
--    public void componentHidden(ComponentEvent arg0) {
--    }
--
--    public void componentMoved(ComponentEvent arg0) {
--    }
--
--    public void componentResized(ComponentEvent arg0) {
--	if (arg0.getSource() instanceof XcosPalette) {
--	    XcosPalette palette = ((XcosPalette) arg0.getSource());
--	    int panelWidth = (int) palette.getSize().getWidth() - 3;
--
--	    //take care if VerticalScrollBar is visible to compute visible area
--	    if (getVerticalScrollBar().isVisible()) {
--		panelWidth -=  getVerticalScrollBar().getWidth();
--	    }
--
--	    int numberOfCols = panelWidth / (XcosConstants.PALETTE_BLOCK_WIDTH + XcosConstants.PALETTE_HMARGIN);
--	    double numberOfRows = (double) panel.getComponentCount() / (double) numberOfCols;
--	    int preferedHeight = (int) ((XcosConstants.PALETTE_BLOCK_HEIGHT + XcosConstants.PALETTE_VMARGIN) * Math.ceil(numberOfRows));
--
--	    panel.setPreferredSize(new Dimension(panelWidth, preferedHeight));
--	}
--    }
--
--    public void componentShown(ComponentEvent arg0) {
--    }
--
--    public String toString() {
--	return this.name;
--    }
--
--    public BlockPalette getSelectedEntry() {
--	return selectedEntry;
--    }
--
--    public void setSelectedEntry(BlockPalette selectedEntry) {
--	this.selectedEntry = selectedEntry;
--    }
--
--}
-Index: scilab-5.2.0/home/sylvestre/dev/debian/debian-science/packages/scilab/build-area/scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/utils/XcosCanvas.java
-===================================================================
---- scilab-5.2.0.orig/home/sylvestre/dev/debian/debian-science/packages/scilab/build-area/scilab-5.2.0/modules/xcos/src/java/org/scilab/modules/xcos/utils/XcosCanvas.java	2010-01-23 23:32:50.000000000 +0100
-+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
-@@ -1,131 +0,0 @@
--package org.scilab.modules.xcos.utils;
--
--import java.awt.AlphaComposite;
--import java.awt.Color;
--import java.awt.Composite;
--import java.awt.Paint;
--import java.awt.Stroke;
--import java.awt.geom.AffineTransform;
--import java.util.Hashtable;
--
--import com.mxgraph.swing.view.mxInteractiveCanvas;
--import com.mxgraph.util.mxConstants;
--import com.mxgraph.util.mxUtils;
--
--public class XcosCanvas extends mxInteractiveCanvas{
--
--    public Object drawVertex(int x, int y, int w, int h,
--							 Map<String, Object> style) {
--
--	if (g != null)
--	{
--	    x += translate.x;
--	    y += translate.y;
--
--	    // Applies the rotation on the graphics object and stores
--	    // the previous transform so that it can be restored
--	    AffineTransform saveTransform = g.getTransform();
--	    g.translate(x + (w / 2.0), y + (h / 2.0));
--
--	    double rotation = mxUtils.getDouble(style, mxConstants.STYLE_ROTATION, 0);
--
--	    if (rotation != 0) {
--		g.rotate(Math.toRadians(rotation));
--		if(rotation == 90 || rotation == 270) {
--		    //x - h / 2, y - w / 2, h, w
--		    x = x + (w / 2) - (h / 2);
--		    y = y + (h / 2) - (w / 2);
--		    int hh = h;
--		    h = w;
--		    w = hh;
--		}
--	    }
--
--	    String flip = mxUtils.getString(style, XcosConstants.STYLE_FLIP, "false");
--	    String mirror = mxUtils.getString(style, XcosConstants.STYLE_MIRROR, "false");
--	    
--	    //scale, 1st flip, 2nd mirror
--	    if (flip.compareTo("true") == 0) {
--		if (mirror.compareTo("true") == 0) {
--		    g.scale(-1, -1); // T / T
--		} else {
--		    g.scale(-1, 1); // T / F
--		}
--	    } else {
--		if (mirror.compareTo("true") == 0) {
--		    g.scale(1, -1); // F / T
--		} else {
--		    g.scale(1, 1); // F / F
--		}
--	    }
--
--	    g.translate(-(x + (w / 2.0)), -(y + (h / 2.0)));
--
--	    Composite composite = null;
--	    float opacity = mxUtils.getFloat(style, mxConstants.STYLE_OPACITY,
--		    100);
--
--	    // Applies the opacity to the graphics object
--	    if (opacity != 100)
--	    {
--		composite = g.getComposite();
--		g.setComposite(AlphaComposite.getInstance(
--			AlphaComposite.SRC_OVER, opacity / 100));
--	    }
--
--	    // Saves the stroke
--	    Stroke stroke = g.getStroke();
--
--	    // Draws a swimlane if start is > 0
--	    int start = mxUtils.getInt(style, mxConstants.STYLE_STARTSIZE);
--
--	    if (start == 0)
--	    {
--		drawShape(x, y, w, h, style);
--	    }
--	    else
--	    {
--		start = (int) Math.round(start * scale);
--
--		// Removes some styles to draw the content area
--		Map<String, Object> cloned = new Hashtable<String, Object>(
--			style);
--		cloned.remove(mxConstants.STYLE_FILLCOLOR);
--		cloned.remove(mxConstants.STYLE_ROUNDED);
--
--		if (mxUtils.isTrue(style, mxConstants.STYLE_HORIZONTAL, true))
--		{
--		    drawShape(x, y, w, start, style);
--		    drawShape(x, y + start, w, h - start, cloned);
--		}
--		else
--		{
--		    drawShape(x, y, start, h, style);
--		    drawShape(x + start, y, w - start, h, cloned);
--		}
--	    }
--
--	    // Restores the stroke
--	    g.setStroke(stroke);
--
--	    // Restores the composite rule on the graphics object
--	    if (composite != null)
--	    {
--		g.setComposite(composite);
--	    }
--
--	    // Restores the affine transformation
--	    if (saveTransform != null)
--	    {
--		g.setTransform(saveTransform);
--	    }
--	}
--
--	return null;
--    }
--
--    public void drawRect(int x, int y, int w, int h, Color fillColor,
--	    Paint fillPaint, Color penColor, boolean shadow, boolean rounded) {
--	super.drawRect(x, y, w, h, fillColor, fillPaint, penColor, shadow, rounded);
--    }
--}
++	undoManager.clear();
+ 
+ 	resetUndoCounter();
+ 




More information about the debian-science-commits mailing list