Table Of Contents

Previous topic

クラスの総数を表示するプラグインを作ってみましょう

Next topic

作成したプラグインをastah*にインストールしてみましょう

This Page

拡張タブビューを作ってみましょう。

astah*プラグインには、拡張タブビューがあります。これを使うと、例えばクラス情報のサマリを一覧にしてastah*上で見ることができるプラグインを作成できます。ここでは、”Hello World”という文字列を表示する拡張タブビューを作成する方法を紹介します。

拡張タブビューの例

拡張タブビューを実装しましょう

拡張タブビューはIPluginExtraTabViewインターフェースの実装クラスとして定義します。下記のソースコードは、IPluginExtraTabViewを実装したHolloWorldViewの例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
 * パッケージ名は、生成したプラグインのパッケージ名よりも下に移してください。
 * プラグインのパッケージ名=> 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.project.ProjectAccessor;
import com.change_vision.jude.api.inf.project.ProjectAccessorFactory;
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 {
      ProjectAccessor projectAccessor = ProjectAccessorFactory.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に拡張タブビューの追加をしましょう。

1
2
3
4
5
6
7
8
9
<?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 拡張タブに表示する実装クラスを指定します。

これで拡張タブビューの追加ができました。