private boolean hasDirtyGeom(EditToolHandler handler) {
   if (handler.getCurrentGeom() != null && handler.getCurrentGeom().isChanged()) return true;
   List<EditGeom> geoms = handler.getEditBlackboard(handler.getEditLayer()).getGeoms();
   for (EditGeom geom : geoms) {
     if (geom.isChanged()) return true;
   }
   return false;
 }
 /**
  * Copies the geometry back onto the editblackboard.
  *
  * @return
  */
 private void copyFeature(EditBlackboard editBlackboard, EditGeom geom) {
   EditGeom newGeom = editBlackboard.newGeom(geom.getFeatureIDRef().get(), geom.getShapeType());
   for (PrimitiveShape shape : geom) {
     PrimitiveShape newShape;
     if (shape == geom.getShell()) {
       newShape = newGeom.getShell();
     } else {
       newShape = newGeom.newHole();
     }
     if (shape == currentShape) handler.setCurrentShape(newShape);
     for (int i = 0; i < shape.getNumCoords(); i++) {
       editBlackboard.addCoordinate(shape.getCoord(i), newShape);
     }
     newGeom.setChanged(geom.isChanged());
   }
 }