拡張タブを作る
astah*プラグインには拡張タブビューがあります。これを使うと、例えばクラス情報のサマリを一覧にしてastah*上で閲覧できるプラグインを作成できます。
課題
”Hello World”という文字列を表示する拡張タブビューを作成してみましょう。
拡張タブを実装してみましょう
拡張タブビューはIPluginExtraTabViewインタフェースの実装クラスとして定義します。次のソースコードは、IPluginExtraTabViewを実装したHelloWorldViewの例です。
/* * パッケージ名は、生成したプラグインのパッケージ名よりも * 下に移してください。 * プラグインのパッケージ名=> com.example * com.change_vision.astah.extension.plugin => X * com.example => O * com.example.internal => O * learning => X */ package com.example.internal; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import com.change_vision.jude.api.inf.AstahAPI; import com.change_vision.jude.api.inf.project.ProjectAccessor; import com.change_vision.jude.api.inf.project.ProjectEvent; import com.change_vision.jude.api.inf.project.ProjectEventListener; import com.change_vision.jude.api.inf.ui.IPluginExtraTabView; import com.change_vision.jude.api.inf.ui.ISelectionListener; public class HelloWorldView extends JPanel implements IPluginExtraTabView, ProjectEventListener { public HelloWorldView() { initComponents(); } private void initComponents() { setLayout(new BorderLayout()); add(createLabelPane(), BorderLayout.CENTER); addProjectEventListener(); } private void addProjectEventListener() { try { AstahAPI api = AstahAPI.getAstahAPI(); ProjectAccessor projectAccessor = api.getProjectAccessor(); projectAccessor.addProjectEventListener(this); } catch (ClassNotFoundException e) { e.getMessage(); } } private Container createLabelPane() { JLabel label = new JLabel("hello world"); JScrollPane pane = new JScrollPane(label); return pane; } @Override public void projectChanged(ProjectEvent e) { } @Override public void projectClosed(ProjectEvent e) { } @Override public void projectOpened(ProjectEvent e) { } @Override public void addSelectionListener(ISelectionListener listener) { } @Override public Component getComponent() { return this; } @Override public String getDescription() { return "Show Hello World here"; } @Override public String getTitle() { return "Hello World View"; } public void activated() { } public void deactivated() { } }
getComponent()は、表など拡張タブビュー上に表示されるコンテンツをastah*に返します。例では、拡張タブビュー上に”Hello World”を表示するHelloWorldViewインスタンスを返しています。拡張タブビューのタイトルはgetTitle()で定義します。
ProjectEventListenerインタフェースを実装したクラスは、astah*が現在開いているモデルのオブザーバーです。クラスの追加や削除などモデルに変更があった場合、projectChangedメソッドが呼ばれます。
拡張タブビューをastah*に追加してみましょう
続いてplugin.xmlに拡張タブビューを追加しましょう。
<?xml version="1.0" encoding="UTF-8"?> <plugin> <extension point="com.change_vision.astah.ui.view"> <view id="com.example.internal.HelloWorldView" type="extraTab" class="com.example.internal.HelloWorldView" /> </extension> </plugin>
各タグの意味は下記のとおりです。
Tag Name | Attribute | Required | Description |
extension | ○ | 拡張ポイントを指定します | |
point | ○ | com.change_vision.astah.ui.viewを指定 | |
view | ○ | ビューを指定します | |
id | ○ | ビューのIDです | |
type | ○ | 表示する場所を指定します | |
拡張ビューの場合、extraTabを指定します | |||
class | ○ | 拡張タブに表示する実装クラスを指定します |
これで拡張タブビューを追加できました。