ListModel (クラス)
public abstract ListModel
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.GUI.CONTROL-LOGICAL.
直接継承しているサブクラス: ReadOnlyListModel, DefaultListModel

ユーザー インターフェイス (UI) のないこのクラスは、ListBox などのコントロールで使用される、順序付けられた値のセットを格納します。

説明

このクラスのインスタンスは、ListModelControl クラスのいずれかでデータ モデルとして使用できます。このようなコントロールの例には、ListBoxComboBox および DropdownList があります。

ListModel は、値のセットとその表示順序が含まれます。ListModel に対する追加または削除が行われると、自動的にコントロールに表示されます。コントロール内の 1 つの値が選択されても、それを含む ListModel には影響を与えません。各コントロールの ListModel は 1 つだけですが、1 つの ListModel を多くのコントロール (またはコントロールなし) で使用できます。

ListModel のメソッドとプロパティの多くは、Sequence-of のメソッドとプロパティと同じようにデザインされています。たとえば、set model[6] = "blue" などのサブスクリプト構文を使用し、特定のインデックスでアイテムを取得または設定できます。

接続されるコントロールと共に、ListModel のようなデータ モデルは Model-View-Controller (MVC) 設計パターンの部分的な実装を構成します。

既知のサブクラス:

オーバーライド

このクラスでは、モデルとコントロール間の一貫性を維持するために多くの機能を実装しますが、値の保存とアクセスの手段はサブクラスで実装する必要があります。具象サブクラスは、以下のメソッドの実装が必要です。

この 1 つの例には、非公開の Array で同等のメソッドを呼び出す DefaultListModel 実装があります。モデルの編集操作 (ListModel.clear など) では、モデルが変化したことをコントロールに通知する ListModel.fire-interval-removed のような通知メソッドも呼び出します。

メソッド ListModel.appendListModel.insert は、サブクラスで提供される ListModel.append-quietlyListModel.insert-quietly の実装を呼び出します。このような操作の理由は、コントロールにアイテムが追加されても、それ自体は新しいアイテムの通知を必要としないからです。したがって、コントロールは ListModel.append-quietly を呼び出して、そのコントロール以外のすべてのコントロールに通知します。

プロパティ
controls-used-by:この ListModel をそれぞれのデータ モデルとして使用するコントロール。
フィールド public constant ListModel.controls-used-by:{Array-of ListModelControl} ={new {Array-of ListModelControl}}
empty?:モデルにアイテムがない場合は true、ある場合は false。
アクセサ public ListModel.empty?:bool
size:モデル内のアイテム数を返します。
アクセサ public abstract ListModel.size:int

メソッド
append:アイテムをモデルの最後に追加します。
public {ListModel.append item:any}:void
append-quietly:モデルにアイテムを追加し、source で指定されたコントロール以外のすべてのコントロールに新しいアイテムを追加して更新する必要があることを通知します。
public abstract {ListModel.append-quietly
item:any,
source:#ListModelControl = null
}:void
clear:モデル内のすべてのアイテムを削除します。
public abstract {ListModel.clear}:void
find:要素のシーケンスを検索します。
public abstract {ListModel.find
e:any,
equality-proc:#{proc-type {any, any}:bool} = null,
search-direction:SearchDirection = SearchDirection.forward,
starting-index:int = {if search-direction == SearchDirection.forward then 0 else self.size - 1 }
}:int
fire-interval-added:アイテムがこのモデルに追加されたことをコントロールに通知します。
public {ListModel.fire-interval-added
lower:int,
upper:int,
except-for:#ListModelControl = null
}:void
fire-interval-changed:アイテムがこのモデルから削除されたことをコントロールに通知します。
public {ListModel.fire-interval-changed
lower:int,
upper:int,
except-for:#ListModelControl = null
}:void
fire-interval-removed:アイテムがこのモデルから削除されたことをコントロールに通知します。
public {ListModel.fire-interval-removed
lower:int,
upper:int,
except-for:#ListModelControl = null
}:void
get:指定されたインデックスのアイテムを返します。
public abstract {ListModel.get index:int}:any
insert:モデルで指定されたインデックスにアイテムを挿入します。
public {ListModel.insert item:any, index:int}:void
insert-quietly:モデルにアイテムを挿入し、source で指定されたコントロール以外のすべてのコントロールに新しいアイテムを挿入して更新する必要があることを通知します。
public abstract {ListModel.insert-quietly
item:any,
index:int,
source:#ListModelControl = null
}:void
register-control:コントロールがこのモデルをデータ モデルとして使用していることを、そのモデルに通知します。
public {ListModel.register-control control:ListModelControl}:void
remove:指定されたインデックスのアイテムを削除します。
public abstract {ListModel.remove
index:int,
length:int = 1,
error-if-missing?:bool = true
}:void
set:指定されたインデックスのアイテムを新しいアイテムに設定します。
public {ListModel.set index:int, item:any}:void
set-quietly:与えられたインデックスのアイテムを新しいアイテムに設定し、source で指定されたコントロール以外のすべてのコントロールに新しいアイテムを設定して更新する必要があることを通知します。
public abstract {ListModel.set-quietly
index:int,
item:any,
source:#ListModelControl = null
}:void
to-Iterator:モデル内のすべてのアイテムを含む Iterator を返します。
public abstract {ListModel.to-Iterator}:{Iterator-of any}
unregister-control:コントロールがこのモデルをデータ モデルとして使用しなくなったことを、そのモデルに通知します。
public {ListModel.unregister-control control:ListModelControl}:void
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize




プロパティ詳細
controls-used-by (フィールド)
public constant ListModel.controls-used-by:{Array-of ListModelControl} ={new {Array-of ListModelControl}}

この ListModel をそれぞれのデータ モデルとして使用するコントロール。



empty? (アクセサ)
アクセサ public ListModel.empty?:bool

モデルにアイテムがない場合は true、ある場合は false。



size (アクセサ)
アクセサ public abstract ListModel.size:int

モデル内のアイテム数を返します。






メソッド詳細
append (メソッド)
public {ListModel.append item:any}:void

アイテムをモデルの最後に追加します。

説明

ListModel.append-quietly の呼び出しによって実装されます。


append-quietly (メソッド)
public abstract {ListModel.append-quietly
item:any,
source:#ListModelControl = null
}:void

モデルにアイテムを追加し、source で指定されたコントロール以外のすべてのコントロールに新しいアイテムを追加して更新する必要があることを通知します。

説明

ほとんどの実装では、except-for 引数をソース ListModelControl に指定して ListModel.fire-interval-addedを呼び出す必要があります。


clear (メソッド)
public abstract {ListModel.clear}:void

モデル内のすべてのアイテムを削除します。



find (メソッド)
public abstract {ListModel.find
e:any,
equality-proc:#{proc-type {any, any}:bool} = null,
search-direction:SearchDirection = SearchDirection.forward,
starting-index:int = {if search-direction == SearchDirection.forward then 0 else self.size - 1 }
}:int

要素のシーケンスを検索します。

e: 検索する要素。このパラメータは、self の要素と同じデータ型を持つ必要があります。
equality-proc: 要素を比較するプロシージャ。既定では、このメソッドは等価比較演算子 (==) を使用するプロシージャを使用します。既定の動作をオーバーライドする場合は、このパラメータにプロシージャを代入します。プロシージャは、self の要素と同じデータ型の 2 つの引数を受け取る必要があります。プロシージャは、要素が等しいかどうかを示す bool 値を返す必要があります。equality-proctrue を返す場合、2 つの要素が等しいことを意味します。equality-procfalseを返す場合、2 つの要素は等しくありません。
search-direction: 検索の方向。SearchDirection 列挙型の値を指定します。左から右に検索するには、SearchDirection.forward を指定します。右から左に検索するには、SearchDirection.backward を指定します。既定では、このメソッドは左から右に検索します。既定の動作を変更する場合は、このパラメータを指定します。
starting-index: 検索を開始する要素のインデックスを示す int。既定では、このメソッドはシーケンスの先頭の要素 (インデックス 0 の要素) から検索します。

既定の動作を変更する場合は、このパラメータを指定します。starting-index がシーケンスの有効なインデックスの範囲外である場合、このメソッドはエラーをスローします。

戻り値

最初に一致した要素のインデックスを示す int。一致する要素がなかった場合は、-1 を返します。

説明

self を検索し、e に等しい要素のうち最初に現れるものを見つけます。最初に一致した要素のインデックスを返します。一致する要素がなかった場合は、-1 を返します。


fire-interval-added (メソッド)
public {ListModel.fire-interval-added
lower:int,
upper:int,
except-for:#ListModelControl = null
}:void

アイテムがこのモデルに追加されたことをコントロールに通知します。

プログラミング注意事項

ListModel.append-quietlyListModel.insert-quietly のようなメソッドが呼び出されるときに、このモデルによって呼び出されます。コントロールは、新しいアイテムごとに新しい ListItem を追加してこれに応答する必要があります。
lower: 追加されるアイテムの最小インデックス (そのアイテムも含む)。
upper: 追加されるアイテムの最大インデックス (そのアイテムも含む)。
except-for: モデルに対する変更を最初に引き起こしたコントロール。このコントロールには変更が通知されません。モデルのメソッドが、コントロールからではなくアプリケーション コードで直接呼び出された場合、この引数を null または指定なしにすることができます。


fire-interval-changed (メソッド)
public {ListModel.fire-interval-changed
lower:int,
upper:int,
except-for:#ListModelControl = null
}:void

アイテムがこのモデルから削除されたことをコントロールに通知します。

プログラミング注意事項

ListModel.set のようなメソッドが呼び出されるときに、このモデルによって呼び出されます。コントロールは、ここで指定された新しい値が反映されるように上限と下限の間の各 ListItem を変更して、これに応答する必要があります。
lower: 変更されるアイテムの最小インデックス (そのアイテムも含む)。
upper: 変更されるアイテムの最大インデックス (そのアイテムも含む)。
except-for: モデルに対する変更を最初に引き起こしたコントロール。このコントロールには変更が通知されません。モデルのメソッドが、コントロールからではなくアプリケーション コードで直接呼び出された場合、この引数を null または指定なしにすることができます。


fire-interval-removed (メソッド)
public {ListModel.fire-interval-removed
lower:int,
upper:int,
except-for:#ListModelControl = null
}:void

アイテムがこのモデルから削除されたことをコントロールに通知します。

プログラミング注意事項

ListModel.removeListModel.clear のようなメソッドが呼び出されるときに、このモデルによって呼び出されます。コントロールは、上限と下限の間のすべてのアイテムを削除してこれに応答する必要があります。
lower: 削除されるアイテムの最小インデックス (そのアイテムも含む)。
upper: 削除されるアイテムの最大インデックス (そのアイテムも含む)。
except-for: モデルに対する変更を最初に引き起こしたコントロール。このコントロールには変更が通知されません。モデルのメソッドが、コントロールからではなくアプリケーション コードで直接呼び出された場合、この引数を null または指定なしにすることができます。


get (メソッド)
public abstract {ListModel.get index:int}:any

指定されたインデックスのアイテムを返します。

index: 対象アイテムの位置。


insert (メソッド)
public {ListModel.insert item:any, index:int}:void

モデルで指定されたインデックスにアイテムを挿入します。

説明

ListModel.insert-quietly の呼び出しによって実装されます。


insert-quietly (メソッド)
public abstract {ListModel.insert-quietly
item:any,
index:int,
source:#ListModelControl = null
}:void

モデルにアイテムを挿入し、source で指定されたコントロール以外のすべてのコントロールに新しいアイテムを挿入して更新する必要があることを通知します。



register-control (メソッド)
public {ListModel.register-control control:ListModelControl}:void

コントロールがこのモデルをデータ モデルとして使用していることを、そのモデルに通知します。

プログラミング注意事項

データ モデルが設定されると、ListModelControl によって呼び出されます。


remove (メソッド)
public abstract {ListModel.remove
index:int,
length:int = 1,
error-if-missing?:bool = true
}:void

指定されたインデックスのアイテムを削除します。



set (メソッド)
public {ListModel.set index:int, item:any}:void

指定されたインデックスのアイテムを新しいアイテムに設定します。

説明

ListModel.set-quietly の呼び出しによって実装されます。


set-quietly (メソッド)
public abstract {ListModel.set-quietly
index:int,
item:any,
source:#ListModelControl = null
}:void

与えられたインデックスのアイテムを新しいアイテムに設定し、source で指定されたコントロール以外のすべてのコントロールに新しいアイテムを設定して更新する必要があることを通知します。



to-Iterator (メソッド)
public abstract {ListModel.to-Iterator}:{Iterator-of any}

モデル内のすべてのアイテムを含む Iterator を返します。



unregister-control (メソッド)
public {ListModel.unregister-control control:ListModelControl}:void

コントロールがこのモデルをデータ モデルとして使用しなくなったことを、そのモデルに通知します。

プログラミング注意事項

データ モデルが新しいモデルに設定されると、ListModelControl によって呼び出されます。