ヘッダー、プロパティ リスト、フッターのカスタマイズ
目的
表示の 3 つの部分であるヘッダー、プロパティ グループ、フッターのそれぞれをカスタマイズします。
カスタム表示の設計
メモ
この例では、既定のオブジェクト表示をもつクラス節で説明されている EmployeeInfo
クラスを使用します。
ヘッダー:
非スカラー オブジェクト配列用の既定のヘッダーを使用する。
クラス名と部門名 (
Department
プロパティから) がリンクされたヘッダー テキストを作成する。
プロパティ:
非スカラー オブジェクト配列では、既定とは異なる順序でプロパティ名のサブセットを表示する。
スカラー オブジェクトでは、タイトルをもつ 2 つのプロパティ グループ (
Public Info
とPersonal Info
) を作成する。
フッター:
オブジェクトがプロパティ値を表示する有効なスカラーである場合にのみ、フッターを表示に追加する。
次に示すのは、EmployeeInfo
クラスのオブジェクトのカスタム表示です。
Emp123 = EmployeeInfo Dept: Product Development Public Info Name: 'Bill Tork' JobTitle: 'Software Engineer' Personal Info Salary: 1000 Password: 'bill123' Company Private
次に示すのは、EmployeeInfo
オブジェクト配列のカスタム表示です。
[Emp123,Emp124] ans = 1x2 EmployeeInfo array with properties: Department Name JobTitle
次に示すのは、空のオブジェクト配列の表示です。
>> EmployeeInfo.empty(0,5) ans = 0x5 EmployeeInfo array with properties: Department Name JobTitle
次に示すのは、削除されたオブジェクトへのハンドルの表示です (EmployeeInfo
はハンドル クラス)。
>> delete(Emp123) >> Emp123 Emp123 = handle to deleted EmployeeInfo
実装
EmployeeInfo
クラスは 3 つの matlab.mixin.CustomDisplay
メソッドをオーバーライドして、以下で示される表示を実装します。
各メソッドは、以下の各入力を用いて目的の結果を出力しなければなりません。
スカラー オブジェクト
非スカラー オブジェクト配列
空のオブジェクト配列
getHeader メソッドのオーバーライド
MATLAB® は getHeader
を呼び出してヘッダー テキストを取得します。EmployeeInfo
クラスはこのメソッドをオーバーライドし、スカラーの表示用のカスタム ヘッダーを実装します。その動作は以下のとおりです。
非スカラー (空のオブジェクトを含む) 配列はスーパークラス
getHeader
を呼び出し、これによって既定のヘッダーが返されます。削除されたオブジェクトへのスカラー ハンドルは、
getHeader
を呼び出しません。スカラー入力は、
getClassNameForHeader
静的メソッドを使用してカスタム ヘッダーを作成し、リンク付きのクラス名テキストとDepartment
プロパティの値を返します。
以下に、EmployeeInfo
による getHeader
メソッドのオーバーライドを示します。必要な保護されたアクセスは、スーパークラスから継承されます。
methods (Access = protected) function header = getHeader(obj) if ~isscalar(obj) header = getHeader@matlab.mixin.CustomDisplay(obj); else className = matlab.mixin.CustomDisplay.getClassNameForHeader(obj); newHeader = [className,' Dept: ',obj.Department]; header = sprintf('%s\n',newHeader); end end end
getPropertyGroups のオーバーライド
MATLAB は getPropertyGroups
を呼び出して、プロパティの表示方法を制御する PropertyGroup
オブジェクトを取得します。このメソッドのオーバーライドでは、オブジェクトの状態次第で 2 つの異なるプロパティ リストが定義されます。
非スカラー入力 (空の配列や、削除されたオブジェクトへのハンドルからなる配列を含む) の場合、プロパティ リストを cell 配列として作成し、プロパティを並べ替えます。
既定では、MATLAB は非スカラー入力のプロパティ値を表示しません。
スカラー入力の場合、タイトルをもつプロパティ グループを 2 つ作成します。スカラー コード分岐は、非スカラーとは異なる順序でプロパティをリストするため、
Salary
とPassword
のプロパティを含めます。MATLAB は自動的にプロパティ値を代入します。削除されたオブジェクトへのスカラー ハンドルは、
getPropertyGroups
を呼び出しません。
両方の分岐は、オブジェクト プロパティの表示方法を決定する matlab.mixin.util.PropertyGroup
オブジェクトを返します。
以下に、EmployeeInfo
による getPropertyGroups
メソッドのオーバーライドを示します。保護されたアクセスは、スーパークラスから継承されます。
methods (Access = protected) function propgrp = getPropertyGroups(obj) if ~isscalar(obj) propList = {'Department','Name','JobTitle'}; propgrp = matlab.mixin.util.PropertyGroup(propList); else gTitle1 = 'Public Info'; gTitle2 = 'Personal Info'; propList1 = {'Name','JobTitle'}; propList2 = {'Salary','Password'}; propgrp(1) = matlab.mixin.util.PropertyGroup(propList1,gTitle1); propgrp(2) = matlab.mixin.util.PropertyGroup(propList2,gTitle2); end end end
getFooter のオーバーライド
MATLAB は getFooter
を呼び出してフッター テキストを取得します。EmployeeInfo
の getFooter
メソッドは表示用のフッターを定義します。このフッターは、入力が有効なスカラー オブジェクトである場合にのみ含められます。その他すべての場合において、getFooter
は空の char
ベクトルを返します。
削除されたオブジェクトへのスカラー ハンドルは、getFooter
を呼び出しません。
methods (Access = protected) function footer = getFooter(obj) if isscalar(obj) footer = sprintf('%s\n','Company Private'); else footer = ''; end end end