Many commands (although not all) require some sort of UI dialog interaction before they can begin work. We call this the "Action UI." This is probably a new class that you have to create. Build the UI itself in Interface Builder, and create the new class in SCPluginUIDaemon/UserInterface/WhateverUI.[hm].
This is the generic Cocoa programming part. There are oodles of books and web sites to help you here. A great place to start, and the one everyone always starts by recommending, is Aaron Hillegass's Cocoa Programming for Mac OS X.
The structure of the Action UI class deserves some description.
The class's -[init] routine should generally require the caller (the MenuCallback routine) to provide all the info it needs. As a result, you probably won't define something merely named {{-[init]}}}, but rather something like -[initWithStuff:andOtherStuff:andSomeMoreStuff:]. You also have access to file-system- and Subversion-specific stuff to expand your data. Your goal in your init routine (whatver its name) is to set up the Action UI so it can talk to the user and collect whatever further info is needed. These get returned to the class object through IBActions and bindings.
The Action UI class also has at least one other routine, the one bound to the [OK] button. This will probably have the obvious name for the action, like commit: or mkdir:. It's an IBAction, so it gets one parameter, sender, a pointer to the control that initiated it (probably the [OK] button). But understand: by the time this routine runs, the dialog has been closed, or is being closed on some other thread, so don't expect you can have any further chats with the user!
This method is yet another argument marshalling routine, this time from the UI to the real action routine, which probably runs under the ProgressUiDefinition.


