Rick E Johnson wrote:
After a few years of having to put my development efforts pretty much on hold, I'm now back in the thick of it and working to get my CS3 (and thus -CS5) plugins updated to CS6 and beyond. With the demise of ADM, it seems to be quite a wild west as far as UI goes. At first (as I recall) we were encouraged to use Flash, then Flex, and now HTML5. What are most developers using, especially small developers?
I think a lot of small developers have just given up, which may be why this forum is so quiet now. Personally I use Flex. When Adobe introduced HTML5, they said that they would start removing flash support from Creative Cloud products in the middle of 2014. There were also rumours they were going to discontinue Extension Manager. I don't think they have done either yet.
Making a palette (now called a Panel?) seems straightforward enough using native Xcode and Visual Studio, although it's a lot of extra coding for each platform. I see that the Twirl sample plugin uses a .zxp file in addition to the .r file. Does an .r file not contain enough info for those controls, although it's apparently sufficient for the EmptyPanel project?
The zxp file is an Extension Manager installer for installing the UI part of the plugin, which is built from from the other files. The .r files are only used to define the plugin name and entry point. All the UI stuff is now in mxml files for flex and html files for html5, or in native code as in EmptyPanel.
I'm not excited about figuring out a lot of platform-specific callbacks, etc., but don't want to subject my customers to a clumsy two-step install process with the Extensions Manager, either. Nor do I really have time to become proficient at several new programming languages.
You can include the UI zxp file within another zxp file that also contains the plugin by creating a hybrid extension, so it looks to the user like they are only installing one thing.
My plugins often use modal dialogs, but I can't find a sample of how to implement them without a separate UI editor. AI already has so many pallets/panels that one almost needs an extra monitor just to park them all, so I'd rather not have to go that route--but will if I must. Am I correct in guessing this is best done in Xcode (somehow) with a view than with a window in Interface Builder? I'm sure Visual Studio will be no easier nor intuitive.
The AIUser suite has functions for showing message boxes (*Alert functions) and also has functions for showing file/directory chooser and color picker dialogs. There is also one to get a string from the user (GetInputFromUser), but if you need anything with more controls, you will have to build your own dialogs. I would recommend doing this in flex/html5 rather than as a native window to maintain the look and feel of Illustrator.
Golly, plugin development would be SO much simpler if it were somehow possible using XOJO, which is simpler than C++ and totally cross-platform, including a great WYSIWYG dialog/control editor, or even better if ADM were revised to work with the new UI.
Yes, Adobe could have just written a conversion layer to convert ADM into whichever UI language currently takes their fancy, but instead they decided that it would be better to make plugin developers rewrite their code every time they decide to change the UI.
Thank you, LeoTaro, for your detailed response. I should have mentioned that I also looked into Hot Door's CORE to develop plugins, which would require a significant rewrite but with likely simpler updates to newer versions of AI. I still haven't ruled that out.
I really do need custom dialogs because of the number of settings for many of my plugins, but they could probably function as palettes instead if they're easier to implement. But would users forgive me for gobbling up yet more of their already crowded screen real estate?
I hope others will chime in with their experiences, also.