astah*で使えるスクリプトにリスナ登録してみよう

こんにちは、astah*開発チームのりりぃです。
今回はリスナ登録を行ってリアクティブに動くスクリプトの例をご紹介したいと思います。

まずはスクリプトエディタを開いて、下記スクリプトを入力、実行してみてください。

astah* professional、astah* UMLでは標準搭載されていますので、[ツール]-[スクリプトエディタ]を選択します。astah* SysML、astah* GSNではスクリプトエディタのページからダウンロード、インストールした後、再起動すると利用できるようになります。

// Javaのクラスを使うための宣言
var JDialog = Java.type('javax.swing.JDialog')
var IEntitySelectionListener = Java.type('com.change_vision.jude.api.inf.view.IEntitySelectionListener')
var WindowListener = Java.type('java.awt.event.WindowListener')

// astah*のメインフレームを親としてダイアログを作成
var dialogTitle = "title"
var viewManager = astah.getViewManager()
var astahFrame = viewManager.getMainFrame()
var dialog = new JDialog(astahFrame, dialogTitle)
dialog.setAlwaysOnTop(true)
dialog.pack()
dialog.setLocationRelativeTo(astahFrame);
dialog.setVisible(true)

// ダイアグラムビューマネージャーにセレクションリスナを登録
var diagramViewManager = viewManager.getDiagramViewManager()
var listener = new IEntitySelectionListener() {
    entitySelectionChanged : function(e) {
        Java.from(diagramViewManager.getSelectedPresentations()).forEach(
            function (selectedP) {
                print(selectedP.getLabel())
            }
        )
    }
}
diagramViewManager.addEntitySelectionListener(listener)

// ダイアログを閉じたときにセレクションリスナを外すためにウィンドウリスナを登録
var windowListener =  new WindowListener() {
    windowOpened : function(e) {},
    windowClosing : function(e) {
        diagramViewManager.removeEntitySelectionListener(listener)
    },
    windowOpened : function(e) {},
    windowClosed : function(e) {},
    windowIconified : function(e) {},
    windowDeiconified : function(e) {},
    windowActivated : function(e) {},
    windowDeactivated : function(e) {}
}
dialog.addWindowListener(windowListener)

タイトルと書かれたダイアログが表示されます。


ダイアログを閉じるまで、図要素を選択する度にその図要素の名前がスクリプトエディタの実行結果コンソールに表示されます。

scripteditor_listener2

この例ではIDiagramViewManagerIEntitySelectionListenerを設定して、図要素の選択イベントを処理しています。他のイベントも同様に処理できます。

ダイアログ(JDialog)を使用しているのは、セレクションリスナを何かの拍子に外せるようにするためです。
このサンプルだと、ダイアログを閉じるタイミングでセレクションリスナを外しています。
拡張ビューは残念ながらスクリプトエディタから使用できません。

いろいろなスクリプトを書いて、より便利にastah*を使ってみてくださいね!

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中