exponenta event banner

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

Цель

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

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

Примечание

В этом примере используется 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 является классом дескриптора):

>> 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 для получения текста нижнего колонтитула. 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

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

Связанные темы