Update of /cvsroot/xdoclet/xdoclet2/src/ide/idea/src/java/xdoclet/ide/idea
In directory sc8-pr-cvs1:/tmp/cvs-serv20686/src/ide/idea/src/java/xdoclet/ide/idea

Modified Files:
        XDocletPlugin.java 
Added Files:
        ActionID.java XDocletToggle.java toggle.gif 
Log Message:
IDEA plugin.

--- NEW FILE: ActionID.java ---
package xdoclet.ide.idea;

/**
 * Common Action Ids.
 */
public interface ActionID {
    public static final String MAIN_TOOLBAR = "MainToolBar";
    public static final String MAIN_MENU = "MainMenu";
    public static final String WINDOW_MENU = "WindowMenu";
    public static final String WINDOW_MENU_INSPECTION = "XDocletBuild";
}

--- NEW FILE: XDocletToggle.java ---
package xdoclet.ide.idea;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.DataConstants;
import com.intellij.openapi.actionSystem.ToggleAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowAnchor;
import com.intellij.openapi.wm.ToolWindowManager;

import javax.swing.*;
import java.util.*;

import xdoclet.gui.swing.BeanContextConfigurationPanel;
import xdoclet.BeanContextSupportEx;
import xdoclet.XDoclet;
import xdoclet.XDocletException;

/**
 * Toggle action for XDoclet Build.
 *
 * @author <a href="mailto:mbo at jcs.be">Mathias Bogaert</a>
 * @version $Revision: 1.1 $
 */
public class XDocletToggle extends ToggleAction {
    public static final String ID = "XDocletToggleAction";
    public final static String XDOCLET_BUILD = "XDoclet Build";
    private static final Icon ICON = new 
ImageIcon(XDocletToggle.class.getResource("toggle.gif"));

    private Map consoles = new HashMap();
    private List managers = new ArrayList();

    public boolean isSelected(AnActionEvent event) {
        Project project = (Project) 
event.getDataContext().getData(DataConstants.PROJECT);
        return project != null && consoles.get(project) != null;
    }

    public void setSelected(AnActionEvent event, boolean isSelected) {
        Project project = (Project) 
event.getDataContext().getData(DataConstants.PROJECT);
        if (project != null) {
            final ToolWindowManager manager = ToolWindowManager.getInstance(project);
            ToolWindow console = (ToolWindow) consoles.get(project);
            if (isSelected && console == null) {
                BeanContextSupportEx xdocletContainer = new BeanContextSupportEx();
                XDoclet xdoclet = new XDoclet();
                xdocletContainer.add(xdoclet);

                try {
                    xdoclet.createPlugin("velocity");
                    xdoclet.createPlugin("jelly");
                }
                catch (XDocletException e) {
                    e.printStackTrace();
                }

                // show window
                manager.registerToolWindow(XDOCLET_BUILD,
                        new BeanContextConfigurationPanel(xdocletContainer),
                        ToolWindowAnchor.RIGHT);

                console = manager.getToolWindow(XDOCLET_BUILD);

                if (console != null) {
                    // Add manager to array to do unregister on finalize
                    managers.add(manager);
                    consoles.put(project, console);
                    console.setIcon(ICON);
                    console.show(null);
                    console.activate(null);
                }
            }
            else if (!isSelected && console != null) {
                // Hide window
                console.hide(null);
                manager.unregisterToolWindow(XDOCLET_BUILD);
                managers.remove(manager);
                consoles.remove(project);
            }
        }
    }

    public XDocletToggle() {
        super(XDOCLET_BUILD, "Show/Hide " + XDOCLET_BUILD, ICON);
    }

    public void clear() {
        // unregister all created ToolWindows
        Iterator iterator = managers.iterator();
        while (iterator.hasNext()) {
            ToolWindowManager manager = (ToolWindowManager) iterator.next();
            manager.unregisterToolWindow(XDOCLET_BUILD);
        }
        managers.clear();
        consoles.clear();
    }
}

--- NEW FILE: toggle.gif ---
GIF87a
^�
Index: XDocletPlugin.java
===================================================================
RCS file: 
/cvsroot/xdoclet/xdoclet2/src/ide/idea/src/java/xdoclet/ide/idea/XDocletPlugin.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** XDocletPlugin.java  13 Mar 2003 18:25:42 -0000      1.1
--- XDocletPlugin.java  16 Mar 2003 23:59:16 -0000      1.2
***************
*** 1,14 ****
  package xdoclet.ide.idea;
  
! import com.intellij.openapi.components.ProjectComponent;
! import com.intellij.openapi.options.Configurable;
! import com.intellij.openapi.options.ConfigurationException;
! 
! import javax.swing.*;
! 
! import xdoclet.gui.swing.BeanContextConfigurationPanel;
! import xdoclet.XDoclet;
! import xdoclet.XDocletException;
! import xdoclet.BeanContextSupportEx;
  
  /**
--- 1,10 ----
  package xdoclet.ide.idea;
  
! import com.intellij.openapi.actionSystem.ActionManager;
! import com.intellij.openapi.actionSystem.Anchor;
! import com.intellij.openapi.actionSystem.Constraints;
! import com.intellij.openapi.actionSystem.DefaultActionGroup;
! import com.intellij.openapi.components.ApplicationComponent;
! import com.intellij.openapi.diagnostic.Logger;
  
  /**
***************
*** 18,22 ****
   * @version $Revision$
   */
! public class XDocletPlugin implements ProjectComponent, Configurable {
      /**
       * Method is called after plugin is already created and configured. Plugin can 
start to communicate with
--- 14,31 ----
   * @version $Revision$
   */
! public class XDocletPlugin implements ApplicationComponent {
!     /** Logger */
!     private static final Logger log = 
Logger.getInstance(XDocletPlugin.class.getName());
! 
!     private DefaultActionGroup spg;
!     private XDocletToggle toggleAction;
! 
!     public XDocletPlugin() {
!         toggleAction = new XDocletToggle();
!         spg = new DefaultActionGroup();
!         spg.addSeparator();
!         spg.add(toggleAction);
!     }
! 
      /**
       * Method is called after plugin is already created and configured. Plugin can 
start to communicate with
***************
*** 24,103 ****
       */
      public void initComponent() {
!         System.out.println("SampleProjectPlugin: initComponent");
!     }
! 
!     /**
!      * This method is called on plugin disposal.
!      */
!     public void disposeComponent() {
!         System.out.println("SampleProjectPlugin: disposeComponent");
!     }
! 
!     /**
!      * Invoked when project is opened.
!      */
!     public void projectOpened() {
!         System.out.println("SampleProjectPlugin: projectOpened");
!     }
! 
!     /**
!      * Invoked when project is closed.
!      */
!     public void projectClosed() {
!         System.out.println("SampleProjectPlugin: projectClosed");
!     }
! 
!     /**
!      * Returns the name of component
!      * @return String representing component name. Use plugin_name.component_name 
notation.
!      */
!     public String getComponentName() {
!         return "Sample.SampleProjectPlugin";
!     }
! 
!     //////////////////// Configurable interface
! 
!     public String getDisplayName() {
!         return "XDCLET";
!     }
! 
!     public Icon getIcon() {
!         return null;
!     }
! 
!     public String getHelpTopic() {
!         return "XDoclet Help";
!     }
  
!     public JComponent createComponent() {
!         // This should be read from a serialised object or config.
!         BeanContextSupportEx xdocletContainer = new BeanContextSupportEx();
!         XDoclet xdoclet = new XDoclet();
!         xdocletContainer.add( xdoclet );
! 
!         try {
!             xdoclet.createPlugin("velocity");
!             xdoclet.createPlugin("jelly");
!         } catch (XDocletException e) {
!             e.printStackTrace();  //To change body of catch statement use Options | 
File Templates.
          }
  
!         return new BeanContextConfigurationPanel( xdocletContainer );
      }
  
!     public boolean isModified() {
!         return false;
!     }
  
!     public void apply() throws ConfigurationException {
!         System.out.println("SampleProjectPlugin: apply");
!     }
  
!     public void reset() {
!         System.out.println("SampleProjectPlugin: reset");
      }
  
!     public void disposeUIResources() {
!         System.out.println("SampleProjectPlugin: disposeUIResources");
      }
  }
--- 33,82 ----
       */
      public void initComponent() {
!         final ActionManager actionManager = ActionManager.getInstance();
!         // try register action
!         if (actionManager.getAction(XDocletToggle.ID) == null) {
!             actionManager.registerAction(XDocletToggle.ID, toggleAction);
!         }
  
!         // add toggle icon into IntelliJ UI, add to MainToolbar
!         DefaultActionGroup mainToolBar = (DefaultActionGroup) 
actionManager.getAction(ActionID.MAIN_TOOLBAR);
!         if (mainToolBar != null) {
!             mainToolBar.add(spg);
!         }
!         else {
!             log.info("Can't find " + ActionID.MAIN_TOOLBAR + " group");
          }
  
!         // add to menu "Window"
!         DefaultActionGroup menuWindow = (DefaultActionGroup) 
actionManager.getAction(ActionID.WINDOW_MENU);
!         if (menuWindow != null) {
!             menuWindow.add(toggleAction, new Constraints(Anchor.AFTER, 
ActionID.WINDOW_MENU_INSPECTION));
!         }
!         else {
!             log.info("Can't find " + ActionID.WINDOW_MENU + " group");
!         }
      }
  
!     public void disposeComponent() {
!         ActionManager actionManager = ActionManager.getInstance();
!         // remove toggle icon from InteliJ UI
!         DefaultActionGroup mainToolBar = (DefaultActionGroup) 
actionManager.getAction(ActionID.MAIN_TOOLBAR);
!         if (mainToolBar != null) {
!             mainToolBar.remove(spg);
!         }
  
!         DefaultActionGroup menuWindow = (DefaultActionGroup) 
actionManager.getAction(ActionID.WINDOW_MENU);
!         if (menuWindow != null) {
!             menuWindow.remove(toggleAction);
!         }
  
!         toggleAction.clear();
!         if (actionManager.getAction(XDocletToggle.ID) != null) {
!             actionManager.unregisterAction(XDocletToggle.ID);
!         }
      }
  
!     public String getComponentName() {
!         return XDocletPlugin.class.getName();
      }
  }



-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
_______________________________________________
xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to