Паттерн: Посредник (Mediator)
Исходник: FontDialogDirector.java, язык: java [code #513, hits: 5912]
автор: this [добавлен: 05.10.2007]
  1. package mediator;
  2.  
  3. public class FontDialogDirector extends DialogDirector {
  4. private Button ok, cancel; /* 2 стандартные кнопки */
  5. private ListBox fontList;
  6. private EntryField fontName;
  7.  
  8. public FontDialogDirector() {
  9. super();
  10. // TODO Auto-generated constructor stub
  11. }
  12.  
  13. /**
  14. * FontDialogDirector отслеживает все виджеты,
  15. * которые ранее поместил в диалоговое окно.
  16. * Переопределенная в нем операция CreateWidgets
  17. * создает виджеты и инициализирует ссылки на них.
  18. * @see mediator.DialogDirector#CreateWigets()
  19. */
  20. public void CreateWigets() {
  21. ok = new Button(this);
  22. ok.setText("OK");
  23. ok.setDisabled(true); /* Пока недоступна */
  24.  
  25. cancel = new Button(this);
  26. cancel.setText("Cancel");
  27.  
  28. fontList = new ListBox(this);
  29. fontName = new EntryField(this);
  30.  
  31. /* Добавление в список названия шрифтов,
  32. * размещение всех виджетов в диалоговом окне и т.д.
  33. * ....
  34. * */
  35.  
  36. }
  37.  
  38. public void ShowDialog() {
  39. /* Создание окна диалога... */
  40.  
  41. }
  42.  
  43. /**
  44. * Операция WidgetChanged обеспечивает правильную
  45. * совместную работу виджетов
  46. * @param w - измененный виджет (нажатая кнопка,
  47. * выбранный элемент в списке и т.д.)
  48. */
  49. public void WidgetChanged(Widget w) {
  50.  
  51. /* Если выбрали шрифт в списке - устанавливаем
  52. * его название в поле
  53. */
  54. if (w.equals(fontList)) {
  55. fontName.setText(fontList.GetSelected());
  56. } else
  57.  
  58. /* Если устанавливается название шрифта
  59. * - делалаем кнопу "ок" доступной
  60. */
  61. if (w.equals(fontName)) {
  62. ok.setDisabled(false);
  63. } else if (w.equals(ok)) {
  64. /* Сменить шрифт, закрыть окно...
  65. */
  66. } else if (w.equals(cancel)) {
  67. /* Просто закрыть окно...
  68. */
  69. }
  70. }
  71. }
Сущность ConcreteMediator

Реализация посредника между всеми виджетами диалогового окна.
Тестировалось на: java 1.5.0_04

+добавить реализацию