Buffer snap agent
arcgissamples\editing\EnableSnappingCommand.java
/* Copyright 2010 ESRI
* 
* All rights reserved under the copyright laws of the United States
* and applicable international laws, treaties, and conventions.
* 
* You may freely redistribute and use this sample code, with or
* without modification, provided you include the original copyright
* notice and use restrictions.
* 
* See the use restrictions.
* 
*/
 package arcgissamples.editing;

import com.esri.arcgis.controls.BaseCommand;
import com.esri.arcgis.controls.EngineEditor;
import com.esri.arcgis.controls.IEngineSnapAgent;
import com.esri.arcgis.controls.esriEngineEditState;

public class EnableSnappingCommand extends BaseCommand {

  private static final long serialVersionUID = 1L;

  private EngineEditor editor;

  private IEngineSnapAgent bufferSnapAgent;

  private boolean checked;

  @Override
  public void onClick() {
    try {
      if (!this.checked) {
        editor.addSnapAgent(bufferSnapAgent);
        this.caption = "Disable Buffer Snap Agent";
      } else {
        this.caption = "Enable Buffer Snap Agent";
        for (int i = 0; i < editor.getSnapAgentCount(); i++) {
          IEngineSnapAgent snapAgent = editor.getSnapAgent(i);
          if (snapAgent == bufferSnapAgent) {
            editor.removeSnapAgent(i);
            break;
          }
        }
      }
      this.checked = !this.checked;
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void onCreate(Object arg0) {
    this.caption = "Enable Buffer Snap Agent";
    this.checked = false;
    try {
      editor = new EngineEditor();
      bufferSnapAgent = new BufferSnapAgent();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public boolean isChecked() {
    return this.checked;
  }

  public boolean isEnabled(){
    try{
    return editor.getEditState() == esriEngineEditState.esriEngineStateEditing;
    }catch(Exception e){
    e.printStackTrace();
    return false;
    }
  }
}