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

Цель

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

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

Примечание

Этот пример использует EmployeeInfo класс, описанный в разделе «Класс с отображением объектов по умолчанию».

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

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

  • Создайте текст заголовка со связанным именем класса и именем отдела (от 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

Реализация

The EmployeeInfo класс переопределяет три matlab.mixin.CustomDisplay способы реализации показанного отображения:

Каждый метод должен выдать желаемые результаты с каждым из следующих входов:

  • Скалярный объект

  • Нескалярный объектный массив

  • Пустой объектный массив

Переопределение метода getHeader

MATLAB® вызывает getHeader для получения текста заголовка. The 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 чтобы получить текст нижнего колонтитула. The 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

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

Похожие темы