Develop and Download Open Source Software

Recent Changes

2010-11-30
2009-03-16
2009-03-15
2009-02-14

Wiki Guide

Side Bar

最もシンプルなペインを作成するplane-textコンポーネントを例として示します。 当該コンポーネントはソースコードをダウンロードするとプロジェクトとして含まれています。

ソースコード記述

package jp.gr.linuxcons.richclient.antenna.view.pane.text.plane;

import java.awt.Component;
import java.net.URL;
import java.util.List;

import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import jp.gr.linuxcons.richclient.antenna.ViewActionNotifier;
import jp.gr.linuxcons.richclient.antenna.UpdateInfo;
import jp.gr.linuxcons.richclient.antenna.impl.AbstractComponentPane;

/**
 * テキストエリアで構成されたPane
 * 
 * @author ms2
 */
public class TextPane
		extends AbstractComponentPane //継承すること
{
	/**
	 * シリアルバージョンUID
	 */
	private static final long serialVersionUID = -3685516110230281228L;

	private JScrollPane scrollPane;
	private JTextArea textArea = null;

	/**
	 * 名前を取得します。<br>
	 * タブのラベルに利用されます。
	 * 
	 * @return 名前
	 */
	public String getName() {
		return "text";
	}

	/**
	 * コンポーネントを取得します。<br>
	 * Paneが表示する内容として利用されます。
	 * 
	 * @return コンポーネント
	 */
	public Component getComponent() {
		return getScrollPane();
	}

	/**
	 * 更新情報のプロパティが選択されたイベントのハンドラ<br>
	 * タイトルの項目を選択された場合にテキストエリアに詳細文字列を表示する。
	 * 
	 * @param info 選択された更新情報
	 * @param property 選択されたプロパティ
	 * @return タブの最前面化をするなら真。さもなくば偽。
	 */
	public boolean handleUpdateInfoPropertySelection(UpdateInfo info,
			String property) {
		if (!"title".equals(property)) {
			getTextArea().setText(info.getDescription());
			return true;
		}
		return false;
	}

	/**
	 * URL選択イベントのハンドラ<br>
	 * このクラスはこのイベントに反応しないので何も記述しない。
	 * 
	 * @param url 選択されたURL
	 * @return タブの最前面化をするなら真。さもなくば偽。
	 */
	public boolean handleUrlSelection(URL url) {
		return false;
	}

	/**
	 * キーワード選択イベントのハンドラ<br>
	 * このクラスはこのイベントに反応しないので何も記述しない。
	 * 
	 * @param word 選択キーワード
	 * @return タブの最前面化をするなら真。さもなくば偽。
	 */
	public boolean handleKeywordSelection(String word) {
		return false;
	}

	/**
	 * キーワードリストの更新イベントのハンドラ<br>
	 * このクラスはこのイベントに反応しないので何も記述しない。
	 * 
	 * @param keywords キーワードリスト
	 * @return タブの最前面化をするなら真。さもなくば偽。
	 */
	public boolean handleKeywordsUpdate(List<String> keywords) {
		return false;
	}



	/**
	 * テキストエリアのインスタンスを取得する
	 * 
	 * @return テキストエリア
	 */
	private JTextArea getTextArea() {
		if (textArea == null) {
			textArea = new JTextArea();
			textArea.setVisible(true);
			textArea.setEditable(false);
			textArea.setLineWrap(true);
		}
		return textArea;
	}

	/**
	 * JScrollPaneのインスタンスを取得する
	 * 
	 * @return javax.swing.JScrollPane
	 */
	private JScrollPane getScrollPane() {
		if (scrollPane == null) {
			scrollPane = new JScrollPane();
			scrollPane
					.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
			scrollPane.setViewportView(getTextArea());
		}
		return scrollPane;
	}

	public void setNotifier(ViewActionNotifier n) {
	}

}


リソース

基本的にはIdbAの要求するコンポーネントリソース仕様に準じます。ainfo、cinfoはパッケージの中に含むリソースです。

plane-text.ainfo

jarの中に一つ必要です。

Name: plane-text.jar
Version: 0.1
IconName: プレインテキストペイン
IconImage:
 R0lGODlhIAAgALMAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A
 /wD//////yH5BAAAAAAALAAAAAAgACAAAwTY8Mk5gb0Y082z/wC3gWQmVmV6Sqm6HgAMg3Js
 r5KMICdSy7jHLfgLBQG84y/4ODAnNaYzydklh0QEljVzzp4wibZCZZmJwktSexGHjDgna/zg
 ISdaenwkru7gL3x1ZRVgFEY8hEJPOYV1d3iAUn1qdZGMUCI7l5hNOUhacjthnZ5NFnJ1B3qY
 qRt5rK1VoLGylrBWkjgaMxabfwSoLwcHDAsMgFZXBAMEBKGuxBPMoFVCzM5lxNK3xsibkQDG
 2bcUiZbOx+IEDOzrC+TnifLoBOoX7Pbx5TwRADs=
Vendor: アンテナプロジェクト
Comment: プレインテキストペイン
Grant: AllPermission

NameJarの名称
Versionバージョン文字列
IconNameアイコン表示時のラベル
IconImageアイコンのBase64エンコード文字列
Vendor公開者の名称
Commentコメント
Grantコンポーネントのパーミッション

plane-text.cinfo

jarの中に一つ以上必要です。公開されるコンポーネントが列挙できます。

Name: jp.gr.linuxcons.richclient.antenna.view.pane.text.plane.TextPane
Group: -jp.gr.linuxcons.richclient.antenna.view.pane.Pane
UpgradeKey: jp.co.scio.idba.ms2.antenna2
Version: 1.0
Vendor: scio.co.jp
Comment: プレインテキストペイン
IconName: プレインテキストペイン
IconResource: mainicon.gif
Nameコンポーネントクラスの完全装飾名
Groupグループ文字列(後述)
UpgradeKey更新時に利用されるキー文字列
Versionバージョン文字列
Vendor公開者の名称
Commentコメント
IconNameアイコン表示時のラベル
IconResourceアイコンファイル名

継承クラス指定

グループに継承型の完全装飾名を記すことでAntennaのコンポーネントとして検索されます。

Group: -jp.gr.linuxcons.richclient.antenna.view.pane.Pane

実行

Eclipse上で実行するために下記のようにantenna-driver/package.listを記述します。

lib/basic.jar
../antenna/bin/
../jdic-browser/bin/
../default-view/bin/

# 下記のようにbinディレクトリにパスを通す
../plane-text/bin/

../bidders-info/bin/
../hatena-keyword/bin/
../docking-view/bin/
../lan-bookmark/bin/
../scio-bookmark/bin/
../hatena-rss-bookmarks/bin/

ビルド

既存のbuild.xmlに指定

<target name="project-list">
  ...

		<!-- components -->
		<antcall target="dist-project">
			<param name="project.name" value="plane-text"/><!-- プロジェクト名 -->
			<param name="class.path" value="antenna.path"/>
		</antcall>
...

Eclipseのプロジェクト名、ainfo名、cinfo名を同一にしておくことでbuild.xmlを簡略化しています。


SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.