マインドマップのトピックを、レベルを指定して一括開閉する

マインドマップのトピックを、階層のレベルを指定して
一括開閉することができます。

巨大なマインドマップの編集中や、それを人に説明する時、詳細を隠して荒いレベルでマインドマップを表示したい時などに便利です。また、現在図上検索は、開いたトピックのみに有効な為、キーワードからトピックを検索する際に、すべてのトピックを一括で開くことで、探しているトピックを素早く見つけることができます。

自分の好きなAKB48のメンバー一覧を、チーム別に表したマインドマップを作りました。
このマインドマップを使って利用例を紹介します。

手順

  1. astah* professional又はastah* UMLを起動します(astah*をお持ちでない方は、こちらのページから、評価版をダウンロードできます)
  2. こちらの手順に従ってastah*にスクリプトプラグインをインストールします
  3. こちらからスクリプトをダウンロードします(ダウンロード後.zipファイルを解凍してください)
  4. マインドマップを開きます。(ちなみにここから今回使用したマインドマップをダウンロードできます。)
    「小嶋陽菜」の在籍するチームを知りたいので、図上検索(Ctrl+F)をかけます。
    しかしこの状態で図上検索をかけても、図上ではメンバーの名前が見えないので、検索は引っかかりません。
    ここで、各Teamのトピックを順に開いて、検索をかける、では、時間がかかるので全てのトピックを開きます。
    AKB-mm
  5. メインメニュー[ツール]-[スクリプト]を選択して[スクリプト]ウインドウを開きます
    Astah_ER図4
  6.  

  7. [スクリプト]ウィンドウにて、[ファイル] – [開く]を選択して、ダウンロードした.jsファイルを選択します
    astah_ER図_スクリプトプラグイン
  8.  

  9. 続けて、[アクション] – [実行]メニュー、もしくは、右矢印のボタンを選択してください
    script1

    この時、’TARGET_LEVEL’という変数に、開閉基準とするトピックの階層を指定します。今回は、全てのトピックを開きたいので「1」=ルートトピックの子トピック、を入力します。
    Script2

  10.  

  11. これで全てのトピックが開きました
  12. [Ctrl+F]で開いた検索欄に「小嶋」と入力します
  13. Team-Aのトピック配下にいることがわかりました
    スクリーンショット 2016-08-26 0.40.24

 

 

(2)一括して閉じる

  1. 所属チームが分かりました。次は、全てのチームのメンバー一覧のみ表示したいので、各メンバーのプロフィールのみ閉じます。
  2. 先ほどのスクリプトを開き、TARGET_LEVELを2にします
    mm2

    最後に、このスクリプトを使うことで、巨大なマインドマップの編集中や、それを人に説明する時、詳細を隠して荒いレベルでマインドマップを表示したい時などの悩みを解決することができるので、ぜひ一度騙されたと思って使ってみてはいかがでしょうか
    下にスクリプトを載せておくので、自由にカスタマイズして、使用していただいても構いません

//指定したレベル(トピックの階層の深さ)のトピックを全て開閉するスクリプト
var PresentationPropertyConstants = Java.type('com.change_vision.jude.api.inf.presentation.PresentationPropertyConstants');
var IMindMapDiagram = Java.type('com.change_vision.jude.api.inf.model.IMindMapDiagram');
var TransactionManager = Java.type('com.change_vision.jude.api.inf.editor.TransactionManager');
var level = 0;
var doOpen = undefined;
var TARGET_LEVEL = 1;//指定したレベルのサブトピックを開閉します

run();

function run() {
    var diagramViewManager = astah.getViewManager().getDiagramViewManager();
    var diagram = diagramViewManager.getCurrentDiagram();
    if (!(diagram instanceof IMindMapDiagram)) {
        print('Open a mindmap and run again.');
        return;
    }
    var rootTopic = diagram.getRoot();

    //指定したレベル(トピックの階層の深さ)のトピックを全て開閉するスクリプト
    TransactionManager.beginTransaction();

    reverseTopicVisibility(rootTopic);
    print('LEVEL' + TARGET_LEVEL + 'のサブトピックを開閉しました')
    TransactionManager.endTransaction();
}

function reverseTopicVisibility(topic) {
    if (level === TARGET_LEVEL) {
        if (doOpen == undefined) {
            if (topic.getProperty('sub_topic_visibility') == 'false') {
                doOpen = true;
            } else {
                doOpen = false;
            }
        }

        topic.setProperty('sub_topic_visibility', doOpen);
    }
    var topics = topic.getChildren();
    level++;
    for (var i in topics) {
        if (topics[i].getType() =='Topic') { //skip MMBoundary
            reverseTopicVisibility(topics[i]);
        }
    }
    level--;
}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s