CSInterface4.0.0リファレンス

Global

CSXSインフラストラクチャー用のコンスタント

コンストラクター
CSXSWindowType();

コンスタント
CSXSWindowType._PANEL = "Panel";
CSXSWindowType._MODELESS = "Modeless";
CSXSWindowType._MODAL_DIALOG = "ModalDialog";

EvalScript_ErrMessage = "EvalScript error.";



Class

Version
properties/major, minor, micro, special
major,minor,micro:Long
special:String

Member
MAX_NUM/999999999(static)
※plugplugインターフェース及びマニフェストスキーマで参照される値です。

VersionBound
properties/version, inclusive
version:Version Object
inclusive:boolean
※inclusiveがtrueの場合はこのバウンダリが示すバージョンはinclusiveになります。しかしながら、inclusiveとexclusiveの使い分けが不明です。


VersionRange
properties/lowerBound, upperBound
lowerBound:VersionBound Object
upperBound:VersionBound Object/null
バージョン範囲の定義。上限を設定しない場合はupperBoundにnullを設定します。


Runtime
CSXSインフラストラクチャー関連のクラス。
properties/name, versionRange
name:String、ランタイム名。
versionRange:VersionRangeオブジェクト。


Extension
CEP用に定義されるオブジェクト。
properties/id, name, mainPath, basePath, windowType, width, height, minWidth, minHeight, maxWidth, maxHeight, defaultExtensionDataXml, specialExtensionDataXml, requiredRuntimeList, isAutoVisible, isPluginExtension) id:String/一意の識別子
name:String/エクステンション名、ローカライズ可能
mainPath:String/index.htmlへのパス
basePath:String/当該エクステンションのルートパス
windowType:CSXSWindowType(Globals)
width:Integer/パネル幅
height:Integer/パネル高
minWidth:Integer/パネル幅(最小値)
minHeight:Integer/パネル高(最小値)
maxWidth:Integer/パネル幅(最大値)
maxHeight:Integer/パネル高(最大値)

defaultExtensionDataXml;
specialExtensionDataXml;
dispatchinfo絡みのデータが含まれるはずなのですが、単純にのぞくとundefinedが帰ります。なので、詳細は後ほど調査します。

requiredRuntimeList:Array/Runtimeオブジェクト、要求するランタイムがarrayで含まれます。
CSXSランタイムのバージョンを取り出す例:

var cb = csInterface.getExtensions(["net.sytes.chuwa.testtest"]);
document.getElementById("message").innerHTML
= cb[0].requiredRuntimeList[0].versionRange.lowerBound.version.major;

※ランタイムバージョンを参照したいだけなのにこれだけプロパティを並べないとアクセス出来ない。正直閉口します。

isAutoVisible:Boolean/オートビジブルフラグ。マニフェストに含まれる値を拾っていると思われます。
isPluginExtension:Boolean/ネイティブオブジェクトを利用するプラグイン系のエクステンションフラグ。HTML系のパネルはfalseが帰ります。


Object/謎のHostCapabilityを含むオブジェクト
member
EXTENDED_PANEL_ICONS : boolean
SUPPORT_HTML_EXTENSIONS : boolean
DELEGATE_APE_ENGINE : boolean
EXTENDED_PANEL_MENU : boolean

※生の返り値(JSON)
{"EXTENDED_PANEL_ICONS":true,"SUPPORT_HTML_EXTENSIONS":true,
"DELEGATE_APE_ENGINE":false,"EXTENDED_PANEL_MENU":false}


SystemPath
システムパス関連の定数ですが、中身は全てStringですからgetSystemPathメソッドにはそのまま"application"なんかをつっこんでも問題ありません。 コードが見にくくなる事もないです。蛇足だよね...
Member
SystemPath.USER_DATA = "userData";
SystemPath.COMMON_FILES = "commonFiles";
SystemPath.MY_DOCUMENTS = "myDocuments";
SystemPath.APPLICATION = "application";
SystemPath.EXTENSION = "extension";
SystemPath.HOST_APPLICATION = "hostApplication";


ColorType
カラータイプ(String/constant)
Member
ColorType.RGB = "rgb";
ColorType.GRADIENT = "gradient";
ColorType.NONE = "none";


RGBColor
propaties/red, green, blue, alpha
red:Number
green:Number
blue:Number
alpha:Number
※全て0.0〜255.0のレンジ。alphaは255.0がオペークになる。


Direction
properies/x,y
それぞれx軸y軸の座標値。単位はpixel。


GradientStop
propaties/offset,rgbColor
offset:Number、グラデーションストップのオフセット値。0.0〜1.0の範囲を取る。
rgbColor:rgbColorオブジェクト


GradientColor
properties/type, direction, numStops, arrGradientStop
type:String、グラデーションタイプ。サポートされているのは「linear」だけです。
direction:Directionオブジェクト。x,yそれぞれの数値の正負で方向が決まるようですが、細かい解説がないので良く分からない。
numStops:Integer、グラデーションストップの数。
arrGradientStop:array、GradientStopオブジェクトで構成される配列。


UIColor
propaties/type, antialiasLevel, color
type:Integer、カラータイプは2種類でRGBカラーの場合が1、グラデーションなら2になります。
antialiasLevel:Integer、アンチエイリアスレベル(定数)多分1で固定。
color:rgbColorオブジェクトもしくはgradientColorオブジェクトになります。


AppSkinInfo
properties/baseFontFamily, baseFontSize, appBarBackgroundColor, panelBackgroundColor, appBarBackgroundColorSRGB, panelBackgroundColorSRGB, systemHighlightColor
baseFontFamily:String、アプリケーションで使われているUI用ベースフォント。
baseFontSize:Number、...のサイズ
appBarBackgroundColor:UIColorオブジェクト、アプリケーションバーのバックグラウンドカラー
panelBackgroundColor:UIColorオブジェクト、パネルのバックグラウンドカラー
appBarBackgroundColorSRGB:UIColorオブジェクト、アプリケーションバーのバックグラウンドカラー
panelBackgroundColorSRGB:UIColorオブジェクト、パネルのバックグラウンドカラー
systemHighlightColor:UIColorオブジェクト、システムハイライトカラー
※sRGBカラースペース関係のプロパティが含まれますが、通常のRGBとの違いは...


HostEnvironment
propaties/appName, appVersion, appLocale, appUILocale, appId, isAppOffline, appSkinInfo
appName:String、ホストアプリケーション名。4文字で構成されるappIDと同一のものが帰るので恐らく実装ミスでしょう。
appVersion:String、アプリケーションのバージョンが返されます。
appLocale:String、アプリケーションのロケール。
appUILocale:String、UIのロケール。
appId::String、appNameと同じ4文字の略号。
isAppOffline:Boolean、アプリケーションがオフラインの場合trueとなる。
appSkinInfo:appSkinInfoオブジェクト。


CSInterface Class
ネイティブアプリケーションとコミュニケーションを行う為のクラスです。最近まで気がついてませんでしたが、これらのファンクションはCEPのネイティブファンクションへのブリッジになっています。
参考までに、CSInterfaceクラスではネイティブファンクションから返されるペイロードがJSON形式のデータなのでパース処理を省くとオブジェクトの全容が見て取れたりします。

CSInterface.THEME_COLOR_CHANGED_EVENT = "com.adobe.csxs.events.ThemeColorChanged";
CSInterface.prototype.hostEnvironment = JSON.parse(window.__adobe_cep__.getHostEnvironment());

JSON data
{"appVersion":"17.0.2","appSkinInfo":{"systemHighlightColor":{"alpha":0,"green":202,"blue":254,"red":166},"baseFontSize":12,"appBarBackgroundColorSRGB":{"antialiasLevel":1,"type":1,"color":{"alpha":255,"green":72.46,"blue":72.46,"red":72.46}},"appBarBackgroundColor":{"antialiasLevel":1,"type":1,"color":{"alpha":255,"green":72.46,"blue":72.46,"red":72.46}},"panelBackgroundColor":{"antialiasLevel":1,"type":1,"color":{"alpha":255,"green":72.46,"blue":72.46,"red":72.46}},"baseFontFamily":"HiraKakuProN-W3","panelBackgroundColorSRGB":{"antialiasLevel":1,"type":1,"color":{"alpha":255,"green":72.46,"blue":72.46,"red":72.46}}},"appLocale":"ja_JP","isAppOnline":true,"appUILocale":"ja_JP","appName":"ILST","appId":"ILST"}

イベント関連ですが、情報が少ないです。少なくともイベントの発行、リスナーのコントロールと一通りの事は設定されているようなのですが...


CSEvent
properties/type, scope, appId, extensionId
type:イベントタイプ
scope:利用出来るスコープはGLOBALとAPPLICATIONの2つです。
appId:アプリケーションID。
extensionId = エクステンションID;

Constant
THEME_COLOR_CHANGED_EVENT



Methods

dispatchEvent
イベントのディスパッチを行います。
args/event
event:CSEvent オブジェクト。

ex:
var typ = CSInterface.THEME_COLOR_CHANGED_EVENT =
"com.adobe.csxs.events.ThemeColorChanged";
var csEv = new CSEvent();
csEv.type = typ;
csEv.scope = "GLOBAL";
csEv.appId = "ILST";
csEv.extensionId = "net.sytes.chuwa.testtest";

var csInterface = new CSInterface();
csInterface.dispatchEvent(csEv);


addEventListener
イベントリスナの登録
args/type,listener,obj
type:イベントタイプ
listener:リスナファンクション。トリガされた時にやりたい処理を書いておきましょう。
obj:オプション。前述のリスナファンクションがあるオブジェクトに含まれる場合、そのオブジェクトを書きます。デフォルトはnullです。
ex:
csInterface.addEventListener(type, listener, obj);


removeEventListener
イベントリスナの削除を行います。
args/type,listener,obj
addEventListenerと同様です。

ex:
csInterface.removeEventListener(type, listener, obj);

evalScript
Extendscriptのファンクションを呼び出す為のメソッド。
args/ESfunc, JSfunc
ESfunc:invokeするExtendoscriptコード。マニフェストに記述されたjsxファイルから読み出される。
JSfunc:(optional)callbackをキャプチャする為の関数。Extendscriptからreturnは関数の引数として渡される。
※少々癖のあるメソッドになっています。特に返り値の拾い方を理解していない方がかなりいらっしゃいます。詳しくはhttp://goo.gl/Y8hf3Nを参照。


initResourceBundle
ローカライズ関連のリソースを読み込み初期化します。
引数はありません。

ローカライズ関連処理方法
まずローカライズ用ファイルを用意します。

localeFolder.png

この画像の様にエクステンションルート下にlocaleフォルダを用意し、そこに各ロケールの定義ファイルを収容するフォルダを作成します。フォルダ名はロケール名で、日本語ならja_JPとなります。
定義ファイルはmessages.propertiesで、内容は

key1=テスト
key2=リロード
key3=デバッグ

の様にキー名称と内容を「=」でつなぎます。
ローカライズ対象は主にindex.htmlになります。

<button id="test" data-locale="key1">Test</button>
<button id="btn_reload" data-locale="key2">Reload</button>
<button id="btn_dev" data-locale="key3">debug</button>

これはindex.htmlからの抜粋ですが、ローカライズしたいボタンに対してdata-localeプロパティのキー値を設定します。
あとはCSInterfaceにたいしてinitResourceBundleメソッドを利用してイニシャライズ処理を行います。ただし、コンテンツのリロードではローカライズ処理が適用されません。 結果は

localizePanelSample.png



requestOpenExtension
他のエクステンションを開く。開かれている場合はアクティベートされる。引数にエクステンションIDを渡す。

ex: csInterface.requestOpenExtension("net.sytes.chuwa.flickrthumbnail.test1");


closeExtension
自身を閉じるメソッド。引数なし。

ex: csInterface.closeExtension();


getSystemPath
各種パスの取得の為に用意されているもの。引数にSystemPathを突っ込めば良いのですが、単純に"application"等の様にstringを入力しても動作します。

ex:
csInterface.getSystemPath(SystemPath.EXTENSION);//SystemPath.EXTENSIONのかわりに「extension」でもOK
return:
/Library/Application Support/Adobe/CEPServiceManager4/extensions/net.sytes.chuwa._test


getApplicationID
ホストアプリケーションのIDが帰ります。引数はありません。

ex:
csInterface.getApplicationID();
result:
ILST


getHostCapabilities
ホストキャパビリティの値が返されます。このクラスのメンバは全てBooleanです。
Member
/EXTENDED_PANEL_ICONS, SUPPORT_HTML_EXTENSIONS, DELEGATE_APE_ENGINE, EXTENDED_PANEL_MENU
ex:
csInterface.getHostCapabilities().EXTENDED_PANEL_ICONS;

return: true


dumpInstallationInfo
そのまんまです。エクステンションのインストール情報をそのまんまファイルにダンプしちゃいます。このファンクション、返り値がダンプファイルのパスになります。
args/なし
ex:
csInterface.dumpInstallationInfo();

result:
/Users/No41/Library/Logs/CSXS/csxs4-ILST-dump.log


getExtensions
エクステンションの情報を取得します。引数はExtensionIDをarrayで渡します。省略した場合、全てのエクステンションの情報が返ります。
ex:
var cb = csInterface.getExtensions(["net.sytes.chuwa.testtest"]);
document.getElementById("message").innerHTML = cb[0].name;

JSON data
{"mainPath":"/Library/Application Support/Adobe/CEPServiceManager4/extensions/net.sytes.chuwa._test/index.html",
"maxHeight":625,
"maxWidth":395,
"specialExtensionDataXML":"",
"id":"net.sytes.chuwa.testtest",
"name":"TestTest",
"width":395,
"windowType":"Panel",
"isAutoVisible":true,
"basePath":"/Library/Application Support/Adobe/CEPServiceManager4/extensions/net.sytes.chuwa._test",
"height":400,
"minWidth":395,
"requiredRuntimeList":[{"name":"CSXS","versionRange":{"lowerBound":{"version":{"minor":0,"micro":0,"major":4},"inclusive":true}}}],
"minHeight":200,
"isPluginExtension":false,
"defaultExtensionDataXML":""
}


getNetworkPreferences
ネットワークプレファレンスを取得します。
Return : NetworkPreferences
Member:
isAdminOnline
isAppOnline
isUserOnline
※皆様Booleanです。


getOSInformation
OS情報を取得します。
CEFが返すユーザーエージェントを利用してホストOSを判別します。
ちなみに、このマシンでは

Mozilla/5.0(Machintosh; Intel Mac OS X 10_8_5)
AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.57 Safari/537.1

が帰りますので結果は

Mac OS X 10.8.5

こうなります。



おまけのCEP Engine解析結果

__adobe_cep__
addEventListener       function addEventListener() { [native code] }
autoThemeColorChange       function autoThemeColorChange() { [native code] }
closeExtension       function closeExtension() { [native code] }
dispatchEvent       function dispatchEvent() { [native code] }
dumpInstallationInfo       function dumpInstallationInfo() { [native code] }
evalScript       function evalScript() { [native code] }
getExtensions       function getExtensions() { [native code] }
getHostCapabilities       function getHostCapabilities() { [native code] }
getHostEnvironment       function getHostEnvironment() { [native code] }
getNetworkPreferences       function getNetworkPreferences() { [native code] }
getSystemPath       function getSystemPath() { [native code] }
imsConnect       function imsConnect() { [native code] }
imsDisconnect       function imsDisconnect() { [native code] }
imsFetchAccessToken       function imsFetchAccessToken() { [native code] }
imsFetchAccounts       function imsFetchAccounts() { [native code] }
imsSetProxyCredentials       function imsSetProxyCredentials() { [native code] }
initResourceBundle       function initResourceBundle() { [native code] }
removeEventListener       function removeEventListener() { [native code] }
requestOpenExtension       function requestOpenExtension() { [native code] }
showAAM       function showAAM() { [native code] }
showDevTools       function showDevTools() { [native code] }

ずらりと並んだファンクション群ですがims関連が全く説明が無いので使えません。その他はCSInterfaceクラスと見比べれば...



トラックバック(0)

トラックバックURL: /475

コメントする

このアーカイブについて

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

OpenID対応しています OpenIDについて
Powered by Movable Type 5.12

    follow? twitter...     
    available on exchange