FlexlibのTreeGridコンポーネントを利用してカスタマイズデータ構造を階層化ツリーデータグリッドを実現する

Flex 3のAdvanced DataGrid–新しく追加されたAdvanced DataGridコンポーネントを使用すると、階層データや基本的なピボットテーブルなどの頻繁に使用される機能をDataGridに追加できますが、データ構造をカスタマイズしたい場合、Advanced DataGridで実現するのは難しいですよね。オーブンソースのライブラリFlexLibのTreeGridでそれを簡単で実現できます。

FlexLibはオープンソースのMIT Licenseで配布され、Adobe Flex2、Flex3用のUIコンポーネントです。AdvancedForm(フォーム要素), Base64Image(Base64), EnhancedButtonSkin, CanvasButton, ConvertibleTreeList, Draggable Slider, Fire, Highlighter(ハイライト表示), HorizontalAxisDataSelector IconLoader, ImageMap(イメージマップ), PromptingTextArea, PromptingTextInput, Scrollable Menu Controls, SuperTabNavigator, Alternative Scrolling Canvases, Horizontal Accordion, TreeGrid(ツリーグリッド), FlowBox(フローボックス), Docking ToolBar(ドッキングツールバー), Flex Scheduling Framework(Flexスケジューリング)などコンポーネントが提供されています(どんどん増やしている)。

以下はサンプルのTGrid.mxmlソース:











FileDescriptor.asのソース:


package model.descriptors
{
import mx.collections.ArrayCollection;

public class FileDescriptor
{
public function FileDescriptor(){}

public var Name:String;
public var Size:String;
public var Type:String;
public var Children:ArrayCollection;

}
}

HierarchyDataDescriptor.asのソース:


package model.descriptors
{
import mx.collections.ArrayCollection;
import mx.collections.ICollectionView;
import mx.controls.treeClasses.DefaultDataDescriptor;

public class HierarchyDataDescriptor extends DefaultDataDescriptor
{
public function HierarchyDataDescriptor()
{
super();
}

override public function getChildren(node:Object, model:Object=null):ICollectionView
{
return node.Children;
}

override public function hasChildren(node:Object, model:Object=null):Boolean
{
return node != null && node.Children != null && (node.Children as ArrayCollection) != null && (node.Children as ArrayCollection).length > 0;
}

override public function isBranch(node:Object, model:Object=null):Boolean
{
return hasChildren(node, model);
}

override public function getData(node:Object, model:Object=null):Object
{
return node;
}

}
}

※関連資料-Flex 3に新規追加された機能:

  • Adobe AIRのネイティブサポート–Flex 3では、新しいコンポーネントが導入され、Adobe AIR開発ツールがSDKとFlex Builderに組み込まれています。
  • 永続フレームワークキャッシュ–Adobeプラットフォームコンポーネント用の新しいFlash Playerキャッシュを利用すると、Flex 3アプリケーションを50 KBに縮小できます。
  • Flex Builderの生産性向上–Flex Builder 3には、リファクタリングサポート、パフォーマンスとメモリを調整するための新しいプロファイラ、データアクセスのためのコード生成ツールがそれぞれ追加されました。
  • Creative Suite 3との統合–Flash CS3ユーザは、Flex Component Kit for Flash CS3を使用すると、Flexアプリケーションにシームレスに統合されるコンポーネントを構築できます。Flex Builder 3には、CS3アプリケーションからアセットをスキンとして読み込むための新しいウィザードが追加されています。
  • Advanced DataGrid–新しく追加されたAdvanced DataGridコンポーネントを使用すると、階層データや基本的なピボットテーブルなどの頻繁に使用される機能をDataGridに追加できます。
  • Flexオープンソース化に向けた最初の一歩-アドビでは、Flexをオープンソースプロジェクトにするための最初の取り組みとして、FlexとFlex Builderのバグトラッキングシステムのほか、詳細なロードマップ情報を公開しています。

search-256x256 デモdownload フルソースコード

リソース:
http://code.google.com/p/flexlib/ ホームページ

http://ntt.cc/2008/07/17/a-tip-for-flexbox-of-flexlib.html 関連チュートリアル

http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=12626

Leave a Reply

Your email address will not be published. Required fields are marked *