Yes it is possible to implement custom geometry collection.
I have done it in two different ways.
1) Take the existing Geometry Collections methods and added my code in between, where certain events I was able to access. This worked well until my needs vastly grew outside of the given collection tools.
Then I wrote my own code to perform data collection.
2) I have buttons on the interface, if they click By Map, then the screen will turn to a static copy of the home page, which will allows the user to click on the map to indicate where the point should be. Then click ok, go to the attributes form, fill that in, then click ok, to save the point, and synchronize the data.
I can also get the geometry from a GPS, instead of having the user to select where the point is on the map.
All of the classes are there, SketchGeometry and AttributesForm and etc.