Arc Addin


Hopefully you've managed to get the first practical up and running. If not, grab us and we'll go through it with you. Having done that, we're now going to start the proper programming. We're going to develop an ArcMap addin, and get it to run our model programmatically.

Why? You may well ask. Well, let us imagine, for the sake of argument, that the explosion point was not stored in a passive point file, but was a constantly updated feed, the potential explosion point being sent to us from a monitoring system. Or we might want to allow our users to pick from only certain buffer radii. Or, perhaps, we want to make this part of a bigger system that takes results from a model external to Arc. In short, there are lots of reasons, but many of them come down to having code produce the inputs then fed to the model, or directing the outputs into some code.

This practical will be built up in two stages. In the first, we'll just develop a "Hello World" example. In the second, we'll alter this example to run our pre-practical model.


First up, we'll need to get up and running with Eclipse and the ESRI plugin. Although there is a copy of Eclipse installed on the Uni system, we're not going to use it. It looks like the system settings don't let you install plugins. It's not clear if that's on purpose, or accidental, but either way it's not going to stop us - we're not users, we're coders! We are CHAOS! So, first things first, download a copy of 64 bit Eclipse (note that if you are running Arc 10.3 or below, you may need the 32 bit version -- you'll know if you can't find the AddIns within the customisation interface). You should be able to install Eclipse without Admin rights. Pick the version "for Java Developers" during the install, and install it into m:\eclipse - don't run it just yet. Note first that because it will run off your m: drive, it will ask you when you start it for a workspace. Give it the directory m:\java\eclipse (you can give it something else if you want, but a) don't give it the m:\eclipse directory, and b) we'll assume throughout that you're using m:\java\eclipse). Note also, on the same dialog you can (and should) specify not to be asked for this again. Right, now start it up. If there's no menu item, double click eclipse.exe in the install directory from Windows Explorer or equivalent.

Now you'll need to install the ESRI plugin for Eclipse, the IDE we'll use during this course. You can find details of how to do this on the Help with Software page.


Next, work through the lecture notes on making a addin button (read through the following notes first, down to the next dashed line...).

Get to the point in the lecture notes where you have a onClick method, and add a JOptionPane inside it to popup a message dialog with "Hello World" on it. If you copy in the JOptionPane code from the slides, you'll find that they get underlined in red. This indicates a problem with the code. If you 'mouse-over' the line, you should get a pop-up label that gives you an analysis and various solutions. In this case you probably haven't imported javax.swing. If you click this option on the pop-up, it will do it for you, and the red will disappear. Neat hu?

NB: Static calls to JOptionPanes are really useful for this kind of stuff, and there are lots of different dialogs. It is worth checking out their docs: JOptionPane.

Export the addin, and build it into ArcMap: use the map you saved for the practical one, and make sure the toolbox with your model in it is still there. You'll need to look at the slides for installing an addin in order to do this. The best place to export to is M:\ArcGIS\AddIns\Desktop10.3\. Run the addin, as per the lecture notes. If you have trouble, give us a shout.


Once you've got that running, visit the Course Code Cookbook. I know, I know, don't get excited - it will become a cornucopia of delights as we go on. For now, find the "HelloWorld for the ArcMap status line" and give that a go. Note that it has two methods and an instance variable that need setting up. This code uses the application object to get hold of the Arc statusbar - this is the bar at the bottom of the screen. The application is the gateway to everything in Arc, and this is just a simple example of how to use it. You'll need to sort out a variety of red-underlined import and variable creation issues.


Once you've tried all that, either cull out the "Hello World" code from what you've got, or make yourself a new button. In Part Two we're going to use this to run our model.