that's some very sweet stuff actually, especially creating Actions has always been a major
pain to do. That action-editor is a good thing, although personally, I wouldn't have
hooked this into the "New" menu, but would have favored a "Visual Descriptor Editor", like
it's available for editing J2EE descriptors. Any plans/chances to get one as well?
Something I miss on the screenshot is the ability to assign shortcuts to an action.
Getting this right can be a lottery sometimes: Was it "ctrl" or "ctl" or "control" for the
modifier key? Does it matter if the modifier/key is written in lower/upper case? That's
something that could be done automatically by the editor. Borrow the shortcut-control from
One issue I have with the current New -> *Component feature is that it's only available in
plugin modules. If you're using a (simple) plugin module that depends on plain java
modules, you're out of luck. I think this should be available for any (java) module that
is a dependency of a plugin module. If it's used by more than one plugin module, it should
ask which to update.
This also doesn't integrate very well with the "Coding by Intention" style: I have created
the last bunch of components with the "Create Class" intention. So there should be some
support to update the plugin.xml from the code and keep it in sync with it. I can imagine
some new inspections:
- Component/Action not registered in plugin.xml. QuickFix: Register/Open Action-Editor.
This should use the same module dependency rules as above. (Actions are a bit tough
actually as they can be created dynamically. This needs some thought)
- Incorrect component/action registration: Checks if the type of a component matches its
registration in plugin.xml. It gives some funny exceptions when a component doesn't
implement the interface required by the registration. This could be available both in code
as well as the plugin.xml.
Something else I found in http://www.jetbrains.com/idea/plugins/plugin_structure.html:
"Note that two components of the same level (Application, Project or Module) cannot have
the same interface class."
That should read "the same implementation class", doesn't it?