import org.gvsig.andami.PluginServices; import org.gvsig.andami.plugins.Extension; import org.gvsig.app.project.documents.view.gui.DefaultViewPanel; import org.gvsig.fmap.mapcontrol.MapControlLocator; import org.gvsig.fmap.mapcontrol.MapControlManager; import org.gvsig.fmap.mapcontrol.impl.DefaultMapControlManager; import org.gvsig.utils.console.JConsole; import es.udc.lbd.giseiel.editing.CADExtension; import es.udc.lbd.giseiel.editing.EditionUtilities; import es.udc.lbd.giseiel.editing.gui.cad.snapping.EIELFinalPointSnapper; import es.udc.lbd.giseiel.editing.gui.cad.snapping.EIELNearestPointSnapper; /** * Extensión que gestiona la activación y desactivación de los snappers * * @author Jose Ignacio Lamas * Leticia Riestra Ainsua */ public class SnappersExtension extends Extension { private boolean activated; /** * @see com.iver.andami.plugins.IExtension#initialize() */ public void initialize() { activated = true; if (MapControlLocator.getMapControlManager() == null){ MapControlLocator.registerMapControlManager(DefaultMapControlManager.class); } MapControlManager mapControlManager = MapControlLocator.getMapControlManager(); //Borramos la lista de snapper para así poder poner los nuestros arriba con la //mayor prioridad ((DefaultMapControlManager)mapControlManager).clearSnappers(); //Le añadimos los snapper que queremos mapControlManager.registerSnapper("EIELFinalPointSnapper", EIELFinalPointSnapper.class); mapControlManager.registerSnapper("EIELNearestPointSnapper", EIELNearestPointSnapper.class); mapControlManager.registerSnapper("FinalPointSnapper", FinalPointSnapper.class); mapControlManager.registerSnapper("NearestPointSnapper", NearestPointSnapper.class); mapControlManager.registerSnapper("PixelSnapper", PixelSnapper.class); mapControlManager.registerSnapper("CentralPointSnapper", CentralPointSnapper.class); mapControlManager.registerSnapper("QuadrantPointSnapper", QuadrantPointSnapper.class); //mapControlManager.registerSnapper("InsertPointSnapper", new InsertPointSnapper.class); mapControlManager.registerSnapper("IntersectionPointSnapper", IntersectionPointSnapper.class); mapControlManager.registerSnapper("MediumPointSnapper", MediumPointSnapper.class); mapControlManager.registerSnapper("PerpendicularPointSnapper", PerpendicularPointSnapper.class); mapControlManager.registerSnapper("TangentPointSnapper", TangentPointSnapper.class); } /** * @see com.iver.andami.plugins.IExtension#execute(java.lang.String) */ public void execute(String s) { CADExtension.initFocus(); if (s.equals("_snappers")) { if (MapControlLocator.getMapControlManager() == null){ MapControlLocator.registerMapControlManager(DefaultMapControlManager.class); } MapControlManager mapControlManager = MapControlLocator.getMapControlManager(); String message = new String(); if(activated){ //Borramos la lista de snapper ((DefaultMapControlManager)mapControlManager).clearSnappers(); activated = false; message = PluginServices.getText(this, "snappers_desactivated"); }else{ //Borramos la lista de snapper para así poder poner los nuestros arriba con la //mayor prioridad ((DefaultMapControlManager)mapControlManager).clearSnappers(); //Le añadimos los snapper que queremos mapControlManager.registerSnapper("EIELFinalPointSnapper", EIELFinalPointSnapper.class); mapControlManager.registerSnapper("EIELNearestPointSnapper", EIELNearestPointSnapper.class); mapControlManager.registerSnapper("FinalPointSnapper", FinalPointSnapper.class); mapControlManager.registerSnapper("NearestPointSnapper", NearestPointSnapper.class); mapControlManager.registerSnapper("PixelSnapper", PixelSnapper.class); mapControlManager.registerSnapper("CentralPointSnapper", CentralPointSnapper.class); mapControlManager.registerSnapper("QuadrantPointSnapper", QuadrantPointSnapper.class); //mapControlManager.registerSnapper("InsertPointSnapper", new InsertPointSnapper.class); mapControlManager.registerSnapper("IntersectionPointSnapper", IntersectionPointSnapper.class); mapControlManager.registerSnapper("MediumPointSnapper", MediumPointSnapper.class); mapControlManager.registerSnapper("PerpendicularPointSnapper", PerpendicularPointSnapper.class); mapControlManager.registerSnapper("TangentPointSnapper", TangentPointSnapper.class); activated = true; message = PluginServices.getText(this, "snappers_activated"); } //Escribimos en la consola si esta activado el snapper if (PluginServices.getMDIManager().getActiveWindow() instanceof DefaultViewPanel) { DefaultViewPanel vista = (DefaultViewPanel) PluginServices.getMDIManager().getActiveWindow(); vista.getConsolePanel().addText("\n" +message, JConsole.INSERT); } } } /** * @see com.iver.andami.plugins.IExtension#isEnabled() */ public boolean isEnabled() { if (EditionUtilities.getEditionStatus() == EditionUtilities.EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE) { if (CADExtension.getEditionManager().getActiveLayerEdited()==null){ return false; } return true; } return false; } /** * @see com.iver.andami.plugins.IExtension#isVisible() */ public boolean isVisible() { if (EditionUtilities.getEditionStatus() == EditionUtilities.EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE) return true; return false; } }