Настройка заголовка, списка свойств и нижнего колонтитула

Цель

Настройте каждую из трех частей отображения — заголовок, группы свойства и нижний колонтитул.

Дизайн пользовательского отображения

Примечание

Этот пример использует класс EmployeeInfo, описанный в разделе Class with Default Object Display.

Для заголовка:

  • Используйте заголовок по умолчанию для нескалярных объектных массивов.

  • Создайте текст заголовка с соединенным именем класса и именем отдела (из свойства Department)

Для свойств:

  • Нескалярные объектные массивы отображают подмножество имен свойства в различном порядке, чем значение по умолчанию.

  • Скалярные объекты создают две группы свойства, которые имеют заголовки (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 является классом Handle):

>> delete(Emp123)
>> Emp123

Emp123 = 

  handle to deleted EmployeeInfo

Реализация

Класс EmployeeInfo заменяет три метода 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, которые управляют, как отображены свойства. Это переопределение метода задает два различных списка свойств в зависимости от состояния объекта:

  • Для нескалярных входных параметров, включая пустые массивы и массивы, содержащие указатели на удаленные объекты, создают список свойств как массив ячеек, чтобы переупорядочить свойства.

    По умолчанию MATLAB не отображает значения свойств для нескалярных входных параметров.

  • Для скалярных входных параметров создайте две группы свойства с заголовками. Скалярное ответвление кода перечисляет свойства в различном порядке, чем нескалярный случай и включает свойства 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, чтобы получить текст нижнего колонтитула. Метод getFooter EmployeeInfo задает нижний колонтитул для отображения, которое включено только, когда входной параметр является допустимым скалярным объектом. Во всех других случаях getFooter возвращает пустой вектор char.

Скалярные указатели на удаленные объекты не приводят к вызову getFooter.

methods (Access = protected)
   function footer = getFooter(obj)
      if isscalar(obj)
         footer = sprintf('%s\n','Company Private');
      else
         footer = '';
      end
   end
end

 Полный список классов

Похожие темы

Была ли эта тема полезной?