Arc: AddIns Dr Andy Evans
Dec 29, 2015
Arc: AddIns
Dr Andy Evans
Java
Direct access to ArcObjects Framework inside and outside Arc.
Ability to add components to the GUI.
Ability to communicate with external applications.
AddIns
Button : Icon on toolbar.Tool : Changes mouse operations.Combo box : Dropdown list and editable box.Toolbar : For grouping AddIns.Menu : Dropdown and right-click.Tool palette : Floating container for other AddIns. Dockable window : Floating window that can be locked into the GUI.Application extension : Additional functionality within, e.g. Arc extensions.
Form
jar zip file, with a .esriaddin extension
Contains:config.xml : metadata describing the addinJava class filesOther resources needed : e.g. data, images
Installing
File is just dropped into %USERPROFILE%\
My Documents\ArcGIS\AddIns\Desktop10.2
or%USERPROFILE%\
Documents\ArcGIS\AddIns\Desktop10.2
There are easy install options for users (double clicking on the addin will bring up a wizard to walk through installing it)
Installing a sent AddIn
AddIn Manger
Choose “Add from file” and navigate to the file.
Should then see it under the commands list in whatever Category you’ve created for it in the XML file.
Drag and drop from here, onto the interface.
Installing a sent AddIn
Managing AddInsAdmin Registry Keys (regedit.exe)HKEY_LOCAL_MACHINE\SOFTWARE\ESRI\Desktop10.2 \ Settings
BlockAddIns0 - Load all.1 - Load signed only.2 - Load ESRI only.3 - Load from administrator folders only.4 - Do not Load any Add-Ins.
AddInFoldersAdminAddInLock - stop tampering with these.
Digital signing
See:http://help.arcgis.com/en/sdk/10.0/Java_AO_ADF/conceptualhelp/engine/index.html#/Digitally_signed_add_ins/0001000004zq000000/
Making an AddIn
Rather than writing the config.xml ourselves, and zipping it up manually with the java files, there’s an Eclipse IDE plugin.
This does all the basic class generation for us, and prepares the file.
Details for installing the IDE and plugin on the website.
Eclipse
EclipseProject area
Editor area, currently showing config.xml, but shown as a form, not text.
Show xml textsource
Config.xml
Eclipse
Should check code as you write.Will compile when you save the file.Errors reported in problems panel:
Note that the javadoc panel displays the javadocs of known classes.
Eclipse
Will autocomplete as you type. Will also suggest potential quick fixes if you click on hover over an issue.
Debugging
No System.out.println();
Best bet is:JOptionPane.showMessageDialog(null, String);
E.g.JOptionPane.showMessageDialog(null, "Hello World");
Or for exception checking…catch (Exception e){
JOptionPane.showMessageDialog(null, e.getStackTrace());
}
Help coding
Course Code CookbookThere’s no point in you struggling to find key bits of
code on ESRI’s site.So, there are many useful code examples, stripped
down to be a simple as possible, on the course website.
The quid pro quo:Send us useful code you get working.Read and try and understand the code, don’t just cut-
and-paste it. Ask questions!
Help codingIntro to Eclipse:
Help -> Welcome -> Overview / Tutorials
Arc Programming pages:http://resources.arcgis.com/en/help/arcobjects-java/concepts/engine/
Java ArcObjects Developer Guide -> Developing extensions -> ArcGIS Desktop customizations using add-ins
Help codingAPI:http://resources.arcgis.com/en/help/arcobjects-java/api/arcobjects/index.html
Note that the API docs are a re-write of the VB pages, and still contain some VB code:
If it says “This parameter is optional”, it usually isn’t.
If it says “If you don’t want this parameter, just pass in zero” or “Nothing”, then pass in null.
If it gives Variant as a return type, it returns java.lang.Object.
Select the AddIn
If you are developing, you need to reboot Arc to get changes to appear, but you don’t need to re-add the addIn.
Extensions
Classes that extend Arc functionalityCustom feature renderers Custom geoprocessing tools : can be added to
ArcToolbox and ModelBuilderClass extensions : Change form of dataPlug-in data sourcesUtility objects : Combine other tools
Installing
Jar file placed in<ArcGIS Install Dir>/java/lib/ext