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

Цель

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

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

Примечание

Этот пример использует 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 получить имя класса со ссылкой на справку для того класса.

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

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

    • Обнаруживает указатели на удаленные объекты (использующий isvalid метод класса Handle). Использование 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

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

Похожие темы