/** * */ package org.eclipse.iee.pad.graph.model; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.iee.core.IHasPropertyChangeListener; public class GraphModel implements Serializable, Cloneable, IHasPropertyChangeListener { private static final long serialVersionUID = 1L; private transient final PropertyChangeSupport fpcs = new PropertyChangeSupport(this); private Double minX; private Double maxX; private Double minY; private Double maxY; private List<GraphElement> elements = new ArrayList<GraphElement>(); private List<String> variables = new ArrayList<String>(); public List<GraphElement> getElements() { if (elements == null) { elements = new ArrayList<GraphElement>(); } return Collections.unmodifiableList(elements); } public void setElements(List<GraphElement> elements) { for (GraphElement graphElement : this.elements) { graphElement.setGraph(this); } for (GraphElement graphElement : elements) { graphElement.setGraph(this); } this.elements = elements; } public List<String> getVariables() { return variables; } public void setVariables(List<String> variables) { this.variables = variables; } @Override public GraphModel clone() { try { return (GraphModel) super.clone(); } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } } public Double getMinX() { return minX; } public void setMinX(Double minX) { Double oldValue = this.minX; this.minX = minX; getPropertyChangeSupport().firePropertyChange("minX", oldValue, minX); } public Double getMaxX() { return maxX; } public void setMaxX(Double maxX) { Double oldValue = this.maxX; this.maxX = maxX; getPropertyChangeSupport().firePropertyChange("maxX", oldValue, maxX); } public Double getMinY() { return minY; } public void setMinY(Double minY) { Double oldValue = this.minY; this.minY = minY; getPropertyChangeSupport().firePropertyChange("minY", oldValue, minY); } public Double getMaxY() { return maxY; } public void setMaxY(Double maxY) { Double oldValue = this.maxY; this.maxY = maxY; getPropertyChangeSupport().firePropertyChange("maxY", oldValue, maxY); } @Override public void addPropertyChangeListener(PropertyChangeListener listener) { fpcs.addPropertyChangeListener(listener); } @Override public void removePropertyChangeListener(PropertyChangeListener listener) { fpcs.removePropertyChangeListener(listener); } protected PropertyChangeSupport getPropertyChangeSupport() { return fpcs; } public void addElement(GraphElement newElement) { if (elements == null) { elements = new ArrayList<GraphElement>(); } List<GraphElement> oldValue = new ArrayList<GraphElement>(elements); elements.add(newElement); getPropertyChangeSupport().firePropertyChange("elements", oldValue, elements); } public void removeElement(GraphElement newElement) { if (elements == null) { elements = new ArrayList<GraphElement>(); } List<GraphElement> oldValue = new ArrayList<GraphElement>(elements); elements.remove(newElement); getPropertyChangeSupport().firePropertyChange("elements", oldValue, elements); } }