Jitsi(SIP communicator)カスタムUIプラグインの作成
3605 ワード
Jitsiというプロジェクトに基づいて二次開発を行い、以前にそのコンパイルパッケージを研究したことがあります.次に、そのアーキテクチャを研究します.まず、このプロジェクトはOSGIベースのプロジェクトで、OSGIの構造は、簡単に言えばOSGIに複数のBundle(モジュールやプラグインにも翻訳できます)を追加します.そのため、私たちはこのアーキテクチャ上で二次開発の方向が明確で、OSGIのモジュール開発を行うことです.それからソースコードを研究して、UIの開発にいくつかの容器とインタフェースを提供して、GUIの開発を便利にすることができて、そしてexamplepluginのBundleを提供して、具体的にはみんなは自分でソースコードを見ることができます.
JItsiプロジェクトのソースディレクトリ(src)にパッケージ:test.plugin.employeebookパッケージを追加し、このパッケージの下にクラスを新規作成します:EmployeebookPluginActivatvator、次のようにします.
public class EmployeebookPluginActivator implements BundleActivator{
@Override
public void start(BundleContext arg0) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void stop(BundleContext arg0) throws Exception {
// TODO Auto-generated method stub
}
}
同じパッケージの下にemployeebookplugin.manifest.mfというファイルを新規作成します.内容は次のとおりです.Bundle-Activator: test.plugin.employeebook.EmployeebookPluginActivator
Bundle-Name: EmployeeBook plugin
Bundle-Description: A plugin used to show employee book
Bundle-Vendor:
Bundle-Version: 0.0.1
Import-Package: org.osgi.framework
プロジェクトルートディレクトリのbuild.xmlファイルを変更し、ant targetを次のように追加します.
次にこのtargetを実行し、完了したらプロジェクトルートディレクトリのsc-bundlesディレクトリの下にplugin-employeebook.jarが表示され、libディレクトリの下のfelix.client.run.propertiesファイルを変更し、felixフレームワークを設定してこのbundleを自動的にロードし、プロジェクト全体を実行し、オプションプラグインの下でこのプラグインを見つけ、プラグインの導入に成功したことを示します.public class EmployeebookPluginActivator implements BundleActivator{
@Override
public void start(BundleContext arg0) throws Exception {
// TODO Auto-generated method stub
// TAB , EmployeebookPanel JPanel
EmployeebookPanel employeePanel = new EmployeebookPanel(Container.CONTAINER_MAIN_TABBED_PANE);
Hashtable containerFilter = new Hashtable();
containerFilter.put(
Container.CONTAINER_ID,
Container.CONTAINER_MAIN_TABBED_PANE.getID());
arg0.registerService(PluginComponent.class.getName(),employeePanel,containerFilter);
// Jitsi UI , Container , ,
// 、
}
@Override
public void stop(BundleContext arg0) throws Exception {
// TODO Auto-generated method stub
}
}