待辦事項 #15489

CodeLib部品の拡張が行いたい

啟用日期: 2009-03-11 17:16 最後更新: 2009-03-18 13:16

回報者:
負責人:
類型:
狀態:
開啟 [Owner assigned]
元件:
里程碑:
(無)
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
檔案:
1

細節

いつもお世話になります。

CodeLib部品の拡張についてお尋ね致します。

CodeLib部品に、新しい属性、及び子要素を追加することは可能でしょうか? もし可能でしたら、その方法をご教示いただけませんでしょうか?

例えば↓下記のように、layout.xmlを設定したいのです。 (table属性,CodeHeader子要素を追加したい)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE layoutDef SYSTEM "layoutDef.dtd">
<layoutDef>
<layout name="layout">
<codeLib name="cdlibNew1" left="10" top="10" width="120" tabIndex="-1" table="TABLE3" url="../XXXXX.aspx" title="XXXXX" enableCode="false" codeCol="HOME">
<codeHeader field="ID" width="50" title="番号"/>
<codeHeader field="NAME" width="150" title="お名前"/>
<codeHeader field="AGE" width="50" title="ご年齢"/>
<codeHeader field="HOME" width="250" title="住所"/>
</codeLib>
</layout>
</layoutDef>

上記をプレビューしようとすると、 「ERROR - XML の読み込みに失敗しました: layout.xml未知の XML 要素です: codeHeader」 というエラーが出てしまいます。

また、「table」などは新規追加したい属性なのですが、 プロパティ・ビューに表示する方法がわかりません。 可能でしたら、方法を教えていただければと思います。

以上、どうか宜しくお願い致します。

Ticket History (3/10 Histories)

2009-03-11 17:16 Updated by: mmm111
  • New Ticket "CodeLib部品の拡張が行いたい" created
2009-03-12 11:54 Updated by: kazatoh
  • 類型 Update from 特色請求 to 支援請求
  • Details Updated
  • 元件 Update from (無) to maskat
  • 負責人 Update from (無) to kazatoh
評語

レイアウト定義 XML の部分が見づらかったので、整形済みテキストにしました。

2009-03-12 12:20 Updated by: kazatoh
評語

チケットの種類をサポート要求に変更しました。

ご要望を整理すると、以下の 2 つの課題を解決する必要があるようです:

  1. プレビュー機能では Eclipse 内部で Web ブラウザを実行し、実際に JavaScript を実行させます。拡張した CodeLib を表示するためにはまず、JavaScript で作られている「マスカットフレームワーク」の改造が必要です。
  2. プロパティビューに CodeLib の子要素の属性を表示するためには、Eclipse プラグインである「マスカットIDE」の改造が必要です。

1. が実現できなければ 2. をやっても意味がないので、まずは 1. の JavaScript フレームワークの拡張方法について回答すればよいでしょうか? それとも、1. の部分はすでに解決できていますか?

2009-03-12 13:34 Updated by: mmm111
評語

1.についてですが、まだ解決できておりません。 改造方法をご教示いただけますでしょうか? よろしくお願い致します。

2009-03-13 13:01 Updated by: kazatoh
評語

JavaScript 部分の改造は Rialto 部品ライブラリの plugin.js の修正が必要です。このファイルは以下の 2 個所にあります。

  • マスカット IDE の新規プロジェクト作成、プレビューで使用するファイル:
    eclipse/plugins/org.maskat.runtime_2.0.0.v20080501/resources/rialto/plugin.js
  • すでにワークスペースに存在しているプロジェクト:
    maskat/rialto/plugin.js

修正手順を以下に示します。

  1. codeLib 部品の XML タグ・属性は plugin.js の 2245 行目に定義されています。ここで子要素 codeHeader タグが複数繰り返すことを宣言します。また、codeHeader 部品の XML タグ・属性をその後に追加します。
    codeLib: {
    	type: maskat.widget.rialto.CodeLibWrapper,
    	attributes: {
    		(…中略…)
    	},								// 追加
    	children: {							// 追加
    		codeHeader: { repeat: true, property: "codeHeaders" }	// 追加
    	}								// 追加
    },									// 追加
    codeHeader: {								// 追加
    	attributes: {							// 追加
    		field: { type: "string", required: true },		// 追加
    		width: { type: "number", required: true },		// 追加
    		title: { type: "string", required: true }		// 追加
    	}								// 追加
    }									// 追加
    
  2. codeLib 部品の生成処理は plugin.js の 939 行目にあります。1. の修正によって codeHeader タグに設定した内容が配列で取得できるので、codeLib に対する変更処理を行います。
    createWidget: function(parent) {
    	var codeLib = new rialto.widget.codeLabel(
    		this.name,
    		this.top,
    		this.left,
    		this.width,
    		null, /* parent */
    		this);
    (…中略…)		
    	// codeHeader タグの処理
    	if (this.codeHeaders) {
    		for (var i = 0; i < this.codeHeaders.length; i++) {
    			var codeHeader = this.codeHeaders[i];
    			// ここにタグの処理内容を記述する
    			// サンプルとして codeHeader タグの内容を alert で表示
    			alert("フィールド名: " + codeHeader.field + "\n" +
    			      "幅: "           + codeHeader.width + "\n" +
    			      "タイトル: "     + codeHeader.title);
    			}
    	}
    (…後略…)
    },
    

参考のため、plugin.js に対するパッチを登録しておきます。codeLib をどのように改造したいのかわかりませんので、ここから先はご自身でやってみてください。

2009-03-16 09:48 Updated by: mmm111
評語

いつもお世話になります。

回答ありがとうございます。

ご提示いただいた1.の修正をしてみたところ、 プレビュー時の「ERROR - XML の読み込みに失敗しました: layout.xml未知の XML 要素です: codeHeader」 というエラーは出なくなりました。

ありがとうございます。

ですが、何かを変更した後、レイアウトタブで保存しようとすると(エディタタブではなく)、 「保存処理に失敗しました」というエラーが出てしまいます。

もしかして、こちらは、2.のIDEの修正をしないと解決しないのでしょうか?

2009-03-17 16:13 Updated by: kazatoh
評語

ご指摘の通り、レイアウトエディタ (「レイアウト」タブ) を編集するにはマスカットIDEの改造が必要です。

マスカット IDE 2.0.0 の場合、Rialto 部品を改造するためには org.maskat.core, org.maskat.ui プラグインの Java クラスをいくつか追加したり、編集したりして再コンパイルする必要があります。4月中にリリース予定の次期バージョン (2.1.0) はタグの定義を XML ファイルで追加できるように変更され、今回のご要望のような改造が楽になるのですが、それまでお待ちいただくことはできますか?

2009-03-17 17:49 Updated by: mmm111
評語

いつもお世話になります。

了解致しました。 プラグインの修正を自力で行うのはなかなか難しそうですし、 改造が楽になるというのであれば、次期バージョンリリースまで待たせていただこうと思います。

どうぞ宜しくお願い致します。

2009-03-18 13:16 Updated by: kazatoh
評語

それでは次期バージョンのリリース後に、マスカット IDE の拡張方法を回答いたします。 お待たせして申し訳ないですが、よろしくお願いいたします。

Attachment File List

編輯

Please login to add comment to this ticket » 登入