Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Операции пользователя

Читайте также:
  1. IV. Протокол лапароскопической операции
  2. Активные операции коммерческого банка и их классификация.
  3. Арифметические операции
  4. Арифметические операции
  5. Арифметические операции над функциями, имеющими предел.
  6. Векторы. Операции над векторами (сложение, вычитание, умножение на число), n-мерный вектор. Понятие о векторном пространстве и его базисе.
  7. Вкаких цехах выполняется, выполняются операции по изготовлению продукции, предназначенной для реализации: -основных цехах
  8. Встроенные типы данных, операции над ними
  9. Выявление небно-глоточной недостаточности у детей после операции
  10. Глава 2.2. Графические интерфейсы пользователя в Java

История команд

Последний шаг в направлении поддержки отмены и повтора с произвольным числом уровней - определение истории команд, то есть списка ранее выполнен­ных или отмененных команд. Концептуально история команд выглядит так:



Прошлые команды Настоящее

 


Каждый кружок представляет один объект Command. В данном случае пользо­ватель выполнил четыре команды. Линия с пометкой «настоящее» показывает са­мую последнюю выполненную (или отмененную) команду.

Для того чтобы отменить последнюю команду, мы просто вызываем операцию Unexecute для самой последней команды:

После отмены команды сдвигаем линию «настоящее» на одну команду влево. Если пользователь выполнит еще одну отмену, то произойдет откат на один шаг (см. рис. ниже).

Видно, что за счет простого повторения процедуры мы получаем произволь­ное число уровней отмены, ограниченное лишь длиной списка истории команд.

Чтобы повторить только что отмененную команду, произведем обратные дей­ствия. Команды справа от линии «настоящее» - те, что могут быть повторены в будущем. Для повтора последней отмененной команды мы вызываем операцию Execute для последней команды справа от линии «настоящее»:

Затем мы сдвигаем линию «настоящее» так, чтобы следующий повтор вызвал операцию Execute для следующей команды «в области будущего».


Проектирование редактора документов

Разумеется, если следующая операция - это не повтор, а отмена, то команда слева от линии «настоящее» будет отменена. Таким образом, пользователь может перемещаться в обоих направлениях, чтобы исправить ошибки.

Паттерн команда

Команды Lexi - это пример применения паттерна команда, описывающего, как инкапсулировать запрос. Этот паттерн предписывает единообразный интер­фейс для выдачи запросов, с помощью которого можно сконфигурировать клиен­ты для обработки разных запросов. Интерфейс изолирует клиента от реализации запроса. Команда может полностью или частично делегировать реализацию за­проса другим объектам либо выполнять данную операцию самостоятельно. Это идеальное решение для приложений типа Lexi, которые должны предоставлять централизованный доступ к функциональности, разбросанной по разным частям программы. Данный паттерн предлагает также механизмы отмены и повтора, над­строенные над базовым интерфейсом класса Command.




Дата добавления: 2015-09-11; просмотров: 73 | Поможем написать вашу работу | Нарушение авторских прав

Структура документа | Проектирование редактора документов | Проектирование редактора документов | Обязанность Операции | Оформление пользовательского интерфейса | Оформление пользовательского интерфейса | Поддержка нескольких стандартов внешнего облика | Поддержка нескольких оконных систем | Проектирование редактора документов | Подклассы Windowlmp |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав