[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/tool AbstractTool.java,1.10,1.11
Status: Pre-Alpha
Brought to you by:
henryml
From: Nordholt <nor...@us...> - 2005-08-30 12:46:25
|
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 |