Настройка отображения Массивов объектов

Цель

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

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

Примечание

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

Цель этого индивидуально настраиваемого отображения к:

  • Создайте пользовательский заголовок с помощью некоторых элементов заголовка по умолчанию

  • Отобразите подмножество специфичной для свойства информации для каждого объекта в массиве.

  • Перечислите указатели на удаленные объекты в массиве с помощью вектора char со ссылками на документацию для объектов указателя и класса.

  • Отобразите пустые объекты с небольшой модификацией к заголовку по умолчанию

Вот индивидуально настраиваемое отображение массива трех объектов EmployeeInfo

1x3 EmployeeInfo array with members:
1. Employee:
          Name: 'Bill Tork'
    Department: 'Product Development'

2. Employee:
          Name: 'Alice Blackwell'
    Department: 'QE'

3. Employee:
          Name: 'Nancy Green'
    Department: 'Documentation'

Указатели удаленного объекта в массиве указывают на свое состояние:

1x3 EmployeeInfo members:

1. Employee:
          Name: 'Bill Tork'
    Department: 'Product Development'

2. handle to deleted EmployeeInfo

3. Employee:
          Name: 'Nancy Green'
    Department: 'Documentation'

Чтобы достигнуть желаемого результата, класс EmployeeInfo заменяет следующие методы класса matlab.mixin.CustomDisplay:

  • displayNonScalarObject Названный, чтобы отобразить непустые массивы объектов

  • displayEmptyObject Названный, чтобы отобразить массивы пустого объекта

Переопределение displayNonScalarObject

MATLAB® вызывает метод displayNonScalarObject к массивам экранного объекта. Переопределение этого метода в классе EmployeeInfo:

  • Текст заголовка сборок с помощью convertDimensionsToString, чтобы получить размер массивов и getClassNameForHeader, чтобы получить имя класса со ссылкой на справку для того класса.

  • Отображает измененный текст заголовка.

  • Циклы через элементы в массиве, создавая два различных подзаголовка в зависимости от состояния отдельного объекта. В цикле, этом методе:

    • Обнаруживает указатели на удаленные объекты (использующий метод класса Handle isvalid). getDeletedHandleText использования и getClassNameForHeader, чтобы создать текст для элементов массива, которые являются указателями на удаленные объекты.

    • Создает пользовательский подзаголовок для элементов доступного объекта в массиве

  • Создает объект PropertyGroup, содержащий свойства Name и Department для допустимого objects

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

Вот реализация displayNonScalarObjects:

methods (Access = protected)
   function displayNonScalarObject(objAry)
      dimStr = matlab.mixin.CustomDisplay.convertDimensionsToString(objAry);
      cName = matlab.mixin.CustomDisplay.getClassNameForHeader(objAry);
      headerStr = [dimStr,' ',cName,' members:'];
      header = sprintf('%s\n',headerStr);
      disp(header)
      for ix = 1:length(objAry)
         o = objAry(ix);
         if ~isvalid(o)
            str1 = matlab.mixin.CustomDisplay.getDeletedHandleText;
            str2 = matlab.mixin.CustomDisplay.getClassNameForHeader(o);
            headerInv = [str1,' ',str2];
            tmpStr = [num2str(ix),'. ',headerInv];
            numStr = sprintf('%s\n',tmpStr);
            disp(numStr)
         else
            numStr = [num2str(ix),'. Employee:'];
            disp(numStr)
            propList = struct('Name',o.Name,...
               'Department',o.Department);
            propgrp = matlab.mixin.util.PropertyGroup(propList);
            matlab.mixin.CustomDisplay.displayPropertyGroups(o,propgrp);
         end
      end
   end
end

Переопределение displayEmptyObject

MATLAB вызывает метод displayEmptyObject, чтобы отобразить массивы пустого объекта. Реализация этого метода в классе EmployeeInfo создает пользовательский заголовок для пустых объектов, выполняющих эти шаги:

  • Получает измерения массива в формате символов с помощью статического метода convertDimensionsToString.

  • Получает текст с именем класса, соединенным с функцией helpPopup использование статического метода getClassNameForHeader.

  • Сборки и отображения пользовательский текст для пустых массивов.

methods (Access = protected)
   function displayEmptyObject(obj)
      dimstr = matlab.mixin.CustomDisplay.convertDimensionsToString(obj);
      className = matlab.mixin.CustomDisplay.getClassNameForHeader(obj);
      emptyHeader = [dimstr,' ',className,' with no employee information'];
      header = sprintf('%s\n',emptyHeader);
      disp(header)
   end
end

Например, пустой EmployeeInfo отображения объекта как это:

Empt = EmployeeInfo.empty(0,5)

Empt = 

0x5 EmployeeInfo with no employee information

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

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте