IntelliJ IDEA插件开发之添加菜单项到File菜单

Posted by dohkoos on January 31st, 2008 (362 views)

点击File->New Project菜单项,输入项目名称,如"VisualMaven",然后设定项目的存储路径,选择Plugin Moudle类型,点击Finish。

右击VisualMaven包,在弹出菜单中选择New->Action菜单项,输入Action的ID以及类名等。在Groups列表中选择MainMenu,在Actions列表中选择FileMenu(File),点击OK按钮。
idea-plugin-action-conf.png

打开plugin.xml文件,将group-id由MainMenu改为FileMenu,将relative-to-action由FileMenu改为NewProject。修改后的代码如下:
<action id="NewMavenProject" class="name.dohkoos.rave.VisualMaven" text="New Maven Project">
    <add-to-group group-id="FileMenu" anchor="after" relative-to-action="NewProject" />
</action>

Note:插件开发需要特定类型的JavaTM SDK (JDK): IntelliJ IDEA SDK,它是Jdk标准库和IntelliJ IDEA Open API库的整合体。

右击VisualMaven项目,选择Moudle Settings菜单项,在General栏中将Project JDK设为IDEA SDK。如果选项不存在的话,可以点击右边的New按钮,将会弹出一个下拉菜单,点击IntelliJ IDEA SDK按钮(包含IDEA图标的那个按钮),然后选择IntelliJ IDEA的安装目录,点击OK按钮。
idea-plugin-jdk-conf.png

修改VisulaMaven类,在actionPerformed方法中添加如下代码:
Project project = (Project)evt.getData(DataKeys.PROJECT);
Messages.showMessageDialog(project, "Hello World!", "Information", Messages.getInformationIcon());

接下来我们需要设定配置去运行或调试我们的第一个插件,点击Run->Edit Configurations菜单,在Run/DebugConfiguration对话框中,点击Plugin标签,创建一个新的配置项,然后点击OK按钮。
idea-plugin-run-conf.png

现在我们只需按下Shift+F9(或点击Run->Debug菜单项)就可以启动该插件了。

代码下载

参考资料
http://www.intellij.org.cn/portal/index.php?option=com_content&task=view&id=98&Itemid=28

Related Posts

People who read this, also read...

使用IntelliJ IDEA和JBoss开发一个简单的J2EE应用

Posted by dohkoos on January 29th, 2007 (289 views)

运行环境:
Windows 2000 Professional(SP4)
j2sdk1.4.1_01
JBoss 4.0.5-GA
IntelliJ IDEA 6.0.2

本文通过一个简单的客户--服务器例子来演示如何使用IntelliJ IDEA和JBoss开发、部署及运行J2EE应用程序,这个例子包括一个可以进行货币转换的EJB、一个J2EE应用程序客户端和一个由JSP构成的Web客户端。

创建J2EE应用程序
1. 从菜单中选择File->New Project,在name栏填入converter,点击Next按钮
2. 选择默认的compiler output path,点击Next按钮
3. 选择Jdk,点击Next按钮
4. 选择Create/configurate multi-module project,点击Finish
   我们需要三个module:JavaEE Application Module用来打包和部署应用程序JBoss,Web Module放置到选择XXX,

创建Web Module
1. 在project structure窗口的Modules上点击右键,选择Add Module
2. 在弹出的Add Module窗口中选择Web Module,点击Next按钮
   
3. 在module name中填入myweb,点击Next按钮
4. 点击Add Application Server specific descriptor,选择JBoss Server,点击OK,点击Next按钮
5. 接下来一直点击Next按钮直到Finish
6. 点击Modules下的myweb,选择Java EE Build Settings标签,选中Create web module war file,点击Apply按钮
   

创建EJB Module
1. 在project structure窗口的Modules上点击右键,选择Add Module
2. 在弹出的Add Module窗口中选择Ejb Module,点击Next按钮
3. 在module name中填入myejb,点击Next按钮
4. 在选择Enterprise JavaBeans specification version时选中Enterprise JavaBean 2.1,点击Next按钮
5. 点击Add Application Server specific descriptor,选择JBoss Server,点击OK,点击Finish按钮
6. 点击Modules下的myejb,选择Java EE Build Settings标签,选中Create EJB module jar file,点击Apply按钮

创建Java EE Application Module
1. 在project structure窗口的Modules上点击右键,选择Add Module
2. 在弹出的Add Module窗口中选择Java EE Application Module,点击Next按钮
3. 在module name中填入myapp,点击Next按钮
4. 点击Add Application Server specific descriptor,选择JBoss Server,点击OK,点击Next按钮
5. 在Packaging method中选择Include module in build,点击Finish按钮
6. 点击Modules下的myapp,选择Java EE Build Settings标签,选中Create application archive (ear) file,点击OK按钮
   

开发EJB程序
1. 在Tool Windows中将View as切换成Java EE: Structure
2. 在EJB Modules下的myejb上点击右键,选择New菜单下的Session Bean,在<ebj-name>中填入Converter,在package中填入com.example.j2ee,点击OK
   
3. 编写Remote接口代码
   Remote接口的要求:
     继承javax.ejb.EJBObject
     接口要声明为public
     所有的方法要声明为public
     方法声明要遵循RMI规范
     方法声明要抛出java.rmi.RemoteException
     方法参数及返回值是可序列化的对象
   Remote接口中定义了客户端可以调用的业务方法,这些方法的具体实现在Bean类中。Converter的代码如下:

    import java.math.BigDecimal;
    import java.rmi.RemoteException;
    import javax.ejb.EJBObject;

    public interface Convert extends EJBObject {
        public BigDecimal dollarToYen(BigDecimal dollars) throws RemoteException;
        public BigDecimal yenToEuro(BigDecimal yen) throws RemoteException;
    }

4. 编写Home接口
   Home接口的要求:
     继承javax.ejb.EJBHome
     接口要声明为public
     所有的方法要声明为public
     方法声明要遵循RMI规范
     要定义无参数的create方法
       create方法的要求是:
         方法声明要抛出java.rmi.RemoteException
         方法声明要抛出java.ejb.CreateException
         要遵循RMI规范
     返回类型为Remote接口
   Home接口声明了允许客户端创建、查找或删除一个EJB的方法。以下就是ConverterHome的代码:

    import javax.ejb.EJBHome;
    import javax.ejb.CreateException;
    import java.rmi.RemoteException;

    public interface ConverterHome extends EJBHome {
        Converter create() throws RemoteException, CreateException;
    }

5. 编写Bean类
   Bean类的要求:
     要声明为public
     实现java.ejb.SessionBean接口
     实现Remote接口中声明的业务方法
     必须提供ejbCreate()方法
       ejbCreate方法的要求为:
         返回void
         不能加static、final修饰符
         要声明为public
         声明抛出javax.ejb.CreateException
         声明抛出javax.ejb.EJBException
   Bean类用来实现在远程接口中声明的业务方法dollarToYen和yenToEnro。ConverterBean的代码如下:

    import javax.ejb.SessionBean;
    import javax.ejb.CreateException;
    import javax.ejb.SessionContext;
    import javax.ejb.EJBException;
    import java.math.BigDecimal;

    public class ConverterBean implements SessionBean {
        public BigDecimal dollarToYuan(BigDecimal dollars) {
        BigDecimal rate = new BigDecimal(7.7758);
        BigDecimal result = dollars.multiply(rate);
        return result.setScale(2, BigDecimal.ROUND_UP);
        }

        public BigDecimal yuanToEuro(BigDecimal yuan) {
        BigDecimal rate = new BigDecimal(0.0995696274);
        BigDecimal result = yuan.multiply(rate);
        return result.setScale(2, BigDecimal.ROUND_UP);
        }

        public ConverterBean() {
        }

        public void ejbCreate() throws CreateException {
        }

        public void ejbRemove() throws EJBException {
        }

        public void ejbActivate() throws EJBException {
        }

        public void ejbPassivate() throws EJBException {
        }

        public void setSessionContext(SessionContext sessionContext) throws EJBException {
        }
    }

开发Web客户端
1. 右键单击Web Modules下myweb,选择Module Settings,切换到Dependencies标签,点击Add按钮,选择Module Dependency,在打开的窗口中选中myejb,点击OK。
   
2. 在Web Modules下的resources目录下创建index.jsp文件,下面是完整的jsp代码
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>

    <%@ page import="com.example.j2ee.Converter" %>
    <%@ page import="com.example.j2ee.ConverterHome" %>
    <%@ page import="java.math.BigDecimal" %>
    <%@ page import="java.rmi.RemoteException" %>
    <%@ page import="javax.naming.InitialContext" %>
    <%@ page import="javax.naming.NamingException" %>
    <%@ page import="javax.rmi.PortableRemoteObject" %>
    <%@ page import="javax.ejb.CreateException" %>

    <%!
        private Converter converter = null;

        public void jspInit() {
        try {
            InitialContext ic = new InitialContext();
            Object objRef = ic.lookup("ConverterEJB");    // 使用ejb-jar.xml文件中的<ejb-name>
            ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(objRef, ConverterHome.class);
            converter = home.create();
        } catch (RemoteException ex) {
            System.out.println("Couldn't create converter bean."+ ex.getMessage());
        } catch (CreateException ex) {
            System.out.println("Couldn't create converter bean."+ ex.getMessage());
        } catch (NamingException ex) {
            System.out.println("Unable to lookup home: "+ "TheConverter "+ ex.getMessage());
        }
        }

        public void jspDestroy() {
            converter = null;
        }
    %>

    <html>
    <head>
        <title>Converter</title>
    </head>

    <body>
        <h1>Converter</h1>
        <hr />
        <p>Enter an amount to convert:</p>
        <form action="index.jsp" method="post">
            <input type="text" name="amount" size="25" />
            <br />
            <input type="submit" value="Submit" />
            <input type="reset" value="Reset" />
        </form>

    <%
        String amount = request.getParameter("amount");
        if (amount != null && amount.length() > 0) {
            BigDecimal d = new BigDecimal(amount);
    %>
        <p>
        <%= amount %> dollars are <%= converter.dollarToYuan(d) %> Yuan.
        <p>
        <%= amount %> Yuan are <%= converter.yuanToEuro(d) %> Euro.
    <%
        }
    %>
    </body>
    </html>

设置、部署和运行J2EE应用程序
1. 点击Run->Edit Configurations->JBoss Server->Local,将Name改成JBoss Local Server,在Application Server中选择JBoss 4.0.5.GA,在Server Instance中选择default
2. 点击Deployment标签,点击Java EE Application Modules下的myapp,选中Deploy Java EE Application Module 'myapp',在Deployment Source下拉列表框里选择myapp.ear,点击OK
3. 点击Run->Run,直到IntelliJ IDEA的Console出现Module myapp: Module is deployed successfully
4. 打开浏览器,在地址栏中输入http://localhost:8080/myweb。浏览器显示了工作页面,在输入框中输入数字100,点击Submit按钮,可以看到如下图所示的页面
   

Related Posts

People who read this, also read...