Architect ユーザーエクステンションのファイルとディレクトリ

デフォルトでは、インストールされている Architect ユーザーエクステンション(.aux ファイル)のファイルは Documents/Architect/Extensions ディレクトリに、そのエクステンションの名前で格納されます。このディレクトリは [Edit Menu(編集メニュー)] > [Architect Settings(Architect 設定)] > [Asset Storage(アセットストエージ)] セクション > [Extension(エクステンション)] で変更できます。

ユーザーエクステンションはバージョンごとに固有のサブディレクトリを保持し、その名前は1.0、1.1、のようになります。

バージョン番号が付けられたディレクトリに保存されているファイルやディレクトリは次のとおりです。

architect/            # JSON definition files for each of the UX classes
    Xx1.Definition.js # Definition file for the Xx1.Definition class
    Xx2.Definition.js # Definition file for the Xx2.Definition class
    ...
build.xml             # Generated file that controls how the UX is built
docs/
    package.png       # Graphic used on Sencha Market for this UX
    screenshots/
        pict.png      # Graphic used for Sencha Market
licenses/             # License agreement for this UX
        Readme.md
overrides/            # Contains any overrides that are required
package.json          # Describes the User Extension package to be built
Readme.md             # Description of this UX used on Sencha Market
resources/            # Static resources used in this UX
        css/          # CSS resources for this UX
        images/       # Files for images used in this UX
sass/                 # SASS files used in this UX
    config.rb
    etc/              # General, non-component oriented SASS
    example/          
    Readme.md         # Information about this SASS
    etc/              # SASS files that must be used explicitly
    src/              # SASS sources that mimic the component-class hierarchy
                      # These files are gathered in a build of the CSS
                      # based on classes used by the build.
    var/              # Contains variable declaration files named by component class
src/                  # Javascript source files for each extension class
    xxxx.js
    yyyy.js

ほとんどのファイルが自動生成されたものです。*package.json* ファイルには、手作業で情報を設定する必要があります。ユーザーエクステンション内の各クラス/コンポーネント用のDefinition(定義)ファイルも、手作業で作成してデータを設定する必要があります。次のセクションでは、この 2 つのファイルの完全なリファレンス情報を提供します。これらのファイルの設定に関する説明やガイドラインについては、ユーザーエクステンションの作成を参照してください。

package.json ファイル

package.json ファイルでは、ユーザーエクステンションパッケージの作成方法、このパッケージのバージョン番号、使用できるフレームワークのバージョン、パッケージの作成に必要なファイルすべてをを定義します。**sencha generate** コマンドにより、*package.json* ファイルの雛形をセットアップします。

{
    "name": "DreidelExtension",
    "type": "code",
    "creator": "anonymous",
    "summary": "Short summary",
    "detailedDescription": "Long description of package",
    "version": "1.0.0",
    "compatVersion": "1.0.0",
    "format": "1",
    "local": true,
    "css": [{
        path: "resources/css/dreidel.css"
    }],
    "requires": []
}

このファイルを手作業で編集して、使用するエクステンションに関する情報を追加することが必要です。フィールドは次のように定義されます。

フィールド 説明
name ユーザーエクステンションパッケージの名前です。この名前は sencha generate のコマンドラインで指定された名前から生成されます。これによってディレクトリ名が決まるため、変更しないでください。
type 「code」でなくてはなりません。
creator このユーザーエクステンションの作者名を明記したい場合には、ここに名前を入れます。
summary 作成したエクステンションの概要を記述します。たとえば、「特別なウィジェットを備えたおしゃれなパネル」などです。(将来の利用のために予約)
detailedDescription ユーザーエクステンションのより詳細な説明です。(今後のために留保)
version ユーザーエクステンションの今回リリースのバージョン番号です。1.1.2 というようなバージョンの文字列となります。Sencha Cmd ではユーザーエクステンションの新規作成時に 1.0 を自動設定します。アップグレードを反映する番号に変更できます。
compatVersion Architect では現在使用していません。
local 有効な値は「local」です。-->.
css "path" 属性が必要でオブジェクトとして指定される src/css フォルダからロードする CSS ファイルの配列。
requires ユーザーエクステンションパッケージをロードする前にロードすることが必要なクラスの配列です。たとえば、エクステンションクラスが依存している大規模なライブラリがある場合に便利です。requires を使用しないと、必須ライブラリのロード処理が完了する前に、コンポーネントによる処理が開始される場合があります。

compatVersionlocal 行の間に architect セクションを追加することも必要です。以下は、SchedulerGrid ユーザーエクステンションからとった例です。これは、クラスを 5 つ持つ複雑なユーザーエクステンションです。

"architect": {
    "defsonly": true,
    "compatFrameworks": [
        "ext42"
    ],
    "requires":[
        "sch-all-min.js"
    ],
    "classes": [{
        "definition": "ResourceModel.js",
        "className": "Sch.model.Resource",
        "js": ["ResourceModel.js"]
    },{
        "definition": "ResourceStore.js",
        "className": "Sch.data.ResourceStore",
        "js": ["ResourceStore.js"]
    },{
        "definition": "EventModel.js",
        "className": "Sch.model.Event",
        "js": ["EventModel.js"]
    },{
        "definition": "EventStore.js",
        "className": "Sch.data.EventStore",
        "js": ["EventStore.js"]
    },{
        "definition": "SchedulerGridPanel.js",
        "className": "Ext.ux.SchedulerGrid",
        "js": ["SchedulerGridPanel.js"]
    }]
},

フィールドは次のように定義されます。

フィールド 説明
defsonly (オプション)クラスの定義を指定することはできますが、JavaScript ファイルは指定できません。たとえば、Scheduler Grid ユーザーエクステンションには個別に定義された 5 つのクラスを定義する scheduler-grid-all.js がありますが、その定義はすべて schedulergrid-all.js クラスで既に行われています。
compatFrameworks このユーザーエクステンションを使用できるフレームワークのバージョンです。ピリオドなしの文字列で表されます(「touch22」、「ext42」など)。この文字列では 2 桁以上の数字を使用することはできません。たとえば「ext421」と指定すると、パッケージはロードされません。複数の値はカンマで区切って指定できますが、1 つのユーザーエクステンションパッケージに Ext JS フレームワークと Sencha Touch フレームワークの両方を指定することはできませんので、注意してください。
requires (オプション)このエクステンションのクラスを実行する前にロードする必要のあるクラスをリストします。
classes array パッケージのカスタムコードを構成するクラスすべてをリストする配列です。各クラスの .js Javascript ソースは src ディレクトリに格納し、architect ディレクトリには各クラスの定義ファイルを格納することが必要です。
className このクラスの完全修飾名です。
definition このクラスの定義ファイルの名前です。定義ファイルは architect ディレクトリに格納することが必要です。
js このクラスに対応する src フォルダにあるファイル名の配列です。このファイルは 1 つしかない場合がよくあります。

空白のものも含め、すべてのフィールドをファイルに含めることが必要です。

定義ファイル

定義ファイルでは次のことを定義します。

  • ユーザーに対するエクステンションの提示方法
  • ユーザーに公開する設定
  • Sencha Architect における動作

エクステンション内のクラスそれぞれについて定義ファイルを 1 つ作成することが必要です。ファイルの拡張子は .js でなければなりません。ファイル名にはクラス名と「Definitions」または「Def」という文字列を使用することを推奨します。たとえば、FancyPants というエクステンションの場合、定義ファイルの名前は「FancyPantsDef.js」とします。

定義ファイルはすべて、User Extension Project ディレクトリの architect セクションに格納されています。*package.json* ファイルでは、エクステンション内の各クラスに対する定義ファイルを識別します。

サンプルの定義ファイルを次に示します。

{
    classAlias: "plugin.dragdropregion",
    className: "Ext.ux.DragDropRegion", 
    inherits: "abstractplugin",
    autoName: "MyDragDropRegion",
    validParentTypes:["abstractpanel"], 

    "toolbox": {
        "name": "Drag Drop Region",
        "category": "Containers",
        "groups": ["Containers","Views"]
    },

configs: [{ name: ‘drag’, type: ‘boolean’, hidden: false, initialValue: true }, { name: ‘drop’, type: ‘boolean’, hidden: false, initialValue: true }, { name: ‘group’, type: ‘string’, hidden: false, initialValue: ‘ddg’ },{ name: ‘notifyEnterCls’, type: ‘string’, hidden: false, initialValue: ‘highlightDropZone’ }, { name: ‘dragLabel’, type: ‘string’, hidden: false, initialValue: ‘Untitled Region’ }, { name: ‘frameSwapped’, type: ‘boolean’, hidden: false, initialValue: ‘true’ }, { name: ‘frameColor’, type: ‘string’, hidden: false, initialValue: ‘#99FF99’ }, { name: ‘frameCount’, type: ‘number’, hidden: false, initialValue: 2 }] }

これらの全プロパティの説明が下の表に記載されています。

必須のプロパティ

プロパティ タイプ デフォルト値 説明
className string -- エクステンションのクラス名です(たとえば Ext.ux.Coverflow)。このクラスの src ファイルにある extend 行の内容と一致していることが必要です。
classAlias string -- エクステンションのエイリアスです(たとえば widget coverflow)。このクラスの src ファイルにある alias 行の内容と一致していることが必要です。

オプションのプロパティ

プロパティ タイプ デフォルト値 説明
inherits string Ext.Base このクラスが継承するクラスです。
autoName string -- このクラスをプロジェクトに初めて含める際に、クラス名を自動生成するのに使用される文字列です。この名前は [Project Inspector(プロジェクトインスペクタ)] とコードエディタファイルに表示されます。
toolbox object -- このコンポーネントがツールボックスでどのように表示されるかを記述するオブジェクトです。下記を参照してください。
configs object 配列 -- 設定オブジェクトの配列
listeners object 配列 -- リスナオブジェクトの配列。使用できるイベントに関する詳細な説明は後述します。
validParentTypes string 配列 すべての親 このオブジェクトに対する有効な親タイプの配列(xtype に対応する文字列を使用)です。ここにタイプがリストされている場合、このコンポーネントはこのリストに挙げたタイプのいずれかに一致するコンポーネントにのみドロップできます。
validChildTypes string 配列 すべての子 このオブジェクトに対する有効な子タイプの配列です。ここに挙げたタイプのコンポーネントのみがこのコンポーネントの子となれます。
disableInitialView boolean false true の場合、このコンポーネントはユーザーの初期ビューに表示されません。
disableDuplication boolean false true の場合、このコンポーネントは複製できません。
hideConfigs string 配列 -- 非表示にする設定の配列です。別の定義を継承する際、設定の一部を非表示にしたい場合に便利です。
showConfigs string 配列 すべてのコンフィグ 表示する設定の配列です。ここに設定がリストされている場合、表示できるのはリストに挙げられているもののみです。このプロパティが指定されていない場合、すべてのコンフィグが [Config(コンフィグ)] パネルに表示されます。

toolbox プロパティ

toolbox プロパティは、ツールボックスにおけるこのエクステンションの表現を記述するオブジェクトです。

プロパティ タイプ 説明
name string このエクステンションのツールボックスカテゴリに表示される、ユーザーにわかりやすい名前です。
category string エクステンションのカテゴリです。このエクステンションが表示される、ツールボックスのカテゴリです。この値には常に「Extensions」が追加されるため、ユーザーエクステンションコンポーネントはすべてこの Extensions カテゴリに表示されます。「Container」や「Buttons」といった適切な機能別のカテゴリも作成すると良いでしょう。このクラスを複数のカテゴリで表示するには、この例の「groups」での表示に使用するのと類似した配列を作成します。
groups string 配列 フィルタグループの配列です。ツールバーの右カラムにこのクラスがリストされるグループを定義します。グループは、ツールボックスにデフォルトで存在するものでも、新しく作成するものでも構いません。

configs

このコンポーネントでサポートされるコンフィグを記述する設定オブジェクトの配列です。ここにリストされているコンフィグはすべて、「hidden」プロパティが「true」となっていない限り、コンポーネントの [Config(コンフィグ)] パネルでセットできます。

プロパティ タイプ デフォルト値 説明
name string -- [Config(コンフィグ)] パネルで使用される表示名です。
type -- -- このコンフィグのタイプです(boolean、string など - 下表参照)。
hidden boolean false true の場合。
initialValue -- -- 作成時に自動設定される値です。

コンフィグのタイプ

タイプ 説明
配列 配列リテラルを入力できます - これはコードエディタで編集できます。
boolean true/false の値を保存するチェックボックスを表示します。
controller 利用できるコントローラのリストを表示します。
date デートピッカーを表示します。フォーマットされた日付のみが有効な値です。
function コードエディタを使用して関数を記述できます。
model 利用できるモデルのリストを表示します。
number 「文字列」と同様ですが、数値入力のみが可能です。
object コードエディタを使用してオブジェクトリテラルを記述できます。
store 利用できるストアのリストを、オプションの storeSelector パラメータでフィルタリングして表示します。
string シンプルなテキスト入力ボックスを表示します。
template XTemplate オブジェクトをコンフィグとして追加および編集できます。
typedarray 以下など、特定タイプの複数アイテム(複数モデルなど)を追加できるように指定できます。
{ "name":"typedArrayOfModels", "type":"typedarray", "memberConfig":{ "type":"model", "confirmDelete": false } }
uri 文字列と同様、自動的に url を任意の値セットにエンコーディングする追加機能(スペース文字を %20 に変換するなど)
view 利用できるビューのリストを表示します。

listener オブジェクト

イベントの発火時に呼び出すリスナ名 / 関数の配列です。

プロパティ タイプ デフォルト値 説明
name string -- このオブジェクトの名前です。
fn string -- イベントが検出されると呼び出される関数です。

現在、以下のイベントリスナがサポートされています。

イベント名。 コールバックパラメータ
create --
validate --
cfgadd cfg name
cfgchange cfg name、newValue、oldValue
cfgchangecheck cfg name、newValue、oldValue
Last updated