现在的位置: 首页 > java > spark > 正文
openfire spark 插件开发。调试测试成功
2012年05月18日 spark ⁄ 共 4808字 暂无评论

     最近在研究openfire和spark,但是发现关于spark的插件开发的例子很少,而且做的也不是很简单。所以自己就小试牛刀,为大家做一个简单的入门级的spark插件开发实例。

    首先,看我建立的目录结构:

    com.jivesoftware.spark.bidlink.plugin下面包含两个文件,BidlinkPlugin.java是官方规定建立的插件类,而BidlinkPluginUtil.java是我自己写的方法实现类,本实例所实现的所有功能都将在此类中实现。

    我在plugins目录下建立了自己的文件夹,bidlink目录下包含bin,build,lib目录以及plugin.xml文件。bin目录是存放ant之后.class文件的存放目录(其中包含了包结构),build目录只存放build.xml文件,此文件为ant所需文件,lib目录是存放生成后的jar包所用,其可以为空,plugin.xml文件是一些关于插件的描述和BidlinkPlugin.java的路径指向。好了目录结构已经介绍好了,下面来分别介绍各个文件的内容吧。

    BinlinkPlugin.java

(这个类很简单,我什么都没做,只需要在 initialize()方法中引用下BidlinkPluginUtil.java中的addWorkspacePane()方法即可)

import org.jivesoftware.spark.plugin.Plugin;

public class BidlinkPlugin implements Plugin {

@Override
public boolean canShutDown() {
  // TODO Auto-generated method stub
  return false;
}

@Override
public void initialize() {
  BidlinkPluginUtil.addWorkspacePane();

}

@Override
public void shutdown() {
  // TODO Auto-generated method stub

}

@Override
public void uninstall() {
  // TODO Auto-generated method stub

}

}

BidlinkPluginUtil.java

(这个类里面是功能方法的具体实现,具体效果不再介绍,一会有图片相送)

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Enumeration;

import javax.swing.Icon;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JTextPane;
import javax.swing.UIManager;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.plaf.FontUIResource;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;

import org.jivesoftware.MainWindow;
import org.jivesoftware.spark.SparkManager;
import org.jivesoftware.spark.Workspace;
import org.jivesoftware.spark.component.tabbedPane.SparkTab;
import org.jivesoftware.spark.component.tabbedPane.SparkTabbedPane;

public class BidlinkPluginUtil {

/**
  * 添加WorkspacePane
  */
public static void addWorkspacePane() {
  Workspace workspace = SparkManager.getWorkspace();

  SparkTabbedPane tabbedPane = workspace.getWorkspacePane();

  JTextPane textPane = new JTextPane();
  Document doc = textPane.getDocument();
  SimpleAttributeSet attrSet = new SimpleAttributeSet();
  // 颜色
  StyleConstants.setForeground(attrSet, Color.RED);
  // 加粗
  StyleConstants.setBold(attrSet, true);
  // 字体大小
  StyleConstants.setFontSize(attrSet, 25);

  StyleConstants.setBackground(attrSet, Color.YELLOW);

  String content = "必联采购网——互联网第一个采购管理平台,"
    + "由中国政府商务部、财政部授权的唯一招投标采购在线业务平台," + "成立于2001年3月。坐落于北京中关村软件园区,"
    + "是一家拥有自主软件版权的大型企业";
  try {
   doc.insertString(doc.getLength(), content, attrSet);
  } catch (BadLocationException e) {
   e.printStackTrace();
  }

  // Add own Tab.
  tabbedPane.addTab("必联介绍", new Icon() {

   @Override
   public void paintIcon(Component c, Graphics g, int x, int y) {
    // TODO Auto-generated method stub

   }

   @Override
   public int getIconWidth() {
    // TODO Auto-generated method stub
    return 0;
   }

   @Override
   public int getIconHeight() {
    // TODO Auto-generated method stub
    return 0;
   }
  }, textPane);

}

}

build.xml

(这个是最重要的,它将完成编译,发布jar包的任务。红色标出的部分是比较重要的,因为BidlinkPlugin.java在编译的时候要引用其他类,所以必须指定引用jar包。spark.home 目录下有一个spark.jar,这个是spark最重要的资源包,pugin文件将会引用它,如果spark.home没有spark.jar文件,大家可以从安装版的spark的相应目录下拷贝到这个目录下,记住,要对应版本哦,这个实例是2.5.8的)

<?xml version="1.0" encoding="UTF-8"?>
<project name="bidlink" default="release" basedir="..">
<property name="src.dir" value="src" />
<property name="dest.dir" value="bin" />
<property name="lib.dir" value="lib" /> 
 <property name="im.path" value="../../../target/build/plugins" />

<property name="spark.home" value="../../../target/build/lib" />

<path id="lib.classpath">
  <fileset dir="${spark.home}" includes="**/*.jar, **/*.zip" />
</path>

<target name="clean">
  <delete dir="${dest.dir}" />
  <delete dir="${lib.dir}" />
  <delete dir="${im.path}" />
</target>

<target name="init" depends="clean">
  <mkdir dir="${dest.dir}" />
  <mkdir dir="${lib.dir}" />
  <mkdir dir="${im.path}" />
</target>

<target name="build" depends="init">
  <javac srcdir="${src.dir}" destdir="${dest.dir}" classpathref="lib.classpath" target="1.6" />
</target>

<!-- 最重要的是这里,打两次包 -->
<target name="jar" depends="build">
  <jar jarfile="${lib.dir}/bidlink.jar" basedir="${dest.dir}" />
  <jar jarfile="${im.path}/bidlink.jar">
   <fileset dir=".">
    <include name="lib/*.jar" />
   </fileset>
   <fileset dir=".">
    <include name="plugin.xml" />
   </fileset>
  </jar>
</target>
<target name="release" depends="jar">
</target>
</project>

plugin.xml

(这个文件里,最重要的内容我已经标出来了,其他的内容随便写,写错了也没啥大事)

<plugin>
    <name>bidlink Plugin</name>
    <version>1.0</version>
    <author>linyu</author>
    <homePage>http://www.bidlink.com</homePage>
    <email>linyu19872008@gmail.com</email>
    <description>Adds bidlink Desktop Search   to Spark.</description>
    <class>com.jivesoftware.spark.bidlink.plugin.BidlinkPlugin</class>
    <minSparkVersion>2.5.8</minSparkVersion>
</plugin>

 

这样写插件,ant 然后eclipse下spark运行,如果插件加载那就再好不过了。如果不加载。你要进行下如下配置

 

 

-Dplugin="F:/ystworkspace/yishuitong/src/plugins/bidlink/plugin.xml" 这句话的作用大体是 运行spark的时候要加载这个插件。

给我留言

您必须 [ 登录 ] 才能发表留言!

×