cdkbook

ObjectListening.groovy

Source code:

@Grab(group='org.openscience.cdk', module='cdk-bundle', version='2.9')

import org.openscience.cdk.interfaces.*;
import org.openscience.cdk.*;

IChemObjectBuilder builder =
  DefaultChemObjectBuilder.getInstance();
molecule = builder.newInstance(IAtomContainer.class);
listener = new IChemObjectListener() {
  public void stateChanged(IChemObjectChangeEvent event) {
    System.out.println("Event: " + event)
  }
}
molecule.addListener(listener)
IAtom atom1 = builder.newInstance(IAtom.class, "C")
molecule.addAtom(atom1)
atom1.setSymbol("N")

Output:

Event: org.openscience.cdk.event.ChemObjectChangeEvent[source=AtomContainer(19...
  63448684, #A:1, AtomRef{Atom(1913714009, S:C, AtomType(1913714009, FC:0, Iso...
  tope(1913714009, Element(1913714009, S:C, AN:6))))})]
Event: org.openscience.cdk.event.ChemObjectChangeEvent[source=Atom(1913714009,...
   S:N, AtomType(1913714009, FC:0, Isotope(1913714009, Element(1913714009, S:N...
  , AN:7))))]