Photoshop Extensionの開発11 Persistence

javascript, Photoshop

Extensionのパネルは一度閉じるとパネル上の進捗データ等を一度リセットしてしまいます。(フォームを操作した後の結果等)もちろんデータベースやjsonに結果を記録して立ち上げる時に前回の操作内容を記録するという事もできますがそこまでする程の内容ではない時は persistenceという機能があるので見てます。このpersistenceをonにするとパネルを閉じた時の内容をPhotoshop自体が終了するまで一時的に保管してくれるので短時間に何度もフォーム操作が必要なパネル等に使用するといいでしょう。以下コードになります。

CSEvent からインスタンスを作成。extensionのidをcsinterface.getExtensionIDメソッドより事前に読み込んでインスタンスにプロパティを代入。その後 dispatchEventメソッドよりpersistenceイベントを発火。これでパネルの操作がPhotoshop終了までに記録されるようになる。例えばフォーム要素の内容、チェックボックスのオン、オフ、といった内容をパネルを閉じても保持してくれる。但しこれには大きな欠点がある。それはデバッグの内容まで保持してしまうという事。コードの内容を書き換えてもPhotoshopを一度終了させるまで反映されないという事。persistence、最終的に搭載させるにしてもなるべく最後までコードに加えないようにするかオンとオフをいつでもできるようにしておくといい。

checkboxのオン、オフでpersistenceのオン、オフの切り替えを行う例。またこのpersistence、単に情報の保持に限らずイベントの登録といった場面でも重要になる。
最後にgithubにパネルのjsとjsxのやりとりを含めたサンプルを上げておく。

Beer 寄付してサイトを応援する。