SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Adobe Developer Connection(AD)

Photoshop Generatorプラグインの作り方

Photoshopとサードパーティツールとの相互運用性を高める「Generatorテクノロジー」(後編)

  • このエントリーをはてなブックマークに追加

自作プラグインをPhotoshopのメニューに追加する

 初期化の処理が呼ばれるようになったら、次はGeneratorのメニューからプラグインのメソッドを実行できるようにしてみましょう。

 generatorのaddMenuというメソッドを使うだけでPhotoshop上のメニューに追加できます。下記のコードをinitの中に追記します。

_generator.addMenuItem(MENU_ID, "はじめてのプラグイン", true, false);

 それぞれの引数の役割は下記のとおりです。

addMenu(メニューID, 表示名, 有効フラグ, チェック);
  • 第一引数:js上で扱うためのメニューID
  • 第二引数:Photoshopのメニューで表示する名前
  • 第三引数:メニューを有効にするかどうかのフラグ、falseにすると表示はされるがdisable状態になる
  • 第四引数:デフォルトチェック

 上記のメソッドを追加したら再度、下記のコードを打ちます。

node app -f ../plugins

 無事成功すると、下記のように「生成」メニューに「はじめてのプラグイン」と追加されます。

メニューのクリックを捕捉する

 ここまでの手順でメニューに項目を追加することができましたが、クリックしても何も起こりません。クリックしたことを捕捉するにはgeneratorのonPhotoshopEventというメソッドを利用して、Photoshop上のイベントを捕捉する必要があります。メニューがクリック際に発行されるイベントは、generatorMenuChangedイベントです。このイベントを下記のようにしてリスナーを登録します。

_generator.onPhotoshopEvent("generatorMenuChanged", onMenuChanged);

 第一引数でイベント名、第二引数でイベントが発生した際に実行されるメソッド名を指定しましたので、onGeneratorMenuChangedというメソッドを自前で用意します。ここではaddMenuで指定したメニューIDがfpの場合、consoleにメッセージを表示するメソッドを用意します。

function onMenuChanged(event) {
  if (event.generatorMenuChanged.name === MENU_ID) {
    console.log("はじめてのプラグインが実行されました。");
  }
}

 ここまでのコードの全体像は下記のとおりです。

(function() {
    "use strict";

    var PLUGIN_ID = require("./package.json").name;
    var MENU_ID = "fp";

    var _generator = null;

    function init(generator) {
        _generator = generator;
        _generator.addMenuItem(MENU_ID, "はじめてのプラグイン", true, false);
        _generator.onPhotoshopEvent("generatorMenuChanged", onGeneratorMenuChanged);
    }

    function onGeneratorMenuChanged(event) {
        if (event.generatorMenuChanged.name === MENU_ID) {
            console.log("はじめてのプラグインが実行されました。");
        }
    }

    exports.init = init;
}());

 コードがかけたら、先程までのPhotoshopとの接続をいったん解除し、もう一度下記のコードを実行します。

node app -f ../plugins

 再度、[ファイル]-[生成]-[はじめてのプラグイン]をクリックすると、しっかりと「はじめてのプラグインが実行されました」と表示されたかと思います。

トグルメニュー化する

 前項でメニューからクリックしてonMenuChangedのタイミングで処理を実行することができました。addMenuの第4引数でチェック状態のフラグがありましたが、Generatorのメニューはトグル状態にすることができます。方法としては下記のようにしてonMenuChangedを下記のように書きかえてフラグを切り替えます。

function onGeneratorMenuChanged(event) {
    var changedMenu = event.generatorMenuChanged;
    if (changedMenu.name === MENU_ID) {
        var menuState = _generator.getMenuState(changedMenu.name);
        _generator.toggleMenu(MENU_ID, menuState.enabled, !menuState.checked);
    }
}

 この後、画像の変更や、ツールの変更などのイベントを紹介しますが、menuStateを変数に入れておき、チェックが入っている時のみイベントハンドラの処理を実行するなど切り分けることが可能になります。

次のページ
その他のイベント

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Adobe Developer Connection連載記事一覧

もっと読む

この記事の著者

又村 洋史(マタムラ ヒロフミ)

株式会社イノーヴWEBクリエイター。キャンペーンサイト・コーポレートサイト・ECサイトを中心に手がける。 土日はWEBの学校クスールで非常勤講師としてJavaScriptなどを教えています。日々学ぶことばかり。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7545 2014/01/22 14:38

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング