@Override public void addGraphListener(GraphListener<V, E> l) { addToListenerList(graphListeners, l); }
/** * Minimal vertex addition, meant for just SIG bulk populating * * @param inters the inters to add to sig */ public final void populateAllInters (Collection<? extends Inter> inters) { for (Inter inter : inters) { super.addVertex(inter); } }
@Override public Object clone () { return super.clone(); //To change body of generated methods, choose Tools | Templates. }
@Override public boolean removeEdge(E e) { V sourceVertex = getEdgeSource(e); V targetVertex = getEdgeTarget(e); double weight = getEdgeWeight(e); boolean modified = super.removeEdge(e); if (modified) { fireEdgeRemoved(e, sourceVertex, targetVertex, weight); } return modified; }
@Override public void setEdgeWeight(E e, double weight) { super.setEdgeWeight(e, weight); V sourceVertex = getEdgeSource(e); V targetVertex = getEdgeTarget(e); fireEdgeWeightUpdated(e, sourceVertex, targetVertex, weight); }
@Override public boolean removeVertex(V v) { if (containsVertex(v)) { Set<E> touchingEdgesList = edgesOf(v); // copy set to avoid ConcurrentModificationException removeAllEdges(new ArrayList<>(touchingEdgesList)); super.removeVertex(v); // remove the vertex itself fireVertexRemoved(v); return true; } else { return false; } }
/** * Notify listeners that the specified edge was added. * * @param edge the edge that was added. * @param source edge source * @param target edge target * @param weight edge weight */ protected void fireEdgeAdded(E edge, V source, V target, double weight) { GraphEdgeChangeEvent<V, E> e = createGraphEdgeChangeEvent( GraphEdgeChangeEvent.EDGE_ADDED, edge, source, target, weight); for (GraphListener<V, E> l : graphListeners) { l.edgeAdded(e); } }
@Override public boolean addEdge(V sourceVertex, V targetVertex, E e) { boolean added = super.addEdge(sourceVertex, targetVertex, e); if (added) { fireEdgeAdded(e, sourceVertex, targetVertex, Graph.DEFAULT_EDGE_WEIGHT); } return added; }
/** * Notify listeners that the specified vertex was removed. * * @param vertex the vertex that was removed. */ protected void fireVertexRemoved(V vertex) { GraphVertexChangeEvent<V> e = createGraphVertexChangeEvent(GraphVertexChangeEvent.VERTEX_REMOVED, vertex); for (VertexSetListener<V> l : vertexSetListeners) { l.vertexRemoved(e); } for (GraphListener<V, E> l : graphListeners) { l.vertexRemoved(e); } }
@Override public E removeEdge(V sourceVertex, V targetVertex) { E e = super.getEdge(sourceVertex, targetVertex); if (e != null) { double weight = super.getEdgeWeight(e); if (super.removeEdge(e)) { fireEdgeRemoved(e, sourceVertex, targetVertex, weight); } } return e; }
/** * Notify listeners that the weight of an edge has changed. * * @param edge the edge whose weight has changed. * @param source edge source * @param target edge target * @param weight the edge weight */ protected void fireEdgeWeightUpdated(E edge, V source, V target, double weight) { GraphEdgeChangeEvent<V, E> e = createGraphEdgeChangeEvent( GraphEdgeChangeEvent.EDGE_WEIGHT_UPDATED, edge, source, target, weight); for (GraphListener<V, E> l : graphListeners) { l.edgeWeightUpdated(e); } }
@Override public E addEdge(V sourceVertex, V targetVertex) { E e = super.addEdge(sourceVertex, targetVertex); if (e != null) { fireEdgeAdded(e, sourceVertex, targetVertex, Graph.DEFAULT_EDGE_WEIGHT); } return e; }
/** * Notify listeners that the specified vertex was added. * * @param vertex the vertex that was added. */ protected void fireVertexAdded(V vertex) { GraphVertexChangeEvent<V> e = createGraphVertexChangeEvent(GraphVertexChangeEvent.VERTEX_ADDED, vertex); for (VertexSetListener<V> l : vertexSetListeners) { l.vertexAdded(e); } for (GraphListener<V, E> l : graphListeners) { l.vertexAdded(e); } }
/** * Notify listeners that the specified edge was removed. * * @param edge the edge that was removed. * @param source edge source * @param target edge target * @param weight edge weight */ protected void fireEdgeRemoved(E edge, V source, V target, double weight) { GraphEdgeChangeEvent<V, E> e = createGraphEdgeChangeEvent( GraphEdgeChangeEvent.EDGE_REMOVED, edge, source, target, weight); for (GraphListener<V, E> l : graphListeners) { l.edgeRemoved(e); } }
@Override public void addVertexSetListener(VertexSetListener<V> l) { addToListenerList(vertexSetListeners, l); }
/** * {@inheritDoc} * <p> * Overridden so that all interpretations keep a pointer to their hosting sig. * * @param inter the brand new interpretation * @return true if the inter was actually added, false if it existed before */ @Override public boolean addVertex (Inter inter) { // Update index if (inter.getId() == 0) { system.getSheet().getInterIndex().register(inter); } else { system.getSheet().getInterIndex().insert(inter); } // Update sig boolean added = super.addVertex(inter); if (added) { inter.setSig(this); // Additional actions inter.added(); } return added; }