This is a plugin for Idea that will generate UI source code that is equavalent to the UI byte code created by the IDE at compile time. What the plugin is desigend to do is to generate a new class file (in source code form) from the .form file that is created by the UI Designer. The way the current UI Designer works (at least according to the example code that is available on their web site) is that the developer creates a "bind to" class that extends JPanel. This class defines all the components associated with the screen and is bound to the .form file definition of the screen. The class will have a constructor that looks something like the following: public class GUITest extends JPanel { // // ... // public GUITest() { super(new BorderLayout()); add(panel, BorderLayout.CENTER); // // ... // } } After compiling the project, the bind to class will have been modified as if the original source file had been the following: public class GUITest extends JPanel { // // ... // public GUITest() { super(new BorderLayout()); new ===>>> $$$Setup$$$(); add(panel, BorderLayout.CENTER); // // ... // } new => private void $$$Setup$$$() { new => new => // new => // Swing code to create a screen as defined in the new => // .form file. new => // new => new => } } What the plugin does is add an option to the Build menu that lets you generate a source code file which has the same Swing code in it that the $$$Setup$$$() method does. When using the plugin, the developer is responsible for instantiating the generated class from within the bind to class before any of the screen components are accesses. The following is an example of how the GUITest example shown above would need to be modified to use the code generated by the plugin (Note that the generated class is in the same package as the bind to class and has a name that is derrived by appending "Setup" to the bind to classes name. Also note that the generated classes constructor takes the bind to class as an argument.): public class GUITest extends JPanel { // // ... // public GUITest() { super(new BorderLayout()); new ===>>> new GUITestSetup(this); add(panel, BorderLayout.CENTER); // // ... // } } In order for this approach to work, the byte code generation and insertion into the bind to class needs to be disabled. The best way to bypass the ui byte code generation is to compile your code using ant from within the IDE instead of using the IDE. I hope you find the plugin useful. If you find any bugs or have any suggestions or comments plesae send an email to ralph@keystone.com.