Cloud9 IDEをコツコツ拡張しています。資料が少なくてなかなか進まないのですが。
今日はデータグリッドを表示してみます。
Cloud9ではapf(Ajax Platform Framework)と呼ばれる技術でMVC制御しています。Viewは、http://ajax.org/2005/amf で定義されたマークアップを使います。このapfのドキュメントがほぼ皆無で泣きそうになります。一番の参考資料はソースコード。
早速作っていきます。まずはクライアントの拡張スクリプトから。
cloud9/client/ext/datagrid_test/datagrid_test.js
define(function(require, exports, module) { var ide = require('core/ide'); var ext = require('core/ext'); var markup = require('text!ext/datagrid_test/datagrid_test.xml'); module.exports = ext.register('ext/datagrid_test/datagrid_test', { name : "Datagrid Test", dev : "Tomoyuki Inoue", alone : true, type : ext.GENERAL, markup : markup, nodes : [], hook : function(){ var _self = this; this.nodes.push( mnuWindows.insertBefore(new apf.item({ caption : "Datagrid Test", onclick : function(){ ext.initExtension(_self); winDatagrid.show(); } }) ), mnuWindows.firstChild); }, init : function(apfNode){}, nable : function(){ if (!this.disabled) return; this.nodes.each(function(item){ item.enable(); }); this.disabled = false; }, disable : function(){ if (this.disabled) return; this.nodes.each(function(item){ item.disable(); }); this.disabled = true; }, destroy : function(){ this.nodes.each(function(item){ item.destroy(true, true); }); this.nodes = []; } }); });
次にビューです。まだ理解が進んでいないので、悔しいですがViewにモデルを突っ込みます。
<a:application xmlns:a="http://ajax.org/2005/aml"> <a:window id = "winDatagrid" title = "放課後ティータイム" icon = "" center = "true" resizable = "true" buttons = "close" modal = "false" skin = "bk-window" width = "660" height = "400" kbclose = "true" draggable = "true"> <a:model id="mdlDatagridTest"> <data> <member name="平沢 唯" cv="豊崎 愛生"></member> <member name="秋山 澪" cv="日笠 陽子"></member> <member name="田井中 律" cv="佐藤 聡美"></member> <member name="琴吹 紬" cv="寿 美菜子"></member> <member name="中野 梓" cv="竹達 彩奈"></member> </data> </a:model> <a:vbox anchors="0 0 0 0" edge="0 0 0 0"> <a:datagrid model="mdlDatagridTest" flex="1"> <a:each match="[member]"> <a:column caption="メンバー名" value="[@name]" width="50%" /> <a:column caption="CV" value="[@cv]" width="50%" /> </a:each> </a:datagrid> </a:vbox> </a:window> </a:application>
で、拡張を有効に。Extension Managerを使っても良いのですが、Cloud9サーバ起動時に有効になるようにしてみます。90行目から140行目くらいまでのIde.DEFAULT_PLUGINの最後に一行追加します。
client/server/ide.js
Ide.DEFAULT_PLUGINS = [ "ext/filesystem/filesystem", "ext/settings/settings", "ext/editors/editors", ..... "ext/tabsessions/tabsessions", // 追加 "ext/datagrid_test/datagrid_test" ];
Cloud9 IDEを再起動して動作を確認してみます。
ひとまず表示に成功。日本語もOK。ヘッダカラムのズレ。。。こういうのは原因探すのに苦労しそう。
0 件のコメント:
コメントを投稿