ツリーを含むローカルSQLiteデータベースがあります(ネストされたセットとして)。AIRアプリケーションでは、そのツリーをツリーコントロールに表示し、ノードの名前を変更したり、ノードをコピー、移動、追加、または削除したりする手段を提供したいと思います。
今、私はどのコードをどこに置くかについて少し悩んでいます。明らかに、データベースに対してロード/更新/挿入/削除などの操作を実行するクラスがあります。これにより、ツリー全体がいくつかのストレージ変数にロードされ、ユーザーが行った変更がデータベースに保存されます。
このクラスは、dataProvider、dataDescriptor、またはTreeコントロール自体の拡張である必要がありますか?また、ユーザーがノードの追加などの操作を要求した場合、dataProviderを更新してデータベースハンドラーにイベントに反応させる必要がありますか、それともデータベースハンドラーのメソッドを呼び出してからdataProviderを更新する必要がありますか?dbクエリで問題が発生した場合にツリーのデータを更新しない方が簡単なので、後者の方が優れていると思います。
DefaultDataDescriptorとTreeクラス(後者では保護されたメソッド)にノードを追加および削除するメソッドがありますが、それらを使用/拡張するか、無視する必要がありますか?
これについて私が混乱している理由は、ドキュメントによると、Treeコントロールは'dataDescriptor'プロパティに格納されているオブジェクトを使用して、'dataProvider'プロパティ内に格納されている実際のデータを解析および操作するためです。
これは、サブクラス化しない限り、データを操作するのはツリーコントロールではなく(ドラッグアンドドロップが有効になっている場合を除く)、dataDescriptorでもないことに気付くまでは理にかなっているようです。むしろ、すべての例で、データの操作はdataProviderオブジェクトを介して直接行われ、Treeコントロールのイベントハンドラーをトリガーします。
ここに来ないのは何ですか?