Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1867
Modified Files:
AbstractTool.java
Log Message:
moved methods for safe vertex, edge and surface delete to abstracttool
Index: AbstractTool.java
===================================================================
RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/AbstractTool.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** AbstractTool.java 25 Aug 2005 09:49:17 -0000 1.10
--- AbstractTool.java 30 Aug 2005 12:46:14 -0000 1.11
***************
*** 21,24 ****
--- 21,26 ----
import java.util.List;
+ import java.util.Iterator;
+ import java.util.Set;
import javax.swing.Timer;
***************
*** 362,365 ****
--- 364,424 ----
}
+ /**
+ * Deletes a surface and its edges if it is safe to do so.
+ * @param surface the surface to delete
+ */
+ protected void deleteSurface(Surface surface) {
+ List edges = surface.getEdges();
+ Iterator it = edges.iterator();
+ Edge edge = null;
+ //checking if this is a hole in some surface an thus must removed before deleted
+ //consider method that does not have to get all surfaces.
+ Set surfaces = SurfaceFacade.getInstance().findAll();
+ Iterator surfIt = surfaces.iterator();
+ while (surfIt.hasNext()) {
+ Surface surf = (Surface)surfIt.next();
+ Set inners = surf.getInnerSurfaces();
+ if (inners != null) {
+ Iterator innerIt = inners.iterator();
+ while (innerIt.hasNext()) {
+ Surface innerSurf = (Surface)innerIt.next();
+ if (innerSurf.equals(surface)) {
+ surf.removeHole(surface);
+ SurfaceFacade.getInstance().update(surf);
+ }
+ }
+ }
+ }
+ removeSurface(surface);
+ while (it.hasNext()) {
+ edge = (Edge)it.next();
+ deleteEdge(edge);
+ }
+ }
+
+ /**
+ * Deletes an edge and it's endpoint vertecies if it is safe to do so.
+ * @param edge the edge to delete
+ */
+ protected void deleteEdge(Edge edge) {
+ Set surfaces = edge.getSurfaces();
+ if (surfaces.size() < 1) {
+ removeEdge(edge);
+ deleteVertex(edge.getTo());
+ deleteVertex(edge.getFrom());
+ }
+ }
+
+ /**
+ * Deletes a vertex if it is safe to do so.
+ * @param vertex the vertex to delete
+ */
+ protected void deleteVertex(Vertex vertex) {
+ Set edges = vertex.getEdges();
+ if (edges.size() < 1) {
+ removeVertex(vertex);
+ }
+ }
+
/**
* Invoked when the mouse cursor has been moved
|