From 0fbdf21385ab8b7abf9de6f613ddbeff1f3ba62f Mon Sep 17 00:00:00 2001 From: metasim Date: Tue, 17 Apr 2001 00:27:12 +0000 Subject: [PATCH] Antidote officially moved to the CVS module jakarta-ant-antidote. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268948 13f79535-47bb-0310-9956-ffa450edef68 --- src/antidote/ChangeLog | 153 ----- src/antidote/README | 68 -- src/antidote/TODO | 69 -- src/antidote/bin/antidote | 48 -- src/antidote/bin/antidote.bat | 48 -- src/antidote/build.xml | 214 ------ src/antidote/docs/design-overview.html | 253 -------- src/antidote/docs/gui-ideas.txt | 335 ---------- src/antidote/docs/gui-requirements.html | 250 ------- src/antidote/docs/new-module-howto.html | 89 --- src/antidote/docs/uml/index.html | 44 -- .../docs/uml/org-apache-tools-ant-gui-acs.gif | Bin 41605 -> 0 bytes .../uml/org-apache-tools-ant-gui-command.gif | Bin 21976 -> 0 bytes .../uml/org-apache-tools-ant-gui-core.gif | Bin 53951 -> 0 bytes .../org-apache-tools-ant-gui-customizer.gif | Bin 26730 -> 0 bytes .../uml/org-apache-tools-ant-gui-event.gif | Bin 54620 -> 0 bytes .../docs/uml/org-apache-tools-ant-gui-ide.gif | Bin 4657 -> 0 bytes ...g-apache-tools-ant-gui-modules-console.gif | Bin 15333 -> 0 bytes .../org-apache-tools-ant-gui-modules-edit.gif | Bin 6208 -> 0 bytes .../uml/org-apache-tools-ant-gui-modules.gif | Bin 3655 -> 0 bytes .../uml/org-apache-tools-ant-gui-util.gif | Bin 8307 -> 0 bytes .../docs/uml/org-apache-tools-ant-gui.gif | Bin 20672 -> 0 bytes src/antidote/etc/manifest | 4 - .../org/apache/tools/ant/gui/About.java | 142 ---- .../org/apache/tools/ant/gui/Antidote.java | 147 ----- .../org/apache/tools/ant/gui/Args.java | 161 ----- .../org/apache/tools/ant/gui/Main.java | 155 ----- .../tools/ant/gui/acs/ACSBeanDescriptor.java | 73 --- .../tools/ant/gui/acs/ACSDefaultElement.java | 73 --- .../tools/ant/gui/acs/ACSDocumentType.java | 504 --------------- .../ant/gui/acs/ACSDtdDefinedAttributes.java | 103 --- .../ant/gui/acs/ACSDtdDefinedElement.java | 329 ---------- .../gui/acs/ACSDtdDefinedElementBeanInfo.java | 139 ---- .../apache/tools/ant/gui/acs/ACSElement.java | 153 ----- .../apache/tools/ant/gui/acs/ACSFactory.java | 299 --------- .../tools/ant/gui/acs/ACSInfoProvider.java | 75 --- .../tools/ant/gui/acs/ACSNamedElement.java | 127 ---- .../tools/ant/gui/acs/ACSProjectElement.java | 167 ----- .../gui/acs/ACSProjectElementBeanInfo.java | 136 ---- .../tools/ant/gui/acs/ACSPropertyElement.java | 154 ----- .../gui/acs/ACSPropertyElementBeanInfo.java | 132 ---- .../tools/ant/gui/acs/ACSTargetElement.java | 182 ------ .../ant/gui/acs/ACSTargetElementBeanInfo.java | 153 ----- .../tools/ant/gui/acs/ACSTaskElement.java | 153 ----- .../ant/gui/acs/ACSTaskElementBeanInfo.java | 134 ---- .../tools/ant/gui/acs/ACSTreeNodeElement.java | 71 -- .../tools/ant/gui/acs/BaseBeanInfo.java | 159 ----- .../tools/ant/gui/acs/ElementTreeModel.java | 312 --------- .../gui/acs/ElementTreeSelectionModel.java | 103 --- .../tools/ant/gui/acs/acs-element.properties | 14 - .../org/apache/tools/ant/gui/acs/package.html | 9 - .../apache/tools/ant/gui/acs/project-ext.dtd | 255 -------- .../org/apache/tools/ant/gui/acs/project.dtd | 424 ------------ .../org/apache/tools/ant/gui/acs/share.dtd | 118 ---- .../tools/ant/gui/command/AboutCmd.java | 84 --- .../ant/gui/command/AbstractCommand.java | 91 --- .../tools/ant/gui/command/BuildCmd.java | 128 ---- .../ant/gui/command/ChangeLookAndFeelCmd.java | 81 --- .../tools/ant/gui/command/CloseCmd.java | 111 ---- .../apache/tools/ant/gui/command/Command.java | 72 --- .../ant/gui/command/DeleteElementCmd.java | 106 --- .../ant/gui/command/DisplayErrorCmd.java | 164 ----- .../tools/ant/gui/command/EmacsNotifyCmd.java | 91 --- .../apache/tools/ant/gui/command/ExitCmd.java | 86 --- .../tools/ant/gui/command/LoadFileCmd.java | 119 ---- .../tools/ant/gui/command/NewElementCmd.java | 159 ----- .../tools/ant/gui/command/NewElementDlg.java | 429 ------------ .../tools/ant/gui/command/NewProjectCmd.java | 92 --- .../tools/ant/gui/command/NewPropertyCmd.java | 93 --- .../tools/ant/gui/command/NewTargetCmd.java | 94 --- .../tools/ant/gui/command/NewTaskCmd.java | 94 --- .../apache/tools/ant/gui/command/NoOpCmd.java | 78 --- .../apache/tools/ant/gui/command/OpenCmd.java | 98 --- .../tools/ant/gui/command/SaveAsCmd.java | 181 ------ .../apache/tools/ant/gui/command/SaveCmd.java | 79 --- .../ant/gui/command/ShowOrHideConsoleCmd.java | 147 ----- .../tools/ant/gui/core/ActionManager.java | 424 ------------ .../apache/tools/ant/gui/core/AntAction.java | 369 ----------- .../apache/tools/ant/gui/core/AntModule.java | 122 ---- .../apache/tools/ant/gui/core/AppContext.java | 164 ----- .../ant/gui/core/BuildEventForwarder.java | 158 ----- .../tools/ant/gui/core/EventDebugMonitor.java | 106 --- .../tools/ant/gui/core/EventResponder.java | 178 ----- .../ant/gui/core/EventToActionMapper.java | 177 ----- .../tools/ant/gui/core/ProjectManager.java | 384 ----------- .../ant/gui/core/ProjectSelectionMenu.java | 177 ----- .../tools/ant/gui/core/ResourceManager.java | 322 ---------- .../tools/ant/gui/core/SelectionManager.java | 147 ----- .../tools/ant/gui/core/XMLFileFilter.java | 102 --- .../apache/tools/ant/gui/customizer/.wrapper | 28 - .../customizer/AbstractPropertyEditor.java | 246 ------- .../gui/customizer/DoublePropertyEditor.java | 170 ----- .../ant/gui/customizer/DynamicCustomizer.java | 608 ------------------ .../gui/customizer/FilePropertyEditor.java | 215 ------- .../gui/customizer/IntegerPropertyEditor.java | 172 ----- .../gui/customizer/ObjectPropertyEditor.java | 313 --------- .../customizer/PropertiesPropertyEditor.java | 308 --------- .../customizer/StringArrayPropertyEditor.java | 179 ------ .../gui/customizer/StringPropertyEditor.java | 165 ----- .../tools/ant/gui/event/AntBuildEvent.java | 129 ---- .../apache/tools/ant/gui/event/AntEvent.java | 99 --- .../tools/ant/gui/event/BuildEventType.java | 208 ------ .../ant/gui/event/BuildFinishedEvent.java | 91 --- .../ant/gui/event/BuildStartedEvent.java | 91 --- .../apache/tools/ant/gui/event/BusFilter.java | 73 --- .../apache/tools/ant/gui/event/BusMember.java | 82 --- .../ant/gui/event/ConsoleNotVisibleEvent.java | 73 --- .../ant/gui/event/ConsoleVisibleEvent.java | 73 --- .../ant/gui/event/DeleteElementEvent.java | 88 --- .../DtdDefinedElementSelectionEvent.java | 83 --- .../ant/gui/event/ElementSelectionEvent.java | 164 ----- .../tools/ant/gui/event/ErrorEvent.java | 134 ---- .../apache/tools/ant/gui/event/EventBus.java | 197 ------ .../ant/gui/event/NewBaseElementEvent.java | 91 --- .../tools/ant/gui/event/NewElementEvent.java | 70 -- .../tools/ant/gui/event/NewProjectEvent.java | 95 --- .../tools/ant/gui/event/NewPropertyEvent.java | 91 --- .../tools/ant/gui/event/NewTargetEvent.java | 90 --- .../tools/ant/gui/event/NewTaskEvent.java | 90 --- .../ant/gui/event/NullSelectionEvent.java | 74 --- .../tools/ant/gui/event/OpenRequestEvent.java | 94 --- .../ant/gui/event/ProjectClosedEvent.java | 74 --- .../ant/gui/event/ProjectSelectedEvent.java | 89 --- .../ant/gui/event/PropertySelectionEvent.java | 85 --- .../ant/gui/event/RefreshDisplayEvent.java | 74 --- .../tools/ant/gui/event/ShowConsoleEvent.java | 84 --- .../ant/gui/event/TargetSelectionEvent.java | 85 --- .../ant/gui/event/TaskSelectionEvent.java | 85 --- .../tools/ant/gui/ide/EmacsNotifier.java | 106 --- .../tools/ant/gui/ide/FileErrorNotifier.java | 146 ----- .../tools/ant/gui/modules/TargetMonitor.java | 185 ------ .../ant/gui/modules/console/BuildConsole.java | 356 ---------- .../ant/gui/modules/console/LogLevelEnum.java | 163 ----- .../modules/edit/DependentTargetChooser.java | 376 ----------- .../edit/DependentTargetPropertyEditor.java | 327 ---------- .../tools/ant/gui/modules/edit/DragTree.java | 606 ----------------- .../gui/modules/edit/DragTreeListener.java | 96 --- .../edit/DtdAttributePropertyEditor.java | 389 ----------- .../gui/modules/edit/ElementNavigator.java | 333 ---------- .../modules/edit/ElementTreeCellRenderer.java | 101 --- .../ant/gui/modules/edit/PropertyEditor.java | 197 ------ .../gui/modules/edit/TargetsTableModel.java | 189 ------ .../tools/ant/gui/resources/action.properties | 185 ------ .../ant/gui/resources/antidote.properties | 141 ---- .../tools/ant/gui/resources/args.properties | 7 - .../gui/resources/buildFileWizard.properties | 88 --- .../tools/ant/gui/resources/console.gif | Bin 977 -> 0 bytes .../tools/ant/gui/resources/default.gif | Bin 987 -> 0 bytes .../apache/tools/ant/gui/resources/down.gif | Bin 936 -> 0 bytes .../apache/tools/ant/gui/resources/enter.gif | Bin 944 -> 0 bytes .../apache/tools/ant/gui/resources/exit.gif | Bin 956 -> 0 bytes .../tools/ant/gui/resources/icon-small.gif | Bin 1403 -> 0 bytes .../tools/ant/gui/resources/new-project.gif | Bin 286 -> 0 bytes .../tools/ant/gui/resources/new-property.gif | Bin 458 -> 0 bytes .../tools/ant/gui/resources/new-target.gif | Bin 313 -> 0 bytes .../tools/ant/gui/resources/new-task.gif | Bin 429 -> 0 bytes .../apache/tools/ant/gui/resources/new.gif | Bin 997 -> 0 bytes .../apache/tools/ant/gui/resources/open.gif | Bin 1001 -> 0 bytes .../tools/ant/gui/resources/project.gif | Bin 914 -> 0 bytes .../tools/ant/gui/resources/property.gif | Bin 998 -> 0 bytes .../apache/tools/ant/gui/resources/save.gif | Bin 981 -> 0 bytes .../apache/tools/ant/gui/resources/start.gif | Bin 988 -> 0 bytes .../apache/tools/ant/gui/resources/stop.gif | Bin 989 -> 0 bytes .../apache/tools/ant/gui/resources/target.gif | Bin 187 -> 0 bytes .../apache/tools/ant/gui/resources/task.gif | Bin 988 -> 0 bytes .../tools/ant/gui/resources/unknown.gif | Bin 1043 -> 0 bytes .../org/apache/tools/ant/gui/resources/up.gif | Bin 936 -> 0 bytes .../tools/ant/gui/util/ChangeLookAndFeel.java | 160 ----- .../ant/gui/util/CheckableButtonModel.java | 144 ----- .../tools/ant/gui/util/Collections.java | 83 --- .../tools/ant/gui/util/LabelFieldGBC.java | 144 ----- .../apache/tools/ant/gui/util/StackFrame.java | 208 ------ .../tools/ant/gui/util/WindowUtils.java | 108 ---- .../apache/tools/ant/gui/util/XMLHelper.java | 74 --- .../org/apache/tools/ant/gui/version.txt | 2 - .../ant/gui/wizard/AbstractWizardStep.java | 230 ------- .../tools/ant/gui/wizard/ButtonNavigator.java | 197 ------ .../ant/gui/wizard/DefaultStateMachine.java | 108 ---- .../tools/ant/gui/wizard/InstructionStep.java | 102 --- .../ant/gui/wizard/NavigatorListener.java | 89 --- .../tools/ant/gui/wizard/StateMachine.java | 82 --- .../apache/tools/ant/gui/wizard/Wizard.java | 261 -------- .../tools/ant/gui/wizard/WizardData.java | 89 --- .../tools/ant/gui/wizard/WizardListener.java | 77 --- .../tools/ant/gui/wizard/WizardNavigator.java | 95 --- .../tools/ant/gui/wizard/WizardStep.java | 165 ----- .../tools/ant/gui/wizard/build/BuildData.java | 189 ------ .../gui/wizard/build/BuildStateMachine.java | 141 ---- .../tools/ant/gui/wizard/build/Builder.java | 92 --- .../ant/gui/wizard/build/CompileStep.java | 119 ---- .../ant/gui/wizard/build/FinishStep.java | 110 ---- .../tools/ant/gui/wizard/build/JARStep.java | 116 ---- .../ant/gui/wizard/build/JavaDocStep.java | 116 ---- .../ant/gui/wizard/build/OptionalStep.java | 65 -- .../gui/wizard/build/ProjectSetupStep.java | 201 ------ .../ant/gui/wizard/build/ProjectTypeStep.java | 115 ---- 196 files changed, 25171 deletions(-) delete mode 100644 src/antidote/ChangeLog delete mode 100644 src/antidote/README delete mode 100644 src/antidote/TODO delete mode 100755 src/antidote/bin/antidote delete mode 100644 src/antidote/bin/antidote.bat delete mode 100644 src/antidote/build.xml delete mode 100644 src/antidote/docs/design-overview.html delete mode 100644 src/antidote/docs/gui-ideas.txt delete mode 100644 src/antidote/docs/gui-requirements.html delete mode 100644 src/antidote/docs/new-module-howto.html delete mode 100644 src/antidote/docs/uml/index.html delete mode 100644 src/antidote/docs/uml/org-apache-tools-ant-gui-acs.gif delete mode 100644 src/antidote/docs/uml/org-apache-tools-ant-gui-command.gif delete mode 100755 src/antidote/docs/uml/org-apache-tools-ant-gui-core.gif delete mode 100644 src/antidote/docs/uml/org-apache-tools-ant-gui-customizer.gif delete mode 100644 src/antidote/docs/uml/org-apache-tools-ant-gui-event.gif delete mode 100644 src/antidote/docs/uml/org-apache-tools-ant-gui-ide.gif delete mode 100755 src/antidote/docs/uml/org-apache-tools-ant-gui-modules-console.gif delete mode 100755 src/antidote/docs/uml/org-apache-tools-ant-gui-modules-edit.gif delete mode 100755 src/antidote/docs/uml/org-apache-tools-ant-gui-modules.gif delete mode 100644 src/antidote/docs/uml/org-apache-tools-ant-gui-util.gif delete mode 100644 src/antidote/docs/uml/org-apache-tools-ant-gui.gif delete mode 100644 src/antidote/etc/manifest delete mode 100644 src/antidote/org/apache/tools/ant/gui/About.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/Antidote.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/Args.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/Main.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSBeanDescriptor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSDefaultElement.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSDocumentType.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedAttributes.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedElement.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedElementBeanInfo.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSElement.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSInfoProvider.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSNamedElement.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElement.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElementBeanInfo.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElement.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElementBeanInfo.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElement.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElementBeanInfo.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElementBeanInfo.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ACSTreeNodeElement.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/BaseBeanInfo.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ElementTreeModel.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/ElementTreeSelectionModel.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/acs-element.properties delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/package.html delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/project-ext.dtd delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/project.dtd delete mode 100644 src/antidote/org/apache/tools/ant/gui/acs/share.dtd delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/AboutCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/AbstractCommand.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/BuildCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/CloseCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/Command.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/DeleteElementCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/DisplayErrorCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/EmacsNotifyCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/ExitCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/LoadFileCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/NewElementCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/NewElementDlg.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/NewProjectCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/NewTargetCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/NoOpCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/OpenCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/SaveAsCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/SaveCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/command/ShowOrHideConsoleCmd.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/ActionManager.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/AntAction.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/AntModule.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/AppContext.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/BuildEventForwarder.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/EventDebugMonitor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/EventResponder.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/EventToActionMapper.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/ProjectManager.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/ProjectSelectionMenu.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/SelectionManager.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/core/XMLFileFilter.java delete mode 100755 src/antidote/org/apache/tools/ant/gui/customizer/.wrapper delete mode 100644 src/antidote/org/apache/tools/ant/gui/customizer/AbstractPropertyEditor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/customizer/DoublePropertyEditor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/customizer/DynamicCustomizer.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/customizer/FilePropertyEditor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/customizer/IntegerPropertyEditor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/customizer/ObjectPropertyEditor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/customizer/PropertiesPropertyEditor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/customizer/StringArrayPropertyEditor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/customizer/StringPropertyEditor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/AntBuildEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/AntEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/BuildEventType.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/BuildFinishedEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/BuildStartedEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/BusFilter.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/BusMember.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/ConsoleNotVisibleEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/ConsoleVisibleEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/DeleteElementEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/DtdDefinedElementSelectionEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/ElementSelectionEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/ErrorEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/EventBus.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/NewBaseElementEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/NewElementEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/NewProjectEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/NewTargetEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/NullSelectionEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/OpenRequestEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/ProjectClosedEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/ProjectSelectedEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/PropertySelectionEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/RefreshDisplayEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/ShowConsoleEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/TargetSelectionEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/event/TaskSelectionEvent.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/ide/EmacsNotifier.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/ide/FileErrorNotifier.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/modules/TargetMonitor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/modules/console/BuildConsole.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/modules/console/LogLevelEnum.java delete mode 100755 src/antidote/org/apache/tools/ant/gui/modules/edit/DependentTargetChooser.java delete mode 100755 src/antidote/org/apache/tools/ant/gui/modules/edit/DependentTargetPropertyEditor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/modules/edit/DragTree.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/modules/edit/DragTreeListener.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/modules/edit/DtdAttributePropertyEditor.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/modules/edit/ElementNavigator.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/modules/edit/ElementTreeCellRenderer.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/modules/edit/PropertyEditor.java delete mode 100755 src/antidote/org/apache/tools/ant/gui/modules/edit/TargetsTableModel.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/action.properties delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/antidote.properties delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/args.properties delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/buildFileWizard.properties delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/console.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/default.gif delete mode 100755 src/antidote/org/apache/tools/ant/gui/resources/down.gif delete mode 100755 src/antidote/org/apache/tools/ant/gui/resources/enter.gif delete mode 100755 src/antidote/org/apache/tools/ant/gui/resources/exit.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/icon-small.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/new-project.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/new-property.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/new-target.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/new-task.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/new.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/open.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/project.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/property.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/save.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/start.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/stop.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/target.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/task.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/resources/unknown.gif delete mode 100755 src/antidote/org/apache/tools/ant/gui/resources/up.gif delete mode 100644 src/antidote/org/apache/tools/ant/gui/util/ChangeLookAndFeel.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/util/CheckableButtonModel.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/util/Collections.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/util/LabelFieldGBC.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/util/StackFrame.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/util/WindowUtils.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/util/XMLHelper.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/version.txt delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/AbstractWizardStep.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/ButtonNavigator.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/DefaultStateMachine.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/InstructionStep.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/NavigatorListener.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/StateMachine.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/Wizard.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/WizardData.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/WizardListener.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/WizardNavigator.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/WizardStep.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/build/BuildData.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/build/BuildStateMachine.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/build/Builder.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/build/CompileStep.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/build/FinishStep.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/build/JARStep.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/build/JavaDocStep.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/build/OptionalStep.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectSetupStep.java delete mode 100644 src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectTypeStep.java diff --git a/src/antidote/ChangeLog b/src/antidote/ChangeLog deleted file mode 100644 index b9bf0261c..000000000 --- a/src/antidote/ChangeLog +++ /dev/null @@ -1,153 +0,0 @@ -2000-11-27 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/ActionManager.java: Added ability to - generate popup menus from a list of action IDs. - -2000-11-24 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/Console.java: Added context colorization. - -2000-11-20 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/command/DisplayErrorCmd.java: Added - code to allow display of stack backtrace if needed. - -2000-11-18 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/customizer/PropertiesPropertyEditor.java: - Added proper editing capability. Rows are added and removed - automatically. - - * org/apache/tools/ant/gui/customizer/XXXPropertyEditor.java: - Removed stray event firing upon setting value of property to edit. - -2000-11-16 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/customizer/StringPropertyEditor.java: - Changed underlying widget type to JTextPane so that it would - accomidate multi-line strings property. - - * org/apache/tools/ant/gui/acs/ACSTreeNodeElement.java: Fixed - nasty java.lang.IllegalAccessException bug that I thought was - related to Java 1.3 Blackdown RC1, but wasn't. It was related to - using Jikes, which interprests method resolution differently than - javac, resulting in a call trying to access a private method - implementation of a public interface. - - * org/apache/tools/ant/gui/ResourceManager.java: Added convenience - method for getting resource images for a given class. - - * org/apache/tools/ant/gui/AntAction.java: Added toggle property. - - * org/apache/tools/ant/gui/ActionManager.java: Added ability to - handle toggle actions to menu bar (still need to add support to - tool bar). - - * org/apache/tools/ant/gui/EventResponder.java: Added emacs - notifier command. - - * org/apache/tools/ant/gui/ide/EmacsNotifier.java: Imported. - - * org/apache/tools/ant/gui/ProjectProxy.java: Added code to add - listeners registered with the AppContext to the build. - - * org/apache/tools/ant/gui/AppContext.java: Now allows registering - of build listeners to be added to project at build time. - - * org/apache/tools/ant/gui/Main.java: Added loading of build file - provided on command line. - -2000-11-14 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/Antidote.java: Added top area widget, - which is *not* managed inside a split pane. - - * org/apache/tools/ant/gui/ProjectNavigator.java: Added minimum - size to keep resizing of parent from hiding widget. - - * org/apache/tools/ant/gui/ActionManager.java: Large functionality - addtion for allowing action enabled/disabled state to be defined - in the configuration file. The triggering of state changes is - based on the firing of specific events. - - * org/apache/tools/ant/gui/AntAction.java: Broke out from inner - class of ActionManager to its own self (I'm my own man!). - - * org/apache/tools/ant/gui/command/CloseCmd.java: Added firing of - ProjectClosedEvent so state updates could occur. - - * org/apache/tools/ant/gui/resources/action.properties: Added - enabledOn and disabledOn event specifications. - - * org/apache/tools/ant/gui/Console.java: Improved reporting level - handling (some events weren't getting reported). - -2000-11-10 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/PropertyEditor.java: Added new - DynamicCustomizer class instead of HTML based info. - -2000-11-09 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/ProjectProxy.java: Started rework of - project data model, using elements from the XML parser directly - through the new Ant Construction Set package. - -2000-11-08 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/About.java: Useless tweaking inspired - by procrastination. - -2000-11-05 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/LogLevelEnum.java: Added log level - enumeration for use with combo boxes (drops nicely into default model). - - * org/apache/tools/ant/gui/event/BuildEventType.java: Added - delivering of event to a BuildListener based on enumeration value. - - * org/apache/tools/ant/gui/ProjectProxy.java: Added generation of - BuildEvent on project start and finish, as the project itself - doesn't generate theses events (unfortunately). - - * org/apache/tools/ant/gui/Console.java: Added filtering level, - and clearing of buffer when a new build starts. - - * org/apache/tools/ant/gui/AntEditor.java: Added automatic border - for all subclasses. - -2000-11-04 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/ProjectProxy.java: Added inner class to - execute the build in a separate thread. - - * org/apache/tools/ant/gui/event/EventBus.java: Added check to see - if postEvent() is being called on the AWTEvent thread, and if not, - post the dispatching of the event to that thread. This is needed - as most of the listeners will be bound to GUI components and will - be updating their state (which must occur on the event thread). - - * org/apache/tools/ant/gui/ProjectProxy.java: Added a - BuildListener to forward events to the EventBus. - -2000-11-03 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/Antidote.java: Removed hard-coded - Console class. - - * org/apache/tools/ant/gui/Console.java: Changed to a real - AntEditor class, initialized by the config file. - -2000-11-02 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/event/EventBus.java: Added interrupt - level support. - - * org/apache/tools/ant/gui/About.java: Created - -2000-11-01 Simeon H.K. Fitch - - * org/apache/tools/ant/gui/Main.java: Added XMLHelper.init() call - - * build.xml: Updated run target to include ant.jar in classpath. - diff --git a/src/antidote/README b/src/antidote/README deleted file mode 100644 index a7597365a..000000000 --- a/src/antidote/README +++ /dev/null @@ -1,68 +0,0 @@ - - A N T I D O T E - - What is it? - ----------- - - Antidote is the Java based GUI interface to the Ant build tool. - - Status - ------ - - Antidote is in the early stages of development. Its usefulnes is limited, and - will not be distributed with the binary versions of Ant until it is deemed - featureful and robust enough for end user use. That being said, it currently - will load an Ant build.xml file, allow you to edit some of the file's - properties, save it, and launch a build starting at any target in the - project. - - The Latest Version - ------------------ - - The latest version is the current CVS version, which may or may not be useful - at any given time. The source code is not being base-lined at any specific - version at this time. - - Documentation - ------------- - - Any documentation that exists for Antidote can be found in the antidote/docs - directory. Documentation is primarily developement based documentation as - Antidote is not yet mature enough for reliable user documentation. - - Building - -------- - - Antidote requres JAXP 1.0.1 from Sun (http://java.sun.com/xml). Some time in - the future it is hoped at any w3c based XML will be usable, but at the - current time the Sun library is needed. The easiest way to install the - jaxp.jar and parsers.jar file that comes with the distribution is to copy - them into your $JAVA_HOME/jre/lib/ext directory. - - There is a build.xml file in the same directory as this file that will work - with Ant 1.2. It is recommended that Ant be built first (from ../..), - followed by this directory. By default, the compiled classes will be written - to ~/built/antidote/classes, but the JAR file and launch scripts are written - to the Ant build directory (~/build/ant). - - Running - ------- - - Antidote requires at least Java 1.2 to run. - - Upon successful building of Ant and Antidote (in that order), go to - ~/build/ant/bin and run "antidote". You will probably have to set the - environment variable "ANT_HOME" to "~/build/ant" in the shell that you launch - antidote from. If desired, you can provide the build file to launch at statup - as the first argument on the command line to "antidote". - - Licensing - --------- - - This software is licensed under the terms you may find in the file - named "LICENSE" provided with this distribution. - - Thanks for using Antidote. - - The Apache Jakarta Project - diff --git a/src/antidote/TODO b/src/antidote/TODO deleted file mode 100644 index 5c5f88758..000000000 --- a/src/antidote/TODO +++ /dev/null @@ -1,69 +0,0 @@ -TODO List: - * Rewrite ACSFactory to use it's own parser rather than the implementation - specific com.sun.xml.tree.SimpleElementFactory class (only available - in JAXP from Sun). - - * Add editors for defining file sets, and other "sets". - - * Write wizzard framework. - - * Implement a build progress reporter. - - * Implement a "Worker Thread" pattern that allows workers to have - their work done in a thread property registered with Antidote, and - provide support to that worker to provide progress updates via - the GUI. Should also provide support for hour-glass cursor - handling, and AWT event blocking until task is completed. This - would be used for things such as loading files or other tasks - that the user must wait for completion. - - * Add menu option to select the compiler to use, which then sets - the "build.compiler" property. Better yet, create a generic menu - building capability that allows the setting of a property from a - list of options. - - * Add ability to put an "all" or "don't care" specifyer on the action - "enableOn" and "disableOn" properties. - - * Add ability to view task dependencies more fully. - - * Add better editors for specific tasks. - - * Add a Progress Monitor for file loading (especially for slow boxen like - mine) . - - * Implement some for of refid hyperlinking functionality. - - * Implement context sensitive menus for the console window, allowing - an error to be selected and invoked in IDE. - - * Write preferences framwork, including persistence support. - - * Provide some sort of class path debugging support. - - * Add "syntax" colorization to the console window {done}, - with a preferences editor for setting up the styles {not-done}. - - * Figure out an approach to gracefully stopping a running build. - - * Add error handler for SAX parser to better report loading errors. - - * Project properties viewer, including the ability to view - dependencies (local and cascading). - - * Acquire or implement a logging facility. - - * Eat more dog food. - -(pending Ant 2.0) - - * Need Ant API access to: - - Tasks within a Target - - The topo sorted task list to get flattened dependencies - - The build setup code to recduce code replication. - - Normalize the Ant data model to represent a more consistent - tree structure, and more bean-like API. - - * Better define the data model architecture, and how it interfaces - with the Ant data model. - diff --git a/src/antidote/bin/antidote b/src/antidote/bin/antidote deleted file mode 100755 index 22e167a80..000000000 --- a/src/antidote/bin/antidote +++ /dev/null @@ -1,48 +0,0 @@ -#! /bin/sh - -if [ -f $HOME/.antrc ] ; then - . $HOME/.antrc -fi - -if [ "$ANT_HOME" = "" ] ; then - # try to find ANT - if [ -d /opt/ant ] ; then - ANT_HOME=/opt/ant - fi - - if [ -d ${HOME}/opt/ant ] ; then - ANT_HOME=${HOME}/opt/ant - fi - - ## resolve links - $0 may be a link to ant's home - PRG=$0 - progname=`basename $0` - - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '.*/.*' > /dev/null; then - PRG="$link" - else - PRG="`dirname $PRG`/$link" - fi - done - - ANT_HOME=`dirname "$PRG"`/.. - -fi - -# Allow .antrc to specifiy flags to java cmd -if [ "$JAVACMD" = "" ] ; then - JAVACMD=java -fi - -LOCALCLASSPATH=`echo $ANT_HOME/lib/*.jar | tr ' ' ':'` - -if [ "$CLASSPATH" != "" ] ; then - LOCALCLASSPATH=$CLASSPATH:$LOCALCLASSPATH -fi - - -$JAVACMD -classpath $LOCALCLASSPATH -Dant.home=${ANT_HOME} org.apache.tools.ant.gui.Main $@ - diff --git a/src/antidote/bin/antidote.bat b/src/antidote/bin/antidote.bat deleted file mode 100644 index f7f74c9ef..000000000 --- a/src/antidote/bin/antidote.bat +++ /dev/null @@ -1,48 +0,0 @@ -@echo off - -rem Slurp the command line arguments. This loop allows for an unlimited number of -rem agruments (up to the command line limit, anyway). - -set ANT_CMD_LINE_ARGS= - -:setupArgs -if %1a==a goto doneArgs -set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1 -shift -goto setupArgs - -:doneArgs -rem The doneArgs label is here just to provide a place for the argument list loop -rem to break out to. - -rem find ANT_HOME -if not "%ANT_HOME%"=="" goto checkJava - -rem check for ant in Program Files on system drive -rem if not exist "%SystemDrive%\Program Files\ant" goto checkSystemDrive -rem set ANT_HOME=%SystemDrive%\Program Files\ant -rem goto checkJava - -rem :checkSystemDrive -rem check for ant in root directory of system drive -rem if not exist "%SystemDrive%\ant" goto noAntHome -rem set ANT_HOME=%SystemDrive%\ant -rem goto checkJava - -:noAntHome -echo ANT_HOME is not set and ant could not be located. Please set ANT_HOME. -goto end - -:checkJava -if "%JAVACMD%" == "" set JAVACMD=java - -set LOCALCLASSPATH="%CLASSPATH%" -for %%i in ("%ANT_HOME%\lib\*.jar") do call "%ANT_HOME%\bin\lcp.bat" "%%i" - -%JAVACMD% -classpath %LOCALCLASSPATH% -Dant.home="%ANT_HOME%" org.apache.tools.ant.gui.Main %ANT_CMD_LINE_ARGS% -goto end - -:end -set LOCALCLASSPATH= -set ANT_CMD_LINE_ARGS= - diff --git a/src/antidote/build.xml b/src/antidote/build.xml deleted file mode 100644 index 52e0671ad..000000000 --- a/src/antidote/build.xml +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/antidote/docs/design-overview.html b/src/antidote/docs/design-overview.html deleted file mode 100644 index 4436afcde..000000000 --- a/src/antidote/docs/design-overview.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - Antidote Design Overview - - - - -

Antidote Design Overview

- -

Version 0.2 (2000/12/18)

- -

Authors: - Simeon H.K. Fitch -

- -

Introduction

- -

The purpose of this document is to communicate the overall - structure and design patters used in Antidote, the GUI for - Ant. This document is a work in progress, as well as a living - document, and it is most likely not be in full synchronization with - the source code. Therefore, if there is any doubt, view the source - ;-)

- -

Overview

- -

The Antidote architecture design aims to provide a high level - of modularity and extensibility. Ideally the components of - Antidote will be able to be assembled in different configurations - to provide the type of application or plug-in desired.

- -

To acheive this modularity, a high level of decoupling is - necessary. The standard UI design approach of providing separation - of view (presentation) from model (data) is applied, leveraging - the built-in Ant data model where possible, as well as the - predifined Swing model interfaces. Furthermore, the architecture - is highly event driven, whereby modules communicate via a shared - communications channel.

- -

To a large extent, the configuration of application modules is - driven by localized configuration files, allowing new modules or - data views to be added, as well as providing multi-language - support.

- -

The diagram below conveys a high altitude view of the - application's structure. As the application grows, new components - will be plugged in to what will be described as the EventBus. - -

-
-Antidote Component Architecture
-
-   +---------------+ +----------------+ +-------------+ +-------------+
-   |               | |                | |             | |             |  
-   | ActionManager | | EventResponder | |  AntModule  | |  AntModule  |
-   |               | |                | |(ProjectNav) | |(SourceEdit) |  
-   +---------------+ +----------------+ +-------------+ +-------------+
-           |                  ^               ^               ^
-           |                  |               |               |
-      ActionEvent         EventObject      AntEvent       AntEvent
-           |                  |               |               |
-           v                  v               v               v
-  /---------------------------------------------------------------------\
- /                                                                       \
-<                                   EventBus                              >
- \                                                                       /
-  \---------------------------------------------------------------------/
-           |                  ^               ^               ^
-           |                  |               |               |
-      EventObject         ChangeEvent      BuildEvent     EventObject
-           |                  |               |               |
-           v                  |               |               v
-   +---------------+ +----------------+ +-------------+ +--------------+
-   |               | |                | |             | |              |  
-   |   Console     | |  ProjectProxy  | |    Ant      | | (Your Module)|
-   |               | |                | |             | |              |  
-   +---------------+ +----------------+ +-------------+ +--------------+
-
-    
- -

Event Bus

- -

The backbone of the application is the EventBus. Any - component of the application can post events to the - EventBus. Components that wish to receive events are - called BusMembers.

- -

The EventBus will dispatch any object of type - java.util.Event, which means that Ant BuildEvent - objects, as well as AWTEvent objects can be posted (if desired). A - new class of events called AntEvent is defined for Antidote - specific events, which have the additional capability of being - cancelled mid-dispatch.

- -

Each BusMember must provide a BusFilter instance, - which is the members' means of telling the bus which - events it is interested in. This allows a BusMember to, - say, only receive AntEvent objects.

- -

When a BusMember registers itself with the - EventBus, it must provide a (so called) interrupt - level which is a integer value defining a relative ordering - for dispatching EventObjects to BusMembers. The - purpose of this is to allow certain BusMember instances - to see an event before others, and in the case of AntEventEventBus class defines the interrupt level constants - VETOING=1, MONITORING=5, and RESPONDING=10 to - help define categories of members. The implied purpose being that: -

    - -
  • VETOING: Listens for certain types of events, and - may process them in a non-default manner to determine if the - event should be cancelled before being dispatched to the - RESPONDING group. - -
  • MONITORING: Just listens for events, like a logger - or status monitor.
  • - -
  • RESPONDING: Process events in a default manner, - knowing that the event has passed any VETOING members.
  • - -
- - Within a specific interrupt level, the order in which members will - receive events is undefied. A BusMember may be registered - at a level that is +/- of one of the defined levels, as long as it - follows the constraint MONITORING <= interruptLevel <= - MAX_INTERRUPT.

- - -

Actions and ActionManager

- -

Extensive use of the javax.swing.Action interface is - made for defining the set of menu and tool bar options that are - available. The configuration file action.properties - exists to define what should appear in the menu and toolbar, how - it is displayed, and the Action command name that is - dispatched when the user invokes that action. A class called - ActionManager exists for not only processing the - configuration file, but also for dispatching invoked action events - to the EventBus, and for controlling the enabled state of - an Action. When a new menu item or toolbar button is - desired, first it is added to the action.properties file, - and then the code to respond to it is added to the - EventResponder (see below). - - -

Commands and EventResponder

- -

At some point in the stages of event processing, an event may - require the data model to be modified, or some other task be - performed. The Command interface is defined to classify - code which performs some task or operation. This is distinct from - an Action, which is a user request for an operation. A - Command class is the encapsulation of the operation - itself.

- -

When an Action generates an ActionEvent, the - event is posted to the EventBus which delivers the event - to all interested BusMembers. It eventually makes it to - the EventResponder instance (registered at the - RESPONDING interrupt level), which is responsible for - translating specific events into Command objects, and - then executing the Command object. For example, when the - user selects the "Open..." menu option, an ActionEvent is - generated by the Swing MenuItem class, which is then - posted to the EventBus by the ActionManager. The - ActionEvent is delivered to the EventResponder, - which converts the ActionEvent into a Command - instance. The EventResponder then calls the method - Command.execute() to invoke the command (which displays a - dialog for selecting a file to open).

- -

When adding new Actions or general tasks to the - application, a Command object should be created to - encapsulate the behavior. This includes most operations which - modify the state of the data model.

- -

The purpose of this encapsulation is to allow the clean - separation of making a request, and servicing a request. Due to - various conditions in the application state, the actualy response - to a request may change, as well as who services it. This - design approach facilitates that.

- -

Data Model and Views

- -

NB: This part of the architecture is not fleshed out very well. There - needs to be a discussion of the degree to which the Antidote development - should be able to impose changes on the Ant data model, and to what level - that model should be mirrored in the Antidote code base. The coupling - between them should be kept low, and at the same time changes to one should - affect the other minimally. Still, features like property change events and - bean introspection (or BeanInfo) may be needed to be added to the Ant data - model. Right now the data model is encapsulated in the package - org.apache.tools.ant.gui.acs (where "acs" stands for "Ant - Construction Set").

- -

Application Context

- -

In order to keep the coupling amoung application modules to a - minimum, a single point of reference is needed for coordination - and data sharing. The class AppContext is the catch-all - class for containing the application state. Most modules and - Command classes require an instance of the - AppContext class. Because all state information in - contained in an AppContext instance, multiple instances - of Antidote can run inside the same JVM as long as each has it's - own AppContext. (Interestingly, two instances of the - Antidote could conceivably share an AppContext instance - through RMI, allowing remote interaction/collaboration.)

- -

Configuration and ResourceManager

- -

Full "i18n" support should be assumed in modern applications, - and all user viewable strings should be defined in a configuration - file. For Antidote this configuraiton file is - antidote.properties, which is located (with other UI - resources) in the subpackage "resources".

- -

To aid in the lookup of text properties, as well as other - resources like icons, a class called ResourceManager is - defined. There are various convenience methods attached to this - class, which will likely grow to make looking up configuration - values as easy as possible.

- -

The organization of configuration properties is based on the - fully qualifed path of the class that requires the property. For - example, the "about" box contains a messages, so it looks for the - property "org.apache.tools.ant.gui.About.message" for the text - message it should display. Therefore, the ResourceManager - method getString() takes a Class instance as - well as a String key. Please see the - ResourceManager documentation for more information. Given - this support, no user visible strings should appear in the source - code itself.

- -

Other Resources

- -

Other information about development on Antidote:

- - -
-

Copyright © 2000 Apache Software Foundation. All - rights Reserved.

- - - diff --git a/src/antidote/docs/gui-ideas.txt b/src/antidote/docs/gui-ideas.txt deleted file mode 100644 index 7d1900594..000000000 --- a/src/antidote/docs/gui-ideas.txt +++ /dev/null @@ -1,335 +0,0 @@ -(NOTE: the following text is a vision for an Ant GUI by Stefan Vaillant - called Anttool. It is included here in the -Antidote docs section as it provides a better vision for what the GUI should be -than the current requirements document, and should be considered an integral -part of the long-term plans for Antidote. Simeon Fitch) - - ------------------------------------------------------------------------ - -******************** -**Anttool Proposal** -******************** - -By: Stefan Vaillant - ------------------------------------------------------------------------ - -Anttool Overview: ------------------ - -With Anttool a user can manage the build process for existing ant build files. -By using the grafical user interface, the user can adjust certain properties to -his environment, start and cancel builds, monitor their progress and call -appropiate programs to fix problems. It is not possible to modify the build -file. Instead, an external XML editor or antidote should be used. - - -For inexperienced users, the tool provides an easy and efficient way to install -open source software: load software to the local system, build it and install -it. The tool can be used without any knowledge of XML or the ant DTD. Instead, -the user just adjusts the relevant properties to his environment and starts the -build. - -For programmers, the tool supports the basic build/test/edit cycle. Given an -existing ant build file, the programmer can use the grafical user interface to -execute individual targets, browse the effects of the build and start editors to -fix problems that occured during the build. - - -I general, anttool is ment for users who see the build file as a black-box: They -are not primarily interested in the internal structure of the build file nor in -modifiying it. Instead, they want to call ant with the appropiate arguments and -want to see, what is the result of the build. - -Therefore, anttool only shows targets and properties that are relevant for these -users. Tasks are not shown at all. - - -Anttool User Interface: ------------------------ - -The user interface of anttool is devided into two panels: The "Control Panel" -shows all loaded build files and their targets. The "Project Panel" shows -details for one project, including the logging information from the last -build(s), the editable properties of an build and relevant files of that build. - -By default, the user interface does not show targets or properties that have no -description or a descriuption starting with a ".". These targets or properties -are called "hidden" in the following text. - - -The Control Panel: ------------------- - -The Control Panel shows a tree with all loaded projects. For each project the -non-hidden targets are shown. (Anttool can be configured to show also hidden -targets, see Configuration below). - -If you move the cursor over a project or target, a description for it will be -shown as a tooltip. - -Two icons are prefixing the name of the project or target: one is visualizing -the state of the project or target, the other is a button to start or cancel the -project or target. The state icon can have the following different colors: - - green if the execution was successfull. - - yellow if an execution is needed because the output files are - out-of-date [not possible with current ant version?] - - red if the execution resulted in errors. - - white (i.e. nothing) if the state is unknown -[Alternative: what about buttons labeled with the target name? - The button is used for start/stopping the build. - No tree required then. ] - - -If you select a node in the tree, the Project Panel (see below) will show -details for the relevant project. - -If you right-click on a node in the tree, a pop-up menu will show the following -commands: - edit: open XML editor at selected element - open: in new window [? is that needed] - - -The Project Panel: ------------------- - -The Project Panel consists of three tabs: - -The "Build Log" tab shows information about the last build(s), the "Properties" -tab shows non-hidden properties and the "Files" tab shows files relevant for the -project. - -The Build Log Tab: - -In this tab you can monitor the build on detail. A tree shows the executed -targets of a build, their tasks and log messages for each task. The start time -is noted after the build name. - -In the pop-up menu, you can choose from the following commands: - edit: open editor for shown file at shown location. - show log level->Error/Warning/Info/Verbose/Debug - (only the items possible are shown, - see configuration.) - -The Properties Tab: - -The properties tab shows all non-hidden properties of the project. (optionally, -also hidden properties can be shown, see Configuratin below.) - -Each Property is shown as follows: - : -where - is name of the property, with "." and "-" replaced by " " - and first letters capatilized. - is a text field to enter a value for the properts. - In some cases, special benas are shown: - Name ends with ".dir" => provide a file chooser to select a directory - Name ends with ".lib" => provide a file chooser to select .jar file - Name is "build.compiler" => provide combo box with possible compilers. - [selecting JDK's seems not well support in ant? - If you have e.g. JDK 1.2.1 and 1.2.2 installed, - how to easily select the compiler version?] - Name ends with ".jdk" => let the user select one of the configures -JDK's - [more general then build.compiler, but supported by ant?] - Name ends with ".file" => provide a file chooser - resets the value to the (default) value that is -contained in the .xml file - -All values entered are save in a file -$HOME/.ant/.property. (See also Configuration.) - -If property values are changed, then ant is called with -main("-Dproperty1=value1 .."). - -[show also (class)pathes as property, use id instead of name? But: is that - required? Why not simply define individual properties for the required - libraries and combine them then to a path. ] - - - -The File Set Tab: - -This tab show files that are releated to the project. For each non-hidden -fileset of the project, the id of the fileset is shown and all files included to -that fileset. - -If you right-click on a file, a pop-up menu is shown with which you can start -programs to deal with these files. The relevant configuration information is -extracted from the existing operation system settings. - -[or: one tab for each fileset?] - -Repository: ------------ - -[This needs some more work.] - -Anttool also simplyfies the loading of source files form the web. By using the -repository mechanism of anttool, you can perform the complete workflow from -download to install with just a few mouse clicks: - - select one out of the Repositories from the main menu. - Anttool will query the server for a list of up-to-date - packages. - - select one of the presented packages - Anttool will then download the selected package: - In case a .zip (or similar) package was selected, - the file is downloaded and - unpacked to "/Users/". - In case a CVS repository was selected, - the files are downloaded to "/Users/". - - Afterwards - a file with the name "build.xml" is searched - and loaded to anttool. - Optionally, the file "$HOME/.ant/default.properties" - is copied to "$HOME/.ant/.properties, - overwriting the defaults in the downloaded build file - with your preferences (e.g. installation directory, JDK, ...) - [copy only relevant properties?] - - check if the properties in the selected project match your intention. - - press "start" on the project - - -Anttool Configuration: ------------------------ - -The menu "Tools" in the menu bar allows you to adjust Anttool behavior to your -preferences and environment. - -The following menu entries are available: - -Configure JDKs: - Can be used to configure the JDKs available - on your system. The configured values are offered - for properties that end with ".jdk". - - The screen offers a table to edit a set of names - and pathes. - By pressing "rescan" the system is scanned for new JDKs - by consulting the installed software. - - [Should there be one combo box - Anttool JDK: - that indicates the JDK that should be used to run ant? - Should that be even project specific setting? - ] - -Configure Repository: [better name?] - Anttool is aware of certain places where Anttool supporting software - can be found on the internet. - These URLs can be configured here. - These repositories are offered to the user when he selects - the "Repository" menu in the menu bar. - - The screen offers a table to edit a set of names - and URLs. - -Configure Libraries: - Can be used to configure the libraries available - on your system. The configured values are offered - for properties that end with ".lib". - - The screen offers a table to edit a set of names - and pathes. - By pressing "rescan" the system is scanned for new libraries - by searching below a directory. - - -Preferences: - show hidden targets: bool - [or: offer addition menu to start hidden targets?] - show hidden filesets: bool - show hidden properties: bool - - log level used for build: ... - number of log files saved: - number of log files shown in UI: - - Directory to save property values: - - file name remembered in file menu: - - checkig for new files in filesets: [seconds] - autoload new buildfile: [seconds, 0= never] - - -General features: ------------------ -The menubar menu's are - File - Open... - Close - ------- - 1 buildfile.xml - 2 .... - 3 ... - ------ - Exit - Repository - Apache... as configured - ... - .... - Options - Configure JDKs... - Configure Repository... - Configure Libraries... - Preferences... - Look&Feel... - Help - Antool Help... - Ant Web Home calls netscape - ----------- - About... - - -Build files can be dragged and dropped into anttool. - -The set off loaded build files should be saved on exit and -reloaded on restart automatically. - - - -Technical questions on the internals of anttool ------------------------------------------------ -- How to detect if a target needs to be run (yellow color)? - Seems not be possible currently. - One solution [what will ant 2.0 contain?]: - Define new abstract class "MonitoredTask", inherited from Task. - Copy, Javac, javadoc, etc inherit from these. - MonitoredTask defines: - execute() { prepareTask(); if (executionNeeded) { perform() }; } - executionNeeded: boolean // signals that I need to run because output is -older than input - perform() - performMap() // what will happen with each file, i.e. - Main.java -> Main.class - UI.java -> UI.class - ... - or - Main.class -> lib.jar - UI.class -> lib.jar - size of Map should be equal to number of steps reported in loggin. - - Only "executionNeeded" is required to add a yellow flag for targets. The - performMap would be nice to have. It could be used later to show a finegrained - graph (or matrix) about what is happening during a build. - - Add configuration item on how often call the funtions (i.e. how often to do - the polling.) - -- How to do the calling of the external tools? - XML editor? (how to generate the dtd? How to execute "antstructure" - withour changing the build file.) - How to simulate the windows functionality for e.g. open java source with - JBuilder? - How to read the registry information? - How to do DDE calls? - -- is there any free installation tool for java? - (to install anttool itself) diff --git a/src/antidote/docs/gui-requirements.html b/src/antidote/docs/gui-requirements.html deleted file mode 100644 index 079684a66..000000000 --- a/src/antidote/docs/gui-requirements.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - Ant GUI Feature List - - -

Ant GUI Feature List

-

Version 0.4 (2000/11/06)

-

Authors: - Simeon H.K. Fitch, - Chris Todd, - Clint Combs, - Conor MacNeill, - Matthew Kuperus Heun, - James Duncan Davidson - - -

The purpose of this document is to capture the proposed feature list for - the Ant Graphical User Interface. This is not a hard requirements - specification; you won't find the word "shall" in it (other than that one - time). :-)

- -

In general, the purpose of the GUI is to allow the quick generation and - modification of Ant build files, helping the user define their build process - and track down build problems. For it to be successful it must make the user - more efficient and productive, insofar as their involvement in build - management and use of Ant goes. It should first address the needs of the - novice Ant user, and then add abilities for the "power" user. This does not - imply that the UI should be "dumbed down", it just means that usability - should come before slick but complicated features.

- -

The features are in a loose order of expressed interested by - contributors.

- - -
    - - -
  1. Build Management

  2. -

    Once a build file is created, the user will want to start and - stop it from the UI. This will serve both as a testing facility as well as - a general compile tool. Monitoring of the build can occur through the Ant - BuildListener interface.

    -
      -
    1. Build execution.
    2. -
        -
      1. Initiate a build starting from any task.
      2. -
      3. Stop a currently active build.
      4. -
      -
    3. Build monitoring.
    4. -
        -
      1. Provide feedback on the current status of the build.
        - This is where you can have more fun with the directed graph view, - where the current build activity is highlighted on the screen, making - the whole thing behave like a dynamic state transition diagram. You - can then highlight the node where the build fails, etc.
      2. -
      3. Show log messages from the build, allowing the user to determine - the task they originated from.
      4. -
      5. Provide the ability to filter logged messages, adn to display the - messages in color codes corresponding to logging levels.
      6. -
      7. Allow the installation of custom log listeners
      8. -
      9. Record runtime statistics to determine bottleneck in the build - process
        - This may be of limited use, as calling <javac> probably takes - the most time. But maybe not.
      10. -
      -
    -
    - -
  3. Build Wizard (auto-configure)

  4. -

    To make starting a new project with Ant as easy as possible, the a - wizard type of UI can be used where the user provides some basic - information and the application deduces what a default build.xml file for - it should look like.

    -
      -
    1. Project attributes.
    2. -
        -
      1. Provide input for the required project attributes.
        - This probably means project name and default target.
      2. -
      -
    3. Project directories.
    4. -
        -
      1. Ask for the source directory.
      2. -
      3. Ask for the destination directory.
      4. -
      5. Ask for the necessary JAR files.
      6. -
      -
    5. Project properties.
    6. -
        -
      1. Provide a default set of project properties.
        - In here would be things like classpath, build.compiler, version, - etc.
      2. -
      3. Allow the user to add to or remove from properties the default set - of properties.
      4. -
      -
    7. Task creation
    8. -
        -
      1. Provide a list of "standard" tasks to insert into the project.
        - This would be tasks like <javac> and - <javadoc>.
      2. -
      3. Generate default init, compile, javadoc, and clean targets.
      4. -
      -
    9. Creation review.
    10. -
        -
      1. Provide a review of the contents of the generated build.xml - file.
      2. -
      3. Allow the user to go back to any step in the process to change a - setting.
      4. -
      5. Prompt the user to save the build.xml file.
      6. -
      -
    -
    - - -
  5. IDE Integration

  6. -

    Components of the Ant GUI shoule support plugging into IDEs and code - editors.

    -
      -
    1. Emacs
    2. -
        -
      1. Provide support for launching builds from emacs, and notification - of errors.
      2. -
      -
    3. JEdit
    4. -
        -
      1. Provide JEdit plug-in.
      2. -
      -
    5. ProjectBuilder
    6. -
        -
      1. Provide integration with OSX ProjectBuilder.
      2. -
      -
    7. NetBeans
    8. -
        -
      1. Provide integration with the NetBeans IDE.
      2. -
      -
    -
    - - -
  7. Project Editing

  8. -

    The Ant UI will be centered around the project file. All operations of - the UI will be on a project, whether it be existing or new. How - sub-projects are handled (i.e. via the <ant> task) needs to be - determined.

    -
      -
    1. Load a project.
    2. -
        -
      1. Read the native Ant XML format as defined by the Ant users' - manual.
      2. -
      3. When possible, automatically handle changes in the Ant element - set, or at least changes to the task set, as well as the valid set of - attributes.
        - Possible approach: load "default.properties", use - introspection to discover attribute set, then reference some other - mechanism for attributes that are manifested as properties. -
      4. -
      5. Report errors in the XML source.
      6. -
      7. Provide a list of recently opened documents for - quick reloading.
      8. -
      -
    3. View project contents.
    4. -
        -
      1. View the project in it's XML source format.
      2. -
      3. View the project in a non-source format.
        - This is left ambiguous to keep the implementation out of the - requirements. The different presentation formats are likely to evolve - over time. -
      4. -
      5. View the project properties.
      6. -
      7. View the project contents (tasks).
      8. -
      -
    5. Modify a project.
    6. -
        -
      1. Edit via the XML source.
      2. -
      3. Edit properties via a property sheet.
      4. -
      5. Provide facility for editing XML references used in the build - file.
      6. -
      -
    7. Save a project.
    8. -
        -
      1. Save to the native Ant XML format as defined by the Ant users' - manual.
      2. -
      3. Default save name is "build.xml".
      4. -
      5. Verify before overwriting existing file when in "Save as" - mode.
      6. -
      -
    9. Create a new project.
    10. -
        -
      1. Define a project name.
      2. -
      3. Define the default target.
      4. -
      5. Define the project base directory.
      6. -
      -
    -
    - - -
  9. Task Editing

  10. -

    Tasks define what it is that Ant is to do, and will be the object most - edited in the UI. Task is to Paragraph as - Project is to Document. -

      -
    1. View tasks.
    2. -
        -
      1. View a sorted list of tasks.
        - Provide sorting based on name, depth in dependency tree, how many - tasks depend in it...
      2. -
      3. View tasks as a directed graph.
        - Need a good graph editing library. Looked at GEF but it still needs a lot of - work, to make it easily reusable. Long term status unknown.
      4. -
      5. View tasks as a dependency tree.
      6. -
      7. View task as a properties sheet.
      8. -
      9. Provide dependency viewing, both immediate and "flattened" - views.
      10. -
      -
    3. Modify task.
    4. -
        -
      1. Allow editing of a task via a property sheet.
      2. -
      3. Allow editing of a task via XML source.
      4. -
      5. Allow the graphical editing of task dependencies
        - This is where you can go hog wild with the component wiring type of - UI.
      6. -
      7. Allow non-graphical editing of dependencies.
      8. -
      9. Provide detection of circular dependencies.
      10. -
      11. Facilitate definition of conditional tasks with evaluation - editor.
      12. -
      -
    -
    - -
  11. Build File Source Editing

  12. -

    This section listes desired features for editing the Ant build file - directly. Some components of this could be met by a generic XML editing - capability, but other parts will be Ant specific features.

    -
      -
    1. XML Editor.
    2. -
        -
      1. Provide syntax higlighting.
      2. -
      3. Provide auto-indentation.
      4. -
      5. Provide smart tag completion.
      6. -
      7. Provide visual highlighting of syntax errors.
      8. -
      9. Support auto-reparsing of contents and model update.
      10. -
      -
    - -
    -

    Copyright © 2000 Apache Software Foundation. All - rights Reserved.

    - - - diff --git a/src/antidote/docs/new-module-howto.html b/src/antidote/docs/new-module-howto.html deleted file mode 100644 index db0140847..000000000 --- a/src/antidote/docs/new-module-howto.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - Antidote New Module HOWTO - - - - -

    Antidote New Module HOWTO

    - -

    Version 0.1 (2000/12/18)

    - -

    Authors: - Simeon H.K. Fitch -

    - -

    Introduction

    - -

    The purpose of this document is to provide an overview of the - basic steps one must undertake to add a new module to - Antidote. Please see The Antidote - Design Overview for information on what a module is and how it - fits into Antidote. If you've already got all that, then read - on!

    - -

    NB: Please submit updates and criticisms to this, particularly - areas that were unclear, missing, or difficult to follow.

    - -

    1) Specialize org.apache.tools.ant.gui.core.AntModule

    - -

    All modules must inherit from the AntModule - class. This will probably irritate some of you, but it essentially - enforces inheritance from javax.swing.JComponent and - provides encapsulated handling of the AppContext instance - that is so important to this class.

    - -

    Your module is required to implement the - AntModule.contextualize(AppContext) method. The first - thing this method should do is call - AntModule.setContext(AppContext), and then it is safe for - it to begin constructing its display, using whatever resources it - needs from the given AppContext instance. Think of this - in a similar manner to Applet.init() or - Servlet.init(). - -

    2) Update - org/apache/tools/ant/gui/resources/antidote.properties

    - -

    2a) Externalize All Displayable Strings

    - -

    All displayable strings must be externalized to the - antidote.properties file, and looked up via the - AppContext.getResources() method after the - AntModule.contextualize() method has been called. Follow - the naming convention currently used in the properties file and - you should have to problems. This task should be done - during development of your module. Under no cercumstances - should your module be submitted or committed without this task - being completed. Remember that Antidote has an international - audience.

    - -

    2b) Add Module to List of Auto-Loaded Modules

    - -

    Look for the properties with the format - org.apache.tools.ant.gui.Antidote.xxx.modules where - xxx is one of {left | right | top | bottom}. Depending on - where you want your module to appear, and the order that you want - it to appear in relationship to the other modules, add the class - name of your module appropriately. If multiple modules are listed - for a single property (via a comma delimited list), then each - module will have it's own tab in a javax.swing.JTabbedPane. - -

    NB:This goofy way of constructing the main screen will probably - change to something much more general (but not as general as, say - BML).

    - -

    Run it!

    -

    That should be all you need to do, at least to get your module - plugged in. Check out the source code for - ProjectNavigator and PropertyEditor for module - examples that use the various facilities of the Antidote - framework.

    - -
    -

    Copyright © 2000 Apache Software Foundation. All - rights Reserved.

    - - - diff --git a/src/antidote/docs/uml/index.html b/src/antidote/docs/uml/index.html deleted file mode 100644 index 4f685e9de..000000000 --- a/src/antidote/docs/uml/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - Antidote UML Static Class Diagrams - - - - -

    Antidote UML Static Class Diagrams

    - -

    Version 0.1 (2000/12/19)

    - -

    Authors: - Simeon H.K. Fitch -

    - -

    Diagram Images

    - -

    The following UML static class diagrams were generated using Together/J, reverse engineering the - existing code. They are no means guaranteed to be kept up to date, and are - only a snapshot of development in progress. Their purpose is to help give - people a quick glance a the class structure of the various packages that - make up.

    - -
      -
    1. org.apache.tools.ant.gui
    2. -
    3. org.apache.tools.ant.gui.acs
    4. -
    5. org.apache.tools.ant.gui.core
    6. -
    7. org.apache.tools.ant.gui.command
    8. -
    9. org.apache.tools.ant.gui.customizer
    10. -
    11. org.apache.tools.ant.gui.event
    12. -
    13. org.apache.tools.ant.gui.ide
    14. -
    15. org.apache.tools.ant.gui.modules
    16. -
    17. org.apache.tools.ant.gui.modules.console
    18. -
    19. org.apache.tools.ant.gui.modules.edit
    20. -
    21. org.apache.tools.ant.gui.util
    22. -
    - -
    -

    Copyright © 2000 Apache Software Foundation. All - rights Reserved.

    - - diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-acs.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-acs.gif deleted file mode 100644 index 215b26dfb55a526a66d91f1b075925a35f6e1d9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41605 zcmV)CK*GOANk%w1VS@&>1oHp@|Ns9000000fB*ph06;(h00000000000000000000 z00000000000000000000EC2ui0D}g#1ONp75XecZy*TU5yZ>M)j$~<`XsWJk>%MR- z&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuX#v&*-#z&2GEj z@VIs;jK6uCK7Mva__cwzs&sy1Tr+zQ4f1!o$SH#-sts%FE2n&d<=%($mz{*4NnC z+S}aS-roVo;+Ej$=I7|?>g(+7%_i>g^7Hid=;L?c_<;KR{*3+p?FlG?pui*s53Wh5 zkPgF!5cNEa_+}ypixhic%=l#^M>PHc1PJ&@(qTzCAxDnzc#=lSmSb4L1oLvH%`-A@ za;aHRCl8)Jwd4$n1t`&@MUk2@`eCS25=@^)aVix`)T&q!W~C_->Q)$6ziJh`vn$!N zL#U!P5_W^ywH4aJ4e~bQI{hp*l-8GDm$x|AzE0#x`-*j&Vbr$8_Jb)m%hyVaceSiSL^ug zFSOy^;Y#nm+%Gw4#>q`rejR=Kh2X-o_q6$XuXp9md*eMGUOIEx$irYId4R-A{5dOE1apQT%-g*TVsGNb-DJb1@1}112d;nIs-An|6#~^|T zI{4s+8!|{AhvrR~+GFw^Xy0-y9;c#)yum2mLKIpkSXOs+s3V9TdPrh|I|4acjW!mk zfq=hY7G#eqKsV5D5jz?YUv`FYM6Pa3TYmb;b`V{ znCYJ5$;s(;L{4gFrMh&-B#%v&sHvMmp6cp*R>rr`JCN4LB7|TzO6HS?I6K{sxPSsY`CDC$xfkT5PMZ+7{`UBkt;`i@biT;jPXhAt|#ZlY8V`Nu7r}-rE>=B_C5A# z(GEOlenk9d!vd=pzQo@z`el33JES~V&6|pCkIV;1z0KA;9r;ujCg*``VDgLKxWHFH z;hFDz0vVtWBDTP8@#;lnQs8{%XTkcR_?D=<;rR}PIb%=33icyHeFtk; zl+gYZeKeJzotV4;!f|nOtYak| zHb(@i5q^7AltiFdGe-i~Jm!P@9VP3M6+KOTfr^O>%4)R$4yOtwU__SPx(U+f;Ft|EovpQP241-IsPAs z&Pdv`G4;G?@HA?)g4VL3>Vr=2RD(#aHXR12z5hf36s#UWSg{DUvCmrUWPwT7bQ-jze)7mZ@rWPlk@PyHHL0P7 zBFb>ar?NA+EN1t08j86`pZw9`Gj}-4e{Szz63vVe8+RlRO0R#ev*d0e{x)2p9d>ez zwc8(^l)ET8_qZI=-!?-FEY5z^pL;!=8s#Mp6d;9i&B z0KM+I?q}VaO+z*By}oHB=DfMG=E~Q*v=J?NM>R4kR(HA*(jT7=%H0T`Cp!M34rei3 zQW>@P!i+TGqe86A@Kow_-rLP32 zjOj;C_4*jT`{l2H)5V&VIz__7P0M@-?BCjWc9%G2B#o_$XoyyL&0&71YAq7T z$m;gTDJ)))UFg1f!LXbDLgB>HlOIdB5K}sCD3U{5+E9zo#tCs=0ORX!+=~BwBSVU7@ta?V1$x{)4XPOyE~TW753!7{bemD z`^NZHJ|k1H8*Vk2kxD-gH8$TjsrVd9CLw$gFog zxM`2->pnhqbDNw*I@b@@P`vTFZ^%oFnNy&2ZcCo0`|f|QmwJQl@VBiu#z$Ygg^y+U zQD-|uc&c{SFOO(?TKyjx7rEqDjc|)6I^`Aadoq!ZaC)!3^s28p7tId#epNil&)qt< zX^-)a$9m$0=RHMVKj<7~-QOW^{qc!EvN^BZqW1kgb78kSDAVw?y`~_^b$Rf96U$4o zx3T9xPsEGZR@I|_^xkFZZLcE|)g$#TvSAPPh5oym+nxrp^64n@^IMlv+C3NK12^y#oEGG)N_dJj$dYTq5 z-#2aArYf943qKfyNSK65 z*bW;bZb=bkIDvtrhZh`ZAs_e@Rab;0qgmOsgkJcC_COm|m@izYg)q}rU;~C~xQ0|S zh5&MfUE_vkSP5{56eDPba+n=;m?wEShmx>|X(NC`*N3YCh(VEsemDw-NH>CLBZ$aW zXh?{O=m?9b6L**|l2}t^IElefi8pbH{%@FxI<<+Mm?Wf#T(d)jN~10YMrAvPKkD~y z7$aa%Xd8R;h^6R(TTo^oNP$){e>;$T>C%XJsEUTOGQN0V>F0_vIE73GcgkpsM}UjD zxCwhDjQ6!LPY8{%rHz;)fPti3b;J^f;fXOJihv;#-r^*YW@JUzj`_Dfo5zkj7LUt@ za;8>eUj|%qVuSW5VC(2^o`H_lNOjBeLNho+IA&^-24Jb?f@HU8+NgM!=4mlvkHvRd zmFJKQnOf5}N)ri#`glB!rb`NRUVA zIc>Ro1-N2hR%R=hmjmaOX%}r<8F)TNctV+Ldl_xTBAIfzLM6FBQ`U9{XqBKPi?Ohl z(q)k{2$!cTX}6!R|KRPn3I5g1L#kc$(hS`Yb*$OzsX*D zmv@KW}SoobY&p7nyMXc!LXbfBjdU`}j<=RFNWPr6psXK#7}9`l17YTo0*(t_hM_x|kiw zPtFCAO!AewF=AF~n=^=)C1{Zk*ZL1$G3ss3uJ2`fnjpL$=2igDr?X8V{s{3vmcT35Q&X{h+Btk_?`LW{6!Kb+dB zm~ez_xU0PSg%0|vP5@rvnWjF|tHye)#!9TXY6qbzHpGaV-J?{>`W4Mu65_e6icqch z^sJ$Hs~n@PA91bN%2TH}scSQ>TLG>dA+Fc+ zRgu`Q_)3ZT%4Mm@s{b0Wuu!iN0gBqeu8ugc2um{%n`Gw-uwSz#bLM~Jn3mCKTV$N`qBzB^4GXeWVH`!~fHL`CJBT4F8?sS|jBH`D!Xk)=0c+3rWUhIa9QSGd zd|qMmTEcJND3LVpr^Ci zLbW&-f&j>}>&bN7$UJe@U2$WzF3Gc52DJN$qU{!yM{BQgd$nxlwo7?zU}>UGM?dok zuSlz1b83GY2BD}XrSA!~ZqjX&M=b~mgOtX1{;0M37dU-ensl3(ha{B$sg%wK6AtUQ zYbq;-X_+pophrrS4UtyhWi6%~bs-91Qny|8g>?mbxKCSXd26;Sp|oAYv~xLyhBSRY z`lhL(u&eaBs>=^Lh<4~%o`+<2)aRFo8-naYgFt$61Q@3GwthT1v?ThJ1UkMA8n*`i z8@ftbxe3~g@2R)Y`$W<^z3BtEYfHJPslKGky?mRv{+Yc38jg(WN{h;V(E4;+3Ac)Bf-y84?B{QIHUyQ9C`eYbgH9#y+Cx`MAqqYI3s z!Us+?%zW-=y+0be?t5jSX_%#Iw2})_6wIR`jKL$k6K!dypBaBIXqxm(cil^}?MbBV zo1-S&cGZ@{ih9Gl3wiT%UK}mZW8rNk38-3I(vt=+0ELiZyRdM4A;de&lX`ZI+5XNZXv0zVwk+@& z0qxCSr)GNFm4hoJBG zlBHn;)SlV0NIH*~E7Kr-ZJP^`or^J9jk?@+yQ#;++{KgytiA{wzG#ffd#%-;!PUHY zPTHHogKaHj>8xb!j`Qi)F+7vs=GGB6mUo+Hw<)Ayd}dtP(-)E0&D78Y+Sb{(mxDLC z224fQ37Ptt3Q4Wl9f7=xOOX?tXMiW!PO#;mxevRSsc+c$DfD!+v&S)>+99h zjnt@ZtxKJxP7Ayr3DrINfJ-;N^(BJUjoUvUNL>uR{tVa={uP#EO~Bii!egwQwaLYu z+1CyXqSbPp66|-YJ)nAR%vShE@SSu&iFpf^qw1-<;CfqAdcSxnZv58e5ZNT4!*9nHOOgHNFrUwz^SJss%mEX#2dHxh%2{Js>;nwXKEL2Xv*6`@ena+iR_pgZzE~H$#~uCV~9iek^JKeb0%a zH6sfa#No)FaNA;@1(oQr!@SV77#Wqk8ChP+%Y5kmjR58!)6J9$s*euoetuJiPU%)) z>4bslI>qCtGtHnbN2q?--fZd%yXvXV#*-fCh!yD#3+u6t2cm8%q@Iqheqy+u>&y!4 zyN=klu7|-c>?SemTh7au%VW15{=#SZSpdonODxNTW|D`x88{Fa*f%$o$cW<8Qzv` zf!8h0a2<0h7xz#ub2eJ{b}yLy`?JHz+nvwAsk*kN@8(w2C&&re72Mm3?7go~<$zy+ zD4pWx+)nWeZS|`58CrYTeVK31w#TjDQxEW~;QOBst$1&}l27+6M%Ac4+ShB|49el$ z{z27_U&T$tu?fR(sz~84zKu-Z-2Scgo-_ahz&N2d;Z*LKRZqB5zu>C$EFQo7;x?pO zx8&O0s5N@P5CCMD63|;U=DY9d3%;zhPBc|lwsl`Po&-TgvHQeHOYBo0NchVUjl2>r z2_!0)LyFTjrB$U-VD5zq3KY zLPH>}L&ZhLM#o3UNXbb`sWmq@6AeG5Hl03B9#Bs{IJV7A(vZ$kQr6EMD81N_z(88c zT&zT@v?4k@K$0L}p<&d{-y>7Y+PG9?U1`Lc6s~FPZ0+qA-xcp|TJW%OZgc6Z>hpE> zcK3Jq_#!p=Z`As)a{R+|{xq1&Qnik)vLg_hGlIb~IKgy7RT_W@>GVmq&rm-LT)J4~ z*fCzYI_yFgJTubcNpieUu4LKL<;#)|L3Nx7Q>H$fUNH8ufpZcPkvVlHx+c`kaYdrGEE^J!(wnKhG1yxB9}%P~5CUaYll zA;_dLk5=8fWN6p1Wm9H7+qP46TW^y-tP%C@(!hlmIy~I?@ujtqFTVi08*|CUC7dRc z8v0e`*N02j-rc+YyX@a>bI&RsFnIvf!&o=ZG<6fWjA-(odo-yHOF|&rXUZ<44G@8(&uRSPJCheOg8TcV*=dl?t6UK<>WMb7q? zy8eCMkLH(~ra9?eqc(f+*bElu?NRkcJW{M5aujZm!5x~J5nW+&?tms&np%Pdr*(0_ z^QH%7pkP+I>ZB7DxaGpsy`pTwb3vQwr}_T-#I_+<(q-FoxLs(YPY2iU+QSXU^VpNu z%y8Nh$NlLim)`gHmo*nUcj@<@hx*cUDtL6c`4ChRaaLH_{caU#pW`)0}2CL+MUn zhofMbyoWs2b?buo8=jh+XSem;jeC_rAQj-Jz((jp6>0O^td7)*iI8e|sw3Uw{wjyU zOjMAEm9v=RfLM?cW)2g^8bb?V_{9FK2~`3y$qXZMxEb0?i$0WCt^$Zf9D=G|F|uN% zct#OjvF}(QoL}w6hqWnayZ%TrgFsNoYCu7b;Y7?F7L=iio#!4=^GluG{LOJFBxx0I=5uW+v zCwTh#!F@{dpMx0Z3+y>iMFGm{BlNzR^DP<}6TKW!=zEm_TC8tbXYEu-^6sIZ8=uUByC7)(Rr!KhYK!^1U z93=${fO@DJ2PBA4h-pSlC8!Da)s3MBwWC*xk_82d$5mOCk1^FMHK1dgtEQOMfyX4t{1OrckMhds^Vk6$eVAaJ!w0~DuN z#VclUi(UL;7{^$~Gp2EkZG2-K=UB%(7Vm%l3tJ9D5N`GhGIO=NumUe`VT~$sRLf_) z0y4RQeDYusr#wauFWCcGZcdLiEYtEfj%^19qN7ACK>iD!EEHIN(ScmYV>riI&U2=7 zo$Y+*7oSzDVJ>i8FE~9Tr}@u9CNYBTSZF!A3&grZLZ43;E)sq02L1i=J^8%gMi07! z?LBi67rmn4va_ht7JFiQz zjap^*wupVB_A=YeU2=CB*sY!R6n%>@F50$-V-{EBynR~pv53;3{t`5n(udiEd4w&l~96wD}{NPVu8hT;)-BXwreb z^ld)95n2zY)hms4ssq#OUk1B1xlXpBhy68ESG!T$P8_3WUFds$dzj*0_d||d!(~V2 z*&ma3yr+cifk!yu(R6pS&mHH6r|94r5B0|jey@H%1m&@*cL2X!4OG>zZhv%bU&~swIlO-5n26%m0S%XX~p{{k-gl zqm&$SMLzDyyjC+k==7*3oa)a>`rPyW9{M=pev(Y?d_c+&c;8R?N6GlL$U!G8}nXwXZQUSV=b+ zn?s1!kS^24KgJJEG8C2tl`VNCxkE}%ePq*83}{5E^MAi(==DhJXZrT zDmyYvvqQm>HzrglCzL~3$T$8hxsfPT$wmb#U$ghp;^K}WS0e$Ej2tJ>3X!j z0mblHqExgh#Ze`dLB&xtKn^-G`u!KWJ5`OK0>=8xzfW}`@>!0 zK{czjWz5Ds6tn~rM-wW;TU?hxL@>2-v`>RXR~(`RyG9Kk(A4vTKVsWayIt)HXX&HG6Cr$EkyF z>%a$;o=}Xx{}akonWPypk2Flal#gAHjxK*B*^pIDa53=#{^9k zX-(mJ%|n{ZP|8Wz^vK*SyxsK7Oza5Td?MN8tJLgG3mMM6Do(syO`Jkbw4zPpBoOD^ zGw6h(;Cvt4{xnYIj7|iZPV%bGC%Vph%Ff>0PVSV>^E4})WKNs%PV@uM^t6)rw93y! zDDiY5^4v}HoKO02Pu7G_1-eg*0=x=*kfd6^*(*N96usu_iPdUQg=;Pag+2o%J&*uU z{`8LbfWXmouBGBUQ^U~s5l|Z-(bS`d#x%Fi(@4Oar3od?3=~W_@T%TJDZ9d|`pi(A z+0YlgJ|N&WqY_c&G0_+x(&|eYub>pARMPr;O8FDCptL`A>!SCgQl4a$pk$QOjKH+a zwr(3nmpn_-x>EYo(H6|T*cw4xGcB*=LVKgX&>JivO&%jPsI<#2Fq}d2YDpm!!ynbb zjU+JsUGu@V;ZqvjLMf!b^pVI#9kFigtZbQ6Gvy`4V$?OQ!b$|IVS~^F+D|^JQ{t*d z8Jx>x6va7=MMSGeQ|+}nJT^}%NtU5VLi|T`WXABCR8HI(EseyHltCOk)GWj|Zt_&? zWKS?d(yv^iraZ+aGq8GWRw<)LZxqHnJWyG6)JBa#)?3B43>tFDB4Wi=?Fci`I!*V} z(yFvbq*^SJXhBIO98hh6c->JZz(NIGRhDENM-!lv%tLwspvDxIIb=Rk^;aH@Rgh6n zac!kbL$qjEQ^5k(J+zb?W!QHeoOxY=jKxKfyhPx!wR9X6gN?{N128Cp?{OgDP>b9 z1;Ve~H&ZmqaWl)h1Tw3=zbVBeOSo8?9S_?}N{3}rxttoV{Wkx+j&Ow`phbbU?G&#Y zjqp2@yhvMq91|S<+M10}5rMtvVX3tZP-A_mxE;(8xjht&P&z4Ef680E&AV>s&~~NJ z$!$-s&6&5&i2TgWzAUBO3=Mr&s7b(1vA!d-S~N3!i`NT6_ zJ*nTl-Xrzh>E+&6;?L~`-zKzP@~vLYT(gkd%*fRnG?*$7?a%K$UmwX{mYZMt-4Vfz zUyuV91hoVp#gFmL-(}e^13q8`PGALIU;0VDp6Fy-SPGJ>ZVHU1263)0vEm<5SGe~_kMg-Z1#7JzNkz(W2{21XE zMvxXBVj?bLBR=9I4&o{Sy@wH49$v4Z)gM>XQwmE4FnMC@3Ski*UM22gDHXZ5JR8V>1O~I_BMmZPgk5*N5#@{*jHUEaJM z?POwxO<`_kT(w`2`ekV5&u6Y?&^2Fd-ewgTW&rSJZjMfA_9$u&XXEr{a5iWC)Mj<& zW^`_6?i}Z>VrF<|ymU_IdIm{()~IsMXOO&Sf970v4(MA3Xo5D(eV(X(K4|L0=Wk|c zeU?%8mC+xST*c*O4;{T@woF|`(AvwvjSdldhG?pDXon{LX~W~uR-@=aZc*MN*Ys`a zsCY+r#O(Wt_KLUI#E3zJTy%kEaU@>&VO#3YOLoN4(s#*cz5L6gl zWUfOdD4W*li96|s*6PSZ8zj7888$*-K*Syf!!K;fnQUs69KuxFRJ5*PLb+yz20lRzU#+h;y&&f#1U9uHDoRnmbHe(NW4^J%^+>1*u&1^e9bMU#AuPWYrkIP z%uc{Djw(F$)?f8({!^i+UPK9XMqi8K-fQ9+RbyL?ti`e;EA}ios>#j1W3Ik!waeq@ zdA`ujS1d8dR*YiSh6W4m?ZS50i9I1eqfz1xY`6ZhkF3`1O3Q8Pjyg#GE{!DXO8Utv z22^G&nYG?-m?bxo1<1CBRr#6j>&`IiZf~BOwrT@7oxEVAT}v_=z$oKNWo(sY?8&1= zx1^nDw`|uNipzwt?8}DlE`DzY|2csQ78oT=GszCtSfsw)WXXH*7j|$C|GM^t5Yzml zn2Tw|Aj9{KW841l{Pl1a&#;7ssD*y>EE%8{hHd9B3a;-X0I~#S>rl zCi0gWawKm~AYXFXRdOdM+$N9m$Axk#=cy^ba+3!wIDpHFN*kZsTQk$QG-Z}4FccfxyTa#!MR50G>}cZV`}b|>L=$B%e_ z_knVEdT;S@zxR^vW_`zZW19DVmnVY`c<=@I`7n5bN2h^LcKYFuSdZrI5r{9gJfBH^!K>+hllnTru%1e_&@&>2R${kRtNwfP-!o&Q_>#h zhlwLOhNTz?0*an39LqCZ+qdm?`1`u8iiH~zi^k)PfLt=0&L=b~#VM!OD>kd$7OUJZ zI4m9yz2q}Gt+x1p8cwM4mdD#{dx;Lu;E!)v5YO76S|8wv;YDH~VdIyXW2EGy8YJZ< zX6BToW~b+;4JYU*X;z}*hsNI?-yIyC>JG@BPO49AEQsx0F6^n|ieTw*OwWccD&q07 zEG=(JFtId-=(PUzby_v{HusixH+cBdw|F`6FKt~)^K801^X{x(yK673y!y`k3}cQt z>8&_yI1Jn%kRU>J%rZp#r-_`yh!ROaoM>@k#fuuvW!&hI3_5(Q_{f?QZ=bG{yKw1K z+0NcOl*Jm>2>CJ0ErbM(9ZRLtprU0$C(yiE$tY5X9g{KzwX`YJOi!ay^~2942@mvq z?b8D@7pj!=>}iEbqhHOcXmX0RrL`yAfyQbv6rvW))Vq4ot9^GW%F2476ttYvGC5j=+OEgBsGzdEDvLX9}xsO@y`U*fn6whKkN) zWyg|pL;iNxvUgas!Xw)xYBz1|CTtfnN2Dxa<$}PDC+|}II%@3Nk5jnt}_8Q=Dq1 z0pj2=5>iObg&6|SpoV^N*r8q@f+!7ysacrWh@G6Mp@=C))uM|{!5CvwGt#JHfh+!S z<0Lv>Xd{mv0U4x5LlS9`kw-dG3zJPc`6QH4N;xH!Ra)6WeG@84h>sK|x#d4!f?1B3 zV}?_vnIPquWie@{(WQfEx`~aPb6QiUozmc$rzvYvXCI$9vDx9CfsRtBp`Rd{XeWy@ z{^~@Dr@@)Rqgzahpre&ilBuSWaN4OOpMp9>q?}zE)TmRON}#Bz9_4CPt-`w6tQGnx zOs&cd%3`ii$=WMkz%uo#uqNDkL#f3Ecq6gOV$rO#RzMrA6w^AJtYNGE#05L)C1YN< zSB2$9R_;*-DHz(`XDzkawR;h}?=lguu-Fc!uD$sAM;>q^A&VQiCbY5G5(HnNZg}*{ zdxXLZTj#Ju4dkg>rkyfW>XkUee6b)MQpIPRq0YQtX$- zU&NQ#WFsNH^wCY@^VV)(BYmzZQO9}pnQ()XwcHfdJ;v61bCA^-N6e%^Y^WMjLPk5#x>Ane`rQ@2m^`!dIGXZ2KFU-$ak&F}L55clu!|IAds zsN7F(`O{7S<(0s9EwEh;RMKtM5fGE4Z)7OyiMa;IyO}I6Gduer2t)oT!V!`%gsvk= z2~()T6|%5}E)=1@UMRyE(y)d$+*u57sKXudu!k+op$~&7#32&#Nv-*X(RA`0=t##{ zfD#R=pzs_do-m4%D`4fskgNe_5n1@@Vj;c=#jN{oEOn;-v(lRyg6Yh{e%8Ml?kp@`-nQ!I!hojAq5DKR=}L<}@K z2!t-~v5;2iq$i~S%1}xXkBTJa!AzNy3915;U|XUZp%_ahcCL|?oMm(PlNnWVF;$~P zrLHu&BVe{om_8$BF>!^=PpT3rp!t?8v$8FZHL@hGyd)&i=KjX@wv01DCsAq8aS=yjhc=*C|Swb)vXo+s(2IYRnyAV&9sGWS*@$SklG`+ z@{N^o#j6y{MLJQ+l~ikWDi2=z5yXZgnkL|DO3&iY{-c`FCYGfusZO~h$i4}5No!0^ zvga@5d~Az&VC!au8quh3uq*s3nCk3G($eNtV447H6hLOS&!RT8qwVd#09RY9?p3u+ z^_pj03)+L8RNBds1$tQS&9T$O}2Cn;JOnmwso-Z8C zCG1)%z-+?}f#Wk(?TJplCfl$`4oqJUmyN#?ZmV%UT4A6G7{hGbZHCEr;^3Xlz9IhJ zh#y?y2i|S&|@ndlmWNjwEv2y-X85f=8P6gIVnQHabN=&bkyLoMLvYT&tb};B@ z+-)&`k1QRZBjRqXRaR_pE!N8jdK^^dVCv4 zw}|J%aq}rI-87%~$ceslAe{WUDc@c#`BgX(*L>*c)2Xl9Twn;NyX3j`w|D@KS)#&H zkp@>aKT)MoRS(tdZ`39(9h+KZvNq_ph3>vU9h}jDyTqXFFuDEy^a<;{(K6?`q+#6m zl*>1^?{iHNw%er8l{X2k6gkx$}UZ@7g#o`M_U%-GzTE<`J)X;4NP2EcbTr zA|Lw3$GhIKHFmb0DRw}aTK=A}Ubw57BYa8*zw85Jd#ev_Yr@mr@SBHs;t>sc+e_c* zS^xIFm)^S5-}?FZU9NIn&UosR9@5vZxzgue)U~+Y+n50u*~&i|YmeS{)JOl-nZN#@ z#s2RDYrnWb-_TrI*WDj&*_+L!-&%m(MQEQzh!Y(B4Rl;~N~jTu8-9Y;O-ql5nUoC2GJbGp(D0aC#KUUn$sjcU?mb&<={&u zrlKmY;tKH+E50Hu#v;$?oGjL&E#4vpxFRm@A}?kl13q9c-r^<}ODK+0F)q_FB2zLF z(S71Ig(N{UPL#pBRjUE zJH8`4ek0tRV<^$1C)r~m;iDj>V;pW$NO503o)bU@B(j8~N$KMs@gqS-mL3`8NFgL2 zLF5=oBp50FJZ$yeHBSQg*%0hO#x)KaCLRcfSCK9*uG=1q>BV=`tBzZLl+#QxI zZ6Fk(B~_}JU>qgnh-OAkrc#n7{`{p$24>pT6Jf#{MdguCsv(JVB{JHkGU6sP>Lxj= zre*#f6YyOWW~!H9qS0)^rm66zIVvYQGG{$H=RNwSN0vr+{Z36KT2J{$MHx;99uair z<9F_3cqZg{Mx=CZBog`9UHcy3 zOg86N$O=9#3Na%R1Ru4 z+>fCeCq;Q`RjTR*sw$*bmQCsDuAb^s-l}fAQJ{J%j^-YGuBm`(DrtCBU~W`LWfYN# z<#3i|c^%xdKI`u>1*~o=vr^ViVGydZT27f|v`U%sjVnfBE1immvL=$Y;VHOE+*qz! z@e$v*nk(9otF)dgm14uTE~{q2EAhpvwT_0tA}P8q+`X==v+AqDvfYll{*$pDD`-}Y z?qm>{&KNr#U*M$Lk2dV5Cfsonr^j~bLx~i|vZ=<3E6AEvTIQ?7rR-;fE6J9rL|iP~ z(JRJse}RyB3@&GLpz<69`I@*@i6JmMskCE!LWB zrYdH~Feq?FT)N6Ay;4(8p&-@j?HA7L(b{a7zOBse2%b*u+8(ar%G2d`st{i7<7RD} z<|si%tN=+aY$9!Jj_i|KtTc_L?yAAA=gMx< z(r(XY>+brlobIkq_U_^$C-64!C6R72#p#&ZF0m$`&@OLiTp87(LLAmrlhaz@aMGxFP4H)CERdxy1&Zx784d3M zamYFGPVVWr3US6UFc9nP-`;Q%hp52v@CiP#qh=?Qa>f3w)>-gs;Qx9k691};b}^{} z>t$S(4@YqrgDVv`u@wUd7F&Y}k1h&3?UA0HM6Ia`Qu|ZMB4?6mW(cO z)@q)PDh3LiNaC*_cCwFIaw6J>FRKhMbIZL9vpPj`pHOcDBJ)#CEX5vg{}QLtsMoG~ z@WZBS!ftb=4xGonnh38dHVbD^DYIo-GEo-uX`(YyLNmoK=m!Vvygsk2TC?Nw>-MHG z`~qq5sw?oiYJgfSJCEi-mnJhGYag3$N^z#jHvTU|@AK6{ueD0CK9e&GL)qNovxb)Q zK?7((r=~iCs>SLV*Ka&`b43sGMSC#+4mC%6Z8ZCIIE^%ahBRP?GAGWJ6JN1J)AB4! z+CA5;23nvX7iUHhI9d<)VP{vYFKuFI zCvuB^a-x8?g+|wCt2XuIwK#SyTpOvq{;V!j_X=y1Hi;6hGh@eY!#0=#GOz^qB2%t! zUyE!XByB_H5*IN=pWUQ7bu3M{1k%sjk}{(vZd3}Y_s+2%r{tFWD=e4t58G;ZBOiFD zuwv_BcJFYl-l^w!_vxZ>c(=D7F84z=x0=o>zy4@83-EEp^h~D-c~7%|FGPR~uLrg) zZ`+~iN^63@@zdI_lTq+*=T3x&bM2z{f7395KX{N>wqEl$Pr|KD&qY!vZy>X7Y!9T& zemKDXvxT>?i#MXu&aKa?xP!B_jq~n{(_M^1?2J=4h+nv8m+oN$sENaH^-eC2KXjdv zB~6tvb`$S*%4n3+ErTBU&ZcVqo*cN8^YcV^`IjyjduOxDOd6AzjgHt&STKSxi z_-tdgRO2p?Z~5!$Fv8CC@?QA}04+e$zv_9Q^EvqX_~#xbj3U}xhGkl9R!&&z}BYU*F^{zvE zb(SFZQad?Y`?k|Lk1A=nXP_H-`yhjR5np$pLZ@`SeP)A@g1Y9e1=qAg&btJit>3!uvbfU3DZw;)6f(W9zpeM%J~1HC&_@n6Y?t z&+>wwGP^_atcy2U9`~}>3Md8hv5O1DmwX=DZ;JM`s+;^myS!cFJN42N{Z?}W%bn#? z^E^q}ViopI8$He6^*Jj&T`ze~qfm$=vOPDnQ{(GW8~gzy{ZDIsRWm($ay?*MyiDFa zoKyYO>+C;UJ#`no*WV}D3-;R+cH8Ty*b61uA9@1!Ee0p`l=tot&;97eeZ>R5`3iny z*S%2+HL8#C1D|(~_kE-P{ak-N;fu22Pxj?kHsX6CS9fO$kF~wqX~B*#y24cEQwwFI z{^=k5>MOU?JLX=~;llnmTI(xI>a%|3b7Jii znXc_FknHvr{h4=D1%WWq3qTYunN4SIQd1UOVNE)uo1uM*HUGn0{z5SG^zm9Um~@-}zZ zuw>b{n=A@c_>y?=SbA02wN@QA_7PbY6BFKCx0>5KKjTxs-~S(=j7u+B zj4)Jats%W;5F<9+HftTdQ%JB?q&UzZ8iZFiPIAbQ2(F5hCOZ76XyYN2*El-r`0`xH zP9p`1GpW&LOrR`bQp7nASu3DlQZ7BIvlq`_K3mdk>T#yUqAs6O%lQf`7jp_#;)FU! z>RGjG+1hFQ7VbBJvp#fbw^878eoX-u zD;TrK{+fogX+TS;b*DK?Ue50 zi+!I3cMWJ6H+y}GQkXSMgp;VwA(z6)x={N!nlKiZ<33P6k26Nf)vbZV3t8#@aiJP&J8aM3z zGRl&EE7CqOeH;zKDg85(&ldCS6HvK=u`;7KPutQ^qf%pVoF?OZ&$c52^#mM}{)<$* z>>%ZmHQpHAYR5-a!c@yiNk9`lLP^!sz%jq-)JVYuvqI%qxE*(Upa)PM^?5$s!jdI8E?OLlZba)66n>#UI!V@_q1~J>z5g7 zkrWFlNC=k1;1CcNj@x#r!ROw3A=XG@_w4l7Vs!(VhaeySpA#=(-Zrt`Bb*TH=#xC__odw?b>ZhK|`t04HUijivOh5f;T2(%H&ABhXd)w>BzghkH&;Ne^s~-6TDE_?j?TAkEla;aL z^rHnzZ+`^wUjYXgKnnV9f)_NP1vQ8}0(NkAZ>UP@P;;c!Z0>oYX_RG3t_jatQ#Fs-KsESKcJOkhGTpK{U&crztb7zUap}#@ zz(|DCgeNywS*LWC6P>WU(mhqR%X$vVoRh>17`2HfdRo$S?;H~E1Q|^|In)NF3Q;)*-HGsPB9AoTx6?hNO!k@f9eI ziAqCCu2|^wWvL+-zi`^hcZjHEMR|lz(b3azsuH0LT9_(uR2g=d)EPQOYBro&F_6+i zi6i~XRg;?2knR+#(;5X+zxvXrHdCfTOh!c`a?`Z_GDEBEOX^C0I=P_o$rGe z7-8)sxUh%njfQWsO}qdLy_BMG{45+`21EYO!B{%6n-E;x5DVBeF*dP?f6Ft*t+;)z zn;4E!mZe2)^uVvP=Z#-18XX&S#?w9WkNIoGD#t;hCuZ>hq03^y8hME;yNys)mc(Oy zD92!Sn3yk{;t5AJg%##9cDzjD60Z4NZB|s7L$qM(l#Wed&U2CxxIOTKEY4fT5S@d} z(mRjHXwVH6pApUDUp83HkY+QX1N-K7hDi{`>hMwOOwxJ?8p$5!3#FZB=~iO;xu}LP ziksx=E5q^DY{;^ReT-ole_6Xw>oBd=Cz)&cddGJ5@v!LYW<$fa(8YFjtsK4VSXsE& zHlDMyVZGt3MR~mvem0!JooxX}%>Kwn8#axlz2t4zIyW&6+q$J}?bni<*9k;6l!5K- zd4s#hx)Jl4qixZ23mf1W#_wZuz2Am^Q1%>6zl9HX*2+ecutcx7C?_ImoAt-Hdm7+$M+Cfm0sv1!qdRE|;FLVjka(vmDz- zpZRzHiP`b?{Nop|IjQT-+m6e8=tjhCZGG-qs6M=7V)Oc251O#}FcVwgtn4r++w@@& z$gmib31QzmN+otQ-VYlxV5fXnxbds*w7mQ3P^NbxF8t63rK`8DnNhlvR`47peBM{c zXMmZTsD57|^7e|@!dKqc{wj{D!bC>bBhEcsn^*8X@ZMm<2ki3tCTvjyPcokB%Vc{W zJ0BNcuf~%#^|j}i`E~HK*5;uNbpvW{^}0}rG)@bkOi5^1xXM93s44ODFt^B0dH^sV~|?v2UiNo{~*Z# zYY>=((4QW#`YNRUbl^+kluhNx>+0&R$XX2OoNny42K?x!9mbFh%g_wZ5Dn8%4cCwj z+t3Z)5Dw!|4(Ct~frk$75D)WE5BHD{`_K>Z&<_7l5C@SE3(*h{aSj6!5f_mW8_^LT z(G3|63L^)ZwvNcEP15cpp)#@Sx=^@8Fbw5y65ryFMv)Zd$rRh76jO06@{1K!QB5xG z<1TD3mhJ`XBxQmOf?SN`TqG2c@DGQ*k(Xv)rN%Iqhu}mvcdybLNOHIZY8Want?kGB$0j7KiLO@p3vZQ#EnJZs74a znUg%bbIHEbJ;L)V)YC7^b3lR*KFAu?Q8(EWag?kRNobu6lRisK;O^5qfpLsR z6F55pLEBS7w}?U2rRtt;K=pG!C8$43a9lVI!{V$P-7@5kj_6)vKH0N4EiqAy?F%1J zL}xQtSTs0uEju%GCHJXCQAu)kjF@r>`%Y4xY){jUuS4-lGD9>-hY!zMsz@0V{_q?# zNoxa$p49a!6E0~qN-+rKz;I2^Dt7e zXHxO7QW5D=?=VyMv?56-S%~dbw9&p=6YI1sKzDIQ;nYn%wLk9ERc)2_rL|z6HB1S1p#V)96XoZc)H$uL;+hRvjMXDsRbHoWRx?&zHCI{}0;UqF9QNt>F7DV?DweyJRZpL*c*Og?;GFmzIV3~DilQm%t)?**a zOe4oudA4YM_GojpXO)&2Z?-9KF=)P29h3G}m$quDmR7AcYn#?-hqf8DHdevbRmIj* z$#zeF7GXCuVBghj@w9F0^ljx7ZFyF0g>X~v7H{)bZ_iK>_ttO!7H}Q0Zv&Tb3)gV- zaBvS-aTk|y&5&!IR%#`SfFyu&E7x)_7jrXLb2pcBJJ)kR7j*tZS9C|0bW7KCPd9Xz z0CiWFbz9eUUl(>`S9V!fb!XRhZx?rSS9f>!bZeJ)e;0UzS9ph4bi0-Yxzl%vS9zD0 zd7C$Olh=8pS9+(HdMg)ts~3B-S9^8$dbihmzZZN<*Lar@dB@j$&li2u_kSW6vgTHO z-xq%4SAOGyeId$y=NEtTSAX|cSEo`e=S8W?ZcR5RUisI64;X_!T`Z1pd-^n2TOmh@TjWqj-q-iNoma zKf$$%Ys`wASc<#Yi@#VY7q-A`g@GnE=_T+OkPq30J~%3+h>#K4ksle7&8Kc7nUX8nlHcfqqp6WE znUg!&lT9U)pJ|gnnUqV}l$~ahPg#{$nU$?9F88>VV_BAGSuH}@kVcu7b6J;nnNK&f zfO#31gISo-B9({Pn2#BmM<@Fnc>6pla$9&ga5$;FQWT?)J;cK{ z*P5+4RjcWst>c<;zj_?GS|&p&L-Cq!-+F=Xny$gouEBEr_EWEYmaqG|e9QKI;}%16 zHn0CWs{{LvuA2HJ8!NH4t}#2Y54-&SHrs6%TeFcAW8oIEvD&iPh_b=%v_X=wPt;lG zGPNOkwaqBDg%h+#yO=|EYd@N^{g<^%+c9q$YKu>d$UK zh5O9xN+YyAh`EO#yNM7&YFnUVNi0Fh?rs^lMe~-ci6pu2Z<^aFtsA#*2EC<2y~78* z|4$$u#<#uXx@ky&n}(p~l(&1kz300)X4`YT`_>Gcj8bZyagWkA5MM@SW-<8dZ1yaO zB`*&TuQZT@K}}`}uci)F!nsNU_4~aGsBP4FP#0CLSSrK&62ay9l@ufW(rMIRQp-!hWv!YO}TZbL4^*2fW!8@tGuc~vkQF{$REteh4IScT*+PSh*fRF+z}Jct->D|hQ`oh zB}~eD)91Fl%aihA6q-X2-D@$Zybbfr10-dqaLz9+eug}!$8*Y)GSng+=XtI<3H}%f?fO$(+%-oV6dlic=UDlY6Q3+{9nI ziEaXmht(RTu&P%^$nzY9&y~*yIcKKM-e!cR^)1$a8oW!r;4(T`I%voFtH%vS9zmradJBB{Y>E#+_Rk( z$6bw_&u$cQwd@HZ!%ZS79N?q96&b!g9DX7o-i|eo_3&6xbz1Tq^4=Vqe?|$hOg)2% z+x0;2*bqLZ>-(^l)X(D+srww}vGcasT_7_(!D}byUs~axDBSgH==0I%Co$=H9O!jD z;Boyn$9CuOy(5<%tb<;pk3NTrUUH}2!Gmh#h&M%64j~l>_Iy1 zaenNn((5h!l}~(#-(I5QevtKEwd>yEe=_U=+wWyNx8IcSzqaiYe(`(0@CQ2ab^P%G zS$zlp;VfVA{^!2XBmaW9zI_4TU17WN*O*s%4P@YP_|3JODVKT?p^D z?-^QO0AC;W>8SNLK91a_tAk%QM!$BHbcr_|XLMhd*z^=jU%*cv#V7ygBWI#2XY!yM z_|<0iox1k#Tl){<`dN^@$DebszZzs;_$!C_`=g_bfniK$2Yg>7pugmwJ_tP)kq;j$sMP{W8Q2@8dHf zPr05ki3&-X$wUhx7J2dHC05* z>e_k=+Baq@n0mX4r249QBx}stRJ%J2{ha&CtV`^y=*!1T7OkdawR|yKCyOm^ev3BD zU8da*A1^;oUvDp1ldr$e-|znqFrdJJ1PdBGh%lkTe)k$We5eB$#E6a1!SQx3nGi16 z&RE0+a-zFWUL*o?^wHWmcHxwHTXGQ=M^h`M0U3vJW=KTux|n?U(u^BA8gr7H*^K5! zl`+GKR73Kq)TvafS|znGtJbYtyL$bq@T%CcsK~ky#_T0EqqB+znSwLr+FfSPM&17L za}QdWHdoa_)^ejQaD&xV+$$FrPMgl)ChCc|YS3@&=7P*<`Hs?~Av0QqTsO4n(WFb8 zmO$XN>ea0Ep5BYtGgBvRo!UOemZj~|pl{^W1AFsq+JKea&Z|4Q@Z2(GcBXp-)!m3x zAMH+)E=@|nPM`-KF1z~l*5u2ZKaXBU>h$c}kNzz-`1ARmjn}-!c$&`Dy=B1fw%L7& zIc48|mE{K>f*+Nm(_gw3(q9b!(c{v7$S{{+910#-j9T7_=ZAYDj!0sO6Q#DEi7Kur z&xDd4#)dVztOLh)ZLG15hS_PxT7)pTSQ3mTXsBaTHWH|W92E^YqhL!x(f*VVMRLaD zW8?W(-BL`#WCD&(=0{kPVxnP3g=BtqC5vjV$!44C0g$4ba?a@*op#3K;|oCEsb-#M z@p(!rJ*Ek0p@tqR7K(^23h17UJ}M!hdO|vaoi5x9qZ#X!s zFE_o&(@;|w^wd^2dvnQG3rBjF!EKKZq` zPk$on*FPeBD4|@ibtSRkSChQ>qA*91@L=lMs^a&3q<->C^@FX3i77_VJ#4rA0iV>vV z;l#*7C5|zRRD=o>YY0bC&@hhXkq8=${BT12uB(uIRc4C zHB#-3SbSn!WO+oPeKAa|L?s?enUqByv5%mHr|&M&FM`r5{aGS zeLl-ww#)MX;g=KOQx>YqZ&o4XsudX zmW5GCou%k(lR4L?%66=ZP2n!b)K-d`_6{7)EKI>i)xt_Q1~r|oSrn>K-y)QsJSC?* zJ2W@4C>v6-B9dgZkh8=9h!f zb)g^6J77n`_rBa^SaAPZSJOfis6N7xWOz2YX<-S(hU%@h@L|;etNduUeL|Yqy)@5R3T*ARhBn^rzWKsuz_t`Y|w%%*#UFmzlIM z?=z3NUpANWD4$jHSJ_B}&idDa#vGp#vRud!^gj4>T_#k6bb z`Km}~_RVd%`~$;V!_n6M%67=EHzne4A^Xx9g_xk`5kK@W?Z?vcO|qLELuP~9Wy;Pr z?983L`B@ir>~6Qa-wp40%X{ARuD8AKjqiNxd*A%-x4-`l@PG?^-~=yt>8w@mF7^)H z*i-j(#l1d=3r^yydG`7kK01s?&*9RgIQcw|Hjwis;nYSl@HE~$ju%$s*<*RwTrL`m zqYverqq+FLy>2nXd}}+ei_FhwbIS#tcq$)k&zE=fsU=<4Bp3GbhJJFKKV0Y0TY7w& z?(3VE+}JahddI2WJgZ0h)=>9qEt}Xw2$n@pKane_zXWXBZAsP_t6|XvEB4;y-DrE4 zHm%Ek;x-DN$4mYW1{S^f(<~QW?v)On)A4tAoA%vyliyk8o#wa9Yku>&x^18VNy$T> z@}NT@WP2NZNly}!Fr@`EcYzJ*zKBv95rwV_Igk6?bKdJK2RqXF1eV|nfB3{NzVVOG zkgU@)#TaJ3aAB`lD7VzhuWw*Ru^ZQmMBmH*+`0vj5B~6rfBfW6{+V6=XVyUp*LQ3ub3dMuM%Eg9K=MGl+yTm^n%)GE9hsV|RGWw`KfiWF*#O z`!{Ep)?`C?e*ze3-S>nu=!B6oh8t6cVMsLo@khlJBeUmdq}En^C22%RX))nsYY2jI zD2K6!Vuq$_V2Fkcc!r2Gh!szvqCY z{`ie+@{3nfjpKMb+ITeT*e>jdj_$CGkob<@0%#gISo3 zIc9x{IEv|)foW|L>6n-Kn1@N33%8j|W0{xF^$3SnV~71f;F1KuxA%?MQW%W8$_CJV0-e0FoYd($!8x4eiA}|M60*mf8w7w+vK-Utn?ykkthsgQ zshnpL9g+kkxX_(q!X5jGA9`pQ*jW#CIT`u+XgReLjY#A(B)EYfzDXY{8lv2hFWT8c_<8=KDLP3YiW&VW zANV1nE=r($K%o{Yr1WE-dXb^H<)LpeX()jq1M;IFLZV-Dq`K*8UII=VGMfY9q(wSy zQOXBXnp#wnAvt;(LLwj-@}$-yk3-6)#EGGwbU^G$d!`i}j?ownLYulKqmMJCLo%Ob z;+}R|omomFrx_kVv8OoDr&q8*TJoXs*&qQTBq55Y*HJueimB(vr6}YWEu<0A!5~R` z97GZudCD_hN+C@88_|HJJ3*?FsvWX%sLqzC2gIU^x*HWT9D)?7*zumOx~sGkq?t;r zPv>)vY9R&EqQKguXu7F-QLDXxtP4te8L}YCVXe-3X3@&4ul_2g-5Q`|s-Lhb4qG~& zYg(-73VFxMt4T#1usNN6!Ky|ApoJQ9+?owM)ShidTK39Y@;avj6(ja45`d?#tX3m( znxm;Vu7c{X18XG0imvKPu`{Qc^(jC2DvR6ptk62K6$`TIcCn}mKN_1j6O^V<8nP=p zQymM8CJUGtOP0gRvNcPWT8Xnc%L#g;vpt)$JnOST>j@ugvqft=E^Cf3o0v+wm^5p& zPfIpPYc|iHk9-+MqavW7*|De6+7_ z7i)|-DREa-ksBF#8(LpmMIji3oVIBO<}((DhvXQTbLC?B*PHq!MW$=HRzkFjOS?wn zKp3TXT$gx4NP)3S9hgf+Vad5F=(*r&NC!KDyz3gUJG_aLx<7@y#-_Z$;k*BXo^@Nh z*=ub`gh7c`VKsPz^%X=_YFEKz66i!sZb*mdn@H7Lpq{sey#%h}E4gGfOy=uD_uEYB zsZ-7CJR~YafEB&;D^2z*O{P~t`ipuA+rL0FyV?uEDT96H^|&^eXUxfV~k6 z#QWm7+;(X4n?ZgwxvkrU-^;ykb-DrEVx9OqiA7{5EV_8+g*_Z&R;IQ!#<3-LCnVMGQo;=Z5(mLpew>Wmc?~!cC#l8LG)?<+qnSje{>pNW(;Rh zTuV+ugjd`qn-s{fImo`Nf1t%ih+M+DiEV4##+iJzP27X=RaJDHymsut9gJmPHcEH( zF(e#MMRmew7s(}c#dpkL2cycdHEOo}xvvbuvFyPX9Bi5l%z8_Z-AjV2+PjOFWwQLF zD$IZEC4G3zF{z8di$r}jScS{nTxkB>#eE{pu13u%=v{E7!cN4@__e7&9L(t)Ew}5; zWQ=J`7Eo#CpI&$qxcPbZ=gi1-XQ$e=T1deXRcPiAVW&IEu4ZGYR4Ls|&EI^2^)$}| zZMlC&RGRk7>TJ<7^_?m_J?BU7aykt%&LN)NRAnUTxMS($p{$)k*8o8#C2s4c8@-)-AKvQ#;ml zTh?){*L4Kebtl$sy|{V3*ZzaeEIa06{*_vq=+B^x*zKvPl`FixU}vPexq?Qxga%Bk zCKRbjQaKfRod(Zp#?c8(+5HT>xXVR=%}CyBOOi#o6&%@fe7S1;z=Unvi)_!wJHOz| zWUHKm7K}#I3y;6}#GhQcmW|cmi(LopU!a?K?X=olNWI0zo4*U3s@={o+}ycL$dxVI ze=?eHecR*x8izH*pPF6BeBQrZX$ls=5X7P z=-fjnVbwehwtV0D>&eBT+i0m*#lkR|4ZH>9xmps z+W=<6)wbT$-QH(M{$(A-!Lck>JeB~p z7Jg%$^TnUl(3Gs>VveM_%Y8~L&P?2VJm`O4SXW{*#eFu*jjf4f-pc`GUjgR8SgzJ&3$Nsj$Yys+Q*L8rOFrFW*m2{{pA5}#935@5$%C|xaU;Z z=MoO;sGWfVu0Un1>XhuliVfn6&g+ZVf4FQ{z`ocD9_VWR>&ZOIyqxAVmg0q6=@C)O zz)j#Gh`GG}TT=a(>QUb6hX;hNUdj?X;l90tw4S+^UcZAbWHnsnz0U4;GGg+L%g|TH zkIUZ&9nPh8&1UXWl}yjeXYSqoh+6&J_ipdwUTT%>p`tv6`hMrsC*uu&u3BAT^}b=f zoA1N?%-`<3R^IL%A9HBu+p8>644OgRE9RMPrA55prN!Sd_J^20X?O)|uC&hunB2XI z(r~_NYF_FF6${4xuk@^HxJmP!CS?MxzU~X{*uCfHUi4}=2l31Dv5UWXjL@|0@mWuf zNWI8+t!-#Ut4x1gHYC_uZ}z^(*)py6d_#8x>6B{^_nUB?vJ>~Yvg>D$_gP-|d+(4y z%lH0&?>1h4xE!DNg`bFVRM%!J_|8)HhVS@{2S}c4zyOkNch< z`@GNl?A%NdI^>_bn=*G$#gc858>jianoti#>p5)Ci-9=*+DyI;a(2E-pPjl-{NsO} zSn}LF?$-eRo0N{zl!=E0531FlP2LVo8)gx{* zUOxWQrF_f_e(p-c?Xy01W)l;mb_Irh;T<IVH zw?teIPyPP+`6eT!)gv-PYncgYa8;(nSWdDJyPC4hK6Q?fgjET(P@Qg>#JNe{qEIS7C=Gw%90eHMW#sBTROZT{n%jS!t)GwpL`TZQ)sLvt71DU?1H! zTye)O_1Z(G+>j?AKUi0!!gkb_EJMr<1{Zg;vohWx<52$SLi@6fA;Brmh^AX|4@Nj) zI_bSd-hJhLccd%zh4ercDvNAkgYhLIFx(n;L`LvX$SRU(6-GH_l~taYcnrMmXIC*8W&qn(-$BHT0y)Upg}7!S`zVANN_ zuJpN0di}W|S)X^SvEM6mX6|}x0xQ{Tmrn6xasKB#dF7W^tuJDP9}s4L;TvSas5Wxk zcJ!o%yLZ!QpO3!TWA__55xM8d^0C8z{`2bh(Y<}{a#I#_=I_Tpe|gq+E^z23%FX*E zM!$@u&V1)VUuk~xyONEsfaUw&ig3q2;Amth?CT#uc!M$DV8()yD4YI7I6@Le<2r-` z4&&Z7ph85ab)+$%Zq!3D89szybsHW5VF6M1V$uf;zcS@WQrKMs>O8Tk#_jw zAT_y3K%(d^m7t$bB1yY1wy}`?8f7n1iAFZkgOUmH#JUESNlw<%mib#{+Gx1ET{bF& zw*+P|GnY%W^)h+JMAR>ZxlCpzjF@Lb=H{YlC}lR&n%AV(GtD;5VNUW}*aT-diy2IA z>e8E@s-`&Axz1B*b7kc$<~gB7OLo@Np6Dc}JoN`pK&A7Z{{(2E+^I5tZd0F^@@GI5 zy3ja5?JTK81zH#eq^^X_XZt(oXGWJureN)1-fE;0b&}DFmE=xE+9)LLdpFDY$lBO?Y;JCT(BT{XSvXUGP_N|MYS1!z0g_)sbmnjT=z^wTPsZHESMSn$D`% zvxqzoKtat#0@Jw1w-VKB0O~7T>3G+hwT)j*v+H0XNl&U)*0La?p!;~HG#uKHfk*t^ zydcxK*TL?LYklb({lLS`mUeQtaa?Cv2*1KDXKq<_%Td`n+7$v&a+S*}ZYlSVqy}wr zD^X-rFS}gkb`F)F{SIn6=tAitQ9IAQqIHXh$QgOlb=`|@?6hmdARdsF&WrJ zyz0C2yUe?s`o8&2*L41*M6dCBLD}Z^*T1ZxAW@(PIo`1^e(EhSAEoy(y8^-k*&$!0)R+yBib)`zK8lO;0m=LP&HL__vS6fq& z#}OqNjWa!MYR?E#VYy^Tqvq3Bw%5=wK_*YHJygIp^vPG3?T}R=|HH z`)<4XGFh)W^Q5CIR<(Lp1tJ2n$M)h~D2!ID=oPVx6@6%Z-( z&pE_ChiY5r1FEn=uI)0FeOzdGcc$>pbF+Tz+*w9*|L}ydt!;%b`|V4o`f>gs;{JhL z=SMyI|4%p1>9O_;G9oJwNee9yb1+1zs0CcVr<$7HioNqolI$BDAloST8ZU^zD?wZS zyqR#X0~4_UQo!OuB@fIHb)Y-|WI?LJyagjJ*Aqbjd$fq!3KMI+I}4%?=^D=BFd8%? z(b7P`%CZMjKkxB1@Uk)k^qK5At$Pc$+wvY3!?66oqb8KI$6J->Yr!s*D$LWe@zcR4 zyD%%`u0M0Y?C8NG>L3q$p&^{WC=47XtDqpW!0gMq@av-0p+M>hLjvQmCyTT(DhU`xbV6gaX=wc69Q^qMPXo4q?KHC{Y6)iXT^jJ08$HCFy(DcoqZ ze^Ci;BR*$)i(Mobzi_tQDui${D6nDXBuZu!Hg71jx#tp+^5Ftr;8lPmE@$2#FmfbNR;H0 zkYvf43?!GV7MOfVnZy&Cw8@`rBAm=7o+K!uTsWXaN`?~3Y0=4?G|D;g$)uFZgeysi zETN|Ck*J)?t(2y!6g(2bN*>Wlt|Uun^2(AMyov(5dPGaZd%KTVJN}zWm59LyqkO1+ zo5;D7ORKb;u`J8Kl(@6x$D#r}yhKZL{K}FGI~W5v!ZS&TDNMdR7NUC0!3-3@#LQ)C zlg;GJ&h*UB1kKPCO);Q9WYoMtl*X>wtlWF7-P^lo^gPmI&BF4vuga^YVa>rR!yK%= zT|mg(Nt(9;J*SZ?alA!Y5XR&X&e40CshALLr-D{y;(0u1I9Utkb|fA<%Tu)e=Lg#F;2Km9ELBp>L#Xt-(GfYtF#L+F~QpEtnI=o9PM9mdF(lZ26GJV28 zlhFul&n#Wiw_KoWB*QX&5jBOy8Ew-V?b1EvQ}S3u;$crr{J!v7)A<~(Dit#zHBdqe zMW0ATK|QWkETj6nvr@D`7uC?dRM0-<)J|1FDN?=FYpY+xplamJaU|7g)F5(9MqiYy z9h_8a)VI3)&3Xw{)HG2z+O=HeJp9VWW9+qLbjZv8^weTCR_d@enkvXc+sBW1%0x-l zf%3~^rPgXKxOP-lgItv>^rKq66;9#SS<+H#CD(FgHzx{9c-d5QW!H8!Ot5@bkQ-Nb zrPq30$e@hZOj%cZ<=1{?%&W{-mD^W;CD?*p%2`QQ9hugGWmtMWSXoKf99h_grPy+P z*j9;H9GTdP<=A7rSXIf`8`;>7C0R~2JheP2Z9~j%Oh`g}b~9n4Z;3)8TL zt;ccFDs-{?qFl@c!MyFT(Is6Rj7+{YqMO~^*=^X)*!eyq&))hepFwFNUQU)4cqlST3cV2icPz~eV^dq>FC zUZWkDr0u%Q4d4f+R!d;C?%n4Q{W2h2RjLMGQ8TkTns(72y=N zJQ6OKfb|j-R^b@7Iu<4s6D|=Lmf;)*IvO4o8*U{X2IA@D;ct@6c~agWM&d3UVsvt0 zngih^hT@i6Vk53!O2OeM#^PFhA|Jk;BhKP4uDU74l(H*YpyfKHs@X1?%a?OhF9zc` zzBw^QD59-If^6UdUQE@hVq%5kK32!k1mr*#M{z%?}y1)DCsoJhf(Z z)@K!F=WTAcSi|2@3&QC|F;bIKNiN4v^HC~oMpxeFhwj&Y&Pq-h$oZWyhlc2kZr65h zXNA>?zzWxc)aa3>U5=jU7RG3jR%rnnBIMm;HEDN7>6M0QrtN3|m}!wMVRVk^oaV}z zuIUrL>6F&#pk`2>cIg_%X`x1Hmh9=CuBw+#>Zh*PrOr{OhU%(b=L=x!Ao*#l=4xxr z>a1oN3bwG}kh^<+$gW0f{!jgCj}~h^rp$WYHlR-Hx&FtsmRPIeG};W^{Z&rmGuz%& zjiaXP!L~ZErs=zmytYNuM2%kl%U;5UY#Swj$)@berfkGsW<871({tQue(cBw?He`h zruIW46kf9%pZF@%JQ3{Bc5Ry*ZLL;35)3om{ocp@?AO-qzl`nkSu@2})I2<1?0tzV z-tFUdxZVzHvi8Q>{>5fvRr!_UbCzr5w(g))Zp<3swqD@ezV7c<>SQKsz@1q;@L-Ip zZtzxbk;`ru+3NL%Z-8v?8G7&dw(nV-@AQ~%*D&t;_V4A&@9nAY|0eM03vdJ)@B&xx zyE}06*l)&5?**6s@c(M?@_29nYwZcw@PMjtKTYrr2XT_?@bNfVXoj(nwpFt}B|;jy z{todM$EFcS6=fCY6IbB9X-onZX&C46jFa&nQD&;`&4NCc{C#AO zhxJ_799jOCw^+J$6z3F2*Y#n~99{>o4=46yw>HKXco7x!iQ_6MQ%aYy%95A_}v_H=i5VJUZH4fl7acR-4F;XC(w*Z2In zcNod{eFu2u>Gu;UNDW zi}(1Dmu$->`I0yJlSlcKSNWA^`IdM2mxuY7m-(45d6Bnybp!cY$@!b-d0^W4S^4>% z7kW(!`c^6Wp-1{BI{H&t`lNSy5o-EUiTbCf`sJDWQMvl6*ZN{7p{(EfuU{FjZ+NgL zd;SjZ`m#s+Wk370XZvVh`?iPsYk&K=r~6eqgo$bKE^{_O{UnD~Ai8UOG%|9B{W6G{K`Xa99r ze-e5B_Lu*0h<_2O|M|y%QMi8)+5i0ae@=h^0w%5Y;;c9C{)3@7lBFn_sk*YQ{`-~bm;xV~Abehvuw7Ttn z!{hQfy>7qb^ZNaS&HuCb0S*!t8Xh7hDlRfMIwlD|CPqqDT3%viYHo6NdTvsF-i3;m znx3Mjs;;uOc9Oc9!N$_o+TP;k>hAJ#%=Tve0uK`x8y_PlD=!HzD>XYuOHWf*TVJC> zWB+Jxdw+w6i;t5tmmhVXtFN=SyT4`EC+u!5o>+dVp^MCmJCvYIaf(8#335c+Q z!i5eWLX0T!U_*x$Ct}Q~aU(}*7ZHB!C~_ppk|sHYG??-v%a$%*!gRC#lHkmkHgDq0 zsWV7TfjxHu4Jvdf(F{NN9WAPKDbuDLlj?)&bSl-VR_95@m-Q;wu3o<`+iFiN*s^BN zqD>KCE!(zk-@=V6cP`z!cJJcNt9LKozHZg}4J>#t;lhRur%kMQal`;39h-psPcq}m zmM`0*tWmQF&iOoJ4lR20HP8|R2oO-hbmr8gU&D@#j5S2ms!7m>XInP!-o9z&cDNh& zz~R4-BTud=_(J2Ii@R1XeLD3+%n>>dah+ZE>fXPDf3rOYTMKO|`~~p#1?2T>YmC>? z{X={f~_aNH;<=+hT*%w`S2O^lD7X-p5pn3p4h@Spr4%!DHehhX%p%L@- z=fi#aK`7vRB4U__#~E4cG+ZS2F6&XnPDxq+DfdC8`OaTZzUo@)lG8KOfnx~QHj-q0tSlTupge`+R* zL3&VLsO6!V_V^>H7CJiT5|WzO!=h2{2xp;qj%r?zkDB_at$F^b9hsK$+N-ZoVrnan zQ@Xn6tpU;rtEilYS?Z~~UdqF&n#$QKvroFGXtK>_s{X8=u>OGRuj7)dV6G~_Wh{shXEeA;DZxBc-0ydp19(RGoIJsenTGl zPIjMzH|5IUExG2KKla$;n(EED=%dGUIXRYx{!Y5;tB+**IH(JhIqS32o|)%+KNtJw zwe#M)Znv+Ny6?jie~;_pz&_dT#WUZ$HMwnC^Q=Yc_;t;)rg(I|!6yx0s>h?ZJboFf z&0q96TCZ*NG=G61+i4Ej%iCZu2i5BNU`=FLYj z^q|cm=s`G1h=NMfVGXHw!*JOTh68M&5Q{iNA-eE_NsQr$j%Y7DF%V2StP&L^c)%Zd zD2OE7A{SR-!XctiiAL1m62oZ0^ttf=p8VNc)ia3`xYMbqbMvG-GfyX-Q5Va+5N; zBP7c>y;%*=lt#26`$GB2PHr-hNlc>&b5agx;8%Rnq64H;v?B*X0*iLz}QA(oxXCLbrzHf>%p$hF<2jLk^bIxm?CsZdr zJ^40b2GW`UjbknE=_iSDu$=yU1PwU}YRQXgw4iW2X-5&d(3isW56~;$eyEj9Nw!gY zO>1I1q1Ycvib!3QOeIhaY95awj;1%2CZo0)RHDWymN@(=iAG9BZBDIzE{!QyyE+G> zGC@pWg%48kFxHlOHLYs>Y9<@!*0;j-cn*v!UF*6R5Uw?^dNspYpI26W*mAFe9qbVL zT8(A`R*QsPEMrv#JmTnXtBsv3Wj*xR5g0ZXfvqfOI~%-?Aoeqg^(<*iOP|Z;PI;0w zEo)mFEslg1ADeY8Z9SXWX~foeqpdA(J4?;=wX&YindJw)_*Yit6p~IoCQjS9(}!Lv zk@m@>>1Ny8>k{_25B?nJ3W__w+qxmQ&U_Oe&A85imXn{|HLr@INS@tdH@<@{X#|&e zr|;5mU{PdaF-;L#b)pl7(iLes1>7hn3bnZ8&F?a+=wP2-QNd(gt$Zt7S^Aphi-p{9 zoz$k@R{Zz8KZIyV`I%lqrjec8VwFj&nNgG~3BDGdaaYy1Vdn;Squ2ase^b%SNn(|b zMGf*vftzEg?s&WPjVF?&`(6suILdp)@M&F)WNd;r4j~@z_43tAcJ?@oIxer0spms1 zRdkgslChNA98M~qQOr#yFL0e~Tqr*jz*goiFAc0fFsGS@9!@Efm&{Ucx;fE|)oz>t z?Mjr|Sry_n{_ry?>PLAR`p|oZw2A}0X?x;X(V|W$qvr`!LJK*}>~+PYyDZWnhbn-5 z-YFS5%2T2#O~^OPR+!FyjdjFF3&AXXh3&V=JHaptVj?0=ut?X-) zaM&e0u58(i?Qio=+nD3FZmkXOa~DtC$tbovkd5wlb57l}A$M!c4exuiPTu;X_dMK< z?|;)x-^O5fJNymsgOg3*#UMC$yp8aOV@=`2VE8%=4)KdCjGE|;=cbejz@Z9PJF51j z$R(~Heos?S+uK*CCW>4#k9@ysQ8Ta{W^s(;+*cZ(qk7@Y)K#M^=0dMI7Fvx*0Hg23 zBW2hA&m&D7r(?6^F}8QktL`%Tz7W&U>?W9*h~Eh7caNcbYEvJqO_QtVxOy(IM3r7( zi;ho*34G$MCuqf7FH?pN4%E=;<8Z43zEW5>q}E9sa+1He)6!e{N*l% z2~1`Ur?|+A7p9yET~VkDjp~6Pz0RXK>#n2O%)Ea2oO{aSPxl-QKVB-^8P8<`uUe;L zCb^d<-+3L=;O3+se#0)!`ME>4pR92-s$pr;j_**ib;Rnhc9Z01Y(mB+{SX%S(T=%II2B}#6P2B*BV7V|yo4lH+ z9E}Nr9Q)MTHPxM;1Q~JdT7$(O)y-52CJotf-wf7X3TmJfHB{Lpm-FA7R9f=|->Y`J?k_Gx1D`M8xEl{ty4J^)_`y?RHeby}=RW9!0Gj^grwV)`i z-B5){-o4=6@le26V~`M|8Zg|Mabu_yA%n3OF!kcnDWmLZA~d=qOMF?9@m~57VLifK z?*S6?aTq;nnK62v|7jF3ZCnc>&GUg{JHBH=wvOo)-ZmZH<1t`O{otN;9x#$YIPQ}$ zfgc#HqD8tNGe)2@D&$DQ1Ub=OqoJZYN+jmRU~@5GKNX`5ww(5H*Z2LO%Nd}@z#d;A zBuV<@X`tUZ{vtg>WT9!8?d4tvTI3jDB&q=<@YP?T z}W*X1E;238{A-AQ=Ws0O` zlIB5x;>a@K}%Mjdi0=X07SbH1K)LT7cxj&v#+bz0|kenu0bS)?!tNv+^K+SF;{;%6P_ zgRx*|CZCr{B(&sR!;!qAFP5#+Z+9Dhj+XwOfrFmtLFw%(cMZtX5XM*a& zm*FK9RbWs>pE>%J5cc1FAy}@V9$=!U%UxdO<&!sRW4%b2IGRjfk|Se60fH*%ie4i6 zMH1?HrHd(^Q=XV#+9M$Gr}W8R-0>cUvE}bU6C#}@jtXcEvgnaUB11YLSpJ~?aiv4H z*pJ5KhPs;X;UL-Fqfl<%My?-za$#*EX_%G*)-e}4-c*@h*?2Brlz!!uLe`(1r2kA{ zkr5ftp(!%8WRc1zn2KqiasrteCFeO5{5>8u?k7b`=|KkOp=xOc8k16TWRN1|`Dt1$ zG83QrX{KJnZ%L_2>SOEa>FtSSRj3w0yda9O3aoX>jfGnsT!%QLhEeAp?7*uuvQsm>gb{# zfyrU3nqX?Qf~z6i;D7>P%v@=yYO9RMrxe0!xVo!#U}v1|L%Y6fy#j)HN}6Q`qHx-4 zzv@!F>QiFztG^O#BH*i!>1!emY{4=tAsj3!VB+h1Yr|4(89eMML@e@5Y{hb{>;Y_h z_S?pG?8t7x#rjvmMxw})?8?3>wHg@$HK(~wZ3J|+qDpe#Ne6N)pkYc_Gwv)wmSeNtP=vPFE7`3Onw83CZQpK4P$p`O3NDe#C^G%i zjCQDd66uhtrCCC4x_0G0E!{qb>MFHr)i&nB`t9bHtdc%zqk`(?GV7?a>HC4)1G*l9 zEntR})q7Sbk2Wbz1{0;q6yI|0?K)OSRTbrC(~ExRMAEGX=Bex2+S`08RT9yUK5pFl z;(Pkj=MhaZl>sv32}c&VD&OBpnw<=8*vrS z=4M2##73|cb8)r8Ru*gQ7I*O&!z^flaX8d38LRORPejI|F%_?|8k_8xo-sJ2aUA3E z{MJStf5RQ;@gL8zD7dj5!|@+maUg%fAop=08?q7K=K`;YP95zZ@-cJ4;I+o*>QSH7 zGIAr^@FTyk{W*gok7d&SVp&Zl;~@C4C(H5H&TSK66{cAz@~!O@L$2JOS=WYWQ_=06 zFz_s^Z4Ze@C$q8y`{+}`ubgI{m?3gu?I_{GX!;^^q$=)>)}xyib2jI2Taj+p<=|7H zE~~ZfnYJkdtLprnZs-oP7;AGj18S94U!SA zuChfJF|C#(gr(`J0be#E>@BkxiC%E7jxEzLZm$+*@iy@joHR<;u+2hN*d%liG^M)s z^!8q4MFVx;j;sF63xAk80b;bJirUEuLxblP|GQ1)v4z7tQGkUvA z+mZKoL;iMn+pCR@@1Y^Lpjvh~C$BW?!R*!PKk{mz`uCvLWIC7bfFt;Fv+i!|_gMS3 zQ!V(2#py<~s@+AnX4~^#+9ZnUv+uI4OVS+wmN0jpuWna3U!N2AmUl)9@Iym*ix+r^ zqjL8?Gy&5tstP#zez=Rj_*-k7NHcT-1Gxjr?~vzsZ2Pk>{vMK(uBb+NljFEn6}gd9 zl}!Vy0g`YB@3gK~lL28VR?je$Qz)V2)S2trGV3%ri+S66cld@d&EVCRqcz%`RnuCB zW2XsHJ0W=Mxn#3QxE%Ojt9e)%b)tVMg%`TtGIk}fHDc#?q{r%{OG2eTHl$-Z)@u4A z{&2cqdHSahZK&%KpdZ$yn|hz3dLxYbs+W4J+jU$|a>&j)t@pL9WAy8um5w( z{yMNX>|`J9(~74K4m*1UaZqq6%03DO_vWPfLA-_p@G`hRD{zfJAHyTC993$>&oj^;bT^x4(PzDwsx(b= zFy6kqtXWl5^%P7$`4QXYvDWmwt01%Sv##2Gnd5!twmnztFf%o~64x%c51Y4-JJFx} z;Xmh7d!~}0`N%{0pl$0_Tl~dS{u;mf+Ne4;uzl#S=;#kIxQiz0ld-|{|e-#(MxaPhzoPP3K=kgO<^GCz;LqBwC zyPD{rXeD#@4U<$8TVGN!d(71b_-o4UU%zH%ziqc-dOH5<@kjo%uzr7f z|7fGA4i{kmLjaJIf>3eJSI;1XP8`Y7JkeBL+17pGSf1(HzVTe&`QHD5LE(^CG#-)3 zA*aHW1fUcsXKHCaElh3H!+mndoRN>uP}5UalabH$Z%;%?^u}Gf_H0wdEs`KZH=e7f4RZvGP5t`q~4UVNt|Wb z+uh&c+SFH^HFoBA_KRjkqg+U7cGBd&~>vG&X6=R`~E!TY0{6HuQ(Ki84L*U zp~i6674g$px>8%^da zxfCKE6*`6fDN2oJP@oo*{?oJ-qf&1h6k;`r31mtQD{-b(yOwQRw{PLbm75Rhu!>)Q zel(ZyoLFRG%l^BP_u(nDDC+W640x|cfmuN|wk!E#w522q0}C8kWyHCkL5CJSnsjN? zr|GIg8o482%v8lyw49e*X4Z@idro0=?`7D<{1VpsjkZ6Me|-}tc$;Zwr>LPvmp+|( zb?etd^NuR$*qGk83M~@c<*`)qua7MhzX@Ea!zZ*8{*BrOV|w}b5sExSi2eNfOzUf7 zwMx{RkEr-8&<(o<8EnwO2O*45!W$5DFNuTjdC!Cj4U-2$95kFz#1Tm>(Zmx`l!?P; zi0JC25LIhuMfZC80mc+@%u&Z3dF;{08D{)(2?gO3(ncbUOj5}unQYR@?4DHOMmwUk zVah78%u>rOx$LrtAiad)%Co|3VazhoOjFG@*<=#THsM3Egg4PV6V5yF%u~-jOQVy| zVdRYQPbmT&)X+l_O;k~L{6y4FVH_=V(Mc(-)Y40PX!OuWd)rh}OhFA*)KN**)KE^B z`x8}CS#8zTSIabY&{g%4sMe?MQYW!u0&I!?R#<@zR@h;2lvUMF$&BGcTXC&yF_AJv zme^^jt=3xX`pH(?ZMp5%+i$@QSKM*QE!W(0(fwB1$so1QJ3*i+L?|@yOJlZy@XEEG zU$5=g-+uwd350lUFDh}GsFy_cFkj3ehC6ZGPTIivPF8WK1EppM>o0Ybi z4zC8hbsnINuG;FWvCcZ#c8_Bk-;RU(jUeMv-FIEB(N0_KwNFNn7_cGbxI3M3UYax8 z?4g?Nz4`9jZ$&E<@LdA49lVnB+~xj`xxzF7S=*7%{#)|NDX)CZ8I8?JU$^wO-1E;t z58Xt!8>dmU&P7jM_0?JL6Y$7ek6rfJXx)cudF;9G-uus!k8=C($uHl0t;2tE{PWpw-~E7%UA9>; zIkELkuO63;*|N`q{r&#|7(jrg;FiOTL9K+jvW#XP z)1FRD4~9iF;t@}^lc~hbYyLMo$_&GHE4ksuafS2YU~0&}4X_Z2UG(A?l~h4FG>u&t zA|n*hXpkBuhiAB{U~=&095Bw2j&)R@3_~WeuIbP>cK^aO>GAMB2Igb@VXbD|dWpVg9oVzf% zm4R3=BZX^Cy$*yJE{>9yz4WDu;*q`}2vd%~H0Cjpc@tu`NEXZNUm}wkO=(UO9?lHo zE~%MKZElm9+QTL{!5L0*0!ez~H0L?dxdUq^X?^K*=R2vnP9wDwp7pe6FXbsDdftwU7WMKB__fRTHbQou37h*2Dn{P6dqaB@~LmfK5 zS&VdR8KqesHtJE8uC#q(3?T-$V@i18vJcwe&jw>zj&dxGl_3MU`M; z&|^kPE;Su&1msgM*{M$6tuLJvq63F&RIP56ef(JCAQ#v*$~Y~lDw(QTd{!WH*pQ-I z%qmym8rSQ&^guMMTYkzzRz0rKY0FuLEZ3SvPYzM8g*7bpcBRKi_Ry-3tfXMk<5wpt zg{^){=wUIN*|a^9lAPoiRMW`RCH8f(Y6WXv&6HBju9mfIE9H9V(-nCkjzG8!&TL`H z3BZILcO)P&2_HYl&d*bMArkVeeQL!Yc1;L=(5@M z?sqM<-C|i6yyZ17ro@|~?w*&u?QK(fQM6w7&X>Mig71msTVMU|*G=W*?|%WTJ^u!n zzy-$BeMd)L1234t>K$-{Ask`xJy^mOws1hxm0=BUn8O|Ru!j|VVG)lQIx;iyiBX(l z6&sAiEq1YqRvcp)&zQyvd-08NoMRpDn8!W#@sEKVWFZfk$VE2tk&&EaB`=xDO?L8= Zp&Vr?PnpV9w(^y+oMkO|Ns9000000fB=Ai06;(h00000000000000000000 z00000000000000000000EC2ui022(h0ssX55XecZy*TU5yZ>M)j$~<`XsWJk>%MR- z&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuX#v&*-#z&2GEj z@VIs;jK6uCK7Mva__cwzs&sy1Tr+zQ4f1!o$SH#>dFX%FE2n&d<=%($mz{*4NnC z+S}aS-rwNi;^XAy=I7|?>g(+7?(gvN^7Hid_V@Vt`uqI-{{H|23LHqVpuvL(6DnND zu%W{m0U}DANU@^Dix@L%%=oaQ$B+IXLy8oJq50jFnh$ z+T6*rr_Y~2g9;s5O{bLr0t66U%CxD|r%fPHZu9Ufa0}CEZxUk{Fh?n@iQ1OM;#S;K0o=my2 z<;$2e+l5@gC}$CmJ4n_{y0q!js8g$M_&IWC2{>1#jOdznWZM8{$G%N=^y=Thg9{%{ zyg0MguwUnPom)0+=gX5fmkvET1>eTAYv0bjyZ7&lkT;*mJo;|yq0v(>A2})b_weJ( zpHIJj6!GV!n`fS%yn6HgUH<2ueFPS0;DHDxs33mVl~>(^`a!r~2G}WR;e{AxsNsfz zG3X$FAg(vvh|uNNURE5YsN#w&w&n@* z;gCosspOJOHW^HjNgV0qlvGw}<&{`I0woesX6faZV1_B?m|bjnM3-cyspgt&w&~^y zW*UL!n{?J`=bd<38D|l5=IQ63fCegPfqN3s=b(rts_3GOURLN3hc+tdq?A@_X;+U5 z5$UCzcIxS;pq7+r5SxZ->Zz!vs_Hzg`PJ&Ej19QzthCl@>#g2A`WdVkl#1)Gzy>Sq zu&T70oNY6XS6i~l{@TbJ2)+_4?X=WZYi%LMk|-j8+m=|PXtG`_?zrTZYi=Cbo+qJ+ z+kVSIwCBbv@4WQZ%R{;$QuM8Vo(1@Bxb_At@W2EYi~_zQrZ?fj`auh@!4O9*@x=5Z zJfXVzdix)^JW}lO#~_DntHrXF+}~~J>C`O8BDd`F%P>pIs}JzTZ1c@H=ZxgcJ=Co8 z&p-z)w1GU|`|!|6C$03-@D;s-&rC-x_0&{%sM66@XRYo#C^luc=zr1-+)u2w+(y;ZusGdC$0-*{?gnV)`~|i z`Q((>;%bimq(0tp<(zl!`RAWp-Yc@Yl|J2!%%-mFb2{z_`s=XAE_-;R*G?Pix0{YT ziMp3Oq6LM|F8uJs7k^dl!23?Rjm!Veyz;)sy1DVxS8x6Gav|Rt^v>qqed)WO9zF1o zV{iWX=%>H8_TsZ1z4yGw-+c4rPp|&{_~)-bv=qLtTm0>lANK@Eq4MqTfCxK@0Eavbq7a8DEFazkhD1!F5|=0~Bf-J{v00j(YT?D0vru*5yxUt&=*Oc_v6#%F>p?A*JVBn1nXQ%?S0=oep)W zPIt;vK=6#2BYbC1hf36+)h*zX1S+knR=3L44_tKw zS?#J=$12vZf@Y~?O{-ehN};H-^{sG?s|U;)g0RZ*W1bTviH64H6(eP8{hic zcaHO&?|t{n-zny|zW@#}6ZK190UP+hIV3QF5zOEQD^S4>jnt=s_F$(A+6Bq8H6* z;3&G$kdCxw9xdrgTlz4RzO<${otI2=`qQ9Zi>E_P>QbBf)TmCis#neGR=fJuu#UB? zOE~IT+xpfFsWq;5&1-?^y4S!CHa>nW>|z_+9mGDivX@PcWHbBO(AI{tqfPBWrH^2u@a5D(J;0Ql9W*5%zhCBS>5RZ5t6Hf6jL)I4;ueiq7n{i%reB&So@5dLX z*^rwRpzT~E&P_of^dD{r~X&HM6O#C+yB=Wfkyar6G1`@Fg%Us+Ot7t3=F9c&lx z`OlZG+@R~|=qSVL_@KVGq?erOSaRrH(wgdphahmpth8PFY_!J8v?s^sKvG zw;zY!?&fDY2y&h5+Y{f}areLFg%9scX#3j-&)SaD{dviA9?F6V`0v^M@iF!L_?jSi z!drf`hWFq1F!#I0w2po;4WQ&5@A&~zoljT4yy~IL_Qn8kb!0z$=*7;v!`t5Untwv& zSI_&xw%+L8yM5G!@A&o+fApdspzc%O`{w^P>GkA#*VnGH0P)M~V$Z$Y{rC4AogVdl zb-wtmyK~DifBfiQZTV@j`}DiNto&&I`{!R(iT>OF{`k+o{v&>V`upGa@z;Oj3P8B0%m@i+bPV6L8WO!0uxE^e1P*%tWGzf=+xJuRMD#JulU3X8^H;3)AQHZE7 z?sABXc!mGshJ$#CJ0*vDcriLCgLjCC{vm>g46{#R2#KHAh;4|8swh=l$cUWChZ$u} zB{Ea@^oOtrgnmeeYY>R5*o%&2goWsbCPO2)V~3^KgwJAh!kC1}D2eWaie|uzzBrAA z#CAk?fI>)(+Q>_BVG*QqjSZNM+c=K1w14J!j_8<<`zMa%*p8+|i73I2?l_N~1dqic zkMx+2lw^;oAdUL?k5a^ssNjzPS&&I2kf%V92Dy+tgpj77kPI1-Gvtt^0Fe@TktS44 z7qu&3rHq=gQJ|57;MjsYn1ii?j~JPfVWg25m4`1Vk~Bp#B_&Kf*dQh8lD#65yMmG` z*^^XMi2Q<2!H9MMQhnUy8OeD5jGgy-tD}_6(@jZvcVjn&H&vBOnN5zEO;ZVbOSqGk z=#yYMNC{<=!#9bK2#xDBh7eSS8e@ig*iPxBQ9xLgvxt`J(w23|gY^@Ze7Q+u>56RF zhd|Ybn|O*~2#PZWm}@wShIxn1Xp1)ziT~7>l=+Lm$9Ha-GL9LP{FIYtD2kein333+ z?xTpMshGG}m?&jW28C0V`I?LLm#V28wCIVpIh&v*K~wWxp-06 zd7p=sxQRKm$eJeAl+OOil}?C;WT}<)v^}*rj6#{3#rc)t8K6u=k#F>oFPS!2D4+@| zMg&@*K%g*BqgVjCpcJ}84Jry2S)m%LI2RfU8M>h$8aN#a3LhGxCW<#B8al>#qAWT* zDe4I&+M+VLHZR&2D>|b%>Nz#a2{D?ZKB_f4x(Pk{qeLn-Ea_DqNs}93l%5G1E(nq^ z=mtYtq*R(TM+%d~*;YOXjW>m)ILR0=35YjZrDWPSK&d)VNR(N*8(XP_&zPJ2S)aEl zpS8z~Zz`q}TBdp$JF=;kuLzE6d7bUjr*%1s%lM~q`Jz+0r;G|Sefpbr38~ikr^XnZ zhRU57Lzt=9sQ#R4J!e{stLc{AD5)mHp4fSr+zF^=37`HMjbqxWu*x-$ii(4Ysh!9$ zNNK6HI-9+zsjix*u^Oy~GoB-bn%fDPi5iRK$()%9os*cCZ?LGsI;{gktms)&>Y1Nx zX{SmFA>)ak`Wddl>pp_u4=^C%+l2R*UC@VOV?|QECy014A zq?!P){2H*-;;)$iumXFqMHGO*im(i8qzc=x5bHJsiwOoBu@;Le6MG32d$An*DH&@C z8{4rWYbhU_uM0b}DBCi?6ekc0bNZUHFk3Cl^rh=+b1xgSI6Ev9g@&2xtog*Mpt=ho zo3lil{wF)ztlcx3q^g}ld$UFRw6qd^&dP+#N{Y8gvlDo-P`kDAa9E=+NC5X zw||?s!17aA+YCdixRA>vNJX|)(YKL%xqd>qlJK~g+qplYxskxRo;$j2^suCRy2Jvy zkRZCK+qxK{x>{nnt~B)iUgy)GhK+Pl5n+r8fVz2Fbt(|+rH!e zYrgR7Hv|yB^y^9UTfg{AN%MQZ`P;vSw7>ovz=Q8L=}9&8Qj4Br94x{nTtXy#!YYhHDZIii>_H`L!7n_+ z78JuVOv5;gJ~o`gJd8g#EWsn zzWmF;9L&Nz%*0&G#(d1koXpC+%*@=(&iu@!92JNR57Yb))hrX&JPz5c%?Gi~&*06@ z0M6(j&i6ph{b0@>fzIWi&h)^}BjL{20MGH<&F>)3#9+_ffY0rq&-1{~^sEs6ybb}~ z5Ci?q0#VS^fY7_3(7M3T34Ia{tqu|G4-+j76&(&2JrEgP3>(eS|Gdxj4A2mb&C(=R>JF+tPufYTmr(_Ep`4Smob&HfHPeF{Sz3`GqM zM{NyBEzu^;5=))aD-F~J@zkL})u3S2KW!3NjnpMA(mcHtTm1@QE!IIT&>@`=V_nlX z-PLIA)LxO+GcDBx0oR#8*O*|}vVhk{P0~=I*RkN&zyR3dAlRfp*o9rzOzjSay$Xw+ z)iBZ6)d1P4AlbM;+1g;)oPgPxjo9g+*@)oTq5#@|&DT#M+Ewk=U18dmpxUd=+2efH z2*KJhP1;T&+nr$Bah=*xz1wpQ+d}QtC4t+c-PcY1)mkCkkbvCD?b_#{+bv@loA>fH%;CG$h*)7-X{oRQj+u@DcrCr?D-P8Jg z&iuX34&LAu{t^hD*A$N5>Al|XyviFTNC5 zp590BaY!v9_D2Z z(sLdXcfQ>|ZsZOz=%|3`YM|(gZs-`j;TrwrYhLL7W4`4<-skwh=x(6tRlw;~;OUz# z>3Tll_dV%*&JUno2C1F~s}2RN{sgbi>Y`5Pln&>XUh7fL;E^8Z5ANuBF5$KP>w>P} zZeHxW4(Q14>!mKM`w;6_KJ6%7?a_YdXigN~ zjt1v`2kAcGZ*J_?-r3^b?xXJEA4t9Se((66?=BQe`rhyU{&4*M?*c#Y1YhtN5%30| z@Cv{1-k3`a|M2#X@DM-o6rb-BU-1|}y%(SH98d5Y-|-;7e;*(6Bwz9jH}WQ*@&b?Y zD&O)hZ&^iW5_=-NWfJpLG4mgR^TMF>9l`$d$6@o`;PXG9OC%xm>R|LQf%G7u^v1yS zP2u!#1N6TD^#?)q!(jE(fb}~s^*PV=>7ex@0rm?-6PLB=1!ADw?Nm zZ&hs%4r}kYb3YPwzYcj16MO$kcYhpzKNWqy5QE>eaG&#mPf&@!4TXOUjn5j3|MijY z5|957mA~_o?-Z9`5Swp)hp+aT-}Iqx4V};SpC9(4PY$K;_orXrw!AhESw%dO&6h|!(1k%G&wsl|f>R@gTW!I*6zE@A$$~R;@+AbbzVe0DQqV2oqKJoBxsBXb>!bNP( zZ1VIvX=8Ym_2uN+arz%A{?>ie9Ua(6awq6lI(gpyt zLeQDPivcT^3b`?34O>;#<%>8mA-a(Gu7zQlk|DF2G9QAAiDo2}p6XTz3`SI((MLuW zOHMClfB9+C|t01mp-Zq2i#;!?+ zSg)R(TO_WEl1;?oQA2bl+me6V^bH6~?^>|13hq6umT|6r(=H-qyD98rl%NrBR$QWI z;XilVD!Jx4Z)eLcOLI6q7Vlo2Nny7noq676l%Zjl?Spn4S*(pDQ!%V;G;j{Hj|6t+ zn$K#=pO2?bZn=5>Qc=Kfb7W$sz(9!)>qzwODS$;GC<tqx;o8~)nNE~CmVNG8rDUZ?wxl9SpR#ALaE6}SXQg0XxcqbZSUDZt79=!Q%}88NDQ$xcF0J<1XkR5X;n4UXr)b8 zKjqq6ucbh+Y&6v(&CM;wWdWmiV7Yaw?f8tDp-w)k9@spfWKim|S-rL?;=Gq; zX#TCf+8+Yri~C($89bNV7Mm{lzKZFwyI&1oyzSwdTdvw{#OdB==<^8A`0RGyG#FyW zamBpbocRVDAd&ArTkq5PNnCM{ZHD;oUh5Y7Y0taNyi$PqYuf8)TaPYgW>3F(GPp-a z+xXkzagg-Mp3)K^}jlHl?D1;hq{)D%? z@U?GuMXOK`rxQUS((qQLlVPyHW1PF0kaRFinGp{(Gc*m+L(!sQ<;*uWd}+~MQsm+e zWB8l3d1-vbS)8ZpSm$K{H5EaRRYFE_w))KO#^ zq@mF0Hz`F<(TvkmA=s4jGe`Psb|~}-ACEYu-2Lldp86aSZ(+p~wGIy~l%%t=S04_w z$zZDcAtIevLiuz}l$wl9_dI#U8fA=Xr2HKvE$6FM)=68t^c|3JSGz&P2%v^eSNhU8s1&Bqk?BmM+0v0BN|gn*X)kPAQ;>EvRzP(khQ-9SKlI3#()Z+T;jQ}d=*z3Ub2c-i}2_@36i@uhEl!Mj<`G7q!)Jtcnmn^(jB_o4w7 zuv7M1;LiFN!C4*bf+O2t2dhNE5jNU^Da=G|Uihj6)^G?p++hPl7{q=3@QB@NVG|3M zuPOFciCLV43BMS|D3)=7Xk6p0#Tdt$(D9D>)ngx@k(@ym$&HCjRu><+FG-d$la=fh zCqFrCMwYT1fIQ+TR~gDz)^ZHE+~xaa7|fi?@{!9tX8sR<8O@nEGl<)~X3A0-&YcwT zoRcJHJHOe^iB$8Rr(9=0|ESM_u7sX(Y-mE03ekza>!2aKXhs*>(F=w&nk)U{OGlc` zlZJDqHSJeCe>%)VPPC^*y<|?Gy2yZTa;jC$)KIV4)K#9fn_d0t5U&{5mWcJPg`6K> z&+UtWu63}-32bBYxz{@`cCum3YFghK)6(W|vz?vmVPBiUy4LnOxg8KvyL3nAOeVFe zw9qpU(GO)^c9*S9lhi;k-M}<+j86iJMAb8U$lepW^Uw);8#CKd{&3OOZMq8%MH2zf z@4Fpb;*E$j;^Ni_!@cV8hvWC)<7R7JE8a(x{;}tjSGp=JUi42M3hGs*wq6U4 z4Xg`2YB|MuwX2@lt0P_BCU-i|v3m3ZBU&)u)=1OIK6Npd)a^NsP}j%sb%NvF<-CUQ zVXhNzJhE`wN8ddEoNY@z?5-;uY0+dOs-X z2O48n5NSUcl+N9`%OT`ZAYpFA-Jm@mAS=;7xP-zo%ZTjKF;HbGv%q zb3XT=KmFQWO8LmseD(tNtnsZc+=43p1(<+m&h{zc_u0ce$LPI&`G325$WT}-)v9M!7A`Cyn>pJJV zLbE_ZDHK1LLc9Np!X6~MCM3NPWI`rfD=+*)6`aB`9Kw#MhZWSoBP>BG97DuYrs@De z*PA;cnL{?Tzdx+Q4aB)$NJIX2)4RQ!vA%1;Eo{MnlfruFru?%*D}1Fe{69BzL=ehE zvpYe4BebxiLmV_gP82u0@IyA#JwN0^#R|nCq{K(uMB!s7;A_O`o4gT3MMx|~2;xLm zbS$7_F)+Nvt-C}ZyuxHUh+QPchC{^08pc-?C0HyTU$i=Bd`9F8#5UAKJiI|ujKyNq z#v)|KKFY+#$--Ccz8DP0YMe&dE5vIIGDA$nXTzGhTE_6(gtybjb5q59oH%Z5Js2EB zfFwYCBtTE3kw}xNd(6LNRK8uRLXR^;U6h%2R5FGn2u9REe$>BQ?8jc@NPr~A3-ZR2 z6vdFF!(XI{cs#p#Y5qu*j7V)<$Bn$el(a?aYstXM$UX2uQus!J?8%x$$gk4LoqS1+ zG)6(}$P3)VSjxA-YexuV%A3^3a}2^sq)PuIy;c0jffTy}4907lM|xDTfxAhEWH{$b z%fcf`wp7P}v^%E+%HZ=iab&kA%)v!O#p)T#fDApQ3`4uTNWEk`QN&4)l*M&Cyp*)V z#Oy$|WXp0S!;U0Ofr}$88^%$zMSOfrrL&RB?8>w=N)ki9GZe$q98A%)E3yQ;Y?Ml7 zgv-ecOc{(l(LBwds$<-C&Syh{vh%XjQem6Su_B+u`} zPUmz&<2*Fel+Qe*PsMCc?L16!bWO3u$o)*k$V5=ZL`)>NkoWIUCWP(q|m zzC_FQ#L88)(9pwB0kz5D$;)Iz&g4`%!vsIjOTIUu$xt{&c>}!H^PI}8MVhlwr`f}a zTS;|rP}Y3S8)Xe44UMZ%JY5pNR7BFo+HPAWj(jui( zFAYup@4LOubJ3;fK`6!3&xDeKyir0m(oH;6K#e-0EY9>iQ4>AUU+L3NLuxr`l6Z#Wu`LL00uMQ4Lj9owG{)v;5q@*5X-KWhK{O6&7 zg)P5H=+=4l0(d1@H4WHyrB{QvSBpT{Zwr`tvz&X|w{SgHupHQU712AuSd!4#OI`lg z9>p^tG!>LJIDX^J{HQyaP{vwiSw-xWh3#1cbl93T**2}%-}48Xr4XErRh@+yivq+} znag>Q*@2~58aY~!GzaqYS*^9LZgtn;^v9^(R&(P@&9GWAN!ni6TD3L5t{qvKk=IRm z*|-(kaIwv@HQ2ul%ch+~ny476WtOMq+n^QLF(uoujk|AcSfyRsRr6T7Bf~;fQPe{o zr}d}AgQ9|5ztMwS&NWnp!`v-ZQpF`v##J`bE!}5LoVoj4`kP$-!^9!wTvzJS%Kcp1 zeN6uYT@TdUO+8)I#ah)Z+Rlwq(W|}J)zQdh5zW%G_~B@m0tO)-RJFGD!trg%3SJoom~Ch5<#)-4btX3JlhjFZlT$Aqg>cc zUfmtvs4QRS1;^Y?-_ZTr6ms0{g-G>r+C*j1>5NK`c{&9K$IaVcNbO(R{a^FtUip<> z%-s;QZD04*2<&}ad^kefyct|v&HgmU$ZV!K^v5t|!Dy^r-yLC-$=OdMDn7Ko6z;=2 zjL#Kz#|eGZ7H-oSro9?w-<8GTdiKuVTL=h^g6SpH-ICT5;H z$ZT%rUVUb0W?HrRNQxXiABIsO-b_eN=VPp8W=3XemSJONWTC}XX@5^V)!QJUr#_41fTyRcSW1Hzd z&QPAV>6+~6r+!31rQ}RDX_f}+Qx@tcj-y3A$#ay>x1>s1#_6PfL45{Ik^W1J-s*40 zWwWN~AZ6!O_Gd{PXlp_1es*gr?a+u`4!%ZWuy$qO#+vy-i>UAX3)x}=*<@1!UpWt zF5=gA=FfgLs@6lRF7BVk?aNl}uQunz{>I<-?AZR6?V*O^$pq!Aq)<(k?5t*ItyXTN zmgUseZH^{w=xpvHUTsn~XS$?ptiHtV7VqU|?QM4By9Vy)mTu*|W8_8WuR%vt?)ii-bwySfhk(_Wme)9JO~a@JNG&sk5te+*iq;6TJ&={2J|==bk-wu zN>^h`H(>i#^hIy%_B9{$QrC85*F#x{Zd!NSptcl!Q`eod%f5vusY5lO)7FPA zw6SBe=??CT&GVR>_jd=yWtR$L^%1Wf+qXUFf{pHR$Im%e2Un?gdKc?*C)~nSOIbo} zsTR7v*14>ccN>f8hc_9Auk(8!{%cbbY~qaA7?t?CHTX!p)P&D)eD`>kkB5+#){&?6 zeJ#0>-QAYw8*%-_r_G6T&EYTqxRh#mey4eezxa+lDUL_YYPfl(pZSSz@G1{*MbLGP zztw(&cW8Ths{gm7Z+csg`EV6`b4LWQx2ynzTEdN4x-Iz4J=}=r`ca$uQ_85Cud4jM z@0dDd7stVy(|Vm3*tKumg-80RAA7Vfdy@Y+p|nV&jr)?F`|&W_u3vhR)%eDD1=+NB zso(sx-;bT2R}3H8jRpL{t$T^h1HD`O!~gt`cl?NN2DBnGy=VM=*Zit4*vC5xl$%`* z25Cwy^gFa)-tFK3o?zJi`%Mo1;mh=UFoQTtztUDua}*9=KQ+CFKKw@`Z})t3E3M1p zb<_(c;OQmb4NlZZ?;q^974K(P$Hp@BW8Gcv@$dcT_N3oq&(hXaeh3I4$XS8Cl45!> zxM^Wmf+w1)E8DtgAPDdJ(Knv!JKy{ND>mcVOvaN3$q8+aCe3mJD=niIsnMFGR<>Ry zXCxkzkYG|Z-32#;vR)A=pVRC1JMv9bed3}{pH`q)Sq5N}2cel%niAHdAerGLR2UkX zE7xqY^?0;YwJ!N%i5Ff=TlZnTWBHhB35s&v6JsE z;Ic8VZ(?KeGA{lttKRMPHg|VTwvIJlS#a^y^X~{1IW%O3S39-1H+{XGZTR@`qIy4h zO_z4a;svbsPnQ`e%%~AtNN}AydvoyRm?!Zf#$4bkR^)~7p*&*h8ct#Ni=jYeD4U)8 z$a0Oef-4zjbU_h^#hN;IejB2Vq%eQg5dMpZYnsQCE?YW-sVvyBcqP$=jCQic%^Nv+ za^;$Jls=V6l{SSq6PhAmGLsrrn$l`eNNkA~TU(aVRa#$zbnWYR)n1!_2NN!=bt6uW zB}Xo$TUX^F8%M7;j(n_W+q+VyRu)z`Fjm8&FM`gcIGLZv5mDn^Ty!MK&Ra**##6cm zj6{$-tNxx$_HH5B2b~B#i(500d1KG)Pq{`u<)a>f>orH+c9tnugnkWKXOLr* ziFaRk{}G27f4y}F7i_bzXHJ13dUYUQBAR&O9Ul%OUu<8v<>Dktz!=&-;BoiPX5S6O z4vcS+_uFhcshAy#MYxJlz7rd6kAD3WG-MCqGEkb$KVg_i%j!GdaMOyNx=Vo;7@# z!aEvXU&9qMeshg!%bqxX#(JUvH3K@73dLBCTzXoO=f6xuZ+%Rg z%w37B)kCfwwS*CGd|%_A;SSZbo}ZT`jBqK=`#F;D*Z3@QzrK=6ZVxI;b-Lw08K8%V zO!#ko{RoIl+GjcBv1@+UFrWKY#0mU$sWriw9=fgAXXTd!sV=xVqB6-t1eW)_T5Sg zG8ADXx(7f^SkPPq%-;;x@Rlxo;=oV{#xYhzh^H{2H_!-})@96#ZzAJh#0bYZ zM#qc+JK@HLMld_l@q~Q*qQREd$6@_(kU}b?iPU(HJOXbNh%{tPZ`OGjf(4Pi9C_)pe z(1kLzp$@GlK-USlbA}8E1BDZ@9;(rea3~K`Qk0r>qAXn& zE?bHXY67bcXc~}AH%U`(<#dQ&qZ(AWP|=|F(1V67X-{eS(xe{irwPeV`qF~H3ns5^ zNM$ODoO+3g4b>=62 zcGa$Hg{$P;N>0GKRItko#Q$iLJ_`y2uc{O)Ve<;v{>ZiwX&kfK!XDE*8W!)WlwF`< z0ftzwX4X|3n%*2e`&l{Y6|;)f>}eg_)XAAY-WK?hrdaJIJ@ zQLS;q_D3V`3`E{5937FHT(C)Zx^Y}Ct8%8ZtI0O2w6(5sLz}KBoou^?QYZPU3*Mup zley*1VdScsP4UWiy^125duImU&DJ-v_|0x}bH`o#lIFVv4v}8f_u8k%x4WfM?}2Aa zUk686g}0?0q4oe7stC?@{@T&qcnC7v= zUi@h>hkDhk^K`1nd$1%%&&sxiwX2mz=v)&L*Am>_f@oa{TZgyRywyX2i@uPqsY^)|Ss0bWh`l+soL=c%1o zhzhU*vUOLzX*r2^afvSp-sTLXD+!ly=kVL6mJT0ao9S@*RSo23LKDGLer0`&G`XIA zcqj|b>yHav$V6Ybx>G^!`jT4b-}`M%t7x!dDIDpq);1AZUb&^4u<9|j`tKaoaj7GS z>dMl(p|Q@VWkR#)%1rC%7HrdlbJOY=|D@XKja9Bga~@%*lN!Aa_o?HwX$0sD$B_*~$B2@o$Ri6|C7`;1Ng^4Rxbq*9JY{wV4F~A`$MTodPZ(n-SFx zt;GFdpy)|k<&B{H6`l$1k@dyQW;qQy>CQ`RSPU8m&xD`T=*kRMhR{@B2^t-ng-mYE zPFirE>>xvKVg6e$7gx*-NI;AoO`64yxL7oydPt3Z`TbE@I8*WC(@al*MIHApVTHlna;9 z*`M(NDl*kBc1gOGVt}z7pWO@4NZ}_=ON}w%6h_iB_Et24%pp!-H)=`-S=*Zh;>(1i zII7~ZjTn`&<0Z<8BG#jC%^yBe;TrZ?3o4F?!Q$TdqVyCYKz1WRej}(&;-yt#Q$UgS zP~)U=8jG3!4MG~Dx7i}1`3Xe29Uu1N5|vOV1`06F+NT&H^-v1LjO0n0OrN~s%~_=I z(PKWMV3sl9?0v$_nMqN_qCf&oLS`hYZDUJ{SOV%}t}!5!h@`v#SUF-4&1_1SsaiYU zBmMnhHJTYsQsS-^T37C4ucg^y*-nd@rA*It%dJ$_}L=_Xj- zL%05+CFeBe?UbHG_Sjq)B^XlVTb|~R@ttP8MMuV>+}WjG5+`UH=hFn|F9PP(F=RGQ z+N<=RS)SKenq=d=&S}w|GUiOvks=z3otio4{&5FZnC?baCY-T9-Oh*=_ z9ukUBxQ&)k4I>8S-@9oK_j!;JMJEj97PuWL(5V=6PM65FP?@Y^kNz8F9O;MRX#P5g z=vG}(#dW0gQBjbVQJ1o4L=h?f4V8-$ggN4jm7eLyAy|b{7S~l9vuSCZ!qtRc<(yh* zHw7vke4aObQ=BAfP8}V5qEaQXT`|cfQeIL@+2kbAj|O(C8m_38Wol_slEuvCZaV7S z)t&HAYEK>Ap*HBE=BBGMs>|K#19cPUsp_QW>fXKFFnNWqLf(2532(;R!qw`l9#=65 z>oG~I(jBX&O4F*6>Zi#njydZg@oI&Ip03W6sp6xoj_WN@E4q>(t5PVqt}C~_E4;3o zy!w~AuIstBRKC7rz1r8l;_JOW*}u*!yJ{=JK2Sk@l)^47!}?Re9<0(m{;aNMRKr%R z#Wt+OGAhMhEXQ`N#b#`6ZLG(REXi^d$fB#rmaNLIEXz_r!nQ2T#;nXL?8(9_qJV%5 zvEXVW2I+daLdJR-)7HE|=P_?p`A3 z9&GR;YU&cN?~ZEnF7MVcukt!?ib5|q^{(#@uenO^u3~ShCY|->uJ+o-@qVxPy3P24 zFYeB3@s{tvf@Sv#Z}}4L`Jyk%hOhj-FKf}S{pN4^=3D&)-BoJHAPq~7lLTEr+dt5%e7*5w?t z!prvdC<{-V3PEXAiK|T}a3>M4gi3JqGA39Ap4%a#FaGeaek1}%hXwC&js-9T^X?Ki zvES%$d1@XKk6k%rX~f0UyxE3FA}i)fF9~03(82J@6`lSmj$PDo9N>ZKvyL7Q+XS(0 zF&Gcs0-GQ)c`(Ys)EFa;OAc|=b*J{Sl^vTg=*{uOIks zBRilW8ks+;m6Y0G`epL-v0o=2pI5;s5fE~3&YRS{sQLjPiJ2cENX<0dDe^@h08Sq$ zXTlCS>H58CxwYTwQIIE_UJn5k4xvULbRbmq6_5OtgpxA%E;9Qepf6+J@sa35GHL69 z(DR|pVq!-KDufLm@*f-N`(-l-CUgINGoZ#V`pzsnx3fFb6Ei2WJg0~_59bxqrQz_W z61HO4nQ{_x;%f$%bwJl6E(F((a6KO*9S)%;H~u0YjG-J3bb*$P6UO1S(4l@d^yBQx zT{;LPGKyFdAsI%^a8<WY-hO}&7aV~Oq z=XrNh-rZb!W=nS_RLAtnOtwfAh7J_|Wr_Dp~GVs@(cRp-I9ku}93 zCLAj&@O}{>R(N!8G;wXY&{(nlehX(AXDjxqxOR{BhK`LFT><#*M00@+lsp@&?jcO5) znin;XshiF+oQBYyH=qcbsKr6GTpKL4#bcJD8#*5qgu5D?dvX|PqBS#7^T;-m^4~PS zA*4%57vA}>rE_A35?!m~lBW7~yScF+JBlmbIGLTOHao(uxyAzP9orJBR=E^Qs)6)t zAOkG4e{KXnvC-spA#3pz$K0wTJG!U))}kG=7OS%h5+?5W++8ZPrV$_0Gw_HTtC_Cl z?XI|c`?nv8uAMs_8}UsNyt*g;yuy!rvLk#mFFd*Od;b2r=n?yace{mJyhKqv#CN>M zXMCG;`~ZLaC{wS$JN%_xw#bkC|Drs}zdX#RJe#k4ZpJ)LI4-VY{KJd4%d7PK>b%Vd zz0k{i!vp>G4t>F@u_4nua;tpLciztFkLFNNfX_< zSStZh2}B6!%$1*jCTeL^Up`Jk3wm&v66(mIFZ<<`S#@64E?4_~+8VQ~RjgsLy7a15 z7g(N0lj1y!3u)W2L~qtYr^%?!jVUtp_4^laV8Me47dCttabm@b88>$P7;@mKlgCZ9 zCDv=u{daS9soi*ECidv7;y_9KpjC>n+Zr!_i>#qG9cyQsv zi5EA1968iW&hBESIuj@ApQLMjK0CcwPS5*1YrO z>~`S96C1v?_s{Y<7kdkRyifq_F01AEgDxNH2JB)X@07toh2A8bkirTryl^-6G>pML z`>?C8y7T@M?>^Sx^GPm&8hNio0(%0{L=vOJuRswSQg6c?bHI?t9)0`~F&%{*lE@;B zJQB$yl|+$AdRSy!0d8JnG8rro2wT1fS&ZOYT6F61@IKt5G_h9$b=5r@B1; zQIUn_iigV(UCeL6^7K>4pAM-E5YOnqJ5$C%&G=_Z%viL<#i4L)6VgZ}ZSPGd?XyhK zFc-uxFAw3<^n*GN+!9X9$^`Su`_L>a!B8HZ6xLW}ot4&FZM_xOTy>QJQxtW2Y0ng! z3oqEzhBZ*w%z)kWI#K5v^}{jE^DS#kR`5}I7T_oxCs6s^kk3i zOgH3}yJg9zv_>Y=M)UXubmhEMB^u~8Yo3~Fj&7bYKKX)%%^sw=g}P;gVyjU)x9YatejDz%<(`}Fny*H5MK4FmBTh%&DJnIDoHU5tLlYHv?^Fg_=Tw7Al#>r? zv4GrgSJ|#xq^k$*yA@k@+U01+)A@N(zk^}xmCj?Cr<3gr?-QVr1t&eWLv7y)cPkC~ zTuhoV{~h=e?!MjcY$>0-Yl2Wdo^OTVt*YDHlly(`$7HeSN=fE1#kxa<5H*~ zfGB?_j!*J9gMKf8OA42eiHx%L!iC9D<9ubMHN}@+p9q32(&XbM`2e zEcOwQNPuD>Ek{U09ukp>ROA5{*`7bvagdD+f*vJV$pl*Rg^$GKCOO$jPkxdlk=!ID z`zT6K@=BAZR3&;=`Mp-Y5|*))FbDk5O>1>-RwIl)< zZn2zmbm52q7{cgzi%}iQ~mG@~tR zrQdOAM%#GOcYz{tKx>-IcB)pkf{a~w`Pj~&^wgXFu*a%ft!h_Q7S!pOshvm6t6m9P zSi>IHqM-9y;EESCF7}MQd%Ce-Y>EyhsDeaZ+rrJ^247X<66S0=6 z!r|>~?N{5)dP!uub!};>+g~nM5+NN^%jQK(seUz5Zs9v^bt=-mjyL#4t ztt)AGMK5@(Ti>^WO|%SK;&l02U;`icm743=ZI|X*EfN@>Jv^(<#_Ke)6pOxVy)br@ z#u=Dt?`fokCW39K;QvA?Z4MUfeo5S77r*|vktTjaYEM?BC~cI*l5I$G88Rp0_O!>< z8(q(MT+=uKwQt2^R$5(iylp-N!Z41Tj1LE5Rdp}0MvStQx!h$h_m+m{-Q$*b3lfe! zd4*3DbDPNgWxItrx@FC=o9SFj1YNSr5F z;mk+v-f_*$aCpigaioKLTsazt`OIk!^Nida=Q-E;&UxPRkkgv8GPQB%3KTk5C=ba% zeGSf9_lx7wB72uP>h&hh&!5-aWkK5bpB?RKSG&Ib8#Ux@ zIIJkWirJE4Jh+kwb&~rlc`81Mmy?|&Y8U+A319di0Uq&*7q{UV-+0F}p6$wQ7J}-E zG-UXy!v_*Cz%KvZ`vy3~{yO@*;y?0u)1MyoydnMSS>Jls-_Knu@>JzHkJ40iB}?~I zO4x>aV-Mex$tuPuyI+q;0u&$l$yfgJgQwnvp%}xg1MTF?wRsR<{<<;EF3XKGdgkBo z_}>@*_{m@XUCCIrv?m>y=Kf!uww=agYE6y3_SoT@Kas}|KmPgOfB*jyK=Kys|cT((hZVX?-4ge=e|1MAiH;@B6(9D9P?_3}Rqr&?1O}-Zw7A=2XjydS8l6ha0lC_27gcphmZ(0a0FY)2a7Oc zf=~&Y&n@Vo5rlkgA_mt+qM5fKwn5eZ8WJ&6z( zu}BUP5+{)oD>0oC?c+?2o2bwdm4pwmuoFX36i3mPII8McXp}gS6p7>$KXDab5f)<+ znd-}~98eXe?#LRkf*w&8g`*XF5g3C}7$Hiaip#I0j_*2&7l&~&ToDwR5gMaW8i7u+ z6o#>I>uXLCkd|>8O@aWv5gfx29J`Sm%h4SBs~8syz}ib~Dv2A<(Hr4W9_NuB>t^%Z zuCcOF7b*Ve9qSP!oY5ZxQXmKNR?u&}o~69Bv6NJiAX5S$8xkTTQX+|j%8V;)Sc^iIc37F*_hJD-$y_vkM*5bXY(WJu?*zQ!^#u zGX6)?G*43qIg@&B=NfHn04I|#Q4<78Q#NbUHcikmgUiEiEAQY-E=BV;lYlmZlQ@gh z{Bjff0%db5jQbW6IE|ACh7&rclRBfYr+Sa2@W~>Di!jZHGEY-Ft5ZD3bL@~)77kJ! zB~FpP(=@}AJl_*OH!e4uOEY|h?z*#l*mE@9Gd}y%Kk02giQ=agXm+BmIic-2|I;rO zltCM`<^~BrcPlohlRq8QLN657ROrvHNk28SLNOFXL-f%iRMI9CIzLoIQ&dI2j6{RU zM2!`7i!(-hlt_zItA2DFgOoUj)JU7u{z)|o zNuBdaSAa>U)Jm`Po1zp!vGfG0luN%9Onpg9y$wg7)Jww@P1E$3+)Yg_vrXR=PS0sf z?WjXD^GxFuPxEvefs#-A)KCAECzUif?^I6<)llas^%7N47q#&Y^%)%%QX>_V7?n~h z)lzxHQ3+L2H}AT+>xu*EO5am0jNzUgK4k+*Mxd)n4!ZRg&lxU-y+? z`*n`=)n5ZvUkTVkeej&xm0w7GpD3W5;k~JJw@A zmVz!8WJi`{OO`!E)?`ywWmh&TP?lw17G`4>B3xExYu09ORyc81XLpuolY?e^7HET3 zXh+~@ht_D1c4&(hX_uC1ZB}WU7HXr`WS>@QtJZ2WmTIq7YqwTmvzBYW7Hs*|Yr~do z%a&co)@;*OZM_w3*Vb*{)>+#YZs(S6fmLqn7H{(wR_|7C`_^wom2dx6a0mBL1D9|Q z7jf0pa1)nt8+S?<*Ks3Pa&r`NC)aW>7egx-b2pcB<5P1x7j*tZ7e+;wbW2xNKi70q zS9K2)bywGQU)L>L7j|ctcCS))YZrHOHz#jbcYD`&MUr=aS9ph)AcL29j~98*(Rh=W zd7F0_m)CitS9(bidZ*WVuXhov7kjstd+AVnyBB=Jm)QW7e9Lzt#20SnaG1fScO-3phh?pj-hyRK}GyP zq6E$2CYXhDSclhhgl+M&o&>5GgodGNgGVTZcNmG2c>aRWa&t(Ch$BZQ0H>`w7>AYE zimw=^J_3lV=ZT$oh7SUaRpN-Tn2gJqZn~3khT(}h*dCy`DH>>u%~+1-cxt?|hKmAl zz__i_xQO8=j_DYX16g927`bu*7L+S?64{3R?vDl8ksrAr3mB3onUY0Lk}DaLGdY76 zI7jMKlRp`h@ydKhnUt@gkwY1kQ(3w$S(RJam8(sHUs;xCxsF+xmTwuCambc)nU{OH zRyg_od|8->c~XE`Lp+(7lUbS7ES8tqnV(sMb{U$dnVMg)nX4I_vzY`-nVY-W8BST7 z!&#e+S-+}SoX;7Z`A3@5nVsAD3CMXpklCH*{+XBIIXUE+p7VK@?ODY1*`NOzg4P+J z2b!Q)fS;|-oC{i^^?7*u_~8QT7(YwyBp zE#?m_=##?guKJSatKLMZ%_8)kiKwrdqfv_jO+mF9%(>FjIq2y=-3z+di)UO3tJ9jG zolgPHx^Y69?!a2O2<5H2TCNR6Yh**C)taw+*{H{Z`gjj*oNMyL`ou7A!bC&B3aPIf zd!9X-EWTy^>`PuU&tv4FJ}28u-tVm9t=h3aJDnSPKo77(y!wZ!XXq|Wb~=xBbUGbU z8;`AG;Zhp3Ydf5om*- zG?N88dX;DCXk@ksx1? ztZ=dTM9x2-iPbi<(^a@l{iv``R(;0 zbGC6OoPO--)?aa7y%?2KBccIfcL9dTV2XAOIZBPx?Lgsle?_`j_@uk{N_wkQ@y2Nhy*}Qz zrn>xwJ7~QF!}qU&$6h+Fx7{wAY{B0~ENrsjYFS3CptwtCzWYvkFv<1Wi&Vo}go*6M z+cqWU#_ifVvC9){Yw^uGk6ZIhDwAkl#O3yUV6@osj5N(jt6JL6MG?Gi$pc&KZ=W{) zS?ttN=i4Em0vpV=Y);o=9=o?%T=3UYZ>qJg$)$1TnKetyYPYyb%j~KW^X!JlpMXrO z*OA_kaoNLOOgiZ3aqNTN z-l>bWtA(d*HFSWfjk4O-mN_cPce^fj?ASeeqm$nfUa{^9C(66q?Rh$S=r@B4^YD#> zK6jg+_r1BS=o%_G;e#7KCisZ|YK4SCf6h14c`qHk>E%{V`rgGmPOb0c0WI6h?X%xA zQka+izxFlFe*C$K!qT?A=c1(DH}EolQ@EGD{)$2v{IdfKYzE%tHZAJsQBJywy5 z?(-uO>$k`r6pc;J>)-QQ*1zV-FK+|PBv$l9LsU|#giCZ!+3c3egqaCX%_1bCMA*t! zUe(E8!Xch0h#5R{*(0L>6c#;f zgFe;3PoKHdQTD{(LjHx>P#YX{I0M~h=2|k%B~{cG7lqeDE6CB#8FZrtB zlr<|&shmEFM$EL-r6l+cMQ)1IftZw{FzqN!t<%$=dXy_UEviwEs?(tIl&DB;s#BlJ zj-7f(sw}0dP{pHEq0aQGAK2>Ctjbjnc(oa0g-lt)>JhNYRIO+YO;)S=*0!dHt;{$p zZ0IUi-o(|VcFn7E_R5*Q`W2|AtP@`E3fRHEw6OF%tYRnQ*r_J=u|0|GF$7B^%Tm^% zjI9o4Hw(MYW_Gfm?W$&r@!5HuwzR|CAx%@u+BAyxPpf4uY=?2%!n{%^2||`j63VT~ zq-kZfh0<q23>o6W6H zQX(Yro_7OuOblr!Fg*%er-T}7t zl^sLhi585kk)gKygMM#--yeQgMg5g$b}tCt^*$H|ZJZL-k|JOd7FWa*eA`i2oS`aQ zn7yBZ(=siWK2X|NZ_G@Ujlb#4eg$F19C_FYt0zF5#SeNqX6B8@Sxbs}_`TQK5HfLW zPG>54Or_&80H5XD6A(Fu_q$q6V`^dt$2ZL7BQS=aI6pTYs%3P`aDG2L;lLqS$Rvia zgOhmv-S&=@$}YTbEpLf8w%v_a@~RZ3mW60gzUG&MlfsyZnz20gG0OW>=MmxjN%U!q zf6{UDn=_4MDY6X8;3DN8Rh=`w!Me*|xHMlfMY$leu+`4ur3xwaYfm~spX-#Rp;rAY z9KI3KLx|84kp~0u|WMykJuo`OuVO_4{k_o|#hLm{h6hcg$BZ-1a=h#JE&6mper`9*XXKYPoQf@X zb)6BI>xf^k)^D$AuX(-rPanOC58pVG-3wi_hi!&}{<-HZWJUz)S$M%~yS+_cVi7go zBu1Yc(mRgx0W+QLrQf`=YshtctzGko&mVK?sP>$l5mIp&QifBX_N<{xbi*fe^0m49 z<{#XOC6@snorib2`*-^S#Jm(w5SPCI@f|7~rwQbK5_N@$lmxmS0%=Q_YwO=V|ud0=ZUKn>w!JzvIYkF*8G z2P4e4Y|kfkhZJqAgnMEaJ_v|z(_(03w>8NFGGA8&VK;hOG-=BxeW-VK0B0~b$9rqX z1QCc5#^iqY2T5{gfkJpbNvAP>=UP;fY2Y_&zUO|_6NSB0c{Ve6?Noing=$9zdqoIx zl9y``hk5d6fX`-nS@&SnHZ?_~Y#oG#HKcZ*CxdBdVdQ5NiUK)@a(_?gYGi?LWw?WK z2!aS`c5HZhy+?;#)O?~Bh&%{4e+YH9r-JX&M(C7HIW&jF6MbCN{&_uUhZr?oO@@Ny zbbwIiWv7@lRX8(_By3>viRtl5ClrRsW{QKyPD6NrEVE-N78$RI5#@Acl9q~jD03xv zWm*Pcy*PU&gNbY7bi$NKpm&Kh*kVnGb(~0z5cN;9w-lXojGaVHTn2t9D0`VFeLV+) z6;@(fgpSf^hJsj(fyj;m=ZM(FjpcSSk(O@4H*t)1OAV-Q0a$M&=w+RVaNG!XF31Ny z7*-5feDLRo%cwrbbZppiXd*L9|5ze}WF;r)bHY-QrqX~dIAVI>kiKwG&TKva+Rn1%P0X944jJ)w{b8I-U7Rg?y0XG3R>Uj#Q2MrNvq zkPdW|Vs;^`F_a|IKof{@KUoPj1yx@Omiq87VM&%{X_n70mS?G!Yv~PHc{)rmdsTeRoP*4;FWg?m=rOU$#9ZdHJF!mnD$hdys(%?8I_XNlW-N8u?1O= zNg9pGSBXhBn%P*E2@;s844@fNqKTNENtunonX^EeikX_Iu$sp3nw>eBfz_J%RGS2K zno2ipl6>3N^icN*&Do}+PxT5n}qqcsoZgWa!KBp&e>S%j9XLQPFH1{_Z z)uu^EZf8hv8W~eSWIVTnFSHmncZyIjivFcR>Z9xhmm)xF{`N`2yaVC2SZ0-2F3 zIFWz~kb}ym8#$4Zh=rt@r8=4=^a*HITB~!3i@tHB+?74VmqULFX~>6<>u0Lb6Q~~4 zFUh*5`qHMVN~|8~tbD3Bghi`Px1Vu%LFBY`j~bBJSas-VsL%w7T_>yj)~%BBt>G1} zP&cmhh=ZB{gY2koQ|dkWm~l4rZXl+uB$;gzNoldffQU9{1G%UvNNtoFM%dJ^lWM2B zNJa)buPc(RoM^9;xUTJ5v2v8IIT$|jdV1wZtFRQP@-~wvSZuxOtOeq3SZAzy%5u5N zZZUePfF-OtH%9pyb;I|sn}@E>{`jt;M@HWIbnd#d+B%4*fvIdqv~PHWASI7$xQUVY ztAWw9Q>(Eg*oa)4iRxNFX?Lg+$+K}Jj30|_J1BZ*TegFEwd1#pN}I0*Tdw+Mjf&`b zz*KM+1hZX(lUhW#nW(9wdY)qHv^V6Xk$8qt3$Ilxw((cEH7d7utGG!EZOm%7`+9ZV zlXbjTJC!=LKzasDB09_$jR2^U1*^EHJB`iQwqP5B*yxUR3%k>&fxqRoK%2V07pZ0& zyK}p{&Np^|Bq09xyQuqaC3v{A3%J3{yt2v(x62>%D3JJyygYa^*0#12d%cSIwy6W7 zk2^z*%D9@xtEvl#RLhV4{z|pw%cD5-y<*jW8<@MmJFvdxzRzpF$$Pvb%R}Mozp~4D zoa=_{>$r#;LRvYan7F;NyQwOMvn45Qy{mx0=(?<{yvZw%%GYQtcy{&Mz3=!FS$mE% z2(`;wgYz1b9B8%hxs(@th&JfJUaGa#sDmY(pXUm_6I*+9%fbxUzy_?kIqR46i@O5+ z!RLmN6r4Qa$ipfLhzpp&Jj!et+=k0qDDj&aB#gw+cEVk|x-lHD`K!gAYQ$ly#M#ok zA2@=DSdc@yFxorC0!VMcCxRbb#?}|C5=_3(OL|nCzkQ6iHOw~17sxX##sqAhIZ7TF z{Iof%G~fD;kE{NPXhz7eqQlF}t#oLKlZ?Zae8erB!(^MWf;@-g+rNq|#EkpEJbAHQ zJie=3zYuk$+#9kN7>_$w!?l|eXnK?S7OA*XiL2_3 zF6pt==8xeFpe|gp$C|Y9Y|U?4&uMzks9JyO+@E6`%>Qhsx_7X*n#OpWx634{-0aGc z+hMyL!$LdG8Vtym{D1g5qousfUEIp0)Xy>-kN`c!0&UNZ%Ft!>&EO=e!v?@sD{$&~ zjTzgH%Kps1>nO<@-FjKf&lsIMq!+xt7SS!6f_DtlZ$!}fh|l{7Z!S&HPrZsVjiAF> zld5@}T}@jLY9J>)x_@Xa-veg8W?fkQ&I%heBPqQ9DA8}}v}b+G%i6JSC)WMMm7`p8 zEGV({cCz7EuFy(65FMx2_=f)0&;+Zd0esPnoH{FTm0 znOL9gm%j|GdyNY`hnzYW|15!;WF zm(qn>rVY#q7Tn8yQ^lQ>V8@rCSkynr+|`{_CwkOBQZe3hosWZdMphuO99mAnphpPTU%CQW4TnJ8$F@EYTRcA zrZW1JL!O`;dKt*gU}=^>J;Ww3Rv#?f6P#+%;s)e{6)VDL6NwAuj>wCUpyTXKh7g?~ zNsgq7u$tnu*+s6)238*y+ucMwVX95rmmQ{^8s#ArqLTf-7B}XFZsvVU%!MKTLJ@Wz zrAD@U-mq`oRSBrnKN@4ww8s=Qy?V}-a9#>rD(6+cF6*$4-jc2APj!r}WUc6dB&^7cxx-qs(HhmUYHT^k*o9oGw{ETC=%+Qi z*vmeseTt)m{uzIY)ySsSgG|(qE^WU~(dY&2%}VXCIIX5`uA$3CAsDne zSaT0M(sv6r+MMxH4t9H7(S0;{3WG>%~Xgu`&MNxDpM%acj&q zzszo0=;n^hfBVto8oHW0yl`ud?+(?+zN&I9@oncdpf2&jg1b(?@P_aujc&9fkJIK{ z?mHgAB3;GibYdNOG-|!;x{mFTYW2iU39ru49Z!v(i?Kj^w{+Rejabqx2BIUF%5Hqr z1{{M8T)Fwa+d&Rw6pXP_tjS5u@gE(=5ijtze-6=P+#{kI>D3- z!)x39*$;=S5C1#e{iq!I&il*PufMZjy&c^DJ4yiX0~M0vTU+ul1K(ZNLH((Ul z(Nta8wh9EnRl~MCO>!H@yhnXC-tBjq>_kMRan^J`p;76y36n`F7>^bQvLu4tVgzFp zQqgJkn(eYqL)?z%D_-vIx|f%)1M~XA#_-w-4G$5c-mqRW=6v|_1TV@ciS#f9<<1g2 zJ)ssApDrQokO2Sw1~s%af$HLt#P$YLP5S^pbrE9VQnG08TwhC9Yb0TBS80njhL16o zhmQhrS!Z|ELP1BVjbE9Saf_RCpo4#z%GH-zrLD8E{(2b^9Mh}yE{DA3=CBC^Rr1#i zTqbz&5GK?%Pn0ZDw`@&&Rxp=Bix<~y>qb$Cs!iVZfv6PAV68fqB%+*D5o1f2iWqXE z0Wu#yGpEquLzauvOP?^WG_2z6-7=EqC?#cSl&Gwnj&>p?L1x@fLmHj*y!maJQ>M|x zJ#;WDWh9#=J%;;YZjxAGM^;*0fputBsa$J@JR7oO(}`ep`aR1jsyewZVs5O97T?yA z%;GwZjLh9va)&YNqB|p&zLR4Pj2HE5@%IR${zFP&CMn?VNZ4b3F@9v)$0L0x^+LVZy*1aeDPd?1B1}1 zJcRqyigfg5VU4n$KJWGYk_nSRl>#s~sOun!_NWr@2mZw4B`BGOYR|y!_omA6vxlNabUEz&a-g)V**WP>a%~#)j`R&)=e%)1*-GK=%WZQxfzBFKDAL%yX zhY3Cy;)(HGm`{pN;niV`Nwk<;jzI>>myk(*N#c@G9{A*xS=P+s`u>es=9y`(+2)&Z z&iUV$X>Hl(xp-#t=b^7$ndqO5K3ZukgEn{Rr&~%I>ZxsLn(C_swHoWCrQX_WlePXD zb|?vy!9rT@4f-A`cppxKl<;&5l3wB z@)9rj@Wv5;9P&TIo}6XLE!P|K%(LB`bGSYK9M{T4|2*{4=_DO>iceqN>(*WWc5x(Q z&m8vJ54#=rr*+>wp5A>QeRgJp4;=X7jXNIs%T-_AO68p|8T#nkSi2u|NPdl;D> z^*DCCIsxi3`RiV|>^DC039L}WQr~!n7d`}n4u6@d6cB<0nCPL;gClzl1s%wl`{0d* z-*eJ(-WNa4bg+bX{&JM}+Sjx0ozQ^|l!?=vW~sad5r>M>O9B0Kp+t;`9z;Zh_09vq zB$1?7PTZh^M)pL)?azfVl%jt?!9(K7@P8(vVHd@CD)5nUTw3ah4=;vBsF7_#aU5f9 zM%X+aPNzc|ij;s(2qYniX$xUOl~Nw`9}lfCk%WW_RA6=>|FmjHhSX0V8-+tX`o=93 zipGB~$qM!Ss2q?K2_*r!mA7<>Cli3qBY89i0@V>>bsHssSZSbJ5~Wm*LB%U`xl1Jq z@{yyOWQQ84NE(@jggV^FA(Mr~D^_8X12U#4F=mkZH+`i87Q;ie1w7sFYPc={?`uc*iWhX`Kgsbd)*L92*T|$h?GUkanPhxDUlfVzuj8FJLF7D&>eNz|$4;Vzh<`1!`IQ z%FvEB#<)by=zaF{Q2W}(oS>zcptD=dW?6;74u`6F3tOb|v z!mxF5Q12mO98332g`w{6AUhHcFZ8n4pygyXd&KH8?Ze0tSn?z(Sf*Mm)lV=E37znO}*ZE|rdY3Dgs?v~SyvwHn&;@u&5#7cc| zP7wWN2tT#ARN5>w?u_Sj8X3|cO+r^G9TqyjRK|?fFcqUK=QB52Mlp`e!*cr-z+6zh zH+<1LTG`N81G>OSMJ;X!E$a;n8l!XdF@_z?-zgiZ%5l6hqUYnAO*dxNpw4eYFT3Cg zJ((|RCWecWJz84j8a=|{^?*P5?Pb3frQ()!Z7sX!Vt-7)%RcL>i`UFY{n@ykWie>M zjc>P(*O%gCF04b%?+#yj-Sq@Ai$6)zD3=%3?cTS6gS(e4cN*1aG^up;{;X&Z9kHYx zZ?UTNy_8Hd6VsvP?V%&Q+R=P>*u++DkRPqzmHwH+^!9GORq0Y;k6gaLQ1Dx=`*KAY znX>M#d2@Sd@1mc(GwJ3X{+h1Xl}mk}mXkLgW~m`Z{)n64M36dV4t7d;a!e5wDuSB+ z${sfhM7lgC`z)@^{*8ToJtBLemWyet7WTG53D-I%}q1N{#Nd+AYT$;^CyN?t34}>vu!z zBk3sO&-dhSg}#mewQZ*OCq^<40bxY!w5M(G&;E2{0=Ecb%ukNQ@B5-J|5PSzq{e@$ zpvFjq1hvHk_r?M*&?U|%{U}gzI&g33WdA-P17Wa@)&;;IhsJa!XRuENU$A5RF9@;b zfQZm#hOm0j1OL1NZO`Z*YwSkqhy#5ZBNT z5z&AGaS`XF4*w7m9TC?Wu@EJ35`pg!F_8`{aTDc15j_#WIx!S4F%%6E3Qds%Q85+O zW)xX5d0g=o%?K1_@m5N44sWp*(U2B((Ni?B7qgHTf$0uB7^Sfqm*^T1F&nipZn*IbJr7GZMJr0r&60?pMvw{XiGplUa1Jqt z2dZIyo*I4D6 zz^)ATQkV3O_4rcmii7^1%cu}Zu#V0!KO?a$%qtxd6>0D1Sm~^??wIllyl(8SF6oAt zEZJlal>)28F7L=}$|oOFG~3VL*vY((BGEPvGh>f6zwW0nPbY=PC%>{JbE>BvFyT~E z*R;qek%rGI1Ml>zHEs_u(_^Prll5jV{s8-nFsDj6RWmxbX*wbB01bu>e#!P&hME7?UIc(G1_o-J%5P7*8j_4K0Ah$prMx z3iL$^3_pWTGV4mj{EWHwOY~SIzP`%LLeKf2Yb7XD;UdNYpU;s1w7Hbcr$FrZ2+2e} z>Np2XK`T%{t!c09YP_D4K2s{`u#CM@Gx6x@J`1ETwxm)Y(M`0_B*`|j)(C9h z#*FDk%|LC5lXt{&Z4nZt7xA;Cd^RQRfGbd~;X{e6TGLL10t`yD3?7J%w)XTPkP-oG!`s`l4={8kvUeA?5C5~J@RZ_Xu zKv!Kww>lM3KlSL0_Ren9Px%(C zjuTQ-HD5!M^8i#}#cE>F(&TW~&&a`D{k2DRB43gD2m(2 zGf`O~ResBrX^ZyOwsqVN4P;>j^2B$bh!aqWl|UmG>U?uV%-4EBS7mGIc)M;pO|76F zgE7bMdTJBLZjNNnl$00_O(T#Ic~S1V4PMnZAjAwgFO%>?#(3DHw%M69=z&HmQmr zGxY4z{sVW-Za)sw$*Rh#9B}Kp08WjV?z&SEm$f{L?_(i!U!}}3NtcmdGap>dZ9lJD z?X+ue^?)OpghhBn-J{Orm_}{*c8k|+7*ZR)P#MYB10!Z?ywPz=xpNQ?PURG@Lirs) z`SB7AkC9VCB+Q1lc!r@bib;g~!m|cR&X7eJOcApIb9VmTuS>;C0e`DUY1w=W3zS5V zhzHq|usBY+n3)+xLdL{L+>;Qag#urhi~Oc=b(33K*_EMgeqN_4p%|U*Nh`zBWT+5~ z6K0*?89k5r{F1p!jkyYi<%3`{7z5f^>~C0lFrp=TqA9wfd+?M$vId*RqB**wJ^G{m zJ38*{**vX@pK)cR4{Md3Fo;T__0Bt(2W;W7*~6raC0togSXkmvm5esR`dQW)nsFQ z1*He_ejwYl1?Y@KvhPk#sDYO^>jEqJ`gn`-Z!J=K#j@X&)}M*9BF8r#*-g2}2b_K< zmJR15u{u`$n0BFZfkqO(D`>Z`1-a8xgW7j)g#s+kQxv1yBIy}ai0JVoG9uFmzc*65 zWf>IhvK;kWud~}&i`e?8ZJe~!kd}wgTGL>`Bt}8WN154~F@&&WQku@hA&9Bn7w}8K!wFwA_`a7)K;0qks0uxRrS-HH$y?V&NocaFWhIijhjgmF8V4*8IP_m7-S7L$Hnx? zX>&fs)G^_SxTpKZhmWJ$JTOQ&T5a`Z72OpoHwABeOsm||f$GYgQ&3wR#%UPJ({#gi zTssjEGSmA#>-1&4x4|*okZG2YzxLgh*YuQY$6h#MukYFEOIX9!V(~Ocw0A^HSIhBn zRMWVEpM8&+O_9@xZRorj{+x^{mwy$|%J$Lea5Y2$9nX15zeIf-`P6maJb_JaVP%Zf*B$wRn4dODr{T=c7tW5&|kh+qifl(%-@Z2W}g|{FAyE|?NIGjM1Pf12RGy%xNmD- zMD_4==hfINjOee3r8VrjBiT*h9)IIaRgK=+vll~2OV?pO;A9@&&VB5Kx3~-4@L5fD zXJg?E3h63MnCO$fEZ7eT%<%evc_eG?~iKS|?C|Jf=$XN}Z z>pS23e?TDkbu^t@%LPIbo6aXRDxE%q!)op%a|CYOQx~%7l4IpbC0rAGsqQyCE_Vo_ zT1|Q>8lfp^H5Zzm;MX3YADE#`-XGwX4O`=(;#!~=*ks?`9H*R>T@M-NrQ;!AVI`!X zil5o(*-TRBEG_3J)(%r(<=`&sit<$DL7@`>4 zLgv!nn%b|{$fP5xcdB@BdNq7#9j;EEFCp{{v9$1_zfvz4yr5m`mJC?Fe+LD|Yv|)z zlWgXkokG}7pTmqAH$o(m4b;YvB1bmt2xQJjjVVdeTFLSy50ejJigXE(CQdjqLxn2! zijoU(>bM!Sq>pH%En8qA-DOD>D{!O=8lA>8X-=K zHKdYFE^s7wPD)u5lmJdyB9m8YnNgNo8rY?mL4p}3nYL6}V3|0MnI@Z5tl6f3Z^Aie zj3dHFCwp?@$)TQm`l-#C{t*6YVV{EzTBxBm23ldFi6Yvldv@*zDTt3!+NPzK=DDbg znueLFr?zn#Dx{#2ij%3Q);FrEhqBu0fvLi(q^z?p`KqmR)|xAqxPEiSGQ9fcE00r1 z0^CQx#pUL&vfcF7WT3csN2fm$3ldZjMH_4`n`GD=59Fo{J{7maXURe9O*A48Xt`i{HF0^mZ?!1QWNgX$AASFG`cHw;*?& zJrW6Os!38BYf*|fEi>O96-B~$HJlr@4tt8I#PzsUERr+E-15LF)+{o{^jwT@HS^{> zi@jluaZyD>Qz>cw&x??Q&MNDafpc0lpfk!I$N9z(TDi#p*U3^M@(y(}vxPkq3CO?kdg<<2>hbE!(b$^OIZ{ z*i$(`Ur()<Ki50OBIE=w|298jFLbss z$U|?wD(L69_OFzjoe0)1>^*a5Zj-H)-PVUQRn`jOt##<-a(|hd)i5DHx?rwqVoQQ7 z_6MyeF)jXe@_AlAo`DbNrO!&+`=Ij3^ro&6(1BI?i(1;Dx47hQawYtpTX2R7jjgb9 zHIy4rP?(pi++}`FGhHnxbO0d`v4}=IA`+9R#3eGZiB5bX6r(7`DN?bDQaqkEV#qz% z6)$!bRNc3Pw?5@%!h3@o<3Q-9!J~u`A!FOx`0929=(XWHS!&}J>k>!6w9jAyGtT<> z*bmaZ2!3pDP=QVqplPPs)<8rA;oC;@A zIT`?)80NAFUK24Kt*AuVx66v6GJ8bL4(niMBeE)lEM;%%|ZbEdXR>^2Ww7S>f!Bkv-{v2vl zTiGKf^;4gPHJQscc2|Wpwxv#^X#!cg7ra7NrF2~AJ?n^;s}?gNKE)AG(N%r9+v~bihDnv^EGhY0?gAG;qcsL`FL}%8;nlMuohKSU=%tg!*S2Au;)T?7@M6>3;DVm)83zsi?s`A@*TbPw zyxmRdabL<>^%fSmEToxV`ozGYB+bHU#GFP!>)sP?>6MfGav+JBT+TLk%gBZ5`F_mg z+RB!?P9ASagoxUpK6q6sF6-+Y^d)~{v1wxg*{r0@7s9o7g7zacJ@G=9bmc{|M7A+n z`$9_mT{fQJRA66N%vK5?R>VfZAQX$5K_gs?hkw`>thsGwohPd(!?(R3 z18{9MyJFpL&c1`lZWy_Hz5)04z#lFlc}x7YeXcl-D30;hMSSD2TKJ0^-er%AO4BB|3)1M3VsQbs~RA)}nsh;(#6CLC$61hpaUiGPq{YzFayB9Bx_IHwf?QS}|+atv$ zuwO~&ao>8}pRV@2V{`9(&ko*`9{9hHeeO6Xe9+*I_2O$Y(+El&6WD z6MT4W=G0;*w`)*J^sjz=h$Af;H5(zgBuN6jpNNSwuV(N=H$L%6<8>9$eM%`w+U$G(ZRhez^sa+%>GSKi3;G$*BRltoQuf~H zlRqGzYi&iM+(E<5)fQE-JYg1ha&K~8vura3@9S?fQo4WLuuuNc4IcoOoZ&T{W?5sI0G|-%UL@fY;jEv(w4cHCT+khx z6FwmnMxhi=Ar;~d{0(57EuV=r-@8PHk#P-n{(+$^ZIRu*%TYZR=>!v);npy%8Tav0 zadnRv2G$6UA?QG!ByEy*vC@APT5!amiPuUVB;i5MK#-dmxeP2m^y)m)!V+Bo@^ zez_Mz6&XR9-ySLyQ;;4oau@ym7Brd`9ww9`;*xzyqx&!#X?4{gKH4Id8E@rO^R(1g zks>a#qCfs4Kn7$$9+N;8q(L4eLMG(?DHh;@El_2RnRbQNXEj#52o|t~qeLW7@<`-~ zZDL4eBOfl+P6bp+IiQ-E;2An2A*$6nl?+GDl`_;-;e6zNz@$Yy=$268BUEBm zMW&=!-6KryE1{iYA zA7Z*?PxH~ z=!<3rd5X!5avX;q+_RZWj^5sO;zAjg-*yrx3B_mTBq)m&C|}}Z4@Knt4dSm6kW*~K zq+uwe8BkVfA;aBhVE)8tjdCe1eCc9=>HGC4(FI75Qe%YSf$jYW%A{#(Itaj33!DmI zzUhjVh8&sZ1W@(qo`UA){b@{Gp`c=jnf@uL$X~w+2cB?ekBDiZ&VipoYNSp9rOHdC z4(g$1YOic6nIa#j3Ll+ZYN$p*YMpAS!UL(oNS$&WsHUo>+G(M_Dy-^Ai#}?tHUz2y zz^dkI4)m&!_$qjKs<1wutO_cv7OM#4>DMW1E$k|=I;#OhtBJJg)g`O6Vr$uHtFk)k z%}FaKD44i{>l;ujmUJtjlB=yAE25^Wx>^IXGT*z#!MINAyh?$&hKRLlox9%avJxwo za%-`AE7SQa{=OmrvE{3;DlDI%E5I5oI078th z`B(4t4B$NJ^Lf?kokZ&iX?KX9qtQ&s8UeC_A0Ct}4Xu#u0V)3(+|K^1#ByxJj;hd7 zfyWl>(Gm*Ct|{&LmCa%d;=rRzeAB_qWt?K2)y<^q0gb@$8$}V=QI22LDxoK6=dcDX zv&dh|VkQl8Ud}3I$BazRmaS$IZP6a=-F9qH*&^Tet>6Bw-*S`$Zkq5=sIFmPB>GV2 zc;al*r(P-`2P)G4s2aVcqvuG?lu1qoDrkMCU;L<%txaO%O73vJ7Z0Il4z%)u7A52ib1lfW+$-=B=sv?hhpGhGZr27O(NDqS`gCc%7#{@*zmI z;e)=Rkv;A^4jJk0Sjv$lPhKZ&_TjQrZ}gm{l_V0+)GlYqWr|`D`0gVGCGY1JP=G?B z=1O7;K4LbO?hKM>WaUkR22cVzsVFvJ2sYZV-0HUiZxaY_t}3vF9IpdEFa%RkH4-CH zU8El7R)~7!YmTftI->?RCxP+Q>rL=W`jM=KSBTyRNEKK_0o^NGdW+!pvWJTy75#to|RbKh98PCu53Z@2(5*R0E zP|8%3k)t^Bmv-)+m9A)i+U7Y9sR0*k6Z=3Ehw39=UL;q_6dxlVGbeMw*-ovc)NT^` zjTLlu@zt`Z`?~O5Qf&_tX9inmAj0MTelHEn6zr-fH?B-wl3^CF=zi|kV0LX$7FxvA zrdyfjNU8A_A92?$^2Ii?6Em|8OmgHw^T+z0dZFltdgzE&Cl~K9=&5K)Y4bd?UC35* zu!u1_rDYy=sByj_Y$Bl$qi=G0sQ2BnE`zW|-D6319+ZA#>F#AM3o;S&*#2}Ovz#h( zyE(HXBQy?3^WrhI(sm2#${|?JuRbwmgvJ7iwXqzBm@h^t^?ce?jB%&hsgkl_C|^_1fcb==$>Ul0`2&3G_6yusQCpKo9Xq#qw_! z@MbFX4mk9mLiOKCb%TiX67Fb{gc@D;OKM<-4U=?{=JcfnP?FYkI^C!EOhzbOw4((v zg-)r3V%SlhuvKqpQ#8uH%H;`~HpzRoscqyR5Y*|<#)e@7Ez@S7=lv*R zs8$k(h+jvwUT>_wR`#A2`b6b*RpE)B(3_mo|s+wrc0L!5TM<-1ZNmZNR>+!PfScGWP)} zck)@c(P8(?Qg^I2_HRSCze=~BayPFccV?Fgd9SN?bEwqPh)R(+My7W^9c5|^!_w3yTcq>ubpGh?%psi;qf>=CnFJYK9V7A>e4*st{NKg zaT=?he?vQ+v;>ye9W&+izOwCdVuJp!>JBiWSIuG%sHTrMrw91FhB{=Uo;HJWQvaqs z+cW=eaEg1f2fyVXZ*rN{ItkzL6)))n)t6JoFq?&yDf3bOz5}NyJG%C&dalnp1+MiE zGsKvOFCfyfIukpGtLdD8JD59om^(@w+wrQs*c=ZC?rF;TN*O%^j7!#u8gf*#{!S&}^1oP%Gs78Tp)iF(q%k9%h7>y}># z#e2H9zw6UaIKLD9nbk8V-xdakaMri_IbY|ThjDMp`>~rcU>dcO@pHM~rpHq)qY*Q8 z&N(O-yP=ly$TQS5Sz}8Iz3IZSEVI2CbFa+nyl?BB-FCahpSPGpZKdGw61u z{Vbb3bu#_7!#Cn{_SD~B0Sw2~<@SeBPFn57S#M|f2SZT{MzIXhM4edkHC=d)1tF84oaTE4-T7uf zU%-Zw1XL^~vjl`Le~9LaY6VDLOXaV6$T_9pE|r^Ymbv5XmCS|;5Po-T&Akd`$4!=^U2?lw#YA1B`s zFGo+uRcB{DZ_nd~pNIdZkf+bbvv1M&{|8eGppSP04FW58P~otJ4GAT5Xer{vX8e*+ z#P~_zwTvBsS@c)|Vn~vBMwUbg<77&f2v)XSfDh(OT6Ut*#0gRqPM+H~_FM;4=!=&_ zjUFg^)L~MZGL=3R_46K7k2*C`#md2IPo`P9dIg)HYgl??TRJ5Rb!!8(X~(T)(AKR{ zxHQeqEqNC&MZJ5+^(`saFVDJD{s#XmjOFm$#4Q0YUJBXhW68%TSFN13F__HrHn-^v z_A|=Mq5YLM%?@?yTdOGwj)_SdM>in0jEc+IaGKc_wphX)8#ET)XrB~kmE6H+*cZ{H z>KB2@q!qkLRG)76Vwg~Kn6t(@IxqOIgZ*bPFe>|)5v<+JOjc)FbxURP>WG`VO<(_m=A~%OIOxfHQdo+a>un(V=pe* z_)L&H=GZ-t5B&Zx z*xF#0wmuS*s5v)g!8O|GUrSbbif~En_2jH46;@oKzil>IGL%8sqlqJanC*$yc3TLz z^AV$JfNi`MW2|}1ST>yr^!o2strL1bjf3me?80M<0%v7&9hYaV_l_y*so^7B=8>W8 zSKn8^=sELSLBAJo%}M9H+|O}V+HPNYMjdacZL-jBUIkw~_nD8pFWZkde3a^8SC=z% z)pehI@vTdw{i(U*W(fL)o|j&wQ7djeb;vIkzE)s|c9e4PU2SyupvT8t{L;zqJp94e zzdi8EoBpRTR>rl}ercz1b9X=jCMZld)L;GrLcaiEuZNT)q7admL>vlk2ahryl5n-d+strx-g=sJ z7?>aj`mB8a%VPKX(>vakF@rN(W2Fi>M7xEsdn1I!7#-unhQN@IeemNSF%Zad#3)eh z0@HCM=ee8@60vV+H(<=IjhD0%4;PEmp-Cm}em{#`?lm9iHCLr1o6b!$(jydW0U zXSzBn6GKTX=B19A5<&_RklxfsH^C_Zae~8;rCHr1&{Rq0A)S3{RRLm@Kd3s2!eQ>_Z3tFquKGhq5vThx>Otbj1< zS=)itx2d%pVRb7x;~ELLnslyfjp|)jnpeG|gRK#%YhNJ{Siy>=u!kV*r4Cz2zAlyy zjdiRu{u-IcGOV%~z3d+n8;r4L7Ojx=?0-lqozPZfn=C5rE;d`()e5q;yy$Fd;{jUP zDu}kVP3dTb^4i7n_O8BNA#lrz+iKjFxW?3NOOLyY$@X!%rx31Nqbt4XzVx{*S;xe zuYUYH&iFPEgHw|UHZsUaOhmAW21=PK4BQ3mwA!sF*mB&U3*bny{rhv?g5ISV4f>aKbu_ zh!Iz`$t!yDB5W{aDp%RcSH^OdwY+66ciGEd26LFjJZ3VN+017~Gk2-lz%62{vhjVH zG^bQJcpVg${K^|Cd3>sT$r8_Zg4e$wDPuF$`Im00leyp0r&R zUA;2YrO}#X^dKCgNUGV?THJ61uR=6E&Uw4A-ln-Xv>PGq?h5aJZw4)qr^)Sf+pc#8 zcg`D=wL$Y$JE5^_V}swl!3=#c7LUB}!+A{wWSdamfXH|CLY|qCe>@zwAa<(Zx9Wf! zP>AM!Vge6N$H!3&Zjy)yh>^Q##O zaHF>~Ce8HXyoRprpl`k5@1CZvfq3qP7h8%LN8%&RW$fX_`yfb1A>7#}_ruWL>3M+q z-D{j9F&L{$d=h3ac_|_`wmX#hndP0&7U6>~jh~Cx{^g_n)JsAu)RCw*qRjS1dCR-q zAa;)%=tCuXypaCxazpveR2u_q(_0a8KWQ zAag_ZN0x>0E1r$zN2TgB`TgjDAN=VrAo|r8LEfECeC%`L_A~81@57({@w=q_VbMO* zxqp7!d_Sw~CqMkXdj9Ln-va4Z`ugoZ(n;_C1NF}|_5(owivavHIsGF*+j~Bk7{C;1 zz|?p^sEEJ>w7%3EzU-pFLs`H*%0NBnK)Is74+IJW{5S*@!R2tjwmQKHn840x!J~M= z4kST+Gr<*{pZ>GK0?fgnD8CrYz!`+L8r(ttNy7>s3=Jb(3?wX%A><|t)H@8UuuifW zY6~)hvAhqO!u>I_*HaXf>M`uv!1G|j4j4o83&Aq1ukUiPHDtp!bi+4x%g-4XdS)|2UT*OEex~l;; zGs?9B3bu{gMPJK0soTS5GR7dvvn@KlJMg@LXvHKH#Ajr{S4=htte)GbIAzK|U;IXwNuFT)!!T?@Y6SiOY4kk-WJlbyM(O!6iu)UJTp!9qIETxgJ>$kX z`a65HI3waZJJcq1L@jD`$Fx|;b&N+9Ji-BJNC82xa;!Nn!k=i-Ii1VHf%Cap%SVEg zpHl?GRD8vW1Phepu!n?57nDePBrUNSw}Ko;C?dN>`^Fq9$Z?~?9RniMLdY~c$!LT} zmJGxrY{#UGn~S5hA4#-e@;gw9G^cDlQSvw3*c>Lon5I0U$E(VPN<0qn20)}Ng(S)| zG)m_}N&`^I99xKG6au(RKC)Cxvn0f#Ov~_cL8RbIw~@=*vnz*aMu2EbvM5ZdI81rW zOL;>|rA$ofSj;S-OTDy9R{q4x$aKcW^nl0YkH{R%f8fj_Jj))$%(vUizEsMH`ODq= z%+rX+(436REKS!WxmASCK3vS!45!x|&GEZUru)r75KgvP&D_(?eE3bJNX{kn&DqS% zr!%ZoT$tj#z@S{o${fSxG)?CO&1k#E(mc+x;LW>4OYTHY?}SOr3{MvsPs=P%^JLF? zytYyZjt2_KJG>5T6w95e1fpPy`iHbRg32RK1v!v-2T0$C0&*sZtv{rLFWxZ+sxKiyxbODGmL+_RLN& z4O4O$)AanPfpneGVI6$r&%4>ieZ(<;TvIe!mqZoR3L42Rb-peoPxmCvKE){!^-EjB zF|gya{xsBXOs4kX$O(;8?inC#s!0E_#5=W4Sme+lEYjW7)FDOB`6LsV6SpB6RdQ@p zi~Kp7yw6`ONB()$XTa0voYfty)eyZ^G0oKxZK+(kydwpkN$QxVoXS{YD1A&dtSmQh zLk`aSN^1rFOMYrTMp)0S($g;u(rE35Kh@QykSxDi)(gSEkgb=Qhjk&9K$j4fD?lUPip zSdg99hQ-*2Em_4J%83m>k6kZ-by&~TSX<@T6{OisRat7V*_OrGmj%C*-P3seS<7JA zk#$*1MOk>w)THHkPX$*R-Mni}w86PECKaI>)!fQEBs$48UffnvEwmC1JRHpvd%`J^(kX?~u#r+?9p0T>yRcc?VeB^J)d8#(Poss} zl)YVJpxjW=&!d6UL1ok9K^jQ)-L`e!o(soRh0yZ7$8~#B!OaBO^;xYw+Nix=%M#hX zZPjlrQ{8z~iW5jieO^oy88wa6Nd)!o8v zyK6dBfHYOp9bXRiU}P0WMf z9_CiA)H-xMJZ0=BFqTR&jy$i_Up{kPb)CddZDOaL-#V_~DGrA0^%U8&+Vr~D*o)wg zjo}ZR;kUx$Jg(wBmIJnB53!mrC$38jz(yY?m}Vi1NhZtZSGi$*3^K` z==7*ZHC7W4hBbf;MO_)ieDYNpW#OCVyHPw`h{k3Do#+ItXqJvm7JO;*Sg^HIBSU4K zAPz?8-C)EEJ79g@D-G%xifBVN3iv z_G`g4;g3|K6h7M$K44V^Nx|M~y6$R=EouThYRNW4j3(=5hOm*$Z1-Jj@a@Uq^*6W< z*4YM#x|V2_=2_K-Ps%<`%VrBThLbOj%3IpvKHK6a3EwkLZnQSnHg02+-m9VBP~W~= z;5JX;uFYEpP`YmH?;3A%;BBuyZU0Mc?gmm2&5~37V5{wYh-5cy!3A9 zq(?Xe@BkO^0VnVRFOJd<+4M%l{hn;res7_@X8Z>0tz~ed>~G0fZ~9)c^EPemmf;G= z%nOH%4BuzOyz2=E@w60iXaw)H`d_&+%55`JRvXnqT>5XGxd8;F9lUqeo>0Fn6Xl@T#}^ ztH=7R52}$j_Ki1csOR~QxB0lS#j-d1vq$^1&oX)Ebb1H-r z?2r5CM{)A+ev_mA(#w76%zi=M{?9-E>P!E*Xn*Al{?m8-;B8ozSQ> zmYiCzSW7j_?OwOuuy{-^o6jx&utJUIvfJ=@_${y7H}t!HAIbCodwzg}goTEOR(XPm zIg5;skP?oOl!=v>ZIhUrKboAMprN8>ilaN8rm1MCs;w!kuCXMrvb7ikxVgH!yuH4^ zz`?@9#Kp$P$jQpf%+1cv(9zP<)YaD4*x9=jrM54$-r-B&;^lqj=uheE?CtLF>D`j> zA>{P;CHDB<`uny0{sIadNU$IZdFKpzP{=S%!+-!Ea*8OiqQ#3C|8d)xQANj(6)1u{ zBywb-k|tBCT*(p(LLw$nwnQg$W}TWg(BTJTcSkK_fCN5*%%(*iayi{Z6^Gq73=F)gjt6t4I z%Tx!aBk7CXy7nX5w$J9?&AazE(6B|%@=e?z?&2PiD__oBciy3khc}0TPj>ut(tFfr!i!d5d zVshMx;9`sh-u_scjyU${<7XH?_tAzw7U`Ce8SseYl1yqaBLYg2(qNNR3RY#1S7xcD zhgb%umvmc(iK3Y7k!j|cUjSF;mt&&orWS7=5M`WncKD>6C)!x&o@>52C!c^8cqagV zjzMIgdlp)mqKGz%-k^+naVQ9rRch&_m}aW!rkr-_DK>OQ>gcH1L7HbhQshwqmg`iv8h*;fu}u+g?6ErvSH!TBAD1kZ$tX8l zv4R(aJ8Q}?iyZUJxrLmtx((B;GeI5i?DIq`o7gYLFaK;bJUt(+G$S@YG;)$lN4-wc zQdbRO&@>_&u*+6|_vzPQhb=ayU6)N((+xd+i`mn%?e^RIpv{ol7f=oNDR<|sw>fev zL^qs!&mH*Sgs0NCaX6D)IM0hW?l>iflbATvkNabH<(R`AIpbT~oB2JLe=fS!n-BDN zNTVa2`s%DJ)n%VrXIymaeA90G?M{?VapyVXo}cf)2Ok&KP`2#3?83(qdh*Ny`nFF`?Aq*fB4T^ z&OPAwL*D=Y!J~ly;YX;f70`WnN*C|Om%s)B&^-@~VCx2mKnGH=f*0K00?m>^30}>E zAQasSMrg4HCV_+w)FAdKcfb~gFc2?{;p0%~LIl!~MmJR9>=f6+<>60;KwR7hhUg_C zuE~f1TOs9;7{r@2@rimf;ufS>#1!h#R{~=q6f?2KF1pPCV1!8+Lo>#aUca?~T<&WO4@@=;QUOeD>6AqoCmG*Xa* zRHBm{sYo$EvXYq84kP!Co}01Qkqg@`HNc}iFZmRT(Xt0?$UEa?PkM4wp7{)D zL-zTmerk-MZZfDq7djAxqDi3=bLg2M%Fv45L!xG)sKYQyCXHJ3qwL@)Bxs3&T3Udk zA{{9}56TIWK46=(q<~8SFw=r~6r?yUM@kt{(+R|srV{)5+?ma=u-1Z4k8+D}OK51?hNY7=1D#=@1Zc?~UKjT%wWI##x=RV`*|TGzI^ zwy~hiZA)oe+TxDlw0uZya1VP~*Ur_co_#EFH)`A0hBLRzvWAv zUeT8In%KQ9Yn!WE=EAlWqrDe$&45eXvNyYlwXS~CYhO^r{&xY^46uL)OyB|!xV*)h zZ&IV1-~8_PzT1Uxc#k{YgDIE{Ld|Y_9~{>W^S7|V6>WthaN+5c7{OXPaU3%I+3&8G z#juUBOJ(ee|H4bfUSKhB8SK{I4%WxMweE}~{9X~?^8z?lPLfgFq$MwSsZK_RjolUH zcSKjZM?R^Frp#n`hJ&dSCg+IH3Y5LVcg!!{GMc*_s49zy%jR-(h~UiI5z(2=6E(1& z_sr)$`*vVqxDpDycpdfI#b#8m4+ZsiZZX&`4()ovzLRs8wQW2h_U$&N5v!t0x+3mj3hAG95L5Qw`j; z4qLl(HTHFNy=zGS+MkUQHE9k@?7I@1wbj1%Vp+@VW^cOJM+LW*r|r~iSG(M$*7miz z4Qy|#Q{1qAc1eZ3)N{}H*r>K^zL(lit* z?z(YJaf$0&0?;LOhc|0xDEIW612?wFN8a&bk6hMIJ-Nzd3TBM^6avd`x67xE?}<~~ z-1}ZRP5bTdDgk`mDV1!_4K8$`k9*-RXt=fBX>F2k_UXN~_La?T^LkI*;<(28vDMvl zr%xTL*tUAsIgoR)V_T$MfBDR9&2O2LnBM+j-*?&5P4~L9yXS2_DcJ3;?6Fo{-6pp? z;LDwCkOO|>4N&jKyKZ=~`#sf#k2}ekI`=jx9a^^*xy5xHb!B^=>Q%pb*hPQy%#S_o zr-%A$C0}}NQ~vc$H~r_4-FKCHR_c$x_l}`#`+g&xoHY+TwM+f@o9mV5cxMtur9S)a zf?n>2w>k6AjdRx5owGxx`c|F3^63-5`kD{_^X+i?XUX37kk@Ydx1av@3;z70Z@v5% zJ$m-f-~QWYKhqOGc=6L6`+HY!SLS@iH+cC5ed;HFWhZTKhJ49~B+D0m2pD?@*MEt3 zYS(9h14n^xr+w>JdKfr?;W6Cir-7hXfT3q}ai?*MMpm(> zaTNH1yJvRs7lX!EdD7>9B1nH8n1KnXb*1NfYUXwi=xl)pU|~gky7zz9cY9lRb_EB6 zM96VzW^Z7}gF2^wQwV-Xh6*Mc9IaH%(cS(t@yID=J(fj~EfV)%pU zbbDCng+Q2xWr&1-*o9P>Vd&?FOlW6o_=G+ZfdV*$W{8A-NPlz3fsKcH$X1A%2!}t| ze#2*lh-iH>NMDb*bZlpe>BfUEScFOFgO_N6R+olG=y)_Zc5pa!K6rrL7kmKtiATtR zh^UFfwt&6Zhz;n3khmq1{-}$(XpF_Uh+9XDzBr9DXpP(#iicN(n~05gh+(OSd0+T< zTe7V1#>MIap32IlURc(=W%t2 zcyuU>>3EW#CwJ%;g$xFfXqb(?NPCcXU0^no-Nlb!rFt<(aE=I)1?h91A%tg;g3EG( z1BH_v_>MuqfCFiiN7-Z-XoGFha+5`nDmamd7M5Z;mSovWcQ^Qm8ivISlE+Y zMVL1jW-4WsiTNW=`5%Z$ESrfRRQZ@fhJF3@bkFr$-z8S3X;pifnGf=r_tBZb0-N>` zn#rY_q$!!}6aeK0-Tp)vWTBk2Lkh1D+{`I4T^#jx&-@~ zR04UMrpf+U)A@S5S)l(por2Yx33{EuR(ve!lcJcB3Hg3D8F3HUiUJBqe42R+lGc;$D>&ql)@*2 z>LrZ`ik5%LW7LOUy}6nsDq}@PohrJb>B({yXo#A3joLVidAg@~ilq8?r~bHlX?kk- zh<~(rg>^cCeVT2q2&i_tR&jcqO?8in>SKZ0l9W27)JKXq`lp-fjf$#o1W2ZE8k|x| zAr&g8;_-~c$bEV0sT#QsI>@=6=|zLDyp!Gi?n*BaTt6-2y~IEE37)J zd;Us|N{Nxm3Xa0Mi^Mv7%esn>dZ8%zp_O*5s)`<8>UcPKqnXN(6d8RwD6W<2oYLBZ zj8}znxPM@1lD(RC=cVCOkgv#)-RQ3P z3a{6C2$ois6kD+tn@rr=t*dI6c$lfE2eG*buhrU;>pHTqc&DB?gnej^r}(G|OKpvM zsY92s7Rs?L>#@|Bk1Q*)(CU()XtH&RvJR`M*op%E8EQ1EvD%TWGMldB8nQhbtbvNB zp!%t^T7TULk6A0VT^`=U~+ue({Lty-jCilsxBrG@ILMS8dm39%hXiIW$&9Jz-xTDX>|Spa6Ys`89_ z>$v=?x$&5 z)_T3z8zb5ayWE?1+R31KE1#<Zz z+JQhxw3aHUg?hqcc*6Ubn%TFuws624jA;oxX*C?7)_Ss}x3;g!uxfj{P7A=pCBHLV zoHtBmM{I&zX@G&b!(Pj^`irwr3Byzc!bO~vD7c;Z*#f|;zcaVRQ_#fNhMs%ZJ3T|lHA zFvu4s!_oG>hiu3+7{@|PtSP~~aEpzhN{T(K$3bkF)#|~5e8zx`84<{%VH%~yrlell zz?6HFhKr*&smcJ_rMTzH4D5bEnvnfC$yC_5ed}ORcgt1UcF_JdRJ{qHM=HU$3Z~tSc+4Tu7t&n#URJ$lV*stQX3;ip^!~ z#|VqiCefeumBm1SyijG)7abV?n$sf)x&RG`4J*$`tw1O>sYEO;MJ?4ct;yi}a6kOdR*lmiF|il>*8XrE*SI9qL%kOnP0e)})oJUp zT8p}zx`-5f)6bgEf7{Ydz0!dFvr*esbe&OTOL|h=o?0i;W=(<*O>5V@yJ20|(mSbV zNZIVnwpwkqK-g7yU6QCRsG{A^(tNfTY1N!+&?VWn#=6=+lbxEzMQtXz1C`d z$(h}}w$0i0YnN{9lO$@v-b}iPd!&O%xY`V+GU?phJj-6ZxW#IR;=0__J-P@8rnuGE zd5LkQYnsr_wjbBsfLV%^+pJUF+8Ghi1_IN@T^X1=!a9IszgM)MY2W7b2s%9$^j#nT ze%}~nhb$^$?>l@K0rWYCEpF$oZZ&0LCTYP%jSSbRpxpQRMu@ z;!(-SjJuNVE64RIKx?#pkJH$ho!}y3&1r zpNqj{7`e90q^g{_xB609uH{hS<+Y*Y1;ylfoqDlMi8>tGtgYI6JgR34*^BL{lpV9I zZI24+k$$e{1kUBR4d@_Ei;(Wax*c1F9^L|rx}99u@ z_#^oNX2g(Hn@8d}J?MRu%?`!2je()|S@n6X2HGs*| zD2!!Y+GZ%~sV>-147KtO!?KO&q%F^q-0%J#6$jbodb`TY+@&**%Yf^7>uBuDz2LA+ z^AYU0H?PZQC#1X`=IkBJuiU<{e$3{b%sfwcZO+QX%zs8&^k*HporjuG&x%#t;V^fS zyUz1OSmvwUzJsgg%buiBfA#);JCTqJ-PJAX=WXW=%JMD$6nFjcsg2J`J?XT)sagH$ zCm-pGo$^PmkQ#E4$C(rlc-OiLx*owc6Ea>=*I*){J@TO4USb*_T zfKaCI@OPgR`E9~62-UFbL; z`%^4}DGlTtuh+P`@Mq@rD@G6)PUNVc`r6dMQV57)U;9Cv?7pt-dbqwjzSSnp)ym%0 z4r#~CZrHV0{=Dw`!GFxx9{*}vu=$$)j30t`?&iS0g9LyWGWJkExj1RH7iYbB_caiN zZ)(UBP1Tic-4`aqG5)UY8_)Hf@BJSb6b^|+#6Ag0bj=tq5|HzQ(uJYJ~_XP;ij2@CQo6>`t#wtSN1dD^AWW4|0*O z4NuXIF>=o^lw&3ZQS=lw)rC~G)%6uNR(6)Q*7o+o6oZqkvaHv0t*kL>_>)43Sh;tZ znYo!#syR1v&T_Mw_tzI05ceBA{79GDV0$~*EPG4(OOv<~RCxNF9S%58e2DdgT>l?n zKW_mE7BqMeVM2uqd-$`!pai8e63soq0!LlFd+_8;xo9q+=h3NGw|;#PbL_9DZ}6flVytnj1J|oc zBSkc#14Nd{KnI!t+sTJD8gX2b$tF{|(Mg|_j8Zr#sZ>ZuWFiaD3tp@OlB6$T;szKZ z9T}6m6|Y>A%{Gg$(oM(Ij59ho>HH^4r!dlMNRqVKDaa0sLdM8rCSlAP3g5ev(MBCT zt_HnW@JCYJ2(`;nB+D6a2RreZ^3l}((hf5f1oiY%RIkhP(qjO1%FM;kk;ls-TZKo_ zP<7pv*H*!^;UhggC`wfzg7tOSlY&sy4^VrRj;~371*2F!m}GUA4146`M@-g9w4(lW zzMTi$G#7mq-E`O7EX;5r(g~{*C5ebCcu~|aT#%};iC%k;-8Y%^zzsHY^fVRb(&16hPyeob8sj{&_kD-^3+wo@BYMx{9HV8 zni=Dpo;p+(7$u2cN4c2S6`wuqz6-ydquqPQozlmoR(@RfR!_3^TSLxly;BVZ{3+gT zZBq2-eVE+)@WuZuT8_cK2CCp|??m&Jo5Y>-_&XJw?=(@d$Al# zUNtfTZLM4!VxIf1)}rnO5C`Cc-~=i770dn1euSfyRo2%dXc$9&k87H@AeX^Ekt=N= zjNRU<^0^WKu!3kA)%i%+!tDu9d)IT)17ipt81@i|K?DlBRF;#O`3p!1GuXnORv2afu!x0b3 zSc);$5s!Jq)M`wJi?{UAd3v;rAYDO6LXP5&hg9SuMRA$4Sw>`#%#3a@!>mLyG9ZqO zA0`ixNI-f|f}9lPD1k*vLWI(kulQstOLMMau`&^tgyk%0*^gSjNtU;a#VTuQNLHd! zm%;p{Fqf4}Vyc3dwDhHgly)P`4X!htAsMH51I%MybCJoMr8Th$n{M)8nf2*nr`Y2^ zh{es7-&E%@wFygZu5(%NjG!kkRI`J<>sB&TVhJghy?eb6V3$CcJ^5%%c^(vx?fj)d z5ju{BzKx!GI?@RN%0U&Ha8@-ehSorsB!)f|q!UzVD&HCY(g>Qg1#F9-{*oBNmby@b z<3tn#2{@jQq7uNvnp3X$)Q;&Cr?1k8!SgI^nlYuJ6WoSF$BF8uK$R-av}wK3 zZ3zjLN={Fw3aM5+(w3F<9CQW<%_Nw$Al=J~9BG#+spycU!82jwJSx<#-c@{6MQdGJ z)4(c46|ZkA+>**B2(pZbgm$!3L4&KknAN8%#G{yEzcN{?m?V`A$FCfbJ)3tvq17|SlBu;xjr zv6S>@N3hy1=Ry{^QH-h5wkRaSo`$Qh)$Sa>b~*lukxfHWGiqg##!;rN6l|E4j9s@Y zgc+7syzsT!TCyhDW~HwVLW7#$vN%!s+9Px6wP12XlhvR4Ra&meZhIL#p#cVpN7>lz z;-(u%cW|U!5eBbo8|=_mCeT%#+f#Zv2#UDQHEQUKt5!oS$A$P3t7qkkonj1C_I4P@ zj#}fU&=Vr$v9%@`ZYHv*WxS$3lY#0T@Qriaw&>wEcP$>WIs3O#F0J)=ZB;7!W}3eR z@>qvMB(N?Q++;J$=fP6OucRP*I3l+>gqZ`VlDAUkGpCuRBBpYFgCw~%bIG#Yz+Xk# zJmL}~SWZmlUoh=_W=DJHy(olpYsVH3T>kmbziJlYaZjh{M<1A(DTMF&1~h4=rtc0e zgQ*HH>e4@N*ezqeWure`>pGdSUrc2!L3J%8nDse~Bb=lScSmP2d)n3s4)qf~1TdDd zLygatESP9#MceAviN-ap6sdd87t6Yrnoah&AzeP8(mKbe0yc4od^20JQ{3d1w~eIP z7-Lfq-8j}{jSJjvx~$ta;Us0g=Us3GR}$d~SNOsi-f)LM9O4m|_{1q*af@FZ;}ws$ zyffZ$kAEEGAs6|`NnUcyfLoaxH~7k(V`hRk_}`8HL~a+?R-4IdscEhem zC5Zs-X;=H&+1_@yza8#zm;2o5UU$3S9q)P9``+LFb-%9)>VNl2x^u~Q!yg{;iC6sM z8Q*xk3m)>yDSIBr{@TeWwCj=A{O0@G?|uw>tYZaz-73%7Kf2Z2ixn)XHu>(>+vWB9 z*hS_!UwhlXsXm@TQzDkFdUch4vu(L9qP3LR@A+O>raHAgG-@oE0RQ&UmwthS6|~{X zRk)-zavJ$rS=NWX`bPo% ztisU7sVtBK)rZjbs{w&z01c1@TkykxXUkkH206h2L1_iIO9Bz_%d|{?euu73(9$SN zOPJ@-f}YPq7jwE6JYW zvN(zjmuf#u4Fu~@8aL6YXrdZF5f1-A3QN%&zft@Uu(oJR{n*dE8ezO#u^Xjs5qa-C zs!I=vq`%V!z(~w?%t(Cx$Ash1D2Jf%{ zg!nGz3&BtfCsLI{ZI5isAv@9|c_;OdPcSYIJ}NS#!jKbXf!`(&FA8cMKN2QekR-{- zBpWIRlaIk_GA4JD>H<&mZgT2iZWMWvD0j{$4R9ufNGFSuDFZ7hgJ>yp>M4OJDx1Me7!EaMU{ z{qFQ|WAs?Eo;;;b`jYzArY?^ToInyIBStV2QWH~h6jrj+@=`MYPWTej6A_c!1j8{? z%0>!vyNU&KltuX>@(5*XF+~s3JaaNv^Pm{T{@@Br!$k`6Z{EA~OSyMWBYU&a&(~8R(#YG;y3k4~$yzDDh z5>vrc)AIf@J7J2y(t*@8Fd83`J>>@jha)n<Tp^XlS4S6#3&4TPe^N=uK z((4$J|BxybeFt(t^birU3tt9*ToeSmZ7z3-LM>EBhe@Ke5qoZk&qj0-8!;1w%rz&} zM5PWzGf~4r@tjVq1hH&*o|Llm3^?Xl4XMri>{ z5lSe+v(-)rKkw@UWeQFQ@ygCqK66w{_cWWh)OKbwdg4+0y7V4(6O0Vi#O85h1av@w z^D(gzCnic`#8lWQCQ_F#jmAX}ZFEZzHBXb2PeZk#L<8X5OC({dGeNcK($w|-cx6pR z6;@Y=RB_T&w~|%WR8Qp+GH#VLUNu&Km2P;|231w)gjF4Z6h1?Q>dU&#Mp?Jn{lE9jIP?3N-62l2ArrqbXa& zikT|5Bp#_WxLO6NT zw@}fxdeb1Y5VX2?Qt15XJ3)YYO&UC9jri$u*S&r8Inpl zJ0~y&gl`%3Hq7>#?i2eukbtE0vSO@3`G;{+$Z=1#n(Fp$FE>H7Hp^si2VE4{&~S5Q z%A7#gs)&|Advt2iXbZo{PR9v!kz{S>EOjZja4i>eZ`VFFx6tyT4%23T1{ZD>ce+@t zYK!*fG#A8RtqUJZ(;|0y;m}G`6?dl>-&7Vz&y#IMXmDTF63=uMgGf?M+^PP4O4 z7=&B+N(YwnN|+*9*oAAjKVW$CWcc@J*oJ$Uk8oJ?bU0l+*oTYQFoYOgh?vZP*od1L zV4F;dFBFP-*omw7h?yAjkoZ}m*owOtGO$?iw76He*o(_}h`^XK(b$aFm_AB}2^)!F z8&)Do)258q=1^8K0W)LEM`H_Acpr2A;Ae!D?ShNRj@cNIDVVRC&%@R&na=M@srZ}l zn5Z;UBR_0qL6U>VS5vrmVU6!eBsq~sSxTzYX7Ooi{sR*K2D1O$?2VWgBfxF^aMRpESpo!}CRTHkfDG{F=sCa+#E?`5@31 zNaM6SA<;XvxzbWlQOB#*rft1Wx02^nZ86nrNw7&VYQruKK;QJgU{{^9lbr|6p6NJJ zsM(tP86XgM21yji9MK8ax0&Enfa(Xl%OBf8V%W>OB&70lS7#~4?+3~{n4PG&!tWpzs1p>le(b3l0-{Y?{;D~Hr+3$R$qERm$&;`8OtRV# z!}+51`I@7e(NLO-wvl%)8h8VZq7JB@m)d4D6hae6K@*y!ry8#Tk7b!xri-vj&v~v} zw@%U7o})K~$$E)dmVCu|4D;EsKd@V%_pIAiuvHq+wwayT`g_3%vGdxqQ9<}@cKsGL zYR{-yhSs@U*&zE*AQ8AEtV@fo4VMpj$w|M> zS>Fyk!5_So7JR1(Z@(ej!moM2Pc*|XoWsvp!jW>rJ6y!EB*a&>#77*(9pl7}cEwZN z#W#|Wo2o%TPsT&Cz?sj%d6YA?+GWpM!S|}VaeCOI4ZaBryiawI5!1e3oXLya^M)@* zfVz|U5|mwJ$w`W^p!~ZP>N2?-_5L`>tvIm+rQ zHj|3c^{>y>{Kc`k#RfaGYt#c(?K=Ls?3pHOM8QZVi*il?}-!OC+fdeOOrmtN)Yuc%kJEaR*I;Q>S%-X8@ z{iyjj+yC~aBk{{Jy0vP&+zTiJH<+O7X8 z;*GN6RjkpM{oTpe?9g%I5*p2OSJdkyEdi26=nh1B5+dv$#Y zD>vkA4d>HW=Zl-5zjS*gtp2Zi9jQgPi}d#2$6bL_ZJbBQmG#}`A>6k8r728v(0lqv zTPnH^wM_IE&h;EgS3R1*-rcRu9E+?^B$4UWUbvUSo-Eo9qipY|XSt=#fX(LF(*RH# zX6|K+*t?$bsk?$3IV?l;77McBu`=PA`2Iyc{76CugJI4t0u z;zQPlik|adKT=x!j%6SAYyZa^-1R^0#zUp%ZU4S^zk^Aik$_*vgx~i)oA?{0_m__L zkKg%?oa&6f=bHcdtA8{p-0gEx`mNuelYfPC|IxhvPL`khr&|2!g#1e%`^%sG^Lxj^ z$}9TVV)J%49N0n9{(tztyX0p`w{znE6q^9xV`d<$x+jeb)=p3}=etW$*km6lK7k;B zt^2~UJkzy(@;> zjVN6rX(pzr94li)+;G@-6!+<=>E->U+?A}HDK0WLIzB>1N={N%T3%v4S)pL$VX)z? z{aqa3Rdm7;QheH}M!B+@u7;M{6_RG=B8KVq`u+wDva;RM(vFt4#gdQ`Uf^ylV?BT3 z#z|k-4nw1!D$f=oPg8@Br)+x{JF8}!gHAW3d#=~QmnH(|>+kdT`~L$BC~#n;O{wOz z5_RlU!f*)wZ`leb5hARHZEQUx2nmeFjvgPmakZ*dw0a*N8iXj$Q^S=QM^0RL(j-ig zE@@hPNlc>6nJTMgVJWWNO_UiO;`^v{DbuD-pF)i)l^>^PI(w39XLDuNt@R>;f;JT8 zEU_)8j^T)QEn75de&Y1W>8sV2a_L^Rs}nEW1z^vP>KZriUz~&W?jhUv@Yt^qlD3U3 zc{1h7mM>#wl=5m_I`#zTG(6Ao+@NI@UsU-nvk|qdUq4kgPjO?P$*iR!oDnr)o}KAR zlTD{j&)%=hGCmp>_3zw^**)e3dph;%)~{pFu5a^V!_58`7riF6V{PCWH}@WAso4oKu|y4Y)>M>LS+_YCSY0f#!;qC>VcBE|Mv7Uc5W=W48(4G5 z7EdhRyjbIv#8iV#N#CIpWjw_svz(h=remB;eU6rwkUW<5raJu9SE8AZLK>;0lQL=H zkBxXnDHo1v+9@CTSUOdxxeP+4r>CNts;aAMWZ{+@jmqi|oXW~-tOa3qt0jTZTK=oA zzXBVquuAAUELy!9JE@e*GTW@P&q5omw9`^st+m%;o2|Cna!akL$$}fMxZ@^UEV)b} zdv25Fs{2v8?ZO+cyz@TDF1-Q0doP9d>g!Lw{Q?}Yzyr5RaBSZiTyMfn{kyQk4?`TW z7yL@RE5a39M={2eG`z9LAA=n78zT49G0Bo?e6k`YtK727FVCAY%wn)SGgLC$yy?X` z^W3w~w*Guc%|UyFGto#4eYDa`GreBQaE3bSaKvu%>d0?-nDNd{yDP_+9lXNz7h8*6 zw%KP>_H>6lFa*;Po{^`8+rw0sG}@rn;g))LlSnq-e*+#kzJ}~sXfwG5{<>(N?#xJ^q$n54co2p- z!eb1N2&%ZdeLuDxUQxLR7-vns1Jru#9Ou12ochr&xbn+WU%mB3RD~RKmfsFwkVJ_H zV))tHncSMhhpn3UfQ2sI_1k&fTuj|(%J=l|3dfysZ<{OB+;qn$2)^-iS<2Mu*tioq*~N`< z90?m&rH5rD@G;D(RUcR3ia-9X2T*Gkw0Z{}C_@`65Vg%| ziz9oa8e5YFt5tNOB+95#7D~-QLT`*7btp+o3Lm+-aCXz=gXUV}!wDi%rITzay141k z9gb&_BQ+^cdx}ZIMXnr&15TIF0ggW2v2km>z;4-##pMB0@^kHMqjjZ&IH;SH%G4lEw;I@mT$m35$C zed}MhiAA&`Hn9UCUk@XS*C+OnfI0Oc3rPb3?!gGMG?Z-m7Svcr?DU(1JWL7A8Cb=l zHnlng>QCf%kpHs(E+wzMHikV>KY+s&@8txrVZOT8!(+E$i#mm=; zx;>PYUc;A=ImY643a48bHRzFh?BplMbeB8+WsYMvWhi4AtyPBIm8HDTCTBU!KK}B6 zRlDWaby>`6{wkRleC8j5dChWG?3+Cp{^xnNdCq#?GmUMT=33TSdUxhCp>LY!1P8i| zgDy0qjeF=ZQ*+Uco-~pl-QGk4?$4Cow3j1Y=G0>PZ<^*bsb8t&Q=>Z7s$Mm#TkYyq zOB$iCo;9s&ZR=a(+SRcxHLsbuf?oqW*uow*v5Rf&VRvavU(D`z!#m#cp7*!OZSQ+WWdQgV zp}zO+?|-AM-vG~_zz1&dgZr%D2&bOH7w+(fhpgccADzS}Zt;s7tl}8Io5nZp@sGEw z;~?jn$VYDSlmDvZC?}fASMKuumrttYFwdFHXKwSGAF1XzZ<)?_?(?5(r{_Qinb3!B z^rKs*=t!5C(wFY^r$43XP*0fDr*8GD1ElI$2bk8k?)9%{qU&Inm)OT{_Omad>}V&K z+Sl&(w=<#ba5t9R=Wh4A`=IW4_m$rF?)SgLpznZBmEZ?&_`@Hd@QA0B;ur6Dyf^;w zkBYqHE01={Tb@an&phX`zWL7Q9Q2|W{pUwdq0*Z^^*cws>L0}V*28|~uaAAuX>a?z z&;It-$-VA-?{MDx{x!f4KJooM{Ng7a`O3fg@s}@|<~u+7jfTGT(L(*|V_(kK&wkXo z@BNu?|NBb`zxd0)VDkQ(UnA&GKl_`z{`O}b{_=nL`{&P(`rAMMB*nk}f5HF$10X*A zUjT+30UBVb4d4M*LINsa11=K-Iv^xKU<6X2ElpqrrX2=qV3-X+2YTQKf?x=W;0Tgn z37X&uqF@TD;0m%}3%cM7!e9)lpi{_T4cg!h;$RNy;12R&4|?DR0$~s`#RcjB5enfE zA|WstAr35I5<1}%eo_d<`WyffE>bM9oiw!o#7qo;T{GP9kzfU@?jtfBEbM+2NdEUB4Q%O%OPd} zBP!w}LL%MeVg4jiVkKISBT4`!TH+>hqNHe|0(@d8isC3HNhl(KDUxC;s-o*n;wrl0 zE4mCS8h|XqVlCQYWzZrm-r_FuqEzH!F9KsQ2Fx!CV=)?I$hG1zD&sN+3o$a|GeYC4 zIAb(YV>NnWGFoFcYGWy4<2HKZH$uoXg5x-nBXtzqISvFmCSEzRV>?oYI?iG`p5i>Z zV?ElVFRo)e5`@6<<30N0KaO8M0)Qj-qdo%UK_X=Q4WvQtqdw|lLPF#=_S-~y1Vt`n zL}Fw{>Vm#;q*8R`LuzD5GUG>jIssW?&(|ygl>iwz)nzceOx!fjM!}^Coj_v}=3p8o5hxWCC}w7+m1WKf z>!?p;h9!{5R9ETcWvV6=bd*qR$!l^0A92G~!3mhyX6D>Rl+>neE`?m`jVMvXadm^^ zV9uS?gjT7}CV=K@zNKfLiEhefbkYf+JXjZ5#dQ)2ZbD}>P$xkxCu_FMptx0h35bsV z)YU6|Cv%>qa|T0K0LnK^r*txvb#j)P)JbmAr+n5_YDxloMoM^PNr3v6fq_SQs^?ew z=d1*ed){Y!I_P{#2_Dsmb}p!cX3ljc=n(kkA&AleeVA}SR%}@pdh+LinkbC5W_E@E zZd$0E(9MgQf-KzUjCLoBE)K&OXej~bek76iSdnabR*s&iP-Z9;Kxd2QCwEpSjWW)J zI%$%!sEzLDT84~}K$Tw2#Gw$@fFx6i4(XS!R7V&UY|^HR<_T~Cn4dJLdlqM5^`?;G zK#_{cq2x(Wc~~1I%7{f+bbx7}^3u4_)Um+n7XYT88Y*6j%aV!8p#EuI9_s$1mZqap zrC>s8rLHJcVrr&p>ZWoFqt<|&9?gbYDnx=R(TJ)y8Plnb>Oq!j(5PypvZbf4YDBi` z&%El4QR=LYYOVUrt-gh%>guZUYR~v8qJERC1}m!;Dkcmo&lGF2mSeLz60&kAY!q3C zET-*9$g@K0IEI9kL})}2XP#P(gej_@Y?qL|=4poInZ+2c5-N&<4YkUvwPvf^G}UFD z2)B0YH-Z%%X;*(t&0a)JfObj$^x3Dlt7O7!qe20_qUvQtsf@;EnPO;d$;mrGY`?bS zzZOQ0P?vxXY{6<+$X>+Z=+2mq08)9$WntC0zHGkECI%f6%{pmS4E`wiXu!t8YGzC< z#j0q2BB_#62fuQxHhSz`v6hc&*3w3%ZA4j0#K_djCPrZ?zP46h8Ii#D7uPls)AkNv z0GZJ`t;9a*gHEjTNN3s>EzcgUw}RAclxfo<3T8Raxq@qNg|szraqjYkZtZlBTg-d3r)!a{(3* zP;J=GNOrvl`+5g{iERo(8_L`>Thh$=i=Tk_eNvVhAVFp=eX+EncgdR)NBDc z6&yv4ik;DfWh`FNI>60;5y zldqIfF%rB@?Fi@~+}O^1;rpA@{C+S#uZHs|lH}_<}7A z+4Ap><{K1C8<25y0W*z!Y;K{_R2f1E#mB)0b2{4x$_B|dTvR>Vtd?klJOuO0ewS3C zPMzxP0^Bh(ry>Dw?lq^7!OHXHYO`~k>~KbdJ(DKD`Z6w$Y{QCf5r@rjVAVF1Gs5D9 z*BV6liu2@{M*XhrNSlWqaqiaI*X-`HQJntg0HHMf{_}mzRXC3cEgSSpA~d@ybmpFg zMLTp1#gx>hDS(CRLYFU5gY7*-b5Seq)$BAm`?MJ_7H+lHCbw@g`vrJ`2Gk-F^u!eh zjV<>Suli*2mHpZU*ji6pT=Al z@aWz$Kyx+Lcn2Sg^xei+LxT>lytUGP1|#3HV1QR?f-YVHmnUP0SZ~mQjJE0CD?!(_ zU5BLQ3TVOt(4`o)c3rNkXjBbNrb*}aMXPf{m+xgi^-PiH4O1yNx79X(2w39@Qg=3I zo5yV3v^o10LM%31w@{W&H+EO|H2%+PYrA$v1~nsdv~4>#b>B96|1Rh@wRx{MRQEw| zkt`3PvryA_cStr0%aC#>a4CZr@JMs%bS_E@Gx4s^YO^!_>h_i{I7|~Pm&!pwhxbtK zZbR#LN(Fd%*Y`tjIFQDLGh29ui+I2`tV7Q=Xj@T!Be@v_!2gf?Ks*bx249OX0G`8y`6*>M^FQ3z^Su55sw!%Q>{rb(*hdE6;hJ>$#pA z_oM==oky_P~Jv4VG@|Kp)=Oroc%kuy3XIy%Ncx)Cq>q}yYq3zM5G zx~5Adr%TMGJ29veDWUJ>pPTwkih9J5I%OL+y2^OD`n4Thx0I82EWeGePX?N=`XHuA z)?BNs2RU|*7b#b9AGfa{#c5#AZB`|6xhimyZ#YP2x+Q(HX1|2j>a6n`@-VXvHtzs# zxB4AO`mf(%uv-=RZnLmgR5hQleIpG@c{hKP^nLR*b@TTywB15$4aF#pVsng#0In)tTZIw`oRdj23 zz5A|w!*?53^Y>oNJjK6Zupd0EHa2p5uKc=h z)ecwuZdT9N&esmN${#Yz$F|FFJnwpXV8?piCfA-GwT+AXTIYL4?FiNXXl3}i(CZ=5 zfA#_YvG~TYN0a@DFS3C^(fLYk^Gdr{J21hE{RG`QX`5#B_B(V5b!`*=lx*0Rmp%H1 zPYD2Wm6vXFlvdgVJ=>=tY%t~T5dHi70!=4*Z#y8U(!)^C41?{{~5n=EACH}Z3@fBuWs0b`+|dc4aIcU=B(NifANnY(WggJSG`@?JmI1k-s`kQ z&~*AwFU*s;@M`?y699}j&0|y(gn-pvob}!=2ha(_sPdjONgESfAVwr3m3>P3?%ak) zJy&c|L&SV1PExsKHl2~lQ#z$qtygSTyXAJhUvOAFCYQ};bXvV;x7}}eTs~(bZ9-kq z{(|*!e;k=3q8pK(JU>1`8@(YzpQ6H{LL)<^6}_2E7)TnR#KxWx3_HxohA6tKJ=HkY zrq@u4(gh^>y}k_jmYs`FZ+!d#P%2{eAv^|9^l11rGeTAXPGG_Y}@Ux6t83h!G`D zq*&47MT`p*X5^@=A+n7fMaud((&R~$DOIjy+0x}pS}z_iy0A^LkdMy3VL4{&=z| zm&iMpGu@W{Nas`CdTT_csApFcleldTxxt%rF5LWi^y$_6{9XqXnomxcUzrcF{H;=b zw$HC`G=Fv7^1x(3KvW06(rB2cKMEyWgSVu$cJyvZkaM)8R zapJS|&5vBY-9WPzmwM{C`jXjWBf1+-Fgud}V!U9V#f zRaeD*L{V5F4V2z+*VS@aXag2_V1m&T@l|_$byQ7lNhw!VQ1VPTyJF3y^jv_2iDgXz zL4EJt?i%*ES41bK6FMv5Y_!{y!(}Mrf@79>W}5pt_~BMn7Pn-aO}=>Eo?~6u<%^qx z8JLY(>?9OwD|6(Z$?WQ!$i@Y)4;XssGYBGmDaIW43I-J1T(Hv4R}+50p_rrZ8= z61K(G&c(QqMNvj$VZ+*Pa`$H$Ha>?aI^B0Fuw6IXn3Ss9<>a5?fJXmZLcxBPN$ zb`#uj&O7(~b9nY}4fM`7kBsy>Oh==$MSI;0$anYsci@9} zSomjh_lWr7Z9#r{=9_oEaOQi51N!Bqcm8_pvk#bh#Le|+-G=a75i#dptq z`HW}(efZ-)4}Ia)UxWVO?U#Rl{`;p3f8gma4FLR|0R4AB1SW7R3S^M`aFLsefs0y2 z8WeI`@HKaRDlq)|Re%WRKn8|Tgd>Cs1TClrB#~ihhW;_&8N|~9ZN)28fznfa+T%ec zaL{2m>`4nr_(LED5hE`|*cb-k!lCKKhhFDE%G7@iguVW8ZnI^d*Z0tr7L1h>u-b1 zfvHIKvzAG0g@yy+86EjZNZO-`A+y-SC{-pfQVEe~Iu+0olSeW5i9&A^+PLh7E&g1P zWkd^)!X~!LqkuA!v!rD$(>1jU8OmR*^kcFzImIFcjcSFFB^V~jB2#)&hic5C&#v_W zQhHI5(F|imifK!1W>cGbq@f>m*~W5x3qe}^{+l#4$+ryJtdU~srjaHT#rot5NtZX16ZAw9 zRdY|u3u#e}dQ>kEaXMUNV>##ewHv*2savZfxP(d+mu}&zw3=T>k@{7z9(Aj?Y$f1Y z>Qy>O?sjWst3Mb?)Ud`?u5(T2J5H#z#bi~aB-ATi{rXq)jdgW>)d>&@3s}S^HhP9d z>*E*;SH(tFvXB%k>JA&e$4*wWn>AzpWl4A0Rb-a4qa|$!JqtR}QsK0pOKoXg``Ur6 z)^n{5C|?^3TioWBwW37`Z*}`y;HJ;F$1ve3J0?#5;Om0&Qe`kbwZU!*>J>a3%x!~v zUF^oJxQk@s$3jUT@2)~@b&YO1Xq%jeaw3L2Tjubn%CIP67P{emW{^5^-t6XAznoF3 zS&f-f-sxnRp^a~CKx5tM?J+-nlwo`KD2X_IqKfZ)5U#4)MWz|ZYY@}06+?vJ{f1b? zUOMJdrIq0oy)nZ8Mln;fW}zuw|IN7r1cDIF7 z;_U!h%ka&S6>lBsk@+gv#{Q#q{tRqnQzO0Zj_7e6%xpwSd)!Ngc1rOC?_Znb)!rs} z!PPd>V<$9c5$5-*RsK5ZO_KRo4<{A5O}(;kGh^VFfT?lo{moI>bGh)vDHefU>aOi= z#~Ys7Kt-}~gU4LvEa`8ynz|?fN$Y3L&S}qWedJwj5y=bE^mu6sMWD8u8dP4Nt0x2V znMYmfA$rJY0!`lMT)ityzu&gn`gO3+E+bH%dfClxpU3pgi8%y}am~wh6b|?7bEmsl zWZOBiBV2@euY2G9P9C|#`Gs=2T*85_+0Afw8YpC3oTU<61MK8T>hIO^0 zJaD6beesRI{uIpaeuiuNF9zG3PDRuAt@1|rx*oyaBJ-KWN>ci5me2emW?ZHiBmVKt ze}376*WLs+CMD79X~=72^YB@A$l&Eo-s|1bI{RrR-N@s$^QjAKF)SAL$fpEzf^j`AyU8w%t0OWK8or!cA>Zzl(HaPl|<4#Ae=Mj1DPPaBm{Ib>JukY zGdep$e~DGn3hwiy*-r3`5LAv};o}4`esrtGL^Ps)C{*Hr%M00K*J2 zK|sp>8ym{L2egx4Im7zWz8X`t2xB#G`9d5NLqj~o5^R_{qrs9gF>fI@BP+u`w7)jY z2|1J^E4;%>!8ZNVLwB3D{)-KT>KPpxM87CRL`+3Pq_s+;L{Lv|^*Qdf7K0Y&c6xvszp;S_H*m zT!~BUFg{W!Xi!@Uell9CfZNfW-^vpJ%R5u0&!BC8YtVf3Aw%^OeCfq~xiAc4W$1qT`L^r%CbQRs1!Wg zQbw;lOV0z#nyH1XY)iL%OSp_nxtvS7tV_34OPaAswA@R-!poTvORXf!EHV{QTp9;a zCBq!Ac-$eao4j(fyOrci$s94yILGfBwFi?A1$hp|^u@tU!kF|3r5H=ZgSKZ{sBoLE zUJR{U;kW?&3cZ|6*%T}F(?lM`L(H5+$0{(klf`(0fUGRdkD)_z6gNziu>J|OKy(a} zQL+(}s}^-^irAb@>ij5qA}19=PXGHU=Nz-D+J--hsuL5%r@EILlbak#&j0I9>)Swc z>p-wD|(_F!Qsl-E| zGXQNtG+R*aBSIHcu?K<~(mbAR`9weKHK&?Foa4hwBPeZLOsSa80&P)jB12(9&sQ`k zl4-#iy0_H)wbYbR6Q#l|JW-MuPzM~&737#7Oo(gLO>vV%a>NQ2bx|mdBv!OT6#dbm zQ%nc5%oedWa6G4BOj2ZgP*@Dm)G2 zSAumdfYmO2EiA4qScd(rgDn_=UD$@5*w=bkf{EC&q*#sq#Vw1Ct%Su^%KO-j9ob%$ zSj970l1*8_>R5rn*pRJOm5teuV%hBxS@z>8Lg`ZwUDGOzRyNHF1k^Q^Xjhpn+S$U^ z=*w2z1iz%}OoS92rxlTu{LS7?vAxZmWtXh2TNIS38l)oixpzSjj@FI2+)Y`FdlJ;DY3T+M;m2a2wa9-ZUO$5@XtnOuldhGID)jyYgf3Q&&iio|Fh-FZu7_&CY%u^LU@ zG)H#LjJ0G_Hm!lx9h5y~R)(LqeU{KQtx;}eT4t74c9vLXAVIEWUjB?*ZkAkDpk3}| zV#bVLw&ht?R9UX#Vs2*3N@Z((S!bT+>pA9531)9iW@_GMgMnsxRf{H7Ar;I#YtA8U z=4NyT4zu;*rOiwU{@~A4+Ts9BB>l`rz2ZfXNN7V|+Zp!fW;o~j{(Y26C`TzYxADAOX1%#IQL$jf+Q5C)Uj^I2WzhCD zXqFzV2ZO+j*3Jsn+|%98Q0SHdMAs@RPLn<{zMV0V_Gr$1Pnvd_AF%1il~&|U4vW4s zygFgs4ON~lR1Ezy4vgw11~Z#_r5+*Zmj3GPslOu@q)AmN78F9$jb1*rQ38e=GLb?0 zHD2PSPzC)@ivED6W@z^s#q8ZBR8m7?3|>q^X-cJDd{b#j%4@J*Y-0M}b3{xIXru+jhNx0Ou8oGJ0&bhr6i2`|MOM)@{oS=y@nll$YR0Z@ z#ko^fGvPB!;B~Y`Ep?av`?O=9CgW)o;9{Fa)ud|v18uL~O;$~A`^`^JlkUh4rmI%& zE1W_`D`%$&ZQK6txFBKUEY*z~>|Wa3mk!>`Y~i6n;vV)*sD>VFK5Xp9UDg(vwq{?U zDQml)Tt7r?Wod5k9&ixJRNTEdhf`uP(^0!_UN!V@4sIE#c5i}LV>c$_d|D0-hvyZYJ{W)UuqNePlv}XGOBN5PE7xcD^*Zk6%zRc!0f%xi z4~}>ZrK#QIyYBw3dd>1N8H6uSiZIW-QXX?U*OV?lv?Uklz{>MF@ADY<=H*>wKOc1U zxN}UI?*npiLSJ;M6Lh4Ub4HJJECcj_c63RjIFhO+xQFKiIbd8{NE4Fk{FZE9n zb#`La}^p!SsSvO|YifgCV^SJTydq#719_P1<^EdcbXXL>FTh%l#3s0YQ zWrsat-|*nBEr*tKMpkBtj&g#PUv!YqI3gT+VNcM6+c;b3SlSxGGt-gw`qBw1#ayFWq2QQ z9d&i`-d_YaZQ|m1<}2*f&FT}$b7JWw?~AAV3dj4LZ@N|r zs-Nr6e5=M{_3&>WnWZoL!Y_T;Ja;xW$1e6xpKEuGM%EHX^29f~U?oUp9mr=r_I$nk z{;nf+)BpXU7Af5QQPvJ!vtPk)|(^)KP{{xNv`-H2<{HfBf%%#^8Sf zfRCxm&EcY)wAzca-n{#t1%d#U=82~2%C_zc$MQ_q_KoNI&iDQg3<`%72=RzaB1I(S z#psMmr!gk=ip^@b+^+Wv4vWX+vY84!tJgEDI4yw#3SciaD6lpj2FdCVO@dw5kA^CY)qt`f_IYN8>i<_&v z%iHVw3mk00I-z$*oPx}eChNtD39HfE{OTCJZ2LCcN!rak=LsQx>d8GR4()v{EU3!< z4j(T+PhW3;@4F{CE^3U<-S1PmfSs7}1NV*8K!n!HEi|RBVK{~440aQU$yh{n4h?4X zM{pyof6*X<3pmZ%MTHajkrcJkowIG;T%kHyb0o}59d-Ith7XI(phSxrJ&H7`(xpsS zsvJoz<+!LNt6rQ&^=e9}FgMyvpfP8}g;%?Vh1S!nS)WdAI%KC;`JAPaR>?Ny!rw#`7fb!p`pwjUz2>AZ;)0>_(n-=X< zFx=I12lw5~I^CSSt1veBO!_o#!C9$6PICCS@ZrRZ8$XWxmOkG7-cocqIV3~Sl%tn! zZndV#+-1AV#@-#Zck8gHt47Upo!m<6b$_D$WpDOt?Y&DRA3JdJ9l`he{|{h*0uD&v z3d?a8m@Jm1cAj{?W!D>m4APe$YZ6`;T4)#EG#Yvw{?uVY5n4D~6ME6~orvz;#o>rR z6?j5_FwRJ0jW*thV^W;d1>#ucxro(@WATNXiuV2FR&OI7>0yGL#RVIb>Q%F3kdDAN zQw7I3htM%hdU?*1&b^qUG+362W}0fQ$!42oJaZ646M6Meo&FYqSrC;^y0)d5cv?8; zpLbFhUZ2&4t~^kC9$!Vr@f^=_Vy-X3A-&o_-2ys36Ga1A9|E7>5%t z%H_v}dX#J@>J2j1ifgXA?#ioxJJM=HbPizJhMdI!D+HO75!=dkw_d?)uWxKB zZMD{3i*2^`M60b9&!W-oAm4^dZn@^3i>|lnt}(6@+^!28weZeMZ@u>3YYD!3$!nOt ztMKb@zyc3UaJTOkj6=Io9E@9WxAM(8@62=0!1)|Y{?4lA@gZGgHJcF4$ZDydaWw-C zb<|Q%o$m(^%1jej9+-r6GRA5RZ4nRACA7^hU`AJmw@FBI(@alT+|yLgO?TaPyZuC? zM@N?SGHerJWEao;P3agw8EdCRVun~zd2l73CtIj28YO^o-;H_Zn!9}9q|=SED5K_$ z&UKt)>m4~y>0MnCWC-E@`n0e>j^;pxZYn6rlTAHkCpM<~K1=Q;3u0aT6sDwvuuIjKTriV-h1J<{RSx`?w!Q#&MIJ>|}s;WEU#d2awXMWL#=j!Xrhoj7ZAj`eIT=7IBY$ zLNa9sJwt~!ZsG})YaK^$$-qLY(3k#1?4<^w$g1RM(v!?=rZXD@Cn!!TDy}1)>7=YDpI$A zDSGy;LAo2p>6ErnDj?wsGGTrb_Z8DpC9 zokgUhq71oLcz8Cn#4YXt`8cP~1qyiGbksNj^1HjS_0FtNU8K~X9U?KnjUc>eEoM|LRnKoLw;l?Eo|Z_ zOBrhY)ed_li61K`law#cC_07eg3?uTa*0IS zK6YE&Un3s=x5xVHpXS2ZID+=H?~QMA@skA?4Q^?{*ecGZf}=q0m(gU^4vN-0-uZ60 z!^;&>lO{A7|HQP{j$BxU+lt|5b?d`F4swe5o5~!I1zJOn@|62)n`#>wM?fs(H_DZlIj=eCR~SmCtzw^ng>f;6-n`)75nJoh6;(9)G&kufC?J z>ul;66*|_x4)y_Q{bpQ`QEOM*;j@p*uxKiK*xwF!UZ8s50!OWBulUD{FBTbWe=J;G z-UhX2wykup+G(K<__!;6@xPdRW+i@i8mH5>s$KTrDgSS8C7y4`+HN_WOJ3Mzx7g7= zM@RmEX>0=5@2>xLfnu%jV`y!*>^iqCh}v_0)@J9e;a zo)Re1^(@c)XaY`{CHR@1qJ6b|*K2?K;)1=48!SENTYvfz&Mmpa|6(dx$x37d@Tvu@ zJUwfQ>0w(hi`CuaJiijj7!)+-m6?6qCx8R^Cc0B!aW-hXrD4Lffa8ZpA!Kf@Mr-@` zX$)9*^LJ@WV`f<4EceHOVdi7%L|zkzee_3wCy0XcaVUrC)mD|UMs~PsqJ)Lw zp*~TBWL?N&x8;KEQ+`{RQgBFhVl!TX@?7vVdaWaSuEmIt2qUXEhnI+nMAHhqWjY7w zZJ*a}zUO4d=S@5aOzehjA+~PGHeKC>S+He-C}Vb#_j8DtiMNQ0N>@<2_(fQgd*{F@%$c^3Tjo%24;V6#d zNRH)bj^{{@)wqo7$c~#>btm$U?I@4)NQd`?jG1ST>PV0KxQxH}GWTd&{!7P?14)oF z;E$Z6k5Ltm1<8;N>30GtPY~&l6G@SFCy_CgkFi*h8(EPD*)jl0SQp8WBT16~7e^rZ zjD*)=WyXxjLW~_}l8Gn{FNq>J7*8dMlOySoEQ693c}M;PL5Bx$9#vVhvTX(#kdY^e z37L~kX>~i9GChfQQ}Pi6aS+VaiHc)>6fa*lu5}rN1M?pozqF3 z)oGpAiJjRAnwO?TS@wafqnv)CZ8@ezqcc7kHC??%U(Z1(r&t})xP`Q`9LqV1Ss0kl ziJ$q|Oo3LP;JJa6_n$>+Kd-2p7sQ?c%4Czoe+CLcyopK~bf5Yup%dCen&1k4aiP4H zV_+DF#hEl5x`2B4eD4=N2@-uVlz(z2Xc0=GE$X7zW1%$$gJ#5T=_xtNmR+^eTx|)7 z;btc~I!x=4ZZ&Frvj-mTgl92fqv4QH55b}@3Z+rHR8s!9XBJ0|wJD`ps--<;n~GtR z0_84Gx}{@Ercvp2Ws0V0%1KaJGR>)`ZwjXZ!=@tRrg3VgcM30a8Zvc?r+w4~rsD-L4f%-9nYN(6KsGNeRfF`DmDyfs2b!SScmx`%!8jxN_i2M62X^j@2OzF*Q-VfdKzLo z?CFT0w`a6^tIg`Hh@nBV#$atYqV2I@eFJ{)hobESVCSV2iu$bKDy|~~YP!*u|7l~x z2%;2tu5MTu;5x4HDzCz<a{11=^!pbd_k-nErTkq9Mo>@H(#pOR&3eOh^cb_&R9= zs<0^fua(vm0$Z>XORt3K(a%$l=9OSBkifU`mt#LzWa79-PW6gFG5 zQ7g4(Ba%~VwO7kmmWs7o%eA=hs2c;dT`RU@i*pM}wr7jBgz&W&6SisVwr@L>&eXPW zOSg5~sh%{qcB{8=yS5@Hw0jG=W+l$Upb%g}D5YI+8i3Qp?>e;c@y%eQ4~ zr35OBcdLk`8j=}?JShsRi5s~hOSz?M{f=+gN0hiS^*~#*zE|~uNjM>=hufGimlX&YofY`W0$wY zi@hX!upU-9OQ<$TXn}fkg&Tyh$LX)_8lTjwfc=Lv!JEDB3%?-tIiN9~cc!nG)kHyx zo+~DTtBbte34>=@hZ4B0e!__f8Z_=3zYDy;+bc-jvuIVwz7Ncp5v&%ADOU^|o=BvC zd&jS1sK5*?!r1G;8(eF<8A{5lp|gf))JlaK+_B#)Yq$xEBW%MrEWeHhyMN;>(xt1E zNIGW8ieSk^d~(1B42mmzp0SHvNZP(Q{tU%Y+_$`FvA;`L)+@PDti`E1#Z;`e@X2qG zn+#dJ#btb{T^upjYsPEbr)Uf@YRtxQ45x0~FmNo#cU-1)j4*bL$9+kkL;X`ET@7D$(2l@qa{ULBx8$f#WY9BmJG`HiOGl-m#`$d z_u|N*tjZgST)L`zJ$4$@hpaE5tPAwXtBlJz*{xB%1RWj7f}u0Br`#+4!u-zr9EJO)T0ToJ`pnM*eS#4;R!b|!(jw3V&CuH? z$pN#_4K2}(_s}cX&J&H%16a}e644p$(O9?9_|nlIP0~#l(x`mVC9TqLchdGU(kl(q zG1t=6meMh8()aVIi%?4 zmGSqyH%g0y7-08+)NT#fC1%Xuhl6Ma!F8>FdwkxgpcTz$oeOvBfp z0E|U8cp*&7k}tg0%`E=eqy2>3JicOh*ppU87`$lT4BGhc*Q71mepSw)HrL-LeT$u~ zz)8*N9K)~;*|RO&#ud+Fc3|oDZo6Bg?KxzK-Nfi-&p?=5_7K~{ZQWVr&+|srpG)1r zecj*9RtDX82))k2P~G5--b6Li0qx!C?cP|m-of17?@ixM72nq^+V!p9I(OgUyx;%L zdj0Lm`3>L&{&511F6V9F3%;K@&EO9%a|nJe3J&2F?nX=v)Q@Y~3TiO(ZQ&ozOibO> z|2)+~eW)G|;wgTThj(tL$GYYvUO{|pyV{_~XW}HHcETjVH?1^xZo9^jQrREUF=ATaLiQ4IiRb7 zsqX4^eCn?*>ms%4;gadIj_VU1>$%SB_PFc44(xdQS{{_R^!bpdJ?R^6XCWKx%^p%1 z?py9S;+flgbq;`d?(Esl<1FsV(@m_nH{H(-UX3<;TrJl3C(CJ_J37+p+V1Yw(&O+a z83UG^{)sK;BC41%7QK=AK2O{3?+)<0GT1LXmQ?sW57s1-#@Opx>kfnM0T1z1wt`y5 zK8cyh^}FN>&*lBf?hhaFA1`$iuh`u9 zguN8E-ts$NF~@?k#7@@cFmX6aJQ!M|ScYxU4QVu66gtoIPcL?hE);$T(BJy+P>=OB zBHpla(3W1_M}75KFZQbU>tk>BbXxXjul8V@_G|C|h$y5Eb@=FZuh_xk@!S=zQj72C9- z`I8U&M=kP#s37BY#6v86zt<2u%!m`Js>d@36~`Q=+kdhT^9v ztKT9(p2GBQV4f)N#5ho8Nkr3qsV`))W3#J1hDJ^{^F1SDp=yBOo5W;pu3Pcg0R|K}kYGWB2N5PzxX>FzheiH9lsJ)MMT-|PX4JTmu(5F`SH7HibLTBY&+5&_4Dso^v5RhF94zwZ z-@%6$Kc27dVZ2`Tu};0PIQHDXdM7`hetrA*kD6b9BKURn+J$?sJjC!T(7*!`OwcUo ziUR=;0rvp#H)HgYPr(Z@%uvG(or1wMVn$~Y2yiA>VTC!vhe{=Ow$Y*NZAvCLA-&ZunB z$}PbRQ_L~l>XOAT$xKttHQ7YU%oWjWQ_eZ*tka}7IgHcJJ^Ad@PlNE>P|rUJE!5CM zvk6qgK@n}#(MKVjq)Sx%$w8~v0Q@l)pA;R4(MUlJRn$?fn6#E1jAN=Y>=(?3rK@715us@O+|MJ zF4$mEuLU<=^xVsJVPw;D1zi*aG!0^YKj~Iji34W-N8N)#4q0R;6L!^JdXH6)#EE;^ zH|1aQ^<}tnGx~Vsn{mz=&Q>G-SKmDFm6zpXGnKhzjURluBAaz?+Uck1<5XAD=mn;= zVS*L$4q{_w&s<6+*7`(+Ibs^>v(Zl5wzE18r!dNtGF$Dr>8@L`m!z``zP8IA*zUgp z4_r3B50qQ*!x2xsD#8skT=B;tkDMpQ3v^ua%Q4S=AvxwwALN0YF>gR?4_^A| zsb^+*<&6jIZB}p9UcX)j+g_mFt1sXD^OgR%b{DFVrI~@NQv*2b59U9w{rI_VKHKfA zhQGRk$cH`w4v>JB%GeyT6&jW$O=VmA9~{61G*=ZZJKITMLIPMo4Q`NwDT4*ReDgsP zS3nO4RWq5kF1EjBc~E;0`_=s( z=&9({kcmxnA~>?=9}}W1g)S7A3t{%cABL-i6XTu)5hBAUj**O@!&`&ENJVp@kwO6b z;mR)fpX~8ah*%uo63duJJrYoAz%tPX+sLfb_|akYA|BD^=Ro~YY?13b;t+SI3^DGJ zl9jYu@x}qeeTXlHc(mjvK^Z%|0scvLlzSckJsC<>uJUt{oX;d#8B1AK%a!DTJ(IN7wvL zHn|y2aqi3qrBMwHJh43FF${ahlgv4Fa7x{!a-8+F=bEnfMRZ1Sj;|`GKfk9m8F5k` z;JoKS5o*f=iYUmB{-23w+aw=&+DjLjL&=iJAloJrf#Iks|4aJ?qcV);P2O zDe`TuL7+;xsLzwl)SGqz=}2*!Qy9U^q;cGqWPI8%i}tXJ4+NV))7etv)ie?Y)#+2A z>X;h}D`Hp7Xb*vgRTApP{+ubS9|f_tss6o@9!`zwSiu+G(*zSTS&8C5_K5Vm>DvJbwunu%=%Z!PWCt+B4jb1$G&3V zZ#DdAWLI03$l{zcv`2O5RkOxaNJN&ht#$2GFo_P224S|);_GX1o7=l-O0`{B=RQa| z&qC;yxW#=;Z(w7S3pO^4^;a2oXp!@iWj!yN(OEDhKfO0NMK_w#mFC7Es{C7Dedf-V_H>%B%;`yg zn$)EZ40%m#YE`eA9H?gXt6^<~PV_OOvn z-C}Fz*vbBO_Hu{US$6$wZL2xjh`ux&Zxv92-Z$IZHn)=1ciMQJHqfw|#VB<>-PBV>yu-;3Z^0E=(Z-7ty ztUPvXjr`R{hXYxkZsi_W#hlcom7C%vPw-T`YR8O&+lW6_c)uR`)fR@;(EL_ns!g7A zJfl41J~V7%U7l~e_I%7k7P(BrNOGMo-M#0v5!t1aa->eQHYTButNM=`MsE9?U^smodyRp?qjakxly6?T2qqKQ6{+@Ta^PTX; zh5q<)2VZ!_zxMD_P5j~^FWJU7M(>fgd?+W+n95(C^OVf|Vm9A-(UbA>cYFNkQIF8l zCnof%cYOy}Z0M z|1WtyvvUP!|Mn_4oms9}^pD1@NC02V&9X@UVhtI~+!IK~6PO@!X+lw9zN!VFhZF6w~jTLdaC{zk9_ zdC>EiY^CPRecEs33UKS_N(QHFH$1M+vIqyCugi9@2c?ko0t<{Rkl6s_6p|^@ey@N5eLK(A+Zu;NfP(M4=r&Mp9T|Cgc3P16n&6$ z3{ezK5q3N=FEsHKS+QVJ5ieG;6=iWsj(WZ@fxu)8?|v8xv?9)(Hd`Y8O70SZe*Yw&G8)3 zF&))$9oexR-SHjaF&^b{9_g_j?eQM*F(3626vwe2b7vm`G9U$VAPKS{4e}rn@*Mqf zAsMnE9r7U|G9o2%A}O*WE%G8UG9xu|BRR4oJ@O+#G9*QEBuTO)P4Xlmr2qf`JDc%V Al>h($ diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-customizer.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-customizer.gif deleted file mode 100644 index a7a0d8b1309c44cd6a3d8fc8afd1d8f5840966d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26730 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≥PS(X+l?fhR38kQFpJTbE{ML(~_=}5pr_E+XMarW^ zn5wVBr<72p9}26e%A?zqb*ze*j@ou8Q$KJ(qk%)KrYa7oYO3s1sz9fVs>3gdiL1N_ zt>Iu%BW9a)=9tM8mFM(#AWB~;+LbICs^S`!s8+7#Y7|lDf^Q{%n-E+M{dwK<(O(?OL$!N?XR(R@n803nZPHdatZSE}BKK``EAi zI*4c(G&lQo3nNm8F9)C8T|`uMw9~vyeR5~ z6i1yJ$-BPGcfY$de|oOWG992Ry6_vnSORNo2|o7Lgl*YQ;%jjN8eI1#v|LtiAw{U; zCZTm3i@}>edt<*B*Ov>dyat@V_UFI&3&7$wukBZG8YjW&`!NZOhI3oLV06E^WS7q; zVg^j86YQ6Dq^mJ!!Y=%}bcwct^TC3NwDOz7I*cdu+nMwlcSxF^iFUx&NoI+oz&^LQ zId_-jWwZ?u!am$|a@Uyv*KTLmtgea0t;&6X*R9OD#1Uh-q&l8ZOm#m@#Z>IVyhpaz zij;{%V7KNv{xO`EOvkw^QoT0xzB|0fe5@i~gn4~;eJR(T*o$P}Ic-%8$Q_Jm(krKX zkc5RCcBhAERVQN83BKT&$bh@abG)+JIlW=vxnTpz`Gt|x7o8FM$+vdM8nw8V%g8u4 zyN%2|q6{{A+{d__%M&6u3rnCUYp^OZV%L%MAK#GDyt!bF-ZUI4SGP zDjSA`DON$-fQLcMy-B1M8^FVi7|MKu@Yc*P_{^Zp2zXpWNixksSj|!s%tNTg5ev`i zim&vFgBp01+VY@cXk>rItN}=}HGH_nb<4V(&NYrGnbR`X*8S`AvyxakS`*<_kF#{Sgxl3^)|gVmih;O3Uj^LkPXlHht6MVN4~x zFDY${kJyHTxzmq8r&w`{KW)@P4Kp@87{wZxEnCs6x~-nstIrD6LmkvT4XAsHqXxaz zNlhe6osu|=(_~%N3X;_&Q_Ek|vF=Q;=ZvrLsLdq{gd*EyldHvZErxaNtM$BBF$;it z7}jMu(;-yTW_{R*O&VxTGHUHLiCfBcd&(k7xFZ?HwL6JoYhHI-sR9VM-pU7!tu&$i zGKQVlrhVE&vDhIq+AMRu)z-Z!mzv|7l(dId_0wyxUD+Dkeq6l9fe6!sE!Z!;MnwL* zR;@wQ&A3bw+q0s^b3#xc7KB-|J;O)=si=M3*ey~5N!SEb#soaV4UE6v9k|yf-um09 zZOok1jiekb!oVuV;wjc$EtaVSrhnqn!0mIhdDq;U&9z$FI;qJS&6L?);0Asks_ikX zeKMQ*nNl2XY3$0$`?I#qo=u0m5Uz4{%*5gQ$lPr}D@`#qdzf4ZQ%S`w>u9sJd9sMS z#3~+t31*nq`rqrBoA-J&rG4N!zT-E#-NKEy)LP1dEZZmSoxCc^RafMbti;hvzR~>S z2R+dl8DiLJ$$Y(*OCH^^)8gIAUJcqn#29Kv-kSER#ri8spUUHEzUHsyd2n#XhQ1o9o#;O+|&UD_nF{%V(7$#=t_#= z5e~$*Zfnn-!g;69js80x%6VJPm|HyTpWW$7^y$j}?(nX7Gui6jNbdw`?+&@riB8$k zSAC97k-;X=0M^7qX`cPPr8M5k0?*uc?C$aY@DTro>^t!k|117f{_z-}@pXakHF@zG z|M4J?7W&>j=1h+(jLmWl-SxKa-^_J^{(@Rpt@wAmML5sqt(0>%a_SrLJm2#G!MZ>n z^g=)ML|^nqU%F3l^h&?{fAv_O^-?SK`-19LjUv|V^I|{t z%%JsVfA(mf_N$xpYTx#5|Mqa-v|PWER3GirN@YRU=rMZaX$4>T! zfB1-Bmdu{CA>a6p9~On5_>w>Ql%L0oKd#h1s+GU_oZtDNc=_U*`P&%zo?rT=fBLHp z`k^ZN`I6(P|N5{W`}3>%pvwCA;`*|m`?|mTQ%d_#YWw&8g8RHb{KQ}UXZ`rdpZruo z`cdlp#{c}#AN^L6_tang*1z_l3;bil{Ly{^WnPqN~$>f85ZH0@^=Z z4iEnDAOG?Xasx2`@Bz|e^qU=iDZ+36{{R0F0OX|AUYzyj-G49?N3t|eG*wr&bzeA^ zXSy9~JlA)=_kUmz7Pt^6MhemxU>*U@XA}99D38!;R=DMMUjc!@J0_RSXLMS6p!C2Z_+b%^W-6~xuBFW0&USIx8i_2T&s<33{X6I+Q$^+wQl9w)$3OYCQX7RTk5Ep zhh@JkQ`^?->GK@ zAHtUSapcLBFK6C718mREEf1Go!gh7+*|l%y-W@D-=-%~G7Z2EYdGzVkuV>$W9(ecT zN># z&&EkKSdm61n{@I?C>5JAN}LiZCn_nfU?|6P99hB&EQyp#DqpfRh8P@UBJ;~*%0vpx zFTH%zkuf2Hic3hk%)-q*FA-Bi{wf?2lb47#Jda956IFCkMz5N(QIM=`2}eo;wUjA7 zytCbx>B-)KtksA=PzPUVHU5pGSX9 z>BuQZ;2F_1S2vRrV<~odxw(X}iTVNl?FK3fE4AHTPU}(^Yqs zVAu6W(x;S_#2hxWwN^xXz2y+!dC$q#*h1Z@*Cl;>>2V!_|Af}yaS7)4oe~{(m|S-& zw)kR)=fpYWUz{4zPg`f@)?`{^3iIiQ;}%h(xmymDZ@M84yx6hJ zWqWeUE4N(2wJ&c5$(q#QJRBT))_io*OE*2a%ulD~bF|W6J(SmnBwKabYq$OO(Nf2K zmDt4-eRtr47k>D%bSEBk34cF+dFGpUUL@n6*Q9svl$ZW`?6cP%oana)g!=BR_kMix z%Qv6h^HBkxJMq(Z|9$x5x1)Rc=U9Kc_UqSwfByU5fqwt7;eOi5UjPkwKm;aG0{~QD z83vf00ya>B6Qus2`xsckO^jh>JK`V7Y!E|68UfgFF*^*VP=zZT-vwD%8x7)V zgfj$@k9wpe8In+kCwO29QTRe222qH&bKwwc@Ud6@=~jos6p`?>l)MqDZtV!wyp{;X zSi#9|$co6sp!h^3N^x;pq}ipml(3owA%aF^V;kLQu_C_l3oOx66QxKnFwG2FUAto+ z?U)W({Si%rp9ECNnQA$3XMX2!UNR?Vc97#y`g2sb^+jf&#TQ%uu|Qa~1o zD){thPks7R%XD<3kZc1{zt@M00#&I?Whz;Os!^i~aC3f0YE!LxRjmHxsTqwbbE=wE zu!dEv9@#2JySkjOj#aH|W$Ql5`p>f}C#`LzYhCSnjkoeMuF09}UH$r3z|tbG``jyX z{`wkN#3oj;0a+}#5_H(cMpm+uo!?{&dmPA8RZ|glr4%rbc)fQR=2z5Z3$BA&DBu0 z{C1m2tSJ-qw2O(_G>auoq!tgSvaWd-yDN!eFa6Y|Jf^87fKml>q5EF=mR7pjM55Q~ zX--Ejv}NgSnzpigHBt4~z7I`Oe&rTg*YPyI3ubVG|I^q_K2vGr4dy8!`Zrc$t6%5z zFEu+n6ATY{xe9i0iA}uQ`DT;4Od}~v2Ik=k`%9Hpda<}xW-DbfD_j))s98wbOoiv(MIrm37BxUZiL#orE@A zdw)DeZGCH8=UUgh=5?=q{cB+3`q8TP(utH>fstvz^U9WLr|%ykYjUt$pp- z1Y6tN=61Ke{cUiETimG>+O&65ZEUAo-JmhIZrXjIcjE@#>!x?TClmhf+u$2O`p)*S z?fq|nw}#&W_qVSGE}Mb}T;U7f%)wVPZv{DAH4tZb#VrmNi3=y;ygCZGedH8314hh- zq4>p3esZg195p3}H_ud%me{F8~z`QGyE32t6lJe#|PbAV03>iw7g9*dZxZ81?--eP@Ih7 zOL4n(U7?i5GWM{YRti(U*Vyph2t46UfBK{0Hu70yeC2bbXa2^s-c53M;_M+`UG-re zQeDrPl0OVKG;a{RaVb6Ojeq=TjNXIvD(~%AuV>ghKTbso`tzHAecWFj%NgUn*QMOW zf(c{ndY4P_k$-;l*FyQB$s6PimL=CyzK+s=|0cya`S!0q_Po=5qwo$woaz*+OPoWS zygRxnS^>QNOFsr|KzLZcmt&Lci@YTgBiqA0>Z?HMyAu4nGN2ha2owqPb3hU-!FW&~ z33R;nyFUw@KJ2@|33NQ!3qcQBz(oPUhqFNw+(8~p1{&lcE&;$GYzV$NmD+nfy*a`I zWIbc`&dLNENn{x#UbH@HG9)WJj%L&fMqFkC}6 ze2nBVLqtKt#8AUFtV288fpN=2J={Y+>_a~sH#npcIYbOPyhB4g#5sDy?ZcQsJd8p_ zL`aOp4pGDpgu+0SL`=*?s<6aGyqHELxl7bUQ5?n4;lxU$L{dyeRSZK@{FzTIj7MBW zSv15~B#c-rk3Y;sUED=p>_u@4#aRqSVf-dk44N=FMr2GzWn4yPY({5%Mre#iX`DuC ztVV0RMr_PRZQMp~?8IUGMsPg5Ry4+LEJt%ZM|4a_bzDbwY)51aM|h0K8Y)J4tVesi z#|ZRAecVTW>_>eBMtlrNfgHtJ9E@8WNQ6xO$h0d+!8k~Td`O5iIfncThm1&zyhwYS z$ngM3jO<8{G(L^Yi;Db6k}Szi3rV{eNt0YjmdrAgtP7QFNtv9<1rxQ9gRR*Z4%V8) zn*=DAYp1s>wI4yQq5P0y5yIFq6mO(Srff>I`!d%e#-1F?*RdxW61m?^uD2Cd}Dho3+!%Z^DO$!^j$=uDtG^p>p5r%q` zJNdlCT*}s5PUiG9BNMcK!LYA9FbT5|uPhuM6F#V!O%PKiRT3!bL{1J1Pru{59D#GE9U*&*@A~20c*}Eis$Ssrfw1 z$C13&8??ZD(3bKWyQ~|bV?GW2Gwm9cd@&Qf{4)ZqDfrvV*9=RXdV=*#Q6_EDtkO4S zo3?p^q4V^~1WQmS%~CB@EarSOwlbc2}OQZqf%33^GoC{r|TQ#b7&HJuAK zeN#HE)AWhc@>^0n-BUgVB0MENJ?&FL9aIVWQ@EH@LQPaftsO&EKrCHUNR8AWYE-ie zR7t&5OwArjZ3{%rR8Rd>joH)yu~bkkRa0fuaXeL3UDf#UM^}ASSdCR}BUM(dRa-?H zcg$5?-Bn)gRbOq#TMbrW)t+B1R%1O@WKC9f99Cv+R%d-yXpL5BomOhCR%^XhY|U0} t-BxbxR&V`Qa1B>+9anNKS93jAbWK-vT~~H(S9g6^c#T(i9i9jP06Pn;#x?)| diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-ide.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-ide.gif deleted file mode 100644 index b8fe3434472752f45df6fc2d97c2e4b1aeff431e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4657 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 diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-modules-console.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-modules-console.gif deleted file mode 100755 index fced09ce8c161906b069232004da684f28da0552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15333 zcmVGTT3U4o2$Fa+v~fjF>7ln zJZyYyR*amaY|*^j_zXQwJtbWYbSmNLuEEHKV5uCO8Z$w}2#A69LJbc}}MMS&wI>S=?L}yXhci$C(V9 zsYboI6XaB#M2$kVYPIVepFqo=6H1AwRIp*$x{WGTE!DMip-Lm$0Iij$TE$*{X%s8m zseB20{VO&OUbBp=>6IjxtxJq^=uSvPOYw!7P{ z8eBnjDWOdtCeGD-g00NeyLWvM_VoG7#z*tLUHk6+*#5aEl@HNy>z&tDd3`;1T6*gJ zRa#YSghyY5kj=Kht6}LOx(*lsznW9XoWtx9*$(WaFVu9tGa)LJJf6)cb_yypn%+r4qM?HD>8Yv;VX8nSj_Mmuf0GqkFLV5=>d8fgvI>)gEgl6Px`A5!LBjp}lj zorqc`32ndbF1!Q0DU_sdw(cpI?~)PE%P*+`1_<1Z8fN&czZ~|-F2g3rTWxdMZabjL z-`#6oh{`IAu*DVX=<#<-^F-Y$f;fkwa)XsVb@xUb0 zEOgc_5PgEYSv5VF(n!0!@5~ziyD@GB=j>y^oR0i6)>_Z~&#*F|#`3JQuDE1~2XY;+ z+!-lD5_Wx)yWw-%G72=^j?*+Mw*cNDp<$H{zoFmiVe`Z{KgPI~F4pCWkZ z4}Y$D>kt5L(bKM@%KGfKi)^Uuw{uYW?v}$|k?y`{(EIR?122*A#yeB{@~tD^kn+w$ z)co|IL%)#p*1ul;_P=NTnfEkxFaGhRqJ1;O;u>s^&ueI3^{eWen`5s#Kil)$i)&PT z`3pw`kaYRzUxb6fZrlJr{cWgRHA2_`{bM!si41$zLDK*R;J?`wBy2k>+yepA!N~lE zTu8B5`jWIZ7o81ryK>+CUg)p;z3nm)EZBh<5W(yT>4F)w9RPW@zz+^EH#bULgZdLc zwjIzZscRwJMz+K#hAe+HbYTA5Y*?ZkDug0D?4b|OC$J#aY={6OmzZG425{C*&K_wIi7KDf_J1~HryygHImVR z9}|?0me@A@NOF%%>Ea)E_d~c@W|H{BRSGBRHaO<-luTUV>-2XQQl@c%EomSoK~|Y8 zT2Y4r=%X)x3Cv&$bC|>|rZJC+%w#HanapgaGoJ~~Xi77fj|(N$N{LM%vXWq{bQT(K z*+y5cFDbAbBO$Zt&7Jium5k)1Iz0JF2l$b001ONgEyI@q@yCPW8KvQhg2KVLFPxGq zmfvECJB!J%kWe(3KmNNDlW(a6Ht>w60_Hh4M;b(X@q9=hEqc*v;&6UXTGr`Kx{BcK z5Th1lY1TA4QE`$JqP@mL}VZVD$D#iQGsriD^2MtExWRC0|I1V_{Pb`5B!x? zZq20tnJNG8{C$PbYs57WEIPZNKK*=K}STc5_9Rd6mGK!vJ)(E zXGz2h6?dR|TrPXL3tojn7q0T0E&*}bF$m@np?Xx;8r61C{W5fozvW(ZldH??LiCVp zYw(HExnKT@5qD&zZv$8htiw(Xzx@;h@{~d8^1o~YR2cf()f^iZ3iy`bT)RgC3XK&_L zU_9hFbURj6kJW44(UMrq-4tz+rAEa@E`g&kY;s~xi8v*rH?u`%ERI#Xye^;0wI#%7 zcm-Sj+w2qugk;98U|w5EQU*B7cEYP!gD65s8}>MpRp)iYD=Rz0W6Pk^bEw9{Xp?jn zuAJ_ir$Lo2l6E-MqE<2fPzq~YG}gilICZC3Esm;Yu+*2cHKuS)ol&2a*Ov43rGSkM zUHgyNlQTA@knI>@ca_bPw-S0*>9!1T%)-==L7xrYaFXyGJ|Ye5miB^~Ic_1V91j&I8kUU2># z*%n7g*4qiyygFAu(Y)TJB!samN(kEXw9;{S)>2NgaEtuBbM7yuk;_h`Q@yfkQ}2}l zmc^@YmUcpq<=3-2Wkt{Oic0V6yA$Dbp+Ws;;XZqv7w+9Kd;OoEy?dF_T;n8jyzKmT zFo3O==Auh@>>~$C+=DjvJZYF$eIKNAc`M@Fg87U#G~;eJSzXQ3*~f!-G&Y@#U~D}ycn9N*6qIB;Py1 z2W29FSWfsz#fNZ1Ctw76H-#d^DS zWZ=P6Wr$T_7Pht_j^SBFQJe%CirL}gQtb%wP_dNx*l zq9ZdCb@R)z(*A| zR~WfDhb3N!7F+f=dHZ*YaMy)0`FYq_lilJ_;{=CS!GM(hCywuAkvj;J*1%r+FosSA z4$~x+Q%RLoX_Z%rm06jU7q*nvFp=&!f-WeQr7(#u8G&4BK8*8}Rz*=si77$lmL_P0 zlcjC|@=<45YhC$%Yq@JHl|gW+mlMdB%QlYU1DI*)ZiBgP%1Cc$Nl$b6N_;4VmvWeo zsg@yWVUtNIm6=hHX@OV>f#v3yomp{o8JUvBRgnpT`Q{M;)ObGzh!|K$@gsV#W@2|3 ziA|}S8^xFpH=0^wB(9lmS4f<&`I?ewnj6MD1}1(6sfgOOk&88T`_?ijp_!1vnZOxx zH;FF)$1OBRHGigCFV~$s_nq+g7U`*50Qi5xN0k0r_lY(_B?y^%&uM_kM}0Mn2Amk){rU*a_fbDSTsjp z2_0~iodOz@oam7Tx^{3zkR54cCd#4@igk8pbi=os;c|`R5{EsRID!O@i`SHqrc$Aa zasetdBZ*4qa!6>jH#RAJ?G$=(20~4`d@pKwB`IaoSfRaGpGMkdd8lpbcyNuADVq!Q|-$O)u$nvbz#sL+R~N|kTq z>2c->b}u6u5!s3(q^f4tq=l1^B*cI5i6FJgp)Urd4j5O>S)$!&aC*p}kVQC?i^=0XwSnMX-!wuxNUj!aA`1 zx`h84SqSTTAhocE(y)p8u+|!}<=TD}+ggdp5Fn~T5KCCYL2C_3KvKdCQ0#~T}{tAL!x_vpfn+aR8+Ies?rrqRQo| zA0)9;*t0xFvd`OnpURT{TkAp#>9x!SdidBedKZuB7?icUTxo~C!UbFS7`opZNzA)Y z8EYtc3$1%AxsiIb<3Mnn8o&w1zet+Bh1R}x>ZQ+{qVemf))%81tfYySP4Y-d<9m_8 zOQKaPpWxX+>U$Qld7}mhieKA|ZJV+sG^&nGl?8Rf^yHab#f!TrWnu8=9EC#%- zi7B+#s>Ei<#16~GOY4Piyo_mZhqQ+unu@mRUVjNQWDu!+Rv4q@*WUPW_ z9E5$mDt|1mPMrRlb!o>sR=!?Fd5e3TDG^u?9Fx6kx12}E>!WHqAhXPJznUe&uNKC5 zo5_2|tf5#IpA4UgOGh7P!&44xctghT*y=#!Qf@Jio(9A*Q)}C zAp?n_Ve3L;3%9~ywmX-GGFQYyXU*XJw&~YfSEe|)e0);`$*LmB0GqG{nrT1rj^1Y> zqRgSwsbsW!i-c6nV(Yh!8+JJZxf-ma^^Bg?{Li_V&QP?@r_#<9J5t%~y|w&S+k2(h zsF4C`tokg!t$Vx0`@M;GO|$F4y(g*b_`3FM&==ix!3xWGthZ{b%iQ~bT8f_18@@mm zV@CU?+Ws58G;N=`>y1B6(yJ>*7JZHN8`3)sWXDUugYwWL`_601!pXzF=)7N0hH3LS z!T9@JtEki%Y_m3|AI90ENk_l^m3d6Pb!c_TTo%ipCWvcF%gwsSM~spQ2WL>*(+Nyw z9cwaLfR3mpE11w|3j=m&nXL+nf2^zZTt9UB_C<-QDfo-woba=>ov5$&_4o z{`HEK@Y(|8Ez9OToC@2P{<_}ReQep?%TTE?%^k_(P2bOE-@{CpuH@U4$=@)2zW}vdNH~L&|r}v@qK+r94xo z91Jiwo82r+%dOrlaN)LnlA2|46`YFaEwE)kaGQ;+050V8m<=kfoTYir-Ah^`C*$`@ zdA_k)_JU}ep)>e4P6!%4&~qW;r{2njSAasZFO|b(hu_Gw;bkXeY+Ff&)1y(&VQ1FI}V;|isIAklLtt8Nt(r!mFO$I z=(B#-NDb>HU9`C9Vc6T(wfoZsr{pRfjcSNu#pQN-4iuyQ;L1$6D+;NNc+uI;>Qpx5 zS}@P)obB+t?fRZyVZGL&ebo8O=-MmrVan?t+)e5ZP<;K=3IXrQ?78iA>I!U*a$B_d z&U+_&*9TP48I0;CO~FB}(rW$fUA@m8KaCBq*d%uDLP@yp{u33y$PoVile(&h>Ns-^ zn!`I^<(s}w)lNJjj@c1?MdIn^r)`@!n$oVy*Q52>NyGH7n%W<<+9188+=tgMH;gqO z>TiPcmB`5R0B??rGP*s*^I-ESQT7K=-Lb)w$$dJmj#qZC_j}Lxv-$QY5%;lp_C2Wf zQTX>75%|nK_(fRw&NJ}|k@$1pCI4;oHF)?J5&4VXgpI#Ek8co}uk&#u;Td@O76JP5 z9^ppbmt(Icr+@K>toi|d>`$KTlZ@b%tl)==?D78kslUfVxx4nb(Wi@_s@dYJEG#B| zn$I2#z>m`yQTi3(`oeqrJU;KjDDri*F$5!3%teUJX>-wD^= zr#U&eaW2lC{pJEA(PxT7wXmcmKgq9Ldr= z(Nta8wi;X&{^r=e@m$~ep3{Iq;gDD~9+64qlG$`Vq0#7yg1Ja6SI$Hm*=DVvsuwch zei>FQc^o;f8*YYy?kKCnWU&5y?s~D{_T<>Y;tnkYJK7>Nd>$bqB_}0oC@ncKDK|Mg zJwJb>L`O+WO;1r%fvC3V{LEY(VrA>}5^LRN^YUKz1bf+Bfff10437_z(f)=PkrT^= zp^K>tr-fnT5*$Ihy}!XrG$Y3m%EQsq)z{hE-QP>v{;HG**RuTT2Y0WJTWjg1SzFd@ zng=+ul+oKqjTi=m!T#mDGm)Vdd(5tIgSU}m#}4OwoCE2RWJ!}JQKpO}@5{wq7x4*{ z>1-gsWq52+#8?p;Hk%d!-TWCdXV9WVc?xW(kflM5DxpSwG?Ir%saLUP)w-1(BbpKm zR)eX}S3g8G3%)VfPw7HlX%~)Bbatm$oo|yiwAFOcQ?7pjf9zy6aACuT5hwO~(`U|X z^R&@&_%PSM$PFID`jg90Kzo#{eU)%IuII}DO;b>mmCW!Ju)dw1{O!G{+=o_u-p=h3HE zA8=c3>+d~1&k-Gdef#$VC&#}Z<#PW2=Nk+J`2Z}?zym4K55Wb4^NYa;X%H|%2q~=4 zLKYOfP{T+3+pt0cZ=lb^5lMV7!xB-%(7_Y|1knZ&S&UIe>Q0=|#@SZ9u|5}LfKkUE zfds6^AaCrDNcebk!N((+Y_g;wolMclD5XoXg(a!XQcG~4+;YPyz4XmW7O)J{%rku; zj=jnb(PbX&_(Gw}&UA5S$T_2_(}rZ~Y>d4(x5yFA!^T{p%s~-Nlob(FbE{Fu@Y?JI zJZIYI&OOPB0Uwv{0Yff975%GF83z6g)zni}h!ap%J#Dp8&K!F6HHg@<=(9QOFy=I1 z_A=-+S?SX3E?oI(vx`;Ns`V&PQN?Q16b@}xT2om)Hrcz7l9VU9-U`GlUnw#pS3VI^ zD~+(^GK(m0&$UJ#bAuT-ELpA97R+h0dKQIf@$L6a$Y#ycGSI?}>?pR@eP&zP!iDYH zW)c!Aud?nS$WMe}bE!2pWBSxRfAf{l1ARd**~V&>?G)0LxFw4DBB+>)hmDwMy!1La z;i6`~H8gsa^|)!Nk`|}bwf^DGQq8(HGkadE-5r}|cOM?gEx+%kI&X^i_8DxK+lsVq z#W7$uZs$Z6?D5HuRI|_248~=$V^hNpqJisXt!G|A<1|vuIra0`jZufw=3ply{dG78 z&fMU}ji$V#wn@Z5qwYH`2|;7Px|SpuipCWvCp3RqD2^B z`RDhIJQMKA_ptc#hZEF$^t<^!gyz|g-@5bV$Liko>yJ$~=vb;2<${gvNpoKjBj#AMCRmNGW-p12n}p`7_6!J%I;tbI zuBb&lo`j1n5Ld3`6h=R0YLH|j=J#2JfkT*H(ZXX&c1S?iYj-~uvtnLFM2QfYY{<~i4) zprB1NjyS9SS1kee%yZ3!VeGVtSBj@PH~mRyY6QwWUx!S-?S+?3Bd6Oii9mEN^c&GL zM%7~W$e@e{b~%ISB6!9osOhYkj5uG`=q5Eo=JIpAYGhkfQ&6TIw0GuY=u1JNPLAR& znE*i?;k4GWv4M1E)vTwc5;+!aY6~aItktdHrI1F5Q-?52U?yQ2)h8A+8pr(BK>Hvs ziw+KNb~9W&JNnRTGRBRI{M%6fi7uaAMx{q%Df3(^Rk^N2PNGxg8VMnXq}o)K`t%&@ zASsK0x~8H7P2?E~mQ7Nkb!x2=sa5ONR+GK8dvTrXWqA-lA&xW!o83XSILpbdNVa5@ zeV_hiF`L>OL{EFIb?s|m8(Y~{k9*HEEmS8FOx5ldo4id2@+Nm%h2|EwzBMi)k4r?R z2G^++9By)53`Sq6e}!!byx0U^mat; zY)LQ05~V&WknvdMD*;(lpllO&;9IZco|@eStG2-y8Vwjz)?s|E7Q~3u@JT}p)Eke~ zqaRkPA*<`(`nGq)sqJK&yjDuR0y2$(Sc)i(x;mLb*o*YSnJ1U*3~0W>u7LQ(DgNF0 z&u@Bi!WqQo4ay7{ep=Cd-O6NHwmc|&>Y9u{uR6A?+k8=+6 zSxj2xuBEqMYvv!3-#phizf)`9Gzz6DyiQG%#evo|TPJahxTM}qx&qDd&-#+)ULtrZ z0gkj(9V&*t&a@EjEM2L=3fbQF87)ciFuN*~F~A-As;5pX>KKhLM_aJXD1Nn(7ggzE z2|96Qm3B0(nFF5sS~(|Or(qM#sC!OW%W+Bew3h9|X0!R((55Q5?`f_%bE{YO)H9DW z+qa**JC(v-7;;U0A`X}Mz(Zd5qucH7SdQ}Bn9;Svy$ni*i`u66{%k#C{{7(x@1^3= zyai3;STI>)ldY;YD62!_>Vz+pzz&u!T|wOPLQ;3vyr#mrrIqd_LVD#ar`>FU9(17( zo#@i5t@CtlUlsS9ueR!_y86MHy>*z%e7`|fGs=6Q zV6o4T?D#eNstulEH?N(cZIAEUPab#Y&YkY)w7YxpzEZSTMdf|Z;@{63c()E-H-$I6 z6A@2d#ZQ*;&~g0Zhd5ξ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 Dwl14S diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui-modules-edit.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui-modules-edit.gif deleted file mode 100755 index 0bf9f769c8cf395329e3a4dad286f67b24cd15d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6208 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 diff --git a/src/antidote/docs/uml/org-apache-tools-ant-gui.gif b/src/antidote/docs/uml/org-apache-tools-ant-gui.gif deleted file mode 100644 index 59ab84fa9af7fd9129fe1c4e77a49ad3b5c52a4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20672 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

    - * If a property is indexed, then its entry in the result array will - * belong to the IndexedPropertyDescriptor subclass of PropertyDescriptor. - * A client of getPropertyDescriptors can use "instanceof" to check - * if a given PropertyDescriptor is an IndexedPropertyDescriptor. - */ - public abstract PropertyDescriptor[] getPropertyDescriptors(); - - -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeModel.java b/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeModel.java deleted file mode 100644 index ffe803463..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeModel.java +++ /dev/null @@ -1,312 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - - -import javax.swing.tree.*; -import javax.swing.event.TreeModelListener; -import javax.swing.event.TreeModelEvent; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.apache.tools.ant.gui.acs.*; -import java.util.*; - -/** - * Provides a tree model view of the Project class. XXX This - * is a major hack right now that needs to be cleaned up. - * - * @version $Revision$ - * @author Simeon H.K. Fitch */ -public class ElementTreeModel implements TreeModel { - /** Root of the tree. */ - private ACSProjectElement _root = null; - /** List of listeners. */ - private List _listeners = new ArrayList(); - - public ElementTreeModel(ACSProjectElement root) { - _root = root; - } - - /** - * Returns the root of the tree. Returns null only if the tree has - * no nodes. - * - * @return the root of the tree - */ - public Object getRoot() { - return _root; - } - - /** - * Gets the set of children that this tree model is interested in. - * NB: This is really inefficient, but may not be an issue given - * the number of times it is ultimately called. A profiler definately needs - * to be applied here. - * - * @param parent Parent to extract children from. - */ - private List getChildren(Node parent) { - NodeList children = parent.getChildNodes(); - int length = children.getLength(); - - List retval = new ArrayList(length); - for(int i = 0; i < length; i++) { - // XXX This is where we will eventually add dynamic filtering - // capabilities. - Node n = children.item(i); - if(n instanceof ACSTreeNodeElement) { - retval.add(n); - } - } - - return retval; - } - - /** - * Returns the child of parent at index index in the parent's - * child array. parent must be a node previously obtained from - * this data source. This should not return null if index - * is a valid index for parent (that is index >= 0 && - * index < getChildCount(parent)). - * - * @param parent a node in the tree, obtained from this data source - * @return the child of parent at index index - */ - public Object getChild(Object parent, int index) { - if(parent instanceof Node) { - Node n = (Node) parent; - List children = getChildren(n); - return children.get(index); - } - else { - return null; - } - } - - - /** - * Returns the number of children of parent. Returns 0 if the node - * is a leaf or if it has no children. parent must be a node - * previously obtained from this data source. - * - * @param parent a node in the tree, obtained from this data source - * @return the number of children of the node parent - */ - public int getChildCount(Object parent) { - if(parent instanceof Node) { - Node n = (Node) parent; - return getChildren(n).size(); - } - else { - return 0; - } - } - - /** - * Returns true if node is a leaf. It is possible for this method - * to return false even if node has no children. A directory in a - * filesystem, for example, may contain no files; the node representing - * the directory is not a leaf, but it also has no children. - * - * @param node a node in the tree, obtained from this data source - * @return true if node is a leaf - */ - public boolean isLeaf(Object node) { - if(node instanceof Node) { - Node n = (Node) node; - return getChildren(n).size() == 0; - } - else { - return true; - } - - } - - /** - * Returns the index of child in parent. - */ - public int getIndexOfChild(Object parent, Object child) { - if(parent instanceof Node && child instanceof Node) { - Node n = (Node) parent; - List children = getChildren(n); - int count = children.size(); - for(int i = 0; i < count; i++) { - if(children.get(i) == child) return i; - } - } - return -1; - } - - /** - * Messaged when the user has altered the value for the item identified - * by path to newValue. If newValue signifies - * a truly new value the model should post a treeNodesChanged - * event. - * - * @param path path to the node that the user has altered. - * @param newValue the new value from the TreeCellEditor. - */ - public void valueForPathChanged(TreePath path, Object newValue) { - // XXX What should the implementation be here? - fireNodeChanged((Node) path.getLastPathComponent()); - } - - - /** - * Adds a listener for the TreeModelEvent posted after the tree changes. - * - * @see #removeTreeModelListener - * @param l the listener to add - */ - public void addTreeModelListener(TreeModelListener l) { - _listeners.add(l); - } - - /** - * Removes a listener previously added with addTreeModelListener(). - * - * @see #addTreeModelListener - * @param l the listener to remove - */ - public void removeTreeModelListener(TreeModelListener l) { - _listeners.remove(l); - } - - /** - * Get the list of nodes from the root to the - * given node. - * - * @param startNode Node to get path for. - */ - public Node[] getPathToRoot(Node startNode) { - return getPathToRoot(startNode, 0); - } - - /** - * A recursive method for generating a list of nodes defining - * the path from the given node to the root. - * - * @param node Node to get path for. - * @param depth The number of calls taken towards the root. - */ - private Node[] getPathToRoot(Node node, int depth) { - Node[] retval = null; - - depth++; - if(node == _root || node.getParentNode() == null) { - retval = new Node[depth]; - } - else { - retval = getPathToRoot(node.getParentNode(), depth); - } - - retval[retval.length - depth] = node; - return retval; - } - - - /** - * Fire a node change event. - * - * @param node Node that changed. - */ - public void fireNodeChanged(Node node) { - TreeModelEvent event = new TreeModelEvent(this, getPathToRoot(node)); - - // XXX This doen't support modifying the list during dispatch... - Iterator it = _listeners.iterator(); - while(it.hasNext()) { - TreeModelListener l = (TreeModelListener) it.next(); - l.treeNodesChanged(event); - } - } - - /** - * Fire a node change event. - * - * @param node Node that changed. - */ - public void fireNodeAdded(Node node) { - Node parent = node.getParentNode(); - TreeModelEvent event = null; - if(parent == null) { - event = new TreeModelEvent(this, getPathToRoot(node)); - } - else { - Node[] path = getPathToRoot(parent); - int[] indicies = null; - Node[] children = new Node[] { node }; - - // XXX Right now we assume that the node was added at the end. - // This may not be the case in the future. - if(parent.getLastChild() == node) { - List filteredChildren = getChildren(parent); - indicies = new int[] { filteredChildren.indexOf(node) }; - } - else { - throw new UnsupportedOperationException( - "Haven't implemented non-append notification yet."); - } - - event = new TreeModelEvent(this, path, indicies, children); - } - - // XXX This doen't support modifying the list during dispatch... - Iterator it = _listeners.iterator(); - while(it.hasNext()) { - TreeModelListener l = (TreeModelListener) it.next(); - l.treeNodesInserted(event); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeSelectionModel.java b/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeSelectionModel.java deleted file mode 100644 index 677fc7177..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ElementTreeSelectionModel.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; -import org.apache.tools.ant.gui.acs.ACSElement; -import org.apache.tools.ant.gui.acs.ACSTargetElement; - -import javax.swing.tree.DefaultTreeSelectionModel; -import javax.swing.tree.TreePath; -import java.util.*; - -/** - * Selection model for the currently selected targets. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ElementTreeSelectionModel extends DefaultTreeSelectionModel { - /** - * Default ctor. - * - */ - public ElementTreeSelectionModel() { - setSelectionMode(DISCONTIGUOUS_TREE_SELECTION); - } - - /** - * Convenience method for providing the set of currently selected - * elements. NB: It returns all of the nodes in the selection path, - * so the root node will be a selected element whenever a child is - * selected. - * - * @return the currently selected elements. - */ - public ACSElement[] getSelectedElements() { - TreePath[] path = getSelectionPaths(); - List values = new LinkedList(); - for(int i = 0; path != null && i < path.length; i++) { - TreePath curr = path[i]; - for(int j = 0; j < curr.getPathCount(); j++) { - Object item = curr.getPathComponent(j); - if(item instanceof ACSElement) { - values.add(item); - } - } - } - - ACSElement[] retval = new ACSElement[values.size()]; - values.toArray(retval); - return retval; - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/acs-element.properties b/src/antidote/org/apache/tools/ant/gui/acs/acs-element.properties deleted file mode 100644 index 073d09725..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/acs-element.properties +++ /dev/null @@ -1,14 +0,0 @@ -# -# Property file mapping DOM nodes to Java class names. -# - -# The default element -*Element=org.apache.tools.ant.gui.acs.ACSDtdDefinedElement - -# Specific elements. -project=org.apache.tools.ant.gui.acs.ACSProjectElement -property=org.apache.tools.ant.gui.acs.ACSPropertyElement -target=org.apache.tools.ant.gui.acs.ACSTargetElement -task=org.apache.tools.ant.gui.acs.ACSTaskElement - - diff --git a/src/antidote/org/apache/tools/ant/gui/acs/package.html b/src/antidote/org/apache/tools/ant/gui/acs/package.html deleted file mode 100644 index 73f3f6e14..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/package.html +++ /dev/null @@ -1,9 +0,0 @@ -

    Ant Construction Set

    - -

    This package contains the tools for constructing and manipulating an Ant -build file

    - -

    NB: Requires the Java API for XML -Parsing from Sun.

    - - diff --git a/src/antidote/org/apache/tools/ant/gui/acs/project-ext.dtd b/src/antidote/org/apache/tools/ant/gui/acs/project-ext.dtd deleted file mode 100644 index abbac97e7..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/project-ext.dtd +++ /dev/null @@ -1,255 +0,0 @@ - - - - - -%share-file; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/antidote/org/apache/tools/ant/gui/acs/project.dtd b/src/antidote/org/apache/tools/ant/gui/acs/project.dtd deleted file mode 100644 index 84ae3aa07..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/project.dtd +++ /dev/null @@ -1,424 +0,0 @@ - - - - - - - -%share-file; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/antidote/org/apache/tools/ant/gui/acs/share.dtd b/src/antidote/org/apache/tools/ant/gui/acs/share.dtd deleted file mode 100644 index 48561105b..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/share.dtd +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/antidote/org/apache/tools/ant/gui/command/AboutCmd.java b/src/antidote/org/apache/tools/ant/gui/command/AboutCmd.java deleted file mode 100644 index cfc1b4471..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/AboutCmd.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.About; -import java.awt.Window; -import java.awt.event.WindowEvent; - - -/** - * Handler for the About command. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class AboutCmd extends AbstractCommand { - - /** - * Standard constructor. - * - */ - public AboutCmd(AppContext context) { - super(context); - } - - /** - * Show the about box. - * - */ - public void run() { - new About(getContext()); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/AbstractCommand.java b/src/antidote/org/apache/tools/ant/gui/command/AbstractCommand.java deleted file mode 100644 index 20d21373f..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/AbstractCommand.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; - - -/** - * Convenience base class for Command implementations. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public abstract class AbstractCommand implements Command { - /** Application context. */ - private AppContext _context = null; - - /** - * Default ctor. - * - */ - protected AbstractCommand(AppContext context) { - _context = context; - } - - /** - * Get the application context that was provided to setContext(); - * - * @return Application context. - */ - protected AppContext getContext() { - return _context; - } - - /** - * Run the command. From interface Runnable. - * - */ - public abstract void run(); - -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/BuildCmd.java b/src/antidote/org/apache/tools/ant/gui/command/BuildCmd.java deleted file mode 100644 index 3be775e49..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/BuildCmd.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. -q * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.ErrorEvent; -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import org.apache.tools.ant.gui.acs.ACSTargetElement; -import org.apache.tools.ant.gui.event.ShowConsoleEvent; - -/** - * Starts an Ant build. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class BuildCmd extends AbstractCommand { - - /** Project to build. */ - private ACSProjectElement _project = null; - /** Targets to build. */ - private ACSTargetElement[] _targets = null; - - /** - * Standard ctor. - * - */ - public BuildCmd(AppContext context) { - super(context); - } - - /** - * Set the specific project to build (instead of the default). - * - * @param project Project to build. - */ - public void setProject(ACSProjectElement project) { - _project = project; - } - - /** - * Set the specific targets to build (instead of the default). - * - * @param targets Array of targets to build. - */ - public void setTargets(ACSTargetElement[] targets) { - _targets = targets; - } - - /** - * Start the Ant build. - * - */ - public void run() { - - // Show the build console - getContext().getEventBus().postEvent( - new ShowConsoleEvent(getContext())); - - if(_project == null) { - _project = getContext().getSelectionManager().getSelectedProject(); - } - - if(_targets == null) { - _targets = getContext().getSelectionManager().getSelectedTargets(); - } - - if(_project != null) { - try { - getContext().getProjectManager().build(_project, _targets); - } - catch(Throwable ex) { - getContext().getEventBus().postEvent( - new ErrorEvent(getContext(), ex)); - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java b/src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java deleted file mode 100644 index 68a35d6d3..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/ChangeLookAndFeelCmd.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.util.ChangeLookAndFeel; - -/** - * ChangeLookAndFeel command. - * - * @version $Revision$ - * @author Erik Meade - * @author Simeon Fitch - */ -public class ChangeLookAndFeelCmd extends AbstractCommand { - /** - * Standard ctor. - * - */ - public ChangeLookAndFeelCmd(AppContext context) { - super(context); - } - - /** - * Successfully do nothing. - * - */ - public void run() { - new ChangeLookAndFeel(getContext()); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/CloseCmd.java b/src/antidote/org/apache/tools/ant/gui/command/CloseCmd.java deleted file mode 100644 index fa050b15b..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/CloseCmd.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.ProjectClosedEvent; -import org.apache.tools.ant.gui.event.ProjectSelectedEvent; -import org.apache.tools.ant.gui.acs.ACSProjectElement; - - -/** - * Handler for the close command. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class CloseCmd extends AbstractCommand { - - /** Project to close. */ - private ACSProjectElement _project = null; - - /** - * Standard constructor. - * - */ - public CloseCmd(AppContext context) { - super(context); - } - - /** - * Set the specific project to close (instead of the default). - * - * @param project Project to close. - */ - public void setProject(ACSProjectElement project) { - _project = project; - } - - /** - * Send a close event to the parent window. - * - */ - public void run() { - if(_project == null) { - _project = getContext().getSelectionManager().getSelectedProject(); - } - - if(_project != null) { - getContext().getProjectManager().close(_project); - getContext().getEventBus().postEvent( - new ProjectClosedEvent(getContext())); - - ACSProjectElement[] open = - getContext().getProjectManager().getOpen(); - if(open != null && open.length > 0) { - getContext().getEventBus().postEvent( - new ProjectSelectedEvent(getContext(), open[0])); - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/Command.java b/src/antidote/org/apache/tools/ant/gui/command/Command.java deleted file mode 100644 index 30ef35eaf..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/Command.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; - - - -/** - * Interface for commands. - * Details TBD - * - * @version $Revision$ - * @author Simeon Fitch - */ -public interface Command extends Runnable { - /** - * Run the command. From interface Runnable. - * - */ - void run(); -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/DeleteElementCmd.java b/src/antidote/org/apache/tools/ant/gui/command/DeleteElementCmd.java deleted file mode 100644 index 10a02d8c2..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/DeleteElementCmd.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import java.util.EventObject; -import javax.swing.JOptionPane; -import org.w3c.dom.Node; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.DeleteElementEvent; -import org.apache.tools.ant.gui.acs.*; - -/** - * Command for removing the selected element. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class DeleteElementCmd extends AbstractCommand { - - /** - * Standard ctor. - * - * @param context Application context. - */ - public DeleteElementCmd(AppContext context) { - super(context); - } - - /** - * Delete the selected element. - */ - public void run() { - - // Ask "Are you sure?" - int option = JOptionPane.showConfirmDialog(null, "Are You Sure?", - "Confirm Delete", JOptionPane.YES_NO_OPTION); - - if (option == JOptionPane.YES_OPTION) { - // Find the element to remove - ACSElement[] vals = getContext().getSelectionManager(). - getSelectedElements(); - if(vals != null && vals.length > 0) { - Node item = vals[vals.length - 1]; - - // Find the parent and remove the element. - Node parent = item.getParentNode(); - parent.removeChild(item); - - // Notify the tree the element was removed. - DeleteElementEvent event = new DeleteElementEvent( - getContext(), (ACSElement) parent); - getContext().getEventBus().postEvent(event); - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/DisplayErrorCmd.java b/src/antidote/org/apache/tools/ant/gui/command/DisplayErrorCmd.java deleted file mode 100644 index d66f79443..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/DisplayErrorCmd.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.util.StackFrame; -import javax.swing.*; -import java.awt.FlowLayout; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; - -/** - * Command for displaying an arbitrary error message to the user. - * - * @version $Revision$ - * @author Simeon H.K. Fitch - */ -public class DisplayErrorCmd extends AbstractCommand { - /** Text description of error. */ - private String _message = null; - /** Throwable associated with the error. */ - private Throwable _ex = null; - - /** - * Standard ctor. - * - * @param context Application context. - */ - public DisplayErrorCmd(AppContext context) { - this(context, null, null); - } - - /** - * No Throwable constructor. - * - * @param context Application context. - * @param message Error message. - */ - public DisplayErrorCmd(AppContext context, String message) { - this(context, message, null); - } - - /** - * Standard constuctor. - * - * @param context Application context. - * @param message Error message. - * @param ex Throwable assocated with error. - */ - public DisplayErrorCmd(AppContext context, String message, Throwable ex) { - super(context); - _message = message; - _ex = ex; - } - - /** - * Set the error message. - * - * @param message Error message. - */ - public void setMessage(String message) { - _message = message; - } - - /** - * Set the throwable associated with the error. - * - * @param ex Throwable associated with the error. - */ - public void setThrowable(Throwable ex) { - _ex = ex; - } - - /** - * Display the error. - * - */ - public void run() { - String title = getContext().getResources(). - getString(getClass(), "title"); - - JOptionPane.showMessageDialog( - getContext().getParentFrame(), new MsgPanel(), - title, JOptionPane.ERROR_MESSAGE); - } - - // Panel for assembling the error information. - private class MsgPanel extends JPanel implements ActionListener { - public MsgPanel() { - setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); - add(new JLabel(_message)); - if(_ex != null) { - add(new JLabel(_ex.getMessage())); - JButton b = new JButton(getContext().getResources(). - getString(DisplayErrorCmd.class, - "expand")); - b.addActionListener(this); - add(Box.createVerticalStrut(20)); - add(b); - } - } - // Called when the user clicks the expand button. - public void actionPerformed(ActionEvent e) { - JComponent source = (JComponent) e.getSource(); - JComponent parent = (JComponent) source.getParent(); - parent.remove(source); - JTextArea text = new JTextArea(); - text.setEditable(false); - text.setText(StackFrame.toString(_ex)); - parent.add(new JScrollPane(text)); - SwingUtilities.windowForComponent(parent).pack(); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/EmacsNotifyCmd.java b/src/antidote/org/apache/tools/ant/gui/command/EmacsNotifyCmd.java deleted file mode 100644 index 38813ebbb..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/EmacsNotifyCmd.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.ide.EmacsNotifier; - -/** - * Toggle on or off the sending of error events to emacs so that - * it can display the source of the error. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class EmacsNotifyCmd extends AbstractCommand { - /** A global notifier can be used as it stores no state. */ - private static EmacsNotifier _notifier = new EmacsNotifier(); - - /** - * Standard ctor. - * - * @param context Application context. - */ - public EmacsNotifyCmd(AppContext context) { - super(context); - } - - /** - * Turn on or off the notifying of emacs. - * - */ - public void run() { - if(getContext().getProjectManager(). - isRegisteredBuildListener(_notifier)) { - getContext().getProjectManager().removeBuildListener(_notifier); - } - else { - getContext().getProjectManager().addBuildListener(_notifier); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/ExitCmd.java b/src/antidote/org/apache/tools/ant/gui/command/ExitCmd.java deleted file mode 100644 index 774225e10..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/ExitCmd.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.util.WindowUtils; - -import java.awt.Window; -import java.awt.event.WindowEvent; - - -/** - * Handler for an exit command . - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ExitCmd extends AbstractCommand { - /** - * Standard constructor. - * - * @param context Application context. - */ - public ExitCmd(AppContext context) { - super(context); - } - - /** - * Send a close event to the parent window. - * - */ - public void run() { - // Manually send a window close event to the window. - WindowUtils.sendCloseEvent(getContext().getParentFrame()); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/LoadFileCmd.java b/src/antidote/org/apache/tools/ant/gui/command/LoadFileCmd.java deleted file mode 100644 index bf1289fde..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/LoadFileCmd.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.ErrorEvent; -import org.apache.tools.ant.gui.event.NewProjectEvent; -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import java.io.File; -import java.io.IOException; - -/** - * Command for reading in a build file and initializing the data model. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class LoadFileCmd extends AbstractCommand { - /** The file to load. */ - private File _file = null; - - /** - * Standard ctor. - * - * @param context Application context. - */ - public LoadFileCmd(AppContext context) { - super(context); - } - - /** - * Set the file to load. - * - * @param file File to load. - */ - public void setFile(File file) { - _file = file; - } - - /** - * Open the file and load it. - * - */ - public void run() { - if(!_file.exists()) { - String message = getContext().getResources().getMessage( - getClass(), "noFile", new Object[] { _file.toString() }); - - getContext().getEventBus(). - postEvent(new ErrorEvent(getContext(), message)); - } - else { - try { - ACSProjectElement project = - getContext().getProjectManager().open(_file); - getContext().getEventBus().postEvent( - new NewProjectEvent(getContext(), project)); - } - catch(Exception ex) { - String message = getContext().getResources().getMessage( - getClass(), "loadError", - new Object[] { _file.toString() }); - - getContext().getEventBus(). - postEvent(new ErrorEvent(getContext(), message, ex)); - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewElementCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewElementCmd.java deleted file mode 100644 index f5480278c..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/NewElementCmd.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import java.util.EventObject; -import javax.swing.AbstractButton; -import javax.swing.Action; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.NewBaseElementEvent; -import org.apache.tools.ant.gui.event.RefreshDisplayEvent; -import org.apache.tools.ant.gui.acs.*; -import org.apache.tools.ant.gui.util.WindowUtils; -import org.apache.tools.ant.gui.core.AntAction; - -/** - * Command for creating a new propertyh. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NewElementCmd extends AbstractCommand { - /** New count for this session. Used to create default names, - * numbered as a convenience. */ - private static int _count = 1; - private EventObject _event = null; - - /** - * Standard ctor. - * - * @param context Application context. - */ - public NewElementCmd(AppContext context, EventObject event) { - super(context); - _event = event; - } - - /** - * Creates a new xml element based on the button which - * was pressed. The button text may contain the name - * of the new element or a dialog box is presented which - * asks the user for the element type. - */ - public void run() { - - // Find which element is selected. - ACSElement[] vals = getContext().getSelectionManager(). - getSelectedElements(); - if(vals == null || vals.length == 0) { - return; - } - - // Find the text of the button which was pressed - // to determine the type of element to create. - Object source = _event.getSource(); - if (!(source instanceof AbstractButton)) { - return; - } - AbstractButton button = (AbstractButton) source; - String name = button.getText(); - - // Get the AntAction - String cmdStr = button.getActionCommand(); - AntAction antAction = getContext().getActions().getAction(cmdStr); - if (antAction == null) { - return; - } - - ACSElement e = vals[vals.length - 1]; - - // Should we prompt the user use the element type? - if (antAction.getName().equals(name)) { - - // Display the dialog box. - ACSDtdDefinedElement dtde = (ACSDtdDefinedElement) e; - NewElementDlg dlg = new NewElementDlg( - getContext().getParentFrame(), true); - dlg.setLists( - dtde.getPossibleChildren(ACSDocumentType.CORE_ELEMENT), - dtde.getPossibleChildren(ACSDocumentType.OPTIONAL_ELEMENT) ); - dlg.pack(); - WindowUtils.centerWindow(dlg); - dlg.setTitle("Select the new element type"); - dlg.setVisible(true); - - // Get the element type - if (dlg.getCancel()) { - name = ""; - } else { - name = dlg.getElementName(); - } - } - - if (name.length() > 0) { - // Create the new element - ACSElement retval = - ACSFactory.getInstance().createElement(e, name); - getContext().getEventBus().postEvent( - new NewBaseElementEvent(getContext(), retval)); - } else { - // Request a refresh so the popup menu is removed - // from the display. - getContext().getEventBus().postEvent( - new RefreshDisplayEvent(getContext())); - } - } -} - - - diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewElementDlg.java b/src/antidote/org/apache/tools/ant/gui/command/NewElementDlg.java deleted file mode 100644 index 792ae7a1e..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/NewElementDlg.java +++ /dev/null @@ -1,429 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -package org.apache.tools.ant.gui.command; -import javax.swing.*; -import java.util.List; -import java.util.ArrayList; -import org.apache.tools.ant.gui.util.Collections; - -/** - * A Dialog which asks for a new xml element's type. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class NewElementDlg extends javax.swing.JDialog { - // Dialog's components - private javax.swing.JPanel _southPanel; - private javax.swing.JPanel _buttonPanel; - private javax.swing.JButton _buttonOK; - private javax.swing.JButton _buttonCancel; - private javax.swing.JCheckBox _optionalButton; - private javax.swing.JPanel _selectPanel; - private javax.swing.JPanel _panelData; - private javax.swing.JLabel _label; - private javax.swing.JTextField _elementText; - private javax.swing.JScrollPane _listScrollPane; - private javax.swing.JList _elementList; - /** set to true if cancel is pressed */ - private boolean _cancel = true; - /** holds the element type */ - private String _elementName; - /** list of core tasks */ - private List _coreElements; - /** list of optional tasks */ - private List _optionalElements; - /** list of tasks to display */ - private List _elements; - - /** - * Creates new form NewElementDlg - */ - public NewElementDlg(java.awt.Frame parent, boolean modal) { - super(parent, modal); - initComponents(); - enableButtons(); - } - - /** - * Fills the listbox with the input list. - */ - public void setLists(String[] coreElements, String[] optionalElements) { - - // Are there any items to display? - if ( (coreElements == null || coreElements.length == 0) && - (optionalElements == null || optionalElements.length == 0 ) ) { - - // Hide the list - _listScrollPane.setVisible(false); - _optionalButton.setVisible(false); - } else { - - // Are there any core elements? - if (coreElements == null) { - _coreElements = new ArrayList(); - - // Display the optional elements - _optionalButton.setSelected(true); - _optionalButton.setVisible(false); - } else { - // Create a sorted list of the core elements - List temp = Collections.fill(null, coreElements); - java.util.Collections.sort(temp); - _coreElements = temp; - } - - // Are there any optional elements? - if (optionalElements == null) { - _optionalElements = new ArrayList(); - - // Display the core elements - _optionalButton.setSelected(false); - _optionalButton.setVisible(false); - } else { - // Create a sorted list of the optional elements - List temp = Collections.fill(null, optionalElements); - java.util.Collections.sort(temp); - _optionalElements = temp; - } - - // Are the lists the same? - if (_optionalElements.containsAll(_coreElements) && - _coreElements.containsAll(_optionalElements) ) { - - // Hide the button - _optionalButton.setVisible(false); - } - } - enableButtons(); - } - - /** - * Returns true if cancel was pressed - */ - public boolean getCancel() { - return _cancel; - } - - /** - * Returns the entered element type - */ - public String getElementName() { - return _elementName; - } - - /** - * Enable or disable buttons - */ - private void enableButtons() { - - // Enable the OK button? - if (isInputValid()) { - _buttonOK.setEnabled(true); - } else { - _buttonOK.setEnabled(false); - } - - // Display the core or optional elements? - Object oldList = _elements; - if (_optionalButton.isSelected()) { - _elements = _optionalElements; - } else { - _elements = _coreElements; - } - - // Did the list change? - if (oldList != _elements) { - _elementList.setListData(_elements.toArray()); - } - } - - /** - * Returns true if the user input is valid. - */ - private boolean isInputValid() { - return ( isXMLName( _elementText.getText() ) ); - } - - /** - * Returns true if the value is a legal XML name. - * - * @param value the string being tested - */ - public boolean isXMLName (String value) - { - if (value == null || value.length() == 0) - return false; - - char c = value.charAt (0); - if (!isLetter (c) && c != '_' && c != ':') - return false; - for (int i = 1; i < value.length (); i++) - if (!isNameChar (value.charAt (i))) - return false; - return true; - } - - /** - * Returns true if the character is allowed to be a non-initial - * character in an XML name. - */ - public boolean isNameChar (char c) - { - if (isLetter (c)) - return true; - else if (c == '>') - return false; - else if (c >= '0' && c <= '9') - return true; - else if (c == '.' || c == '-' || c == '_' || c == ':') - return true; - else - return false; - } - - /** - * Returns true if the character is a letter. - */ - public boolean isLetter (char c) - { - if (c >= 'a' && c <= 'z') - return true; - if (c >= 'A' && c <= 'Z') - return true; - - return false; - } - - /** - * This method is called from within the constructor to - * initialize the form. - */ - private void initComponents() { - _southPanel = new javax.swing.JPanel(); - _buttonPanel = new javax.swing.JPanel(); - _buttonOK = new javax.swing.JButton(); - _buttonCancel = new javax.swing.JButton(); - _selectPanel = new javax.swing.JPanel(); - _panelData = new javax.swing.JPanel(); - _label = new javax.swing.JLabel(); - _elementText = new javax.swing.JTextField(); - _listScrollPane = new javax.swing.JScrollPane(); - _elementList = new javax.swing.JList(); - _optionalButton = new javax.swing.JCheckBox( - "show optional elements", false); - getContentPane().setLayout(new java.awt.BorderLayout(10, 10)); - addWindowListener(new java.awt.event.WindowAdapter() { - public void windowClosing(java.awt.event.WindowEvent evt) { - closeDialog(evt); - } - } - ); - - _southPanel.setLayout(new java.awt.FlowLayout(2, 2, 0)); - _southPanel.setPreferredSize(new java.awt.Dimension(156, 50)); - _southPanel.setMinimumSize(new java.awt.Dimension(154, 50)); - - _buttonPanel.setLayout(new java.awt.FlowLayout(1, 2, 0)); - _buttonPanel.setPreferredSize(new java.awt.Dimension(146, 50)); - _buttonPanel.setMinimumSize(new java.awt.Dimension(150, 50)); - _buttonPanel.setAlignmentY(0.0F); - _buttonPanel.setAlignmentX(0.0F); - - _buttonOK.setText("OK"); - _buttonOK.setPreferredSize(new java.awt.Dimension(50, 30)); - _buttonOK.setMaximumSize(new java.awt.Dimension(50, 30)); - _buttonOK.setMargin(new java.awt.Insets(10, 10, 10, 10)); - _buttonOK.setMinimumSize(new java.awt.Dimension(50, 30)); - _buttonOK.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - clickOK(evt); - } - } - ); - _buttonPanel.add(_buttonOK); - _buttonCancel.setText("Cancel"); - _buttonCancel.setPreferredSize(new java.awt.Dimension(70, 30)); - _buttonCancel.setMaximumSize(new java.awt.Dimension(60, 30)); - _buttonCancel.setMargin(new java.awt.Insets(10, 10, 10, 10)); - _buttonCancel.setMinimumSize(new java.awt.Dimension(60, 30)); - _buttonCancel.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - clickCancel(evt); - } - } - ); - _buttonPanel.add(_buttonCancel); - _southPanel.add(_buttonPanel); - getContentPane().add(_southPanel, java.awt.BorderLayout.SOUTH); - _selectPanel.setLayout(new java.awt.BorderLayout(10, 10)); - _selectPanel.setBorder(new javax.swing.border.EtchedBorder()); - _label.setText("Element Type:"); - _label.setAlignmentX(0.5F); - _panelData.add(_label); - - - _elementText.setPreferredSize(new java.awt.Dimension(110, 25)); - _elementText.setMargin(new java.awt.Insets(2, 2, 2, 2)); - _elementText.setMinimumSize(new java.awt.Dimension(14, 25)); - _elementText.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - _elementTextKeyReleased(evt); - } - } - ); - _panelData.add(_elementText); - - _selectPanel.add(_panelData, java.awt.BorderLayout.SOUTH); - - _elementList.setMaximumSize(new java.awt.Dimension(100, 20)); - _elementList.setMinimumSize(new java.awt.Dimension(10, 10)); - _elementList.addListSelectionListener(new javax.swing.event.ListSelectionListener() { - public void valueChanged(javax.swing.event.ListSelectionEvent evt) { - itemSelected(evt); - } - } - ); - _elementList.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - itemMouseClicked(evt); - } - } - ); - _listScrollPane.setViewportView(_elementList); - - _optionalButton.setMargin(new java.awt.Insets(2, 2, 2, 2)); - _optionalButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - enableButtons(); - } - } - ); - - _selectPanel.add(_optionalButton, java.awt.BorderLayout.NORTH); - _selectPanel.add(_listScrollPane, java.awt.BorderLayout.CENTER); - getContentPane().add(_selectPanel, java.awt.BorderLayout.CENTER); - pack(); - } - - /** Called when a key is released */ - private void _elementTextKeyReleased(java.awt.event.KeyEvent evt) { - enableButtons(); - } - - /** Called when an item is selected from the list */ - private void itemSelected(javax.swing.event.ListSelectionEvent evt) { - // Update the text field - _elementText.setText((String) _elementList.getSelectedValue()); - enableButtons(); - } - - /** Called when the list is clicked */ - private void itemMouseClicked(java.awt.event.MouseEvent evt) { - - int count = evt.getClickCount(); - Object obj = _elementList.getSelectedValue(); - - // Double click on an item? - if (count == 2 && obj != null) { - - // Update the text field - _elementText.setText((String) _elementList.getSelectedValue()); - - // Process like OK was pressed - if (isInputValid()) { - clickOK(null); - } - } - } - - /** Called when the Cancel button is pressed */ - private void clickCancel(java.awt.event.ActionEvent evt) { - - // Make us invisible - setVisible(false); - dispose(); - - // Set the cancel flag - _cancel = true; - } - - /** Called when the OK button is pressed */ - private void clickOK(java.awt.event.ActionEvent evt) { - - // Make us invisible - setVisible(false); - dispose(); - - // Return selected item. - _cancel = false; - _elementName = _elementText.getText(); - } - - /** Closes the dialog */ - private void closeDialog(java.awt.event.WindowEvent evt) { - setVisible(false); - dispose(); - } - - /** - * Test the dialog - * - * @param args the command line arguments - */ - public static void main(String args[]) { - new NewElementDlg(new javax.swing.JFrame(), true).show(); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewProjectCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewProjectCmd.java deleted file mode 100644 index f43d78e7c..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/NewProjectCmd.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.NewProjectEvent; -import org.apache.tools.ant.gui.acs.ACSProjectElement; - -/** - * Command for creating a new project. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NewProjectCmd extends AbstractCommand { - /** New project count for this session. Used to create default names, - * numbered as a convenience. */ - private static int _count = 1; - - /** - * Standard ctor. - * - * @param context Application context. - */ - public NewProjectCmd(AppContext context) { - super(context); - } - - /** - * Create a new project and make it active. - * - */ - public void run() { - ACSProjectElement project = - getContext().getProjectManager().createNew(); - project.setName(getContext().getResources(). - getString(getClass(), "defName") + " " + _count++); - getContext().getEventBus().postEvent( - new NewProjectEvent(getContext(), project)); - - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java deleted file mode 100644 index ee20902d2..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/NewPropertyCmd.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.NewPropertyEvent; -import org.apache.tools.ant.gui.acs.*; - -/** - * Command for creating a new propertyh. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NewPropertyCmd extends AbstractCommand { - /** New count for this session. Used to create default names, - * numbered as a convenience. */ - private static int _count = 1; - - /** - * Standard ctor. - * - * @param context Application context. - */ - public NewPropertyCmd(AppContext context) { - super(context); - } - - /** - * Create a new property and make it active. - * - */ - public void run() { - ACSElement[] vals = getContext().getSelectionManager(). - getSelectedElements(); - if(vals != null && vals.length > 0) { - ACSPropertyElement retval = - ACSFactory.getInstance().createProperty(vals[vals.length - 1]); - getContext().getEventBus().postEvent( - new NewPropertyEvent(getContext(), retval)); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewTargetCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewTargetCmd.java deleted file mode 100644 index 3487d7eba..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/NewTargetCmd.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.NewTargetEvent; -import org.apache.tools.ant.gui.acs.*; - -/** - * Command for creating a new target. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NewTargetCmd extends AbstractCommand { - /** New project count for this session. Used to create default names, - * numbered as a convenience. */ - private static int _count = 1; - - /** - * Standard ctor. - * - * @param context Application context. - */ - public NewTargetCmd(AppContext context) { - super(context); - } - - /** - * Create a new target and make it active. - * - */ - public void run() { - ACSProjectElement project = getContext().getSelectionManager(). - getSelectedProject(); - ACSTargetElement retval = - ACSFactory.getInstance().createTarget(project); - retval.setName(getContext().getResources(). - getString(getClass(), "defName") + " " + _count++); - getContext().getEventBus().postEvent( - new NewTargetEvent(getContext(), retval)); - - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java deleted file mode 100644 index e392fdcf9..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/NewTaskCmd.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.NewTaskEvent; -import org.apache.tools.ant.gui.acs.*; - -/** - * Command for creating a new task. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NewTaskCmd extends AbstractCommand { - /** New count for this session. Used to create default names, - * numbered as a convenience. */ - private static int _count = 1; - - /** - * Standard ctor. - * - * @param context Application context. - */ - public NewTaskCmd(AppContext context) { - super(context); - } - - /** - * Create a new task and make it active. - * - */ - public void run() { - ACSTargetElement[] targets = getContext().getSelectionManager(). - getSelectedTargets(); - if(targets != null && targets.length > 0) { - ACSTaskElement retval = - ACSFactory.getInstance().createTask(targets[0]); - retval.setTaskType("javac"); - getContext().getEventBus().postEvent( - new NewTaskEvent(getContext(), retval)); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/NoOpCmd.java b/src/antidote/org/apache/tools/ant/gui/command/NoOpCmd.java deleted file mode 100644 index fc898fd8d..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/NoOpCmd.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; - -/** - * NoOp command. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NoOpCmd extends AbstractCommand { - /** - * Standard ctor. - * - * @param context Application context. - */ - public NoOpCmd(AppContext context) { - super(context); - } - - /** - * Successfully do nothing. - * - */ - public void run() {} -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/OpenCmd.java b/src/antidote/org/apache/tools/ant/gui/command/OpenCmd.java deleted file mode 100644 index 192e3784c..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/OpenCmd.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.OpenRequestEvent; -import org.apache.tools.ant.gui.core.XMLFileFilter; -import javax.swing.JFileChooser; -import javax.swing.filechooser.FileFilter; -import java.io.File; - -/** - * Command to execute the opening of a file. A dialog is presented to the - * user for selecting a build file to open. If a file is selected then an - * OpenRequestEvent is posted. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class OpenCmd extends AbstractCommand { - /** - * Standard ctor. - * - * @param context Application context. - */ - public OpenCmd(AppContext context) { - super(context); - } - - /** - * Display a dialog asking the user to select a file to open. - * If one is selected then an event is posted requesting the open - * operation be completed. - * - */ - public void run() { - FileFilter filter = new XMLFileFilter(getContext().getResources()); - - JFileChooser chooser = new JFileChooser(); - chooser.addChoosableFileFilter(filter); - int val = chooser.showOpenDialog(getContext().getParentFrame()); - if(val == JFileChooser.APPROVE_OPTION) { - File selected = chooser.getSelectedFile(); - getContext().getEventBus().postEvent( - new OpenRequestEvent(getContext(), selected)); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/SaveAsCmd.java b/src/antidote/org/apache/tools/ant/gui/command/SaveAsCmd.java deleted file mode 100644 index 4059cd16a..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/SaveAsCmd.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.ErrorEvent; -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import java.io.*; -import org.apache.tools.ant.gui.core.XMLFileFilter; -import javax.swing.JFileChooser; -import javax.swing.filechooser.FileFilter; -import javax.swing.JOptionPane; -import java.net.URL; -import java.net.MalformedURLException; - - -/** - * Command for doing a "Save as" type of save. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class SaveAsCmd extends AbstractCommand { - /** File to save to. */ - private URL _location = null; - /** Project to save. */ - private ACSProjectElement _project = null; - - /** - * Standard ctor. - * - * @param context Application context. - */ - public SaveAsCmd(AppContext context) { - super(context); - } - - /** - * Set the location to save to - * - * @param location location to save to. - */ - public void setLocation(URL location) { - _location = location; - } - - /** - * Set the specific project to save (instead of the default). - * - * @param project Project to save. - */ - public void setProject(ACSProjectElement project) { - _project = project; - } - - - /** - * Save the project to the current file name. - * - */ - public void run() { - FileFilter filter = new XMLFileFilter(getContext().getResources()); - - if(_project == null) { - _project = getContext().getSelectionManager().getSelectedProject(); - } - - if(_project != null) { - // If no location is specified, then this truly is a SaveAs - // command. Provide the user the UI to select the output. - if(_location == null) { - JFileChooser chooser = new JFileChooser(); - chooser.addChoosableFileFilter(filter); - int val = chooser.showSaveDialog( - getContext().getParentFrame()); - if(val == JFileChooser.APPROVE_OPTION) { - File file = chooser.getSelectedFile(); - if(file.exists()) { - String title = getContext().getResources(). - getString(SaveCmd.class, "title"); - String message = getContext().getResources(). - getMessage(SaveCmd.class, "overwrite", - new Object[] { file.toString()}); - val = JOptionPane.showConfirmDialog( - getContext().getParentFrame(), message, title, - JOptionPane.YES_NO_OPTION); - // If cancelled unset file. - if(val != JOptionPane.YES_OPTION) { - return; - } - } - try { - _location = new URL( - "file", null, file.getAbsolutePath()); - } - catch(MalformedURLException ex) { - // Shouldn't happen. Save will just not - // happen. - ex.printStackTrace(); - } - } - } - - // If a location is now available, do the save operation. - if(_location != null) { - try { - getContext().getProjectManager().saveAs( - _project, _location); - } - catch(IOException ex) { - String message = getContext().getResources().getMessage( - SaveCmd.class, "saveError", - new Object[] { _location.toString() }); - - getContext().getEventBus(). - postEvent(new ErrorEvent(getContext(), message, ex)); - } - } - } - else { - // We shouldn't ever get here. - String message = getContext().getResources().getString( - SaveCmd.class, "noProject"); - - getContext().getEventBus(). - postEvent(new ErrorEvent(getContext(), message)); - - } - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/SaveCmd.java b/src/antidote/org/apache/tools/ant/gui/command/SaveCmd.java deleted file mode 100644 index e46df9029..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/SaveCmd.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.acs.ACSProjectElement; - -/** - * Command to execute the saving of the current build file. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class SaveCmd extends SaveAsCmd { - - /** - * Standard ctor. - * - * @param context Application context. - */ - public SaveCmd(AppContext context) { - super(context); - ACSProjectElement project = - getContext().getSelectionManager().getSelectedProject(); - if(project != null) { - setLocation(project.getLocation()); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/command/ShowOrHideConsoleCmd.java b/src/antidote/org/apache/tools/ant/gui/command/ShowOrHideConsoleCmd.java deleted file mode 100644 index 70aa16754..000000000 --- a/src/antidote/org/apache/tools/ant/gui/command/ShowOrHideConsoleCmd.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.command; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.*; -import java.awt.*; -import javax.swing.*; - -/** - * Toggles the display of the console window - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class ShowOrHideConsoleCmd extends AbstractCommand { - /** Always show the console */ - boolean _alwaysShow = false; - - /** - * Standard ctor. - * - * @param context Application context. - */ - public ShowOrHideConsoleCmd(AppContext context) { - super(context); - _alwaysShow = false; - } - - /** - * Standard ctor. - * - * @param context Application context. - */ - public ShowOrHideConsoleCmd(AppContext context, boolean alwaysShow) { - super(context); - _alwaysShow = alwaysShow; - } - - - /** - * If the console pane is visible, hide it. - * If the console pane is not visible, show it. - */ - public void run() { - JComponent component = (JComponent) findComponent("Console"); - JSplitPane pane = (JSplitPane) component.getParent(); - if (_alwaysShow) { - if (component.getHeight() == 0) { - pane.setDividerLocation(pane.getLastDividerLocation()); - } - } else { - if (component.getHeight() == 0) { - pane.setDividerLocation(pane.getLastDividerLocation()); - } else { - pane.setDividerLocation(1.0); - } - } - } - - /** - * Starting from the top Frame, find the - * first child window with the input name. - * - * @param name The name of the Component - */ - private Component findComponent(String name) { - JFrame frame = (JFrame) getContext().getParentFrame(); - JRootPane root = frame.getRootPane(); - return findChild(root.getContentPane(), name); - } - - /** - * Search the Container for a Component - * with the input name. The search is recursive. - * - * @param container The Container to search - * @param name The name of the Component - */ - private Component findChild(Container container, String name) { - Component[] components = container.getComponents(); - for (int i = 0; i < components.length; i++) { - Component component = components[i]; - if ( name.equals(component.getName()) ) { - return component; - } - if (component instanceof java.awt.Container) { - Component test = findChild( - (java.awt.Container) component, name); - if (test != null) { - return test; - } - } - } - return null; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/ActionManager.java b/src/antidote/org/apache/tools/ant/gui/core/ActionManager.java deleted file mode 100644 index 0b245d55f..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/ActionManager.java +++ /dev/null @@ -1,424 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import org.apache.tools.ant.gui.event.*; -import org.apache.tools.ant.gui.command.Command; -import org.apache.tools.ant.gui.util.CheckableButtonModel; -import javax.swing.*; -import javax.accessibility.*; -import java.util.*; -import java.beans.*; -import java.lang.reflect.Constructor; - -/** - * Manager of antidote actions. Receives its configuration from the action - * ResourceBundle. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ActionManager { - /** Parameters for the Command constructor. */ - private static final Class[] COMMAND_CTOR_PARAMS = { AppContext.class }; - private static final Class[] COMMAND_CTOR_PARAMS_WITH_EVENT = - { AppContext.class, EventObject.class }; - - /** Externalized resources. */ - private ResourceManager _resources = null; - - /** Array of action identifiers. */ - private String[] _actionIDs = null; - - /** Look table of all defined actions. */ - private Map _actions = new HashMap(); - - /** Event bus. */ - private EventBus _bus = null; - /** Class for storing the event type to action type - * mapping for setting enabled state. */ - private EventToActionMapper _mapper = null; - - - /** - * Standard ctor. - * - * @param bus Event bus to post events to. - * @param resources Location of resources. - */ - public ActionManager(EventBus bus, ResourceManager resources) { - _bus = bus; - _resources = resources; - bus.addMember(EventBus.RESPONDING, new Enabler()); - - _mapper = new EventToActionMapper(); - - // Configure the set of actions. - String[] names = _resources.getStringArray("actions"); - _actionIDs = new String[names.length]; - for(int i = 0; i < _actionIDs.length; i++) { - _actionIDs[i] = names[i]; - AntAction action = new AntAction(_resources, _bus, _actionIDs[i]); - _actions.put(_actionIDs[i], action); - - // For each action we need to add the reverse event trigger - // lookup. - _mapper.addAction(action); - } - } - - /** - * Create a menubar for the application based on the configuration file. - * - * @return Menubar. - */ - public JMenuBar createMenuBar() { - JMenuBar retval = new JMenuBar(); - Map menus = new HashMap(); - - String toTok = _resources.getString("menus"); - StringTokenizer tok = new StringTokenizer(toTok, ", "); - while(tok.hasMoreTokens()) { - String name = tok.nextToken(); - JMenu menu = new JMenu(name); - - // XXX should be in config file - menu.setMnemonic(name.charAt(0)); - - // XXX need to i18n here... - if(name.equalsIgnoreCase("help")) { - try { - retval.setHelpMenu(menu); - } - catch(Error err) { - // Catch the "not implemented" error in - // some (all?) Swing implementations - retval.add(menu); - } - } - else { - retval.add(menu); - } - menus.put(name, menu); - } - - for(int i = 0; i < _actionIDs.length; i++) { - AntAction action = (AntAction) _actions.get(_actionIDs[i]); - String parent = action.getParentMenuName(); - if(parent != null) { - JMenu menu = (JMenu) menus.get(parent); - // A well configured file shouldn't cause this, - // but be safe anyway. - if(menu == null) { - menu = new JMenu(parent); - retval.add(menu); - menus.put(parent, menu); - } - - // See if we should add a separator. - if(action.isPreceededBySeparator() && - menu.getMenuComponentCount() > 0) { - menu.addSeparator(); - } - - if(!action.isToggle()) { - JMenuItem item = menu.add(action); - item.setAccelerator(action.getAccelerator()); - addNiceStuff(item, action); - } - else { - JCheckBoxMenuItem b = - new JCheckBoxMenuItem(action.getName()); - b.setActionCommand(action.getID()); - b.addActionListener(action); - - action.addPropertyChangeListener( - new PropertyWatcher(b)); - - // XXX eck. This is a 1.3 feature. Fix ME! - // Need to provide binding between action and widget. -// b.setAction(action); - addNiceStuff(b, action); - menu.add(b); - } - - } - } - - return retval; - } - - /** - * Create a tool bar based on the current configuration. - * - * @return Toolbar ready for action. - */ - public JToolBar createToolBar() { - JToolBar retval = new JToolBar(); - - for(int i = 0; i < _actionIDs.length; i++) { - AntAction action = (AntAction) _actions.get(_actionIDs[i]); - - // If the action is hidden do not display it. - if(action.isHidden()) { - continue; - } - - // If it has an icon, then we add it to the toolbar. - if(action.getIcon() != null) { - if(action.isPreceededBySeparator()) { - retval.addSeparator(); - } - - JButton button = retval.add(action); - button.setText(null); - - // Watch for CHECKED changes - action.addPropertyChangeListener( - new PropertyWatcher(button)); - - if(action.isToggle()) { - ButtonModel model = new CheckableButtonModel(); - button.setModel(model); - } - - addNiceStuff(button, action); - } - } - - return retval; - } - - /** - * Create a popup menu with the given actionIDs. - * XXX check this for object leak. Does the button - * get added to the action as a listener? There are also some - * changes to this behavior in 1.3. - * - * @param actionIDs List of action IDs for actions - * to appear in popup menu. - * @param defaultID Use this action ID if the item - * from the list is not found. - * @return Popup menu to display. - */ - public JPopupMenu createPopup(String[] actionIDs, String defaultID) { - - JPopupMenu retval = new JPopupMenu(); - - for(int i = 0; i < actionIDs.length; i++) { - AntAction action = (AntAction) _actions.get(actionIDs[i]); - - // If the ID is not found, use the default. - if (action == null && defaultID != null) { - action = (AntAction) _actions.get(defaultID); - AbstractButton button = retval.add(action); - - // Set the button text to the action ID. - button.setText(actionIDs[i]); - addNiceStuff(button, action); - } else { - if(action.isPopupPreceededBySeparator() && - retval.getComponentCount() > 0) { - retval.addSeparator(); - } - - AbstractButton button = retval.add(action); - addNiceStuff(button, action); - } - } - - return retval; - } - - /** - * Get the command assocaited with the Action with the given id. - * - * @param actionID Id of action to get command for. - * @return Command associated with action, or null if none available. - */ - public Command getActionCommand(String actionID, - AppContext context, - EventObject event) { - Command retval = null; - AntAction action = (AntAction) _actions.get(actionID); - if(action != null) { - Class clazz = action.getCommandClass(); - if(clazz != null) { - try { - Constructor ctor = - clazz.getConstructor(COMMAND_CTOR_PARAMS); - retval = (Command) ctor.newInstance( - new Object[] { context }); - } - catch(Exception ex) { - try { - Constructor ctor = clazz.getConstructor( - COMMAND_CTOR_PARAMS_WITH_EVENT); - retval = (Command) ctor.newInstance( - new Object[] { context, event }); - } - catch (Exception ex2) { - // XXX log me. - ex.printStackTrace(); - } - } - } - } - return retval; - } - - - /** - * Get the Action with the given id. - * - * @param actionID Id of action to get command for. - * @return AntAction associated with the given id. - */ - public AntAction getAction(String actionID) { - return (AntAction) _actions.get(actionID); - } - - /** - * Add tool tip, Mnemonic, etc. - * - * @param button Button to work on. - * @param action Associated action. - */ - private void addNiceStuff(AbstractButton button, AntAction action) { - // Set the action command so that it is consitent - // no matter what language the display is in. - button.setActionCommand(action.getID()); - - // XXX this should be moved to the config file. - String label = button.getText(); - if(label != null) { - button.setMnemonic(label.charAt(0)); - } - - String tip = action.getShortDescription(); - if(tip != null) { - button.setToolTipText(tip); - } - } - - - /** Class for updating the enabled status of icons based - * on the events seen. */ - private class Enabler implements BusMember { - private final Filter _filter = new Filter(); - - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - public BusFilter getBusFilter() { - return _filter; - } - - /** - * Receives all events. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - public boolean eventPosted(EventObject event) { - _mapper.applyEvent(event); - return true; - } - } - - /** Class providing filtering for project events. */ - private static class Filter implements BusFilter { - /** - * Determines if the given event should be accepted. - * - * @param event Event to test. - * @return True if event should be given to BusMember, false otherwise. - */ - public boolean accept(EventObject event) { - return true; - } - } - - /** Class which's hooks the action to toggle buttons. */ - private static class PropertyWatcher implements PropertyChangeListener { - private AbstractButton _target; - - /** - * Standard ctor. - * - * @param target Button to update - */ - public PropertyWatcher(AbstractButton target) { - _target = target; - } - - /** - * Change the Selected stated of the button if the CHECKED - * property is set on the action - * - * @param event Event to test. - */ - public void propertyChange(PropertyChangeEvent e) { - String propertyName = e.getPropertyName(); - if (propertyName.equals(AccessibleState.CHECKED.toString())) { - Boolean newValue = (Boolean) e.getNewValue(); - _target.setSelected(newValue.booleanValue()); - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/AntAction.java b/src/antidote/org/apache/tools/ant/gui/core/AntAction.java deleted file mode 100644 index e1eb5301d..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/AntAction.java +++ /dev/null @@ -1,369 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import javax.swing.*; -import javax.accessibility.*; -import java.net.URL; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.beans.*; -import java.util.*; - -import org.apache.tools.ant.gui.event.EventBus; - -/** - * Class representing an action in the Antidote application. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class AntAction extends AbstractAction { - /** Property name for the parent menu item. */ - public static final String PARENT_MENU_NAME = "parentMenuName"; - public static final String SEPARATOR = "separator"; - public static final String POPUP_SEPARATOR = "popupSeparator"; - public static final String ACCELERATOR = "accelerator"; - public static final String ENABLED = "enabled"; - public static final String ENABLE_ON = "enableOn"; - public static final String DISABLE_ON = "disableOn"; - public static final String TOGGLE = "toggle"; - public static final String CHECKED_TRUE_ON = "checkedTrueOn"; - public static final String CHECKED_FALSE_ON = "checkedFalseOn"; - public static final String COMMAND = "command"; - public static final String HIDDEN = "hidden"; - - /** Property resources. */ - private ResourceManager _resources = null; - /** Event bus. */ - private EventBus _bus = null; - /** Unique id. */ - private String _id = null; - - /** Events that the action should cause transition to the - * enabled(true) state. */ - private Class[] _enableOn = null; - /** Events that the action should cause transition to the - * enabled(false) state. */ - private Class[] _disableOn = null; - /** Events that the action should cause transition to the - * checked state. */ - private Class[] _checkedTrueOn = null; - /** Events that the action should cause transition to the - * not checked state. */ - private Class[] _checkedFalseOn = null; - /** Flag indicating toggle action. */ - private boolean _toggle = false; - - /** - * Standard ctor. - * - * @param id Unique id for the action - */ - public AntAction(ResourceManager resources, EventBus bus, String id) { - - _resources = resources; - _bus = bus; - _id = id; - putValue(NAME, getString("name")); - putValue(SHORT_DESCRIPTION, getString("shortDescription")); - putValue(PARENT_MENU_NAME, getString(PARENT_MENU_NAME)); - putValue(SEPARATOR, getString(SEPARATOR)); - putValue(POPUP_SEPARATOR, getString(POPUP_SEPARATOR)); - putValue(HIDDEN, getString(HIDDEN)); - - - // Set the default enabled state. - String enabled = getString(ENABLED); - if(enabled != null) { - setEnabled(Boolean.valueOf(enabled).booleanValue()); - } - - // Set an accellerator if any. - String accelerator = getString(ACCELERATOR); - if(accelerator != null) { - putValue(ACCELERATOR, KeyStroke.getKeyStroke(accelerator)); - } - - // Check to see if action is a toggle action. - String toggle = getString(TOGGLE); - if(toggle != null) { - _toggle = Boolean.valueOf(toggle).booleanValue(); - } - - // See if there is a command associated with the action. - String command = getString(COMMAND); - if(command != null) { - try { - Class cmd = Class.forName(command); - putValue(COMMAND, cmd); - } - catch(Exception ex) { - // XXX log me. - ex.printStackTrace(); - } - } - - // Add an icon if any (which means it'll show up on the tool bar). - String iconName = getString("icon"); - if(iconName != null) { - putValue(SMALL_ICON, _resources.loadImageIcon(iconName)); - } - - _enableOn = resolveClasses(getString(ENABLE_ON)); - _disableOn = resolveClasses(getString(DISABLE_ON)); - _checkedTrueOn = resolveClasses(getString(CHECKED_TRUE_ON)); - _checkedFalseOn = resolveClasses(getString(CHECKED_FALSE_ON)); - } - - /** - * Convenience method for looking put a resource with the name - * "id.key". Will return null if the resource doesn't exist. - * - * @param key Key name for the action. - * @return String resource for composite key, or null if not found. - */ - private String getString(String key) { - String retval = null; - try { - retval = _resources.getString(_id + "." + key); - } - catch(MissingResourceException ex) { - // Its ok to be missing a resource name... - // Too bad the API throws an exception in this case. - } - return retval; - } - - - /** - * Parse out the list of classes from the given string and - * resolve them into classes. - * - * @param classNames Comma delimited list of class names. - */ - private Class[] resolveClasses(String classNames) { - if(classNames == null) return null; - - StringTokenizer tok = new StringTokenizer(classNames, ", "); - Vector vals = new Vector(); - while(tok.hasMoreTokens()) { - String name = tok.nextToken(); - try { - vals.addElement(Class.forName(name)); - } - catch(ClassNotFoundException ex) { - //XXX log me. - System.err.println( - "Warning: the event class " + name + - " was not found. Please check config file."); - } - } - - Class[] retval = new Class[vals.size()]; - vals.copyInto(retval); - return retval; - } - - /** - * Unique id for the action. - * - * @return Action id. - */ - public String getID() { - return _id; - } - - /** - * Get the name of the menu in the menu bar that this action shoul - * appear under. - * - * @return Menu to appear under, or null if not a menu action. - */ - public String getParentMenuName() { - return (String) getValue(PARENT_MENU_NAME); - } - - /** - * Get the localized name for the action. - * - * @return Name - */ - public String getName() { - return (String) getValue(NAME); - } - - /** - * Get the short description. Used in tool tips. - * - * @return Short description. - */ - public String getShortDescription() { - return (String) getValue(SHORT_DESCRIPTION); - } - - /** - * Determine if a separator should appear before the action. - * - * @return True if add separator, false otherwise. - */ - public boolean isPreceededBySeparator() { - return Boolean.valueOf( - String.valueOf(getValue(SEPARATOR))).booleanValue(); - } - - /** - * Get the icon. - * - * @return Icon for action, or null if none. - */ - public Icon getIcon() { - return (Icon) getValue(SMALL_ICON); - } - - /** - * Determine if a separator should appear before the action - * when the popup menu is created. - * - * @return True if add separator, false otherwise. - */ - public boolean isPopupPreceededBySeparator() { - return Boolean.valueOf( - String.valueOf(getValue(POPUP_SEPARATOR))).booleanValue(); - } - - /** - * Determine if the action is hidden and should not - * be displayed from a button. - * - * @return True the action is hidden. - */ - public boolean isHidden() { - return Boolean.valueOf( - String.valueOf(getValue(HIDDEN))).booleanValue(); - } - - /** - * Get the accelerator keystroke. - * - * @return Accelerator - */ - public KeyStroke getAccelerator() { - return (KeyStroke) getValue(ACCELERATOR); - } - - - /** - * Get the event types which should cause this to go to the - * enabled state. - * - */ - public Class[] getEnableOnEvents() { - return _enableOn; - } - - /** - * Get the event types which should cause this to go to - * this disabled state. - * - */ - public Class[] getDisableOnEvents() { - return _disableOn; - } - - /** - * Get the event types which should cause this to go to the - * checked state. - */ - public Class[] getCheckedTrueOnEvents() { - return _checkedTrueOn; - } - - /** - * Get the event types which should cause this to go to the - * not checked state. - */ - public Class[] getCheckedFalseOnEvents() { - return _checkedFalseOn; - } - - /** - * True if this is a toggle action, false otherwise. - * - * @return True if this is a toggle action, false otherwise. - */ - public boolean isToggle() { - return _toggle; - } - - - /** - * Get the assciated command class. - * - * @return Command class. - */ - public Class getCommandClass() { - return (Class) getValue(COMMAND); - } - - /** - * Pass the action on to the EventBus. - * - * @param e Event to forward. - */ - public void actionPerformed(ActionEvent e) { - _bus.postEvent(e); - } -} - diff --git a/src/antidote/org/apache/tools/ant/gui/core/AntModule.java b/src/antidote/org/apache/tools/ant/gui/core/AntModule.java deleted file mode 100644 index 9543d491a..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/AntModule.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import javax.swing.JComponent; -import javax.swing.BorderFactory; - -/** - * Abstract base class for a "module", which is really anything that - * can send or receive events, or edit or view the model. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public abstract class AntModule extends JComponent { - - /** The application context. */ - private AppContext _context = null; - - /** - * Default constructor. - */ - protected AntModule() { - // Create a dummy border so that the widget will at least have a - // minimal display in a bean environment. - setBorder(BorderFactory.createTitledBorder(getClass().getName())); - } - - /** - * This method is called after instantiation when the application context - * is available for constructing the class' display. Think of this in - * a similar manner to Applet.init() or Servlet.init(). It should - * immediately call #setContext() with the given parameter. - * - * @param context Valid application context providing - * all required resources. - */ - public abstract void contextualize(AppContext context); - - /** - * Set the application context. - * - * @param context Application context. - */ - protected void setContext(AppContext context) { - _context = context; - setBorder(_context == null ? null : - BorderFactory.createTitledBorder(getName())); - } - - /** - * Get the application context. - * - * @return Application context. - */ - public AppContext getContext() { - if(_context == null) { - throw new IllegalStateException( - "The AppContext has not been set."); - } - return _context; - } - /** - * Get the name of the editor. - * - * @return Editor's name. - */ - public String getName() { - return getContext().getResources().getString(getClass(), "name"); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/AppContext.java b/src/antidote/org/apache/tools/ant/gui/core/AppContext.java deleted file mode 100644 index 556c02993..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/AppContext.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; -import org.apache.tools.ant.BuildListener; -import org.apache.tools.ant.gui.event.*; -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import org.apache.tools.ant.gui.acs.ACSTargetElement; -import java.awt.Frame; -import java.util.*; - -/** - * A container for the state information for the application. Provides - * a centeralized place to gain access to resources and data. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class AppContext { - /** Event bus. */ - private EventBus _eventBus = new EventBus(); - /** Application resources. */ - private ResourceManager _resources = new ResourceManager(); - /** The project manager. */ - private ProjectManager _projectManager = new ProjectManager(); - /** Thing that keeps track of the current selection state. */ - private SelectionManager _selectionManager = new SelectionManager(); - - /** Application actions. */ - private ActionManager _actions = - new ActionManager(_eventBus, new ResourceManager( - "org.apache.tools.ant.gui.resources.action")); - - /** Parent frame used in various operations. XXX what do we do - * in the applet context. */ - private Frame _parentFrame = null; - - /** - * Constructor of apps that don't have a graphical - * component (e.g. web based). - * - */ - public AppContext() { - this(null); - } - - /** - * Standard constructor. - * - * @param parent Parent frame. XXX may go away. - */ - public AppContext(Frame parent) { - _parentFrame = parent; - BuildEventForwarder handler = new BuildEventForwarder(this); - _projectManager.addBuildListener(handler); - _eventBus.addMember(EventBus.MONITORING, _selectionManager); - } - - /** - * Get the parent frame. XXX may change... - * - * @return Parent frame. - */ - public Frame getParentFrame() { - return _parentFrame; - } - - /** - * Get the localized resources. - * - * @return Resources. - */ - public ResourceManager getResources() { - return _resources; - } - - /** - * Get the action manager. - * - * @return Action manager. - */ - public ActionManager getActions() { - return _actions; - } - - /** - * Get the event bus. - * - * @return EventBus. - */ - public EventBus getEventBus() { - return _eventBus; - } - - /** - * Get the project manager. - * - * @return Project manager. - */ - public ProjectManager getProjectManager() { - return _projectManager; - } - - /** - * Get the selection manager. - * - * @return Selection manager. - */ - public SelectionManager getSelectionManager() { - return _selectionManager; - } -} - - diff --git a/src/antidote/org/apache/tools/ant/gui/core/BuildEventForwarder.java b/src/antidote/org/apache/tools/ant/gui/core/BuildEventForwarder.java deleted file mode 100644 index b59bbfa0f..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/BuildEventForwarder.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import org.apache.tools.ant.gui.event.*; -import org.apache.tools.ant.BuildListener; -import org.apache.tools.ant.BuildEvent; - -/** - * BuildListener for forwarding events to the EventBus. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class BuildEventForwarder implements BuildListener { - - /** Application context. */ - private AppContext _context = null; - - public BuildEventForwarder(AppContext context) { - _context = context; - } - - /** - * Fired before any targets are started. - */ - public void buildStarted(BuildEvent event){ - postEvent(event, BuildEventType.BUILD_STARTED); - // We doubly post this event. - _context.getEventBus().postEvent( - new BuildStartedEvent(_context, event)); - } - - /** - * Fired after the last target has finished. This event - * will still be thrown if an error occured during the build. - * - * @see BuildEvent#getException() - */ - public void buildFinished(BuildEvent event) { - postEvent(event, BuildEventType.BUILD_FINISHED); - // We doubly post this event. - _context.getEventBus().postEvent( - new BuildFinishedEvent(_context, event)); - } - - /** - * Fired when a target is started. - * - * @see BuildEvent#getTarget() - */ - public void targetStarted(BuildEvent event) { - postEvent(event, BuildEventType.TARGET_STARTED); - } - - /** - * Fired when a target has finished. This event will - * still be thrown if an error occured during the build. - * - * @see BuildEvent#getException() - */ - public void targetFinished(BuildEvent event) { - postEvent(event, BuildEventType.TARGET_FINISHED); - } - - /** - * Fired when a task is started. - * - * @see BuildEvent#getTask() - */ - public void taskStarted(BuildEvent event) { - postEvent(event, BuildEventType.TASK_STARTED); - } - - /** - * Fired when a task has finished. This event will still - * be throw if an error occured during the build. - * - * @see BuildEvent#getException() - */ - public void taskFinished(BuildEvent event) { - postEvent(event, BuildEventType.TASK_FINISHED); - } - - /** - * Fired whenever a message is logged. - * - * @see BuildEvent#getMessage() - * @see BuildEvent#getPriority() - */ - public void messageLogged(BuildEvent event) { - postEvent(event, BuildEventType.MESSAGE_LOGGED); - } - - /** - * Forward the event. - * - * @param event Event to forward. - * @param type Description of how the event came in. - */ - private void postEvent(BuildEvent event, BuildEventType type) { - _context.getEventBus().postEvent( - new AntBuildEvent(_context, event, type)); - } - - -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/EventDebugMonitor.java b/src/antidote/org/apache/tools/ant/gui/core/EventDebugMonitor.java deleted file mode 100644 index 2bad9878f..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/EventDebugMonitor.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import org.apache.tools.ant.gui.event.BusMember; -import org.apache.tools.ant.gui.event.BusFilter; -import java.util.EventObject; - -/** - * Class that prints all events to stderr. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class EventDebugMonitor implements BusMember { - - /** Filter for all events. */ - private final Filter _filter = new Filter(); - - /** - * Defatult ctor. - * - */ - public EventDebugMonitor() { - } - - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - public BusFilter getBusFilter() { - return _filter; - } - - /** - * Called when an event is to be posed to the member. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - public boolean eventPosted(EventObject event) { - System.err.println(event); - return true; - } - - /** Filter for all events. */ - private static class Filter implements BusFilter { - public boolean accept(EventObject event) { - return true; - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/EventResponder.java b/src/antidote/org/apache/tools/ant/gui/core/EventResponder.java deleted file mode 100644 index 66545bbeb..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/EventResponder.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import org.apache.tools.ant.gui.event.*; -import org.apache.tools.ant.gui.command.*; -import java.util.EventObject; -import java.awt.event.ActionEvent; -import javax.swing.*; - -/** - * The purpose of this class is to watch for events that require some sort - * of action, like opening a file. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class EventResponder { - - /** The application context. */ - private AppContext _context = null; - - /** - * Standard constructor. - * - * @param context Application context. - */ - public EventResponder(AppContext context) { - _context = context; - - // XXX This needs to be changed, along with the event bus, - // to allow the EventResponder to be the last listener - // to receive the event. This will allow the addition - // of event filters to yank an event out of the bus, sort of - // like an interrupt level. - _context.getEventBus().addMember( - EventBus.RESPONDING, new ActionResponder()); - _context.getEventBus().addMember( - EventBus.RESPONDING, new AntResponder()); - } - - /** Handler for bus events. */ - private class ActionResponder implements BusMember { - private final ActionFilter _filter = new ActionFilter(); - - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - public BusFilter getBusFilter() { - return _filter; - } - - /** - * Called when an event is to be posed to the member. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - public boolean eventPosted(EventObject event) { - String command = ((ActionEvent)event).getActionCommand(); - Command cmd = - _context.getActions().getActionCommand(command, _context, event); - if(cmd != null) { - cmd.run(); - return false; - } - else { - // XXX log me. - System.err.println("Unhandled action: " + command); - // XXX temporary. - new DisplayErrorCmd( - _context, - "Sorry. \"" + command + - "\" not implemented yet. Care to help out?").run(); - return true; - } - } - } - - /** Filter for action events. */ - private static class ActionFilter implements BusFilter { - public boolean accept(EventObject event) { - return event instanceof ActionEvent; - } - } - - /** Handler for bus events. */ - private class AntResponder implements BusMember { - private final AntFilter _filter = new AntFilter(); - - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - public BusFilter getBusFilter() { - return _filter; - } - - /** - * Called when an event is to be posed to the member. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - public boolean eventPosted(EventObject event) { - AntEvent e = (AntEvent) event; - Command cmd = e.createDefaultCmd(); - cmd.run(); - return cmd instanceof NoOpCmd; - } - } - - /** Filter for ant events. */ - private static class AntFilter implements BusFilter { - public boolean accept(EventObject event) { - return event instanceof AntEvent; - } - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/EventToActionMapper.java b/src/antidote/org/apache/tools/ant/gui/core/EventToActionMapper.java deleted file mode 100644 index 0a30c2362..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/EventToActionMapper.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import java.util.*; -import javax.accessibility.AccessibleState; - -/** - * The purpose of this class is to manage the - * mappings between event type and action enabled state. - * - * @version $Revision$ - * @author Simeon Fitch - */ -class EventToActionMapper { - - /** Lookup for enable(true) events. Key is event type, value is - * a list of actions that are changed by the event. */ - private Map _enableOn = new HashMap(); - /** Lookup for enable(false) events. Key is event type, value is - * a list of actions that are changed by the event. */ - private Map _disableOn = new HashMap(); - /** Lookup for CHECK(true) events. Key is event type, value is - * a list of actions that are changed by the event. */ - private Map _checkedTrueOn = new HashMap(); - /** Lookup for CHECK(false) events. Key is event type, value is - * a list of actions that are changed by the event. */ - private Map _checkedFalseOn = new HashMap(); - - - /** - * Defaul ctor. - * - */ - public EventToActionMapper() { - } - - /** - * Add an action. - * - * @param action Action to add. - */ - public void addAction(AntAction action) { - putAction(action, action.getEnableOnEvents(), _enableOn); - putAction(action, action.getDisableOnEvents(), _disableOn); - putAction(action, action.getCheckedTrueOnEvents(), _checkedTrueOn); - putAction(action, action.getCheckedFalseOnEvents(), _checkedFalseOn); - } - - /** - * For the given action store it in the event type mapping - * for each of the given types. - * - * @param action Action to store. - * @param clazzes Array of types to store it under. - * @param storage The place to store the association. - */ - private void putAction(AntAction action, Class[] clazzes, Map storage) { - if(clazzes == null) return; - - for(int i = 0; i < clazzes.length; i++) { - List values = (List) storage.get(clazzes[i]); - if(values == null) { - values = new ArrayList(1); - storage.put(clazzes[i], values); - } - - values.add(action); - } - } - /** - * For the given event change the state of any actions that - * have been registered as needing a transition as a result of - * the event. - * - * @param event The event to apply. - */ - public void applyEvent(EventObject event) { - if(event == null) return; - - List vals = null; - - vals = (List) _enableOn.get(event.getClass()); - changeState(vals, true); - - vals = (List) _disableOn.get(event.getClass()); - changeState(vals, false); - - vals = (List) _checkedTrueOn.get(event.getClass()); - changeChecked(vals, true); - - vals = (List) _checkedFalseOn.get(event.getClass()); - changeChecked(vals, false); - } - - /** - * Set the enabled state of the given actions. - * - * @param actions List of AntActions to set state for. - * @param state The state to set them to. - */ - private void changeState(List actions, boolean state) { - if(actions == null) return; - - for(int i = 0, len = actions.size(); i < len; i++) { - AntAction action = (AntAction) actions.get(i); - action.setEnabled(state); - } - } - - /** - * Set the CHECKED property of the given actions. - * - * @param actions List of AntActions to set checked properties for. - * @param checked The checked value to set them to. - */ - private void changeChecked(List actions, boolean checked) { - if(actions == null) return; - - for(int i = 0, len = actions.size(); i < len; i++) { - AntAction action = (AntAction) actions.get(i); - action.putValue(AccessibleState.CHECKED.toString(), - new Boolean(checked)); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/ProjectManager.java b/src/antidote/org/apache/tools/ant/gui/core/ProjectManager.java deleted file mode 100644 index 226bbf052..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/ProjectManager.java +++ /dev/null @@ -1,384 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import org.apache.tools.ant.BuildListener; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.ProjectHelper; -import org.apache.tools.ant.BuildEvent; -import org.apache.tools.ant.gui.acs.*; -import org.apache.tools.ant.gui.event.BuildEventType; -import java.io.*; -import java.net.URL; -import java.net.URLConnection; -import java.util.*; - -/** - * This class is responsible for managing the currently open projects, - * and the loading of new projects. - * - * XXX need to add property change listeners support. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ProjectManager { - - /** Set of open projects. */ - private List _projects = new ArrayList(1); - /** List of build listeners to register when build starts. */ - private List _buildListeners = new LinkedList(); - /** The current thread executing a build. */ - private Thread _buildThread = null; - - public ProjectManager() { - } - - /** - * Get all the open projects. - * - * @return an array of all open projects. - */ - public ACSProjectElement[] getOpen() { - ACSProjectElement[] retval = new ACSProjectElement[_projects.size()]; - _projects.toArray(retval); - return retval; - } - - /** - * Save the given project. - * - * @param project Project to save. - */ - public void save(ACSProjectElement project) throws IOException { - saveAs(project, null); - } - - - /** - * Save the given project to the given location. - * - * @param project Project to save. - * @param location Location to save to. - */ - public void saveAs(ACSProjectElement project, URL location) - throws IOException { - - if(location == null) { - location = project.getLocation(); - } - if(location == null) { - // This shouldn't happen. - throw new IOException("Logic error: Save location mising."); - } - - Writer out = null; - try { - // XXX for some reason the URLConnection for protocol type "file" - // doesn't support output (at least that is what the exception - // says. I don't know if I'm doing something wrong or not, but - // since we need to handle files differently (which is fine - // right now since files are all we really support anyway. - if(location.getProtocol().equals("file")) { - out = new FileWriter(location.getFile()); - } - else { - // XXX This is here for future support of FTP/HTTP and - // the like. JDBC will have to be dealt with differently. - URLConnection connection = location.openConnection(); - connection.setDoInput(false); - connection.setDoOutput(true); - out = new OutputStreamWriter(connection.getOutputStream()); - } - - // Persist the project. - project.write(out); - out.flush(); - project.setLocation(location); - } - finally { - try { out.close(); } catch(Exception ex) {} - } - } - - /** - * Open the project persisted at the given location - * - * @param location Location of project file. - * @return Successfully loaded project. - * @throws IOException thrown if there is a problem opening the project. - */ - public ACSProjectElement open(File location) throws IOException { - return open(new URL("file", null, location.getPath())); - } - - /** - * Open the project persisted at the given location - * - * @param location Location of project file. - * @return Successfully loaded project. - * @throws IOException thrown if there is a problem opening the project. - */ - public ACSProjectElement open(URL location) throws IOException { - ACSProjectElement retval = null; - retval = ACSFactory.getInstance().load(location); - retval.setLocation(location); - _projects.add(retval); - return retval; - } - - /** - * Create a new, unpopulated project. - * - * @return Unpopulated project. - */ - public ACSProjectElement createNew() { - ACSProjectElement retval = ACSFactory.getInstance().createProject(); - _projects.add(retval); - return retval; - } - - /** - * Remove the given project from the set of active projects. - * - * @param project Project to close. - */ - public void close(ACSProjectElement project) { - _projects.remove(project); - } - - /** - * Build the project with the given target (or the default target - * if none is selected. Build occurs on a separate thread, so method - * returns immediately. - * - * @param project Project to build. - * @param targets Targets to build in project. - */ - public void build(ACSProjectElement project, ACSTargetElement[] targets) - throws BuildException { - _buildThread = new Thread(new BuildRunner(project, targets)); - _buildThread.start(); - } - - /** - * Add a build listener. - * - * @param l Listener to add. - */ - public void addBuildListener(BuildListener l) { - synchronized(_buildListeners) { - _buildListeners.add(l); - } - } - - /** - * Remove a build listener. - * - * @param l Listener to remove. - */ - public void removeBuildListener(BuildListener l) { - synchronized(_buildListeners) { - _buildListeners.remove(l); - } - } - - /** - * Determine if the given BuildListener is registered. - * - * @param l Listener to test for. - * @return True if listener has been added, false if unknown. - */ - public boolean isRegisteredBuildListener(BuildListener l) { - synchronized(_buildListeners) { - return _buildListeners.contains(l); - } - } - - /** - * Get the set of current build listeners. - * - * @return Set of current build listeners. - */ - public BuildListener[] getBuildListeners() { - synchronized(_buildListeners) { - BuildListener[] retval = new BuildListener[_buildListeners.size()]; - _buildListeners.toArray(retval); - return retval; - } - } - - /** Class for executing the build in a separate thread. */ - private class BuildRunner implements Runnable { - /** The project to execute build on. */ - private ACSProjectElement _project = null; - /** Targets to build. */ - private ACSTargetElement[] _targets = null; - /** The Ant core representation of a project. */ - private Project _antProject = null; - - /** - * Standard ctor. - * - * @param project Project to execute build on. - * @param targets Targets to build. - */ - public BuildRunner(ACSProjectElement project, - ACSTargetElement[] targets) throws BuildException { - _project = project; - _targets = targets; - - URL location = _project.getLocation(); - if(location == null) { - // XXX this needs to be changed so that if the project is - // not saved, or the persistence mechanism is remote - // then a temporary version is saved first. - throw new BuildException("Project must be saved first"); - } - - // XXX hopefully we will eventually be able to save - // project files to any type of URL. Right now the Ant core - // only supports Files. - if(!location.getProtocol().equals("file")) { - throw new IllegalArgumentException( - "The Ant core only supports building from locally " + - "stored build files."); - } - - File f = new File(location.getFile()); - - _antProject = new Project(); - _antProject.init(); - // XXX there is a bunch of stuff in the class - // org.apache.tools.ant.Main that needs to be - // refactored out so that it doesn't have to be - // replicated here. - - // XXX need to provide a way to pass in externally - // defined properties. Perhaps define an external - // Antidote properties file. JAVA_HOME may have to be set, - // as well as checking the .ant.properties - _antProject.setUserProperty( - "ant.file" , f.getAbsolutePath()); - ProjectHelper.configureProject(_antProject, f); - } - - /** - * Convenience method for causeing the project to fire a build event. - * Implemented because the corresponding method in the Project class - * is not publically accessible. - * - * @param event Event to fire. - */ - private void fireBuildEvent(BuildEvent event, BuildEventType type) { - Enumeration enum = _antProject.getBuildListeners().elements(); - while(enum.hasMoreElements()) { - BuildListener l = (BuildListener) enum.nextElement(); - type.fireEvent(event, l); - } - } - - /** - * Run the build. - * - */ - public void run() { - synchronized(_antProject) { - // Add the build listeners - BuildListener[] listeners = getBuildListeners(); - for(int i = 0; i < listeners.length; i++) { - _antProject.addBuildListener(listeners[i]); - } - - try { - - fireBuildEvent(new BuildEvent( - _antProject), BuildEventType.BUILD_STARTED); - - - Vector targetNames = new Vector(); - if(_targets == null || _targets.length == 0) { - targetNames.add(_antProject.getDefaultTarget()); - } - else { - for(int i = 0; i < _targets.length; i++) { - targetNames.add(_targets[i].getName()); - } - } - - // Execute build on selected targets. XXX It would be - // nice if the Project API supported passing in target - // objects rather than String names. - _antProject.executeTargets(targetNames); - } - catch(BuildException ex) { - BuildEvent errorEvent = new BuildEvent(_antProject); - errorEvent.setException(ex); - errorEvent.setMessage(ex.getMessage(), Project.MSG_ERR); - fireBuildEvent(errorEvent, BuildEventType.MESSAGE_LOGGED); - } - finally { - fireBuildEvent(new BuildEvent( - _antProject), BuildEventType.BUILD_FINISHED); - - // Remove the build listeners. - for(int i = 0; i < listeners.length; i++) { - _antProject.removeBuildListener(listeners[i]); - } - } - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/ProjectSelectionMenu.java b/src/antidote/org/apache/tools/ant/gui/core/ProjectSelectionMenu.java deleted file mode 100644 index a3b83f69d..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/ProjectSelectionMenu.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import org.apache.tools.ant.gui.event.*; -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import javax.swing.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.*; -import java.beans.PropertyChangeEvent; - -/** - * Specialization of JMenu providing selectability of the currently - * open projects. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ProjectSelectionMenu extends JMenu { - /** Application context. */ - private AppContext _context = null; - /** Current set of menus. */ - private Map _menus = new HashMap(); - - - /** - * Standard ctor. - * - * @param context Application context. - */ - public ProjectSelectionMenu(AppContext context) { - super(context.getResources().getString( - ProjectSelectionMenu.class, "name"), true); - _context = context; - _context.getEventBus().addMember( - EventBus.MONITORING, new ProjectListener()); - setMnemonic(getText().charAt(0)); - } - - /** - * Replace or add the JMenu called "Projects" with this. - * - * @param menuBar Menu bar to insert into. - */ - public void insertInto(JMenuBar menuBar) { - // Iterate of the menu items looking for the one with the same name - // as ours. - int count = menuBar.getComponentCount(); - for(int i = 0; i < count; i++) { - JMenuItem menu = (JMenuItem) menuBar.getComponent(i); - if(menu.getText().equals(getText())) { - menuBar.remove(menu); - menuBar.add(this, i); - return; - } - } - - // Getting here we didn't find a menu with the same name. - add(this); - } - - - /** Listener for updating the contents of the menu. */ - private class ProjectListener implements BusMember { - /** Event filter. */ - private final Filter _filter = new Filter(); - /** Action handler. */ - private final ActionHandler _handler = new ActionHandler(); - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - public BusFilter getBusFilter() { - return _filter; - } - - /** - * Called when an event is to be posed to the member. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - public boolean eventPosted(EventObject event) { - // Clear out our existing members - removeAll(); - _menus.clear(); - - ACSProjectElement[] projects = - _context.getProjectManager().getOpen(); - for(int i = 0; i < projects.length; i++) { - JMenuItem menu = new JMenuItem(projects[i].getName()); - menu.addActionListener(_handler); - _menus.put(menu, projects[i]); - add(menu); - } - return true; - } - } - - /** Filter for project related events. */ - private static class Filter implements BusFilter { - public boolean accept(EventObject event) { - // We want events related to projects. - return event instanceof ProjectSelectedEvent || - event instanceof ProjectClosedEvent || - (event instanceof PropertyChangeEvent && - ((PropertyChangeEvent)event).getSource() - instanceof ACSProjectElement); - } - } - - /** Handler for selecting the project. */ - private class ActionHandler implements ActionListener { - public void actionPerformed(ActionEvent e) { - ACSProjectElement project = - (ACSProjectElement) _menus.get(e.getSource()); - _context.getEventBus().postEvent( - new ProjectSelectedEvent(_context, project)); - } - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java b/src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java deleted file mode 100644 index 16ff059d9..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/ResourceManager.java +++ /dev/null @@ -1,322 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import java.util.*; -import java.text.MessageFormat; -import javax.swing.ImageIcon; -import java.net.URL; -import java.io.File; - -/** - * Singleton class for accessing various resources by the application. - * Relies on the resource bundles for resource values. - * - * @version $Revision$ - * @author Simeon H.K. Fitch - */ -public class ResourceManager { - - /** Path to default resources. */ - private static final String RESOURCE_PKG = - "org.apache.tools.ant.gui.resources"; - /** Path to default resources. */ - private static final String DEF_PROPERTIES = - RESOURCE_PKG + ".antidote"; - - /** Image path. */ - private static final String IMG_PATH = - '/' + RESOURCE_PKG.replace('.', '/'); - - /** Resources to reference. */ - private ResourceBundle _resources = null; - - /** - * Default ctor. Uses the default properties file for antidote. - * - */ - public ResourceManager() { - this(DEF_PROPERTIES); - } - - /** - * Standard ctor. - * - * @param propName Fully qualified name of the resources to use. - */ - public ResourceManager(String propName) { - _resources = ResourceBundle.getBundle(propName); - } - - /** - * Generate a composit key from the given class and key name. - * - * @param clazz Class to find resource for. - * @param name Name of the resource. - * @return Composite key. - */ - private String getKey(Class clazz, String name) { - name = name == null ? "" : name; - - return clazz == null ? name : clazz.getName() + "." + name; - } - - /** - * Get non-qualified String resource. - * - * @param name Name of the resource. - * @return Value of the resource. - */ - public String getString(String name) { - return getString(null, name); - } - - /** - * Get a string resource for the given class. - * - * @param clazz Class to get resource for. - * @param name Name of the string resource. - * @return String resource for the given class. - */ - public String getString(Class clazz, String name) { - if(name == null) { - return null; - } - - try { - return _resources.getString(getKey(clazz, name)); - } - catch(MissingResourceException ex) { - return null; - } - } - - /** - * Get a non-qualified array of string resources for the given class. - * - * @param name Name of the string resource. - * @return Array of string resources for the given class. - */ - public String[] getStringArray(String name) { - return getStringArray(null, name); - } - /** - * Get an array of string resources for the given class. - * - * @param clazz Class to get resource for. - * @param name Name of the string resource. - * @return Array of string resources for the given class. - */ - public String[] getStringArray(Class clazz, String name) { - if(name == null) { - return null; - } - - String key = getKey(clazz, name); - - String toTok = null; - try { - toTok = _resources.getString(key); - } - catch(MissingResourceException ex) { - // Ignore as we are doing a cascading lookup. - } - - if(toTok == null) { - try { - return _resources.getStringArray(key); - } - catch(MissingResourceException ex) { - return null; - } - } - else { - StringTokenizer tok = new StringTokenizer(toTok, ", "); - String[] retval = new String[tok.countTokens()]; - for(int i = 0; i < retval.length; i++) { - retval[i] = tok.nextToken(); - } - return retval; - } - } - - /** - * Get the boolean resource for the given name. Case - * insensitive values of "yes" or "true" evaluate to TRUE. - * All others, including undefined resources evaluate to FALSE. - * - * @param name Name of the boolean resource. - * @return True if defined as true, false otherwise. - */ - public boolean getBoolean(String name) { - return getBoolean(null, name); - } - - /** - * Get the boolean resource for the given class. Case - * insensitive values of "yes" or "true" evaluate to TRUE. - * All others, including undefined resources evaluate to FALSE. - * - * @param clazz Class to get resource for. - * @param name Name of the boolean resource. - * @return True if defined as true, false otherwise. - */ - public boolean getBoolean(Class clazz, String name) { - if(name == null) { - return false; - } - - String key = getKey(clazz, name); - - String value = ""; - try { - value = _resources.getString(key); - } - catch(MissingResourceException ex) { - return false; - } - - return value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes"); - } - - /** - * Get the non-qualified Class type resource for the given key. - * - * @param name Name of the resourdce. - * @return Class associated with the key name. - */ - public Class getClass(String name) - throws ClassNotFoundException { - return getClass(null, name); - } - - /** - * Get the Class type resource for the given class and key name. - * - * @param clazz Class requesting the resource. - * @param name Name of the resource. - * @return Class associated with the key name. - */ - public Class getClass(Class clazz, String name) - throws ClassNotFoundException { - - String key = getKey(clazz, name); - try { - String value = _resources.getString(key); - return Class.forName(value); - } - catch(MissingResourceException ex) { - return null; - } - - } - - - /** - * Generate a localized message using the given set of arguments to - * format the message with. - * - * @param name Name of the message. - * @param arguments Arguments to the message. - * @return The formatted message. - */ - public String getMessage(String name, Object[] arguments) { - return getMessage(null, name, arguments); - } - - /** - * Generate a localized message using the given set of arguments to - * format the message with. - * - * @param clazz Class to get message resource for. - * @param name Name of the message. - * @param arguments Arguments to the message. - * @return The formatted message. - */ - public String getMessage(Class clazz, String name, Object[] arguments) { - String format = getString(clazz, name); - return MessageFormat.format(format, arguments); - } - - /** - * Get the image as an ImageIcon assigned to the given class with the - * given key. - * - * @param clazz The class to load icon for. - * @param key The key for looking up the icon. - * @return Image as an ImageIcon, or null if not found. - */ - public ImageIcon getImageIcon(Class clazz, String key) { - return loadImageIcon(getString(clazz, key)); - } - - /** - * Get the image as an ImageIcon with the given file name. - * For example "open.gif". The image is loaded from the resources package. - * - * @param fileName Image file to load. - * @return Image as an ImageIcon, or null if not found. - */ - public ImageIcon loadImageIcon(String fileName) { - if(fileName == null) return null; - - ImageIcon icon = null; - URL location = getClass().getResource(IMG_PATH + "/" + fileName); - if(location != null) { - icon = new ImageIcon(location); - } - return icon; - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/SelectionManager.java b/src/antidote/org/apache/tools/ant/gui/core/SelectionManager.java deleted file mode 100644 index ca24214aa..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/SelectionManager.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import org.apache.tools.ant.gui.event.*; -import org.apache.tools.ant.gui.command.*; -import org.apache.tools.ant.gui.acs.*; -import java.util.EventObject; -import java.awt.event.ActionEvent; -import javax.swing.*; - -/** - * State management class for keeping track of what build file elements are - * currently selected. It monitors the EventBus for selection events and - * Records the current state. It should be registered with the EventBus - * at the MONITORING level. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class SelectionManager implements BusMember { - /** The filter for getting the correct events.*/ - private final Filter _filter = new Filter(); - - /** The currently selected project. */ - private ACSProjectElement _project = null; - /** The current set of selected targets. */ - private ACSTargetElement[] _targets = null; - /** The current set of selected elements. */ - private ACSElement[] _elements = null; - - public SelectionManager() { - } - - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - public BusFilter getBusFilter() { - return _filter; - } - - - /** - * Get the currently selected project. - * - * @return Current project. - */ - public ACSProjectElement getSelectedProject() { - return _project; - } - - /** - * Get the selected elements that are targets. - * - */ - public ACSTargetElement[] getSelectedTargets() { - return _targets; - } - - /** - * Get the selected elements. - * - */ - public ACSElement[] getSelectedElements() { - return _elements; - } - - /** - * Called when an event is to be posed to the member. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - public boolean eventPosted(EventObject event) { - _elements = ((ElementSelectionEvent)event).getSelectedElements(); - - if(event instanceof TargetSelectionEvent) { - _targets = ((TargetSelectionEvent)event).getSelectedTargets(); - } - else if(event instanceof ProjectSelectedEvent) { - _project = ((ProjectSelectedEvent)event).getSelectedProject(); - } - return true; - } - - /** Filter for ElementSelectionEvent objects. */ - private static class Filter implements BusFilter { - public boolean accept(EventObject event) { - return event instanceof ElementSelectionEvent; - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/core/XMLFileFilter.java b/src/antidote/org/apache/tools/ant/gui/core/XMLFileFilter.java deleted file mode 100644 index 795f9d8f9..000000000 --- a/src/antidote/org/apache/tools/ant/gui/core/XMLFileFilter.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.core; - -import javax.swing.filechooser.FileFilter; -import java.io.File; - -/** - * FileFilter for showing only XML files. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class XMLFileFilter extends FileFilter { - - /** Text description of filter. */ - private String _description = null; - - - /** - * Standard constructor. - * - * @param resources Access to text resources. - */ - public XMLFileFilter(ResourceManager resources) { - _description = resources.getString(getClass(), "description"); - } - - /** - * Accept files that end with ".xml". - * - * @param f File to test. - * @return True if accepted, false otherwise. - */ - public boolean accept(File f) { - if(f.isDirectory()) return true; - - String name = f.getName().toLowerCase(); - return name.endsWith(".xml"); - } - - /** - * Human readable description of filter. - * - * @return Description. - */ - public String getDescription() { - return _description; - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/.wrapper b/src/antidote/org/apache/tools/ant/gui/customizer/.wrapper deleted file mode 100755 index 5995815e9..000000000 --- a/src/antidote/org/apache/tools/ant/gui/customizer/.wrapper +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# Wrapper script for launching Java files without having to type the -# package prefix. To use make a link to this file with the same name -# as the class you want to run. - -# Edit this line to represent the package that your class belongs to. -PACKAGE=org.apache.tools.ant.gui.customizer - -# Set your application's classpath here. -CLASSPATH=$HOME/build/antidote/classes:$HOME/build/ant/lib/ant.jar - -# Compose the fully qualified class name. -START=$PACKAGE.`basename $0` - -# Java runtime path. -EXE=/usr/java1.3/bin/java - -# Set any runtime options here -OPTS="-classpath $CLASSPATH" - -# Turn the JIT off if the variable "DEBUG" is set in the environment. -if [ ! -z $DEBUG ]; then - OPTS="$OPTS -Djava.compiler=NONE" -fi - -# Launch the program. -#echo $EXE $OPTS $START $* -exec $EXE $OPTS $START $* diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/AbstractPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/AbstractPropertyEditor.java deleted file mode 100644 index 1feb702a8..000000000 --- a/src/antidote/org/apache/tools/ant/gui/customizer/AbstractPropertyEditor.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.customizer; - -import java.beans.*; -import java.awt.Graphics; -import java.awt.Component; -import java.awt.Rectangle; -import java.awt.Dimension; -import javax.swing.JComponent; -import java.awt.event.FocusEvent; -import java.awt.event.FocusAdapter; - -/** - * Abstract base class for the custom type property editors. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public abstract class AbstractPropertyEditor implements PropertyEditor { - - /** Bean property change property name. */ - public static final String BEAN_PROP = "BeanEditorProperty"; - /** Event listener support. */ - private PropertyChangeSupport _listeners = new PropertyChangeSupport(this); - - /** - * Default constructor. - * - */ - protected AbstractPropertyEditor() { - } - - /** - * Paint a representation of the value into a given area of screen - * real estate. Note that the propertyEditor is responsible for doing - * its own clipping so that it fits into the given rectangle. - *

    - * If the PropertyEditor doesn't honor paint requests (see isPaintable) - * this method should be a silent noop. - *

    - * The given Graphics object will have the default font, color, etc of - * the parent container. The PropertyEditor may change graphics attributes - * such as font and color and doesn't need to restore the old values. - * - * @param gfx Graphics object to paint into. - * @param box Rectangle within graphics object into which we should paint. - */ - public void paintValue(Graphics gfx, Rectangle box) { - Object o = getValue(); - String s = o == null ? "" : o.toString(); - gfx.drawString(s, box.x, box.y); - } - - - /** - * Fire a property change event to listeners. - * - * @param oldValue Old value. - * @param newValue New value. - */ - public void firePropertyChange(Object oldValue, Object newValue) { - _listeners.firePropertyChange(BEAN_PROP, oldValue, newValue); - } - - /** - * Add a property change listener. XXX This may cause undesired - * side affects with merging property changes with JPanel class. - * Need to test for a while. - * - * @param l Change listener. - */ - public void addPropertyChangeListener(PropertyChangeListener l) { - _listeners.addPropertyChangeListener(l); - } - - /** - * Remove a property change listener. - * - * @param l Change listener. - */ - public void removePropertyChangeListener(PropertyChangeListener l) { - _listeners.removePropertyChangeListener(l); - } - - /** - * @return True if the class will honor the paintValue method. - */ - public boolean isPaintable() { - return true; - } - - /** - * If the property value must be one of a set of known tagged values, - * then this method should return an array of the tags. This can - * be used to represent (for example) enum values. If a PropertyEditor - * supports tags, then it should support the use of setAsText with - * a tag value as a way of setting the value and the use of getAsText - * to identify the current value. - * - * @return The tag values for this property. May be null if this - * property cannot be represented as a tagged value. - * - */ - public String[] getTags() { - return null; - } - - /** - * A PropertyEditor may choose to make available a full custom Component - * that edits its property value. It is the responsibility of the - * PropertyEditor to hook itself up to its editor Component itself and - * to report property value changes by firing a PropertyChange event. - *

    - * The higher-level code that calls getCustomEditor may either embed - * the Component in some larger property sheet, or it may put it in - * its own individual dialog, or ... - * - * @return A java.awt.Component that will allow a human to directly - * edit the current property value. May be null if this is - * not supported. - */ - public Component getCustomEditor() { - return getChild(); - } - - /** - * @return True if the propertyEditor can provide a custom editor. - */ - public boolean supportsCustomEditor() { - return true; - } - - /** - * This method is intended for use when generating Java code to set - * the value of the property. It should return a fragment of Java code - * that can be used to initialize a variable with the current property - * value. - *

    - * Example results are "2", "new Color(127,127,34)", "Color.orange", etc. - * - * @return A fragment of Java code representing an initializer for the - * current value. - */ - public String getJavaInitializationString() { - return ""; - } - - /** - * Get the child editing component. - * - * @return Child editing component. - */ - protected abstract Component getChild(); - - /** Helper class for detecting changes and generating change events - * on a focus lost event. */ - protected static class FocusHandler extends FocusAdapter { - /** Last value of the editor. */ - private Object _value = null; - /** Editor of interest. */ - private AbstractPropertyEditor _editor = null; - - /** - * Standard constructor. - * - * @param editor Editor of interest. - */ - public FocusHandler(AbstractPropertyEditor editor) { - _editor = editor; - } - - /** - * Called when focus is gained. - * - * @param e Focus event. - */ - public void focusGained(FocusEvent e) { - _value = _editor.getValue(); - } - - /** - * Called when focus is lost. Checks to see if value changed and - * fires a change event if needed. - * - * @param e Focus event. - */ - public void focusLost(FocusEvent e) { - if((_value != null && !_value.equals(_editor.getValue())) || - (_value == null && _editor.getValue() != null)) { - _editor.firePropertyChange(_value, _editor.getValue()); - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/DoublePropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/DoublePropertyEditor.java deleted file mode 100644 index 560de00d5..000000000 --- a/src/antidote/org/apache/tools/ant/gui/customizer/DoublePropertyEditor.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.customizer; - -import javax.swing.*; -import java.awt.Component; - -/** - * Custom property editor for editing double values. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class DoublePropertyEditor extends AbstractPropertyEditor { - /** Editing widget. */ - private JTextField _widget = null; - - /** - * Default ctor. - * - */ - public DoublePropertyEditor() { - _widget = new JTextField(); - _widget.addFocusListener(new FocusHandler(this)); - } - - /** - * Get the child editing component. Uses JComponent so we can have tool - * tips, etc. - * - * @return Child editing component. - */ - protected Component getChild() { - return _widget; - } - - /** - * This method is intended for use when generating Java code to set - * the value of the property. It should return a fragment of Java code - * that can be used to initialize a variable with the current property - * value. - *

    - * Example results are "2", "new Color(127,127,34)", "Color.orange", etc. - * - * @return A fragment of Java code representing an initializer for the - * current value. - */ - public String getJavaInitializationString() { - return "new Double(" + getAsText() + ")"; - } - - /** - * Set (or change) the object that is to be edited. Builtin types such - * as "int" must be wrapped as the corresponding object type such as - * "java.lang.Integer". - * - * @param value The new target object to be edited. Note that this - * object should not be modified by the PropertyEditor, rather - * the PropertyEditor should create a new object to hold any - * modified value. - */ - public void setValue(Object value) { - Object old = _widget.getText(); - if(!(value instanceof Double)) { - value = new Double(0); - } - - _widget.setText(value.toString()); - } - - /** - * @return The value of the property. Builtin types such as "int" will - * be wrapped as the corresponding object type such as "java.lang.Integer". - */ - public Object getValue() { - Double retval = null; - try { - retval = new Double(_widget.getText()); - } - catch(NumberFormatException ex) { - retval = new Double(0); - _widget.setText(retval.toString()); - } - return retval; - } - - /** - * Set the property value by parsing a given String. May raise - * java.lang.IllegalArgumentException if either the String is - * badly formatted or if this kind of property can't be expressed - * as text. - * @param text The string to be parsed. - */ - public void setAsText(String text) { - Object old = _widget.getText(); - Double val = null; - try { - val = new Double(text); - } - catch(NumberFormatException ex) { - val = new Double(0); - } - text = val.toString(); - _widget.setText(text); - } - - /** - * @return The property value as a human editable string. - *

    Returns null if the value can't be expressed - * as an editable string. - *

    If a non-null value is returned, then the PropertyEditor should - * be prepared to parse that string back in setAsText(). - */ - public String getAsText() { - return _widget.getText(); - } -} - - diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/DynamicCustomizer.java b/src/antidote/org/apache/tools/ant/gui/customizer/DynamicCustomizer.java deleted file mode 100644 index b374ceb06..000000000 --- a/src/antidote/org/apache/tools/ant/gui/customizer/DynamicCustomizer.java +++ /dev/null @@ -1,608 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.customizer; - -import org.apache.tools.ant.gui.util.LabelFieldGBC; -import java.lang.reflect.*; -import java.beans.*; -import javax.swing.*; -import java.util.*; -import java.io.File; -import java.awt.*; - -/** - * Widget for dynamically constructing a property editor based on the - * an Object's BeanInfo. Essentially a property sheet. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class DynamicCustomizer extends JPanel implements Customizer, Scrollable { - static { - PropertyEditorManager.registerEditor( - String.class, StringPropertyEditor.class); - PropertyEditorManager.registerEditor( - String[].class, StringArrayPropertyEditor.class); - PropertyEditorManager.registerEditor( - int.class, IntegerPropertyEditor.class); - PropertyEditorManager.registerEditor( - Integer.class, IntegerPropertyEditor.class); - PropertyEditorManager.registerEditor( - double.class, DoublePropertyEditor.class); - PropertyEditorManager.registerEditor( - Double.class, DoublePropertyEditor.class); - PropertyEditorManager.registerEditor( - Properties.class, PropertiesPropertyEditor.class); - PropertyEditorManager.registerEditor( - File.class, FilePropertyEditor.class); - PropertyEditorManager.registerEditor( - Object.class, ObjectPropertyEditor.class); - } - - /** Property name that PropertyDescriptors can save in their property - * dictionaries for for specifiying a display sorting order. The value - * sould be of type Integer. */ - public static final String SORT_ORDER = "sortOrder"; - - /** The type that this editor instance can handle. */ - private Class _type = null; - /** The value currently being edited. */ - private Object _value = null; - /** Mapping from PropertyDescriptor to PropertyEditor. */ - private Map _prop2Editor = new HashMap(); - /** Mapping from PropertyEditor to field PropertyDescriptor. */ - private Map _editor2Prop = new HashMap(); - /** Listener for receiving change events from the editors. */ - private EditorChangeListener _eListener = new EditorChangeListener(); - /** Read-only flag. */ - private boolean _readOnly = false; - /** List of property change listeners interested when the bean - * being edited has been changed. */ - private java.util.List _changeListeners = new LinkedList(); - /** Flag to trun off event propogation. */ - private boolean _squelchChangeEvents = false; - - /** - * Standard constructor. - * - * @param type Type that you are going to be creating and editor for. - */ - public DynamicCustomizer(Class type) { - this(type, false); - } - - /** - * Standard constructor. - * - * @param type Type that you are going to be creating and editor for. - * @param readOnly Set to true to create a read-only customizer. - */ - public DynamicCustomizer(Class type, boolean readOnly) { - super(new GridBagLayout()); - _readOnly = readOnly; - _type = type; - - LabelFieldGBC gbc = new LabelFieldGBC(); - try { - BeanInfo info = Introspector.getBeanInfo(type); - // Set up pretty display stuff. - setBorder(BorderFactory.createTitledBorder( - info.getBeanDescriptor().getDisplayName())); - setToolTipText(info.getBeanDescriptor().getShortDescription()); - - // Get the properties and sort them. - PropertyDescriptor[] props = info.getPropertyDescriptors(); - Arrays.sort(props, new PropertyComparator()); - for(int i = 0; i < props.length; i++) { - // Ignore the "class" property, if it is provided. - if(props[i].getName().equals("class")) continue; - // Create a label for the field. - JLabel label = new JLabel(props[i].getDisplayName() + ":"); - - // Lookup the editor. - PropertyEditor editor = getEditorForProperty(props[i]); - - // Add a listener to the editor so we know when to update - // the bean's fields. - editor.addPropertyChangeListener(_eListener); - - // XXX What we need to do right here is provide a component - // that makes use of the "paintable" capability of the editor. - Component comp = editor.getCustomEditor(); - if(comp == null) { - comp = new JLabel(""); - ((JLabel)comp).setBorder(BorderFactory.createEtchedBorder()); - } - - // See if it is a read-only property. If so, then just - // display it. - if(_readOnly || props[i].getWriteMethod() == null) { - comp.setEnabled(false); - } - - // Setup the accellerator key. - label.setLabelFor(comp); - label.setDisplayedMnemonic(label.getText().charAt(0)); - - // Set the tool tip text, if any. - String tip = props[i].getShortDescription(); - if(tip != null) { - label.setToolTipText(tip); - if(comp instanceof JComponent) { - ((JComponent)comp).setToolTipText(tip); - } - } - - // Add the label and fields. - add(label, gbc.forLabel()); - add(comp, gbc.forField()); - - // Set the mappings between editor and property, etc. for - // quick lookup later. - _prop2Editor.put(props[i], editor); - _editor2Prop.put(editor, props[i]); - } - // Filler... - add(new JLabel(), gbc.forLastLabel()); - - } - catch(Exception ex) { - ex.printStackTrace(); - } - } - - - /** - * Set the object to be edited. - * - * @param value The object to be edited. - */ - public void setObject(Object value) { - if(!(_type.isInstance(value))) { - throw new IllegalArgumentException( - value.getClass() + " is not of type " + _type); - } - _value = value; - - // Disable event generation. - _squelchChangeEvents = true; - - // Iterate over each property, doing a lookup on the associated editor - // and setting the editor's value to the value of the property. - Iterator it = _prop2Editor.keySet().iterator(); - while(it.hasNext()) { - PropertyDescriptor desc = (PropertyDescriptor) it.next(); - PropertyEditor editor = (PropertyEditor) _prop2Editor.get(desc); - Method reader = desc.getReadMethod(); - if(reader != null) { - try { - Object val = reader.invoke(_value, null); - editor.setValue(val); - } - catch(IllegalAccessException ex) { - ex.printStackTrace(); - } - catch(InvocationTargetException ex) { - ex.getTargetException().printStackTrace(); - } - } - } - - // Enable event generation. - _squelchChangeEvents = false; - - } - - /** - * Get the appropriate editor for the given property. - * - * @param prop Property to get editor for. - * @return Editor to use, or null if none found. - */ - private PropertyEditor getEditorForProperty(PropertyDescriptor prop) { - PropertyEditor retval = null; - Class type = prop.getPropertyEditorClass(); - if(type != null) { - try { - retval = (PropertyEditor) type.newInstance(); - } - catch(Exception ex) { - ex.printStackTrace(); - } - } - // Handle case where there is no special editor - // associated with the property. In that case we ask the - // PropertyEditor manager for the editor registered for the - // given property type. - if(retval == null) { - Class t = prop.getPropertyType(); - if(t != null) { - retval = PropertyEditorManager.findEditor(t); - } - } - - // In the worse case we resort to the generic editor for Object types. - if(retval == null) { - retval = PropertyEditorManager.findEditor(Object.class); - } - - return retval; - } - - /** - * Add the given listener. Will receive a change event for - * changes to the bean being edited. - * - * @param l Listner to add. - */ - public void addPropertyChangeListener(PropertyChangeListener l) { - _changeListeners.add(l); - } - - - /** - * Remove the given property change listener. - * - * @param l Listener to remove. - */ - public void removePropertyChangeListener(PropertyChangeListener l) { - _changeListeners.remove(l); - } - - /** - * Fire a property change event to each listener. - * - * @param bean Bean being edited. - * @param propName Name of the property. - * @param oldValue Old value. - * @param newValue New value. - */ - protected void firePropertyChange(Object bean, String propName, - Object oldValue, Object newValue) { - - PropertyChangeEvent e = new PropertyChangeEvent( - bean, propName, oldValue, newValue); - - Iterator it = _changeListeners.iterator(); - while(it.hasNext()) { - PropertyChangeListener l = (PropertyChangeListener) it.next(); - l.propertyChange(e); - } - } - - /** - * Returns the preferred size of the viewport for a view component. - * For example the preferredSize of a JList component is the size - * required to acommodate all of the cells in its list however the - * value of preferredScrollableViewportSize is the size required for - * JList.getVisibleRowCount() rows. A component without any properties - * that would effect the viewport size should just return - * getPreferredSize() here. - * - * @return The preferredSize of a JViewport whose view is this Scrollable. - * @see JViewport#getPreferredSize - */ - public Dimension getPreferredScrollableViewportSize() { - Dimension size = getPreferredSize(); - Dimension retval = new Dimension(); - retval.width = size.width > 600 ? 600 : size.width; - retval.height = size.height > 400 ? 400 : size.height; - return retval; - } - - - /** - * Components that display logical rows or columns should compute - * the scroll increment that will completely expose one new row - * or column, depending on the value of orientation. Ideally, - * components should handle a partially exposed row or column by - * returning the distance required to completely expose the item. - *

    - * Scrolling containers, like JScrollPane, will use this method - * each time the user requests a unit scroll. - * - * @param visibleRect The view area visible within the viewport - * @param orientation Either SwingConstants.VERTICAL or - * SwingConstants.HORIZONTAL. - * @param direction Less than zero to scroll up/left, - * greater than zero for down/right. - * @return The "unit" increment for scrolling in the specified direction - * @see JScrollBar#setUnitIncrement - */ - public int getScrollableUnitIncrement(Rectangle visibleRect, - int orientation, int direction) { - return 1; - } - - - /** - * Components that display logical rows or columns should compute - * the scroll increment that will completely expose one block - * of rows or columns, depending on the value of orientation. - *

    - * Scrolling containers, like JScrollPane, will use this method - * each time the user requests a block scroll. - * - * @param visibleRect The view area visible within the viewport - * @param orientation Either SwingConstants.VERTICAL or - * SwingConstants.HORIZONTAL. - * @param direction Less than zero to scroll up/left, - * greater than zero for down/right. - * @return The "block" increment for scrolling in the specified direction. - * @see JScrollBar#setBlockIncrement - */ - public int getScrollableBlockIncrement(Rectangle visibleRect, - int orientation, int direction) { - return orientation == SwingConstants.VERTICAL ? - visibleRect.height / 2 : visibleRect.width / 2; - } - - - /** - * Return true if a viewport should always force the width of this - * Scrollable to match the width of the viewport. For example a noraml - * text view that supported line wrapping would return true here, since it - * would be undesirable for wrapped lines to disappear beyond the right - * edge of the viewport. Note that returning true for a Scrollable - * whose ancestor is a JScrollPane effectively disables horizontal - * scrolling. - *

    - * Scrolling containers, like JViewport, will use this method each - * time they are validated. - * - * @return True if a viewport should force the Scrollables - * width to match its own. - */ - public boolean getScrollableTracksViewportWidth() { - return true; - } - - /** - * Return true if a viewport should always force the height of this - * Scrollable to match the height of the viewport. For example a - * columnar text view that flowed text in left to right columns - * could effectively disable vertical scrolling by returning - * true here. - *

    - * Scrolling containers, like JViewport, will use this method each - * time they are validated. - * - * @return True if a viewport should force the Scrollables - * height to match its own. - */ - public boolean getScrollableTracksViewportHeight() { - return false; - } - - - /** Class for receiving change events from the PropertyEditor objects. */ - private class EditorChangeListener implements PropertyChangeListener { - public void propertyChange(PropertyChangeEvent e) { - if(_squelchChangeEvents) return; - - PropertyEditor editor = (PropertyEditor) e.getSource(); - PropertyDescriptor prop = - (PropertyDescriptor) _editor2Prop.get(editor); - Method writer = prop.getWriteMethod(); - if(writer != null) { - try { - Object[] params = { editor.getValue() }; - writer.invoke(_value, params); - setObject(_value); - firePropertyChange( - _value, prop.getName(), null, editor.getValue()); - } - catch(IllegalAccessException ex) { - ex.printStackTrace(); - } - catch(InvocationTargetException ex) { - ex.getTargetException().printStackTrace(); - } - } - } - } - - - /** Comparator for sorting PropertyDescriptor values. */ - private static class PropertyComparator implements Comparator { - public int compare(Object o1, Object o2) { - PropertyDescriptor p1 = (PropertyDescriptor)o1; - PropertyDescriptor p2 = (PropertyDescriptor)o2; - - Integer i1 = (Integer) p1.getValue(SORT_ORDER); - Integer i2 = (Integer) p2.getValue(SORT_ORDER); - - if(i1 == null && i2 == null) { - return p1.getName().compareTo(p2.getName()); - } - else if(i1 != null) { - return i1.compareTo(i2); - } - else { - return i2.compareTo(i1) * -1; - } - } - } - - - /*----------------------------------------------------------------------*/ - - /** Class for testing this. */ - private static class TestClass implements Cloneable { - private String _String = "This string is my name."; - private String[] _StringArray = { "one", "two", "three" }; - private int _int = Integer.MIN_VALUE; - private Integer _Integer = new Integer(Integer.MAX_VALUE); - private double _double = Double.MIN_VALUE; - private Double _Double = new Double(Double.MAX_VALUE); - private Properties _Properties = System.getProperties(); - private File _File = new File("/"); - private Object _Object = new Font("Monospaced", Font.PLAIN, 12); - private JButton _button = new JButton("I'm a button!"); - - public void setName(String string) { - _String = string; - } - public String getName() { - return _String; - } - - public void setStringArray(String[] array) { - _StringArray = array; - } - public String[] getStringArray() { - return _StringArray; - } - - public void setInt(int val) { - _int = val; - } - public int getInt() { - return _int; - } - - public void setInteger(Integer val) { - _Integer = val; - } - public Integer getInteger() { - return _Integer; - } - - public void setDoub(double val) { - _double = val; - } - public double getDoub() { - return _double; - } - - public void setDouble(Double val) { - _Double = val; - } - public Double getDouble() { - return _Double; - } - - public void setProperties(Properties props) { - _Properties = props; - } - public Properties getProperties() { - return _Properties; - } - - public void setFile(File f) { - _File = f; - } - public File getFile() { - return _File; - } - - public void setButton(JButton button) { - _button = button; - } - - public JButton getButton() { - return _button; - } - - public void setObject(Object o) { - _Object = o; - } - - public Object getObject() { - return _Object; - } - - public Object clone() { - try { - return super.clone(); - } - catch(CloneNotSupportedException ex) { - return null; - } - } - } - - - /** - * Test code. - * - * @param args First arg is the class name to create - */ - public static void main(String[] args) { - - try { - Class type = null; - Object instance = null; - if(args.length > 0) { - type = Class.forName(args[0]); - instance = type.newInstance(); - } - else { - type = TestClass.class; - instance = new TestClass(); - ((TestClass)instance).setObject(new TestClass()); - } - - JFrame f = new JFrame(type.getName()); - DynamicCustomizer custom = new DynamicCustomizer(type); - custom.setObject(instance); - f.getContentPane().add(new JScrollPane(custom)); - f.pack(); - f.setVisible(true); - } - catch(Exception ex) { - ex.printStackTrace(); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/FilePropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/FilePropertyEditor.java deleted file mode 100644 index 1b6758a96..000000000 --- a/src/antidote/org/apache/tools/ant/gui/customizer/FilePropertyEditor.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.customizer; - -import javax.swing.*; -import javax.swing.filechooser.FileFilter; -import java.awt.Component; -import java.awt.BorderLayout; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; -import javax.swing.border.BevelBorder; -import java.io.File; - - -/** - * Custom property editor for File types. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class FilePropertyEditor extends AbstractPropertyEditor { - /** Area for typing in the file name. */ - private JTextField _widget = null; - /** Container for the editor. */ - private JPanel _container = null; - /** File filter to use. */ - private FileFilter _filter = null; - - /** - * Default ctor. - * - */ - public FilePropertyEditor() { - _container = new JPanel(new BorderLayout()); - - _widget = new JTextField(); - - _widget.addFocusListener(new FocusHandler(this)); - - _container.add(_widget, BorderLayout.CENTER); - - JButton b = new JButton("Browse..."); - b.addActionListener(new ActionHandler()); - _container.add(b, BorderLayout.EAST); - } - - /** - * Get the child editing component. Uses JComponent so we can have tool - * tips, etc. - * - * @return Child editing component. - */ - protected Component getChild() { - return _container; - } - - /** - * File filter to use with chooser. - * - * @param filter File filter. - */ - public void setFileFilter(FileFilter filter) { - _filter = filter; - } - - /** - * This method is intended for use when generating Java code to set - * the value of the property. It should return a fragment of Java code - * that can be used to initialize a variable with the current property - * value. - *

    - * Example results are "2", "new Color(127,127,34)", "Color.orange", etc. - * - * @return A fragment of Java code representing an initializer for the - * current value. - */ - public String getJavaInitializationString() { - return "new File(" + getAsText() + ")"; - } - - /** - * Set (or change) the object that is to be edited. Builtin types such - * as "int" must be wrapped as the corresponding object type such as - * "java.lang.Integer". - * - * @param value The new target object to be edited. Note that this - * object should not be modified by the PropertyEditor, rather - * the PropertyEditor should create a new object to hold any - * modified value. - */ - public void setValue(Object value) { - if(value == null) { - value = new File(""); - } - - if(!(value instanceof File)) { - throw new IllegalArgumentException( - value.getClass().getName() + " is not of type File"); - } - - Object old = _widget.getText(); - - _widget.setText(((File)value).getPath()); - } - - /** - * @return The value of the property. Builtin types - * such as "int" will be wrapped as the corresponding - * object type such as "java.lang.Integer". */ - public Object getValue() { - File retval = null; - retval = new File(_widget.getText()); - return retval; - } - - /** - * Set the property value by parsing a given String. May raise - * java.lang.IllegalArgumentException if either the String is - * badly formatted or if this kind of property can't be expressed - * as text. - * @param text The string to be parsed. - */ - public void setAsText(String text) throws IllegalArgumentException { - File f = new File(text); - _widget.setText(f.getPath()); - } - - /** - * @return The property value as a human editable string. - *

    Returns null if the value can't be expressed - * as an editable string. - *

    If a non-null value is returned, then the PropertyEditor should - * be prepared to parse that string back in setAsText(). - */ - public String getAsText() { - return new File(_widget.getText()).getAbsolutePath(); - } - - /** Handler for presses of the browse button. */ - private class ActionHandler implements ActionListener { - public void actionPerformed(ActionEvent e) { - JFileChooser chooser = null; - chooser = new JFileChooser(); - chooser.setSelectedFile((File) getValue()); - - - _filter = (_filter == null ? - chooser.getAcceptAllFileFilter() : _filter); - chooser.setFileFilter(_filter); - chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); - if(chooser.showDialog(getChild(), "Select") == - JFileChooser.APPROVE_OPTION) { - Object oldValue = getValue(); - Object newValue = chooser.getSelectedFile(); - - setValue(newValue); - firePropertyChange(oldValue, newValue); - } - } - } - -} - - diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/IntegerPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/IntegerPropertyEditor.java deleted file mode 100644 index 587a98906..000000000 --- a/src/antidote/org/apache/tools/ant/gui/customizer/IntegerPropertyEditor.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.customizer; - -import javax.swing.*; -import java.awt.Component; - -/** - * Custom property editor for integer types. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class IntegerPropertyEditor extends AbstractPropertyEditor { - /** Editing widget. */ - private JTextField _widget = null; - - /** - * Default ctor. - * - */ - public IntegerPropertyEditor() { - _widget = new JTextField(); - _widget.addFocusListener(new FocusHandler(this)); - } - - /** - * Get the child editing component. Uses JComponent so we can have tool - * tips, etc. - * - * @return Child editing component. - */ - protected Component getChild() { - return _widget; - } - - /** - * This method is intended for use when generating Java code to set - * the value of the property. It should return a fragment of Java code - * that can be used to initialize a variable with the current property - * value. - *

    - * Example results are "2", "new Color(127,127,34)", "Color.orange", etc. - * - * @return A fragment of Java code representing an initializer for the - * current value. - */ - public String getJavaInitializationString() { - return "new Integer(" + getAsText() + ")"; - } - - /** - * Set (or change) the object that is to be edited. Builtin types such - * as "int" must be wrapped as the corresponding object type such as - * "java.lang.Integer". - * - * @param value The new target object to be edited. Note that this - * object should not be modified by the PropertyEditor, rather - * the PropertyEditor should create a new object to hold any - * modified value. - */ - public void setValue(Object value) { - Object old = _widget.getText(); - if(!(value instanceof Integer)) { - value = new Integer(0); - } - - _widget.setText(value.toString()); - } - - /** - * @return The value of the property. Builtin types such as "int" will - * be wrapped as the corresponding object type such as "java.lang.Integer". - */ - public Object getValue() { - Integer retval = null; - try { - retval = new Integer(_widget.getText()); - } - catch(NumberFormatException ex) { - retval = new Integer(0); - _widget.setText(retval.toString()); - } - return retval; - } - - /** - * Set the property value by parsing a given String. May raise - * java.lang.IllegalArgumentException if either the String is - * badly formatted or if this kind of property can't be expressed - * as text. - * @param text The string to be parsed. - */ - public void setAsText(String text) { - Object old = _widget.getText(); - Integer val = null; - try { - val = new Integer(text); - } - catch(NumberFormatException ex) { - val = new Integer(0); - } - text = val.toString(); - _widget.setText(text); - } - - /** - * @return The property value as a human editable string. - *

    Returns null if the value can't be expressed - * as an editable string. - *

    If a non-null value is returned, then the PropertyEditor should - * be prepared to parse that string back in setAsText(). - */ - public String getAsText() { - return _widget.getText(); - } - - -} - - diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/ObjectPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/ObjectPropertyEditor.java deleted file mode 100644 index 4b6965da8..000000000 --- a/src/antidote/org/apache/tools/ant/gui/customizer/ObjectPropertyEditor.java +++ /dev/null @@ -1,313 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.customizer; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; -import java.lang.reflect.Method; -import javax.swing.border.BevelBorder; - -/** - * Custom property editor for generic Object types. Useful for - * complex objects where using the DynamicCustomizer may be useful. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ObjectPropertyEditor extends AbstractPropertyEditor { - /** Area for typing in the file name. */ - private JTextField _widget = null; - /** Container for the editor. */ - private JPanel _container = null; - /** The current object value. */ - private Object _value = null; - /** The editing button. */ - private JButton _button = null; - /** Flag to indicate that cancellation of editing is supported. */ - private boolean _supportCancel = true; - /** Original value. Only used if _supportCancel is true. */ - private Object _original = null; - - /** - * Default ctor. - * - */ - public ObjectPropertyEditor() { - _container = new JPanel(new BorderLayout()); - - _widget = new JTextField(25); - _widget.setEditable(false); - _widget.addFocusListener(new FocusHandler(this)); - _widget.setBorder( - BorderFactory.createBevelBorder(BevelBorder.LOWERED)); - - _container.add(_widget, BorderLayout.CENTER); - - _button = new JButton("Edit..."); - _button.addActionListener(new ActionHandler()); - _container.add(_button, BorderLayout.EAST); - } - - /** - * Get the child editing component. Uses JComponent so we can have tool - * tips, etc. - * - * @return Child editing component. - */ - protected Component getChild() { - return _container; - } - - - /** - * This method is intended for use when generating Java code to set - * the value of the property. It should return a fragment of Java code - * that can be used to initialize a variable with the current property - * value. - *

    - * Example results are "2", "new Color(127,127,34)", "Color.orange", etc. - * - * @return A fragment of Java code representing an initializer for the - * current value. - */ - public String getJavaInitializationString() { - return null; - } - - /** - * Set (or change) the object that is to be edited. Builtin types such - * as "int" must be wrapped as the corresponding object type such as - * "java.lang.Integer". - * - * @param value The new target object to be edited. Note that this - * object should not be modified by the PropertyEditor, rather - * the PropertyEditor should create a new object to hold any - * modified value. - * @exception IllegalArgumentException thrown if value can't be cloned. - */ - public void setValue(Object value) { - - if(_supportCancel && value != _value) { - try { - _value = makeClone(value); - } - catch(CloneNotSupportedException ex){ - // If cloning doesn't work then we can't support a "cancel" - // option on the editing dialog. - _supportCancel = false; - } - _original = value; - } - - _value = value; - - _button.setEnabled(_value != null); - - _widget.setText(getAsString(_value)); - } - - /** - * Convert the given value into some appropriate string. NB: This method - * can be continually improved to be made more and more smart over time. - * - * @param value Value to convert. - * @return String value to display. - */ - private String getAsString(Object value) { - String retval = null; - if(value == null) { - retval = ""; - } - - // We try to be smart by querying for various, logical string - // representation of the value. - if(retval == null) { - try { - Method m = value.getClass().getMethod("getName", null); - retval = (String) m.invoke(value, null); - } - catch(Exception ex) { - } - } - if(retval == null) { - try { - Method m = value.getClass().getMethod("getLabel", null); - retval = (String) m.invoke(value, null); - } - catch(Exception ex) { - } - - } - if(retval == null) { - try { - Method m = value.getClass().getMethod("getText", null); - retval = (String) m.invoke(value, null); - } - catch(Exception ex) { - } - } - - if(retval == null) { - retval = value.toString(); - } - - if(retval.length() > 256) { - retval = retval.substring(0, 253) + "..."; - } - - return retval; - } - - /** - * Attampt to make a clone of the given value. - * - * @param value Value to clone. - * @return Cloned value, or null if value given was null. - * @exception IllegalArgumentException thrown if value can't be cloned. - */ - private Object makeClone(Object value) throws CloneNotSupportedException { - Object retval = null; - if(value != null) { - try { - Method m = value.getClass().getMethod("clone", null); - retval = m.invoke(value, null); - } - catch(Throwable ex) { - throw new CloneNotSupportedException( - "This editor only supports types that have publically " + - "accessible clone() methods.\n" + - value.getClass().getName() + - " does not have such a method."); - } - } - return retval; - } - - /** - * @return The value of the property. Builtin types - * such as "int" will be wrapped as the corresponding - * object type such as "java.lang.Integer". */ - public Object getValue() { - return _value; - } - - /** - * Set the property value by parsing a given String. May raise - * java.lang.IllegalArgumentException if either the String is - * badly formatted or if this kind of property can't be expressed - * as text. - * @param text The string to be parsed. - */ - public void setAsText(String text) throws IllegalArgumentException { - throw new IllegalArgumentException("String conversion not supported."); - } - - /** - * @return The property value as a human editable string. - *

    Returns null if the value can't be expressed - * as an editable string. - *

    If a non-null value is returned, then the PropertyEditor should - * be prepared to parse that string back in setAsText(). - */ - public String getAsText() { - return null; - } - - /** Handler for presses of the edit button. */ - private class ActionHandler implements ActionListener { - public void actionPerformed(ActionEvent e) { - if(_value == null) return; - Class type = _value.getClass(); - DynamicCustomizer c = new DynamicCustomizer(type); - c.setObject(_value); - - int returnVal = JOptionPane.OK_OPTION; - if(_supportCancel) { - returnVal = JOptionPane.showConfirmDialog( - getChild(), new JScrollPane(c), "Editing...", - JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); - } - else { - JOptionPane.showMessageDialog( - getChild(), new JScrollPane(c), "Editing...", - JOptionPane.PLAIN_MESSAGE); - returnVal = JOptionPane.OK_OPTION; - } - - if(returnVal == JOptionPane.OK_OPTION) { - Object oldValue = _original; - Object newValue = _value; - - setValue(newValue); - firePropertyChange(oldValue, newValue); - } - else { - try { - _value = makeClone(_original); - } - catch(CloneNotSupportedException ex) { - // XXX log me. Shouldn't have gotten here as - // the test for cloneability should have already been done. - ex.printStackTrace(); - _supportCancel = false; - } - } - } - } - -} - - diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/PropertiesPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/PropertiesPropertyEditor.java deleted file mode 100644 index 94743595d..000000000 --- a/src/antidote/org/apache/tools/ant/gui/customizer/PropertiesPropertyEditor.java +++ /dev/null @@ -1,308 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.customizer; - -import javax.swing.*; -import javax.swing.table.AbstractTableModel; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.BorderLayout; -import java.util.*; - -/** - * Custom property editor for the Properties class. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class PropertiesPropertyEditor extends AbstractPropertyEditor { - /** Recommended size for widgets inside a JScrollPane, as communicated - * through the setPreferredScrollableViewportSize() method. */ - protected static final Dimension VIEWPORT_SIZE = new Dimension(200, 50); - - /** Container. */ - private JPanel _widget = null; - /* The current properties being edited. */ - private Properties _properties = null; - /** The table editor for the properties. */ - private JTable _table = null; - - /** - * Default ctor. - * - */ - public PropertiesPropertyEditor() { - _widget = new JPanel(new BorderLayout()); - _widget.addFocusListener(new FocusHandler(this)); - - _table = new JTable(); - _table.setPreferredScrollableViewportSize(VIEWPORT_SIZE); - JScrollPane scroller = new JScrollPane(_table); - _widget.add(BorderLayout.CENTER, scroller); - } - - /** - * Get the child editing component. Uses JComponent so we can have tool - * tips, etc. - * - * @return Child editing component. - */ - protected Component getChild() { - return _widget; - } - - /** - * This method is intended for use when generating Java code to set - * the value of the property. It should return a fragment of Java code - * that can be used to initialize a variable with the current property - * value. - *

    - * Example results are "2", "new Color(127,127,34)", "Color.orange", etc. - * - * @return A fragment of Java code representing an initializer for the - * current value. - */ - public String getJavaInitializationString() { - return "new Properties()"; - } - - /** - * Set (or change) the object that is to be edited. Builtin types such - * as "int" must be wrapped as the corresponding object type such as - * "java.lang.Integer". - * - * @param value The new target object to be edited. Note that this - * object should not be modified by the PropertyEditor, rather - * the PropertyEditor should create a new object to hold any - * modified value. - */ - public void setValue(Object value) { - if(value == null) { - value = new Properties(); - } - - if(!(value instanceof Properties)) { - throw new IllegalArgumentException( - value.getClass().getName() + " is not of type Properties."); - } - - Object old = _properties; - _properties = (Properties) ((Properties) value).clone(); - - PropertiesTableModel model = new PropertiesTableModel(); - _table.setModel(model); - _table.clearSelection(); - } - - /** - * @return The value of the property. Builtin types - * such as "int" will be wrapped as the corresponding - * object type such as "java.lang.Integer". - */ - public Object getValue() { - return _properties; - } - - /** - * Set the property value by parsing a given String. May raise - * java.lang.IllegalArgumentException if either the String is - * badly formatted or if this kind of property can't be expressed - * as text. - * @param text The string to be parsed. - */ - public void setAsText(String text) throws IllegalArgumentException { - throw new IllegalArgumentException("Cannot be expressed as a String"); - } - - /** - * @return The property value as a human editable string. - *

    Returns null if the value can't be expressed - * as an editable string. - *

    If a non-null value is returned, then the PropertyEditor should - * be prepared to parse that string back in setAsText(). - */ - public String getAsText() { - return null; - } - - /** Table model view of the Properties object. */ - private class PropertiesTableModel extends AbstractTableModel { - private static final int NAME = 0; - private static final int VALUE = 1; - - private List _keys = null; - - public PropertiesTableModel() { - // We need to store the property keys in an array - // so that the ordering is preserved. - _keys = new ArrayList(_properties.keySet()); - Collections.sort(_keys); - } - - /** - * Get the number of rows. - * - * @return Number of rows. - */ - public int getRowCount() { - return _properties.size() + 1; - } - - /** - * Get the number of columns. - * - * @return 2 - */ - public int getColumnCount() { - return 2; - } - - /** - * Get the editing and display class of the given column. - * - * @return String.class - */ - public Class getColumnClass(int column) { - return String.class; - } - - /** - * Get the header name of the column. - * - * @param column Column index. - * @return Name of the column. - */ - public String getColumnName(int column) { - // XXX fix me. - return column == NAME ? "Name" : "Value"; - } - - /** - * Determine if the given cell is editable. - * - * @param row Cell row. - * @param column Cell column. - * @return true - */ - public boolean isCellEditable(int row, int column) { - return true; - } - - /** - * Get the object at the given table coordinates. - * - * @param row Table row. - * @param column Table column. - * @return Object at location, or null if none. - */ - public Object getValueAt(int row, int column) { - if(row < _properties.size()) { - switch(column) { - case NAME: - return _keys.get(row); - case VALUE: - return _properties.getProperty((String)_keys.get(row)); - } - } - return null; - } - /** - * Set the table value at the given location. - * - * @param value Value to set. - * @param row Row. - * @param column Column. - */ - public void setValueAt(Object value, int row, int column) { - String k = null; - String v = null; - - String currKey = (String) getValueAt(row, NAME); - switch(column) { - case NAME: - k = String.valueOf(value); - if(row < _keys.size()) { - _keys.set(row, k); - } - else { - _keys.add(k); - } - String currValue = null; - if(currKey != null) { - currValue = _properties.getProperty(currKey); - _properties.remove(currKey); - } - v = currValue == null ? "" : currValue; - break; - case VALUE: - v = String.valueOf(value); - k = currKey; - if(k == null || k.length() == 0) { - k = "key-for-" + v; - } - break; - } - - if(k.length() > 0) { - _properties.setProperty(k, v); - } - - fireTableRowsUpdated(row, row); - // Fire change in outer class. - firePropertyChange(null, _properties); - } - } -} - - diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/StringArrayPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/StringArrayPropertyEditor.java deleted file mode 100644 index fa17dfe23..000000000 --- a/src/antidote/org/apache/tools/ant/gui/customizer/StringArrayPropertyEditor.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.customizer; - -import javax.swing.*; -import javax.swing.border.BevelBorder; -import java.awt.Component; -import java.util.StringTokenizer; - -/** - * Custom property editor for String arrays. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class StringArrayPropertyEditor extends AbstractPropertyEditor { - private JTextField _widget = null; - - /** - * Default ctor. - * - */ - public StringArrayPropertyEditor() { - _widget = new JTextField() ; - _widget.setBorder( - BorderFactory.createBevelBorder(BevelBorder.LOWERED)); - _widget.addFocusListener(new FocusHandler(this)); - } - - /** - * Get the child editing component. Uses JComponent so we can have tool - * tips, etc. - * - * @return Child editing component. - */ - protected Component getChild() { - return _widget; - } - - /** - * This method is intended for use when generating Java code to set - * the value of the property. It should return a fragment of Java code - * that can be used to initialize a variable with the current property - * value. - *

    - * Example results are "2", "new Color(127,127,34)", "Color.orange", etc. - * - * @return A fragment of Java code representing an initializer for the - * current value. - */ - public String getJavaInitializationString() { - return getAsText(); - } - - /** - * Set (or change) the object that is to be edited. Builtin types such - * as "int" must be wrapped as the corresponding object type such as - * "java.lang.Integer". - * - * @param value The new target object to be edited. Note that this - * object should not be modified by the PropertyEditor, rather - * the PropertyEditor should create a new object to hold any - * modified value. - */ - public void setValue(Object value) { - if(value == null) { - value = new String[0]; - } - if(!(value instanceof String[])) { - throw new IllegalArgumentException( - "Value must be of type String[]."); - } - String old = _widget.getText(); - - String[] vals = (String[]) value; - StringBuffer buf = new StringBuffer(); - - for(int i = 0; i < vals.length; i++) { - buf.append(vals[i]); - if(i < vals.length - 1) { - buf.append(", "); - } - } - _widget.setText(buf.toString()); - } - - /** - * @return The value of the property. Builtin types such as "int" will - * be wrapped as the corresponding object type such as "java.lang.Integer". - */ - public Object getValue() { - String vals = _widget.getText(); - StringTokenizer tok = new StringTokenizer(vals,","); - String[] retval = new String[tok.countTokens()]; - for(int i = 0; i < retval.length; i++) { - retval[i] = tok.nextToken().trim(); - } - - return retval; - } - - /** - * Set the property value by parsing a given String. May raise - * java.lang.IllegalArgumentException if either the String is - * badly formatted or if this kind of property can't be expressed - * as text. - * @param text The string to be parsed. - */ - public void setAsText(String text) throws IllegalArgumentException { - Object old = _widget.getText(); - _widget.setText(text); - } - - /** - * @return The property value as a human editable string. - *

    Returns null if the value can't be expressed - * as an editable string. - *

    If a non-null value is returned, then the PropertyEditor should - * be prepared to parse that string back in setAsText(). - */ - public String getAsText() { - return _widget.getText(); - } - - -} - - diff --git a/src/antidote/org/apache/tools/ant/gui/customizer/StringPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/customizer/StringPropertyEditor.java deleted file mode 100644 index 00b756298..000000000 --- a/src/antidote/org/apache/tools/ant/gui/customizer/StringPropertyEditor.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.customizer; - -import javax.swing.*; -import java.awt.Component; -import javax.swing.border.BevelBorder; - -/** - * Custom property editor for string types. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class StringPropertyEditor extends AbstractPropertyEditor { - private JTextArea _widget = null; - - /** - * Default ctor. - * - */ - public StringPropertyEditor() { - _widget = new JTextArea() { - public boolean isManagingFocus() { - return false; - } - }; - - _widget.setLineWrap(true); - _widget.addFocusListener(new FocusHandler(this)); - _widget.setBorder( - BorderFactory.createBevelBorder(BevelBorder.LOWERED)); - } - - /** - * Get the child editing component. Uses JComponent so we can have tool - * tips, etc. - * - * @return Child editing component. - */ - protected Component getChild() { - return _widget; - } - - /** - * This method is intended for use when generating Java code to set - * the value of the property. It should return a fragment of Java code - * that can be used to initialize a variable with the current property - * value. - *

    - * Example results are "2", "new Color(127,127,34)", "Color.orange", etc. - * - * @return A fragment of Java code representing an initializer for the - * current value. - */ - public String getJavaInitializationString() { - return getAsText(); - } - - /** - * Set (or change) the object that is to be edited. Builtin types such - * as "int" must be wrapped as the corresponding object type such as - * "java.lang.Integer". - * - * @param value The new target object to be edited. Note that this - * object should not be modified by the PropertyEditor, rather - * the PropertyEditor should create a new object to hold any - * modified value. - */ - public void setValue(Object value) { - if(value == null) { - value = ""; - } - - Object old = _widget.getText(); - _widget.setText(String.valueOf(value)); - } - - /** - * @return The value of the property. Builtin types - * such as "int" will be wrapped as the corresponding - * object type such as "java.lang.Integer". */ - public Object getValue() { - String retval = _widget.getText(); - return retval; - } - - /** - * Set the property value by parsing a given String. May raise - * java.lang.IllegalArgumentException if either the String is - * badly formatted or if this kind of property can't be expressed - * as text. - * @param text The string to be parsed. - */ - public void setAsText(String text) throws IllegalArgumentException { - Object old = _widget.getText(); - _widget.setText(text); - } - - /** - * @return The property value as a human editable string. - *

    Returns null if the value can't be expressed - * as an editable string. - *

    If a non-null value is returned, then the PropertyEditor should - * be prepared to parse that string back in setAsText(). - */ - public String getAsText() { - return _widget.getText(); - } - - -} - - diff --git a/src/antidote/org/apache/tools/ant/gui/event/AntBuildEvent.java b/src/antidote/org/apache/tools/ant/gui/event/AntBuildEvent.java deleted file mode 100644 index 29828d45b..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/AntBuildEvent.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.BuildEvent; -import org.apache.tools.ant.gui.util.StackFrame; -import org.apache.tools.ant.gui.command.Command; -import org.apache.tools.ant.gui.command.NoOpCmd; -import org.apache.tools.ant.gui.core.AppContext; -import java.util.EventObject; - -/** - * Wrapper event for the events generated during an Ant build. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class AntBuildEvent extends AntEvent { - - /** The original event we are wrapping. */ - private BuildEvent _buildEvent = null; - /** The type of event we are wrapping. */ - private BuildEventType _type = null; - - /** - * Standard ctor. - * - * @param context application context. - */ - public AntBuildEvent(AppContext context, - BuildEvent buildEvent, BuildEventType type) { - super(context); - _buildEvent = buildEvent; - _type = type; - - if(_buildEvent == null || _type == null) { - throw new IllegalArgumentException("Null parameter passed"); - } - } - - /** - * Get the wrapped build event. - * - * @return Build event. - */ - public BuildEvent getEvent() { - return _buildEvent; - } - - /** - * Get the build event type. - * - * @return Event type. - */ - public BuildEventType getType() { - return _type; - } - - /** - * Create a string representation of this. - * - * @return String representation. - */ - public String toString() { - StringBuffer buf = new StringBuffer(); - - if(_buildEvent.getMessage() != null) { - buf.append(_buildEvent.getMessage()); - buf.append('\n'); - } - - if(_buildEvent.getException() != null) { - buf.append(StackFrame.toString(_buildEvent.getException())); - } - - return buf.toString(); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/AntEvent.java b/src/antidote/org/apache/tools/ant/gui/event/AntEvent.java deleted file mode 100644 index eb0873e19..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/AntEvent.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.command.Command; -import org.apache.tools.ant.gui.command.NoOpCmd; -import org.apache.tools.ant.gui.core.AppContext; -import java.util.EventObject; - -/** - * Base class for all Ant specific events. Details TBD. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public abstract class AntEvent extends EventObject { - - /** Flag indicating that the event has been cancelled. */ - private boolean _cancelled = false; - - /** - * Standard ctor. - * - * @param context application context. - */ - protected AntEvent(AppContext context) { - super(context); - } - - /** - * Get the application context. - * - * @return Application context. - */ - protected AppContext getContext() { - return (AppContext) getSource(); - } - - - /** - * Override to create the appropriate default response - * command to this event. - * - * @return Command representing an appropriate response to this event. - */ - public Command createDefaultCmd() { - return new NoOpCmd(getContext()); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/BuildEventType.java b/src/antidote/org/apache/tools/ant/gui/event/BuildEventType.java deleted file mode 100644 index f04e04e23..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/BuildEventType.java +++ /dev/null @@ -1,208 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.BuildListener; -import org.apache.tools.ant.BuildEvent; -import java.lang.reflect.Method; - -/** - * Enumeration class of the different contexts in which Ant will generate - * a BuildEvent. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class BuildEventType { - /** Enum value. */ - private int _value = 0; - - /** - * Standard ctor. - * - * @param value Index value. - */ - private BuildEventType(int value) { - _value = value; - } - - /** - * Get the enumeration value. - * - * @return - */ - public int getValue() { - return _value; - } - - /** - * Pseudo abstract method for firing an event to a build listener - * based on our enumation value. I overridded by the individual instances. - * - * @param e Event to fire. - * @param l Listener to send event to. - */ - public void fireEvent(BuildEvent e, BuildListener l) { - try { - Method method = - BuildListener.class.getMethod(_methodNameMap[_value], - _listenerMethodParam); - method.invoke(l, new Object[] { e }); - } - catch(Exception ex) { - // XXX log me. - ex.printStackTrace(); - } - } - - /** - * Get the enumeration value with the given index value. - * - * @param value Index value. - * @return Enumeration value. - */ - public static BuildEventType fromInt(int value) { - return _objectMap[value]; - } - - /** - * Determine if the given object is logically equal to this one. - * - * @param o Object to compare to - * @return True if equal, false otherwise. - */ - public boolean equals(Object o) { - if(o instanceof BuildEventType) { - return ((BuildEventType)o)._value == _value; - } - return false; - } - /** - * Generate a hash value. - * - * @return Hash value. - */ - public int hashValue() { - return _value; - } - - /** - * Provide a string representation of this. - * - * @return String representation. - */ - public String toString() { - return _stringMap[_value]; - } - - - /* Index values. */ - public static final int BUILD_STARTED_VAL = 0; - public static final int BUILD_FINISHED_VAL = 1; - public static final int TARGET_STARTED_VAL = 2; - public static final int TARGET_FINISHED_VAL = 3; - public static final int TASK_STARTED_VAL = 4; - public static final int TASK_FINISHED_VAL = 5; - public static final int MESSAGE_LOGGED_VAL = 6; - - /* Enumeration values. */ - public static final BuildEventType BUILD_STARTED = - new BuildEventType(BUILD_STARTED_VAL); - public static final BuildEventType BUILD_FINISHED = - new BuildEventType(BUILD_FINISHED_VAL); - public static final BuildEventType TARGET_STARTED = - new BuildEventType(TARGET_STARTED_VAL); - public static final BuildEventType TARGET_FINISHED = - new BuildEventType(TARGET_FINISHED_VAL); - public static final BuildEventType TASK_STARTED = - new BuildEventType(TASK_STARTED_VAL); - public static final BuildEventType TASK_FINISHED = - new BuildEventType(TASK_FINISHED_VAL); - public static final BuildEventType MESSAGE_LOGGED = - new BuildEventType(MESSAGE_LOGGED_VAL); - - /** Index to object mapping. */ - private static final BuildEventType[] _objectMap = { - BUILD_STARTED, - BUILD_FINISHED, - TARGET_STARTED, - TARGET_FINISHED, - TASK_STARTED, - TASK_FINISHED, - MESSAGE_LOGGED - }; - - /** String map. XXX needs to be localized. */ - private static final String[] _stringMap = { - "Build Started", - "Build Finished", - "Target Started", - "Target Finished", - "Task Started", - "Task Finished", - "Message Logged" - }; - - /** Map of corresponding method names in the BuildListener intereface. */ - private static final String[] _methodNameMap = { - "buildStarted", - "buildFinished", - "targetStarted", - "targetFinished", - "taskStarted", - "taskFinished", - "messageLogged" - }; - - private static final Class[] _listenerMethodParam = { BuildEvent.class }; -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/BuildFinishedEvent.java b/src/antidote/org/apache/tools/ant/gui/event/BuildFinishedEvent.java deleted file mode 100644 index 110f7d53d..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/BuildFinishedEvent.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.BuildEvent; -import org.apache.tools.ant.gui.core.AppContext; - - -/** - * Build finished. This event is a duplication of the information posted as - * an AntBuildEvent when a build finishes. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class BuildFinishedEvent extends AntEvent { - - /** The originating event from Ant. */ - private BuildEvent _orig = null; - - /** - * Standard ctor. - * - * @param context The application context. - * @param orig The originating event. - */ - public BuildFinishedEvent(AppContext context, BuildEvent orig) { - super(context); - _orig = orig; - } - - /** - * Get the originating event. - * - * @return Originating event. - */ - public BuildEvent getBuildEvent() { - return _orig; - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/BuildStartedEvent.java b/src/antidote/org/apache/tools/ant/gui/event/BuildStartedEvent.java deleted file mode 100644 index aa5a12326..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/BuildStartedEvent.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.BuildEvent; -import org.apache.tools.ant.gui.core.AppContext; - - -/** - * Build started. This event is a duplication of the information posted as - * an AntBuildEvent when a build starts. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class BuildStartedEvent extends AntEvent { - - /** The originating event from Ant. */ - private BuildEvent _orig = null; - - /** - * Standard ctor. - * - * @param context The application context. - * @param orig The originating event. - */ - public BuildStartedEvent(AppContext context, BuildEvent orig) { - super(context); - _orig = orig; - } - - /** - * Get the originating event. - * - * @return Originating event. - */ - public BuildEvent getBuildEvent() { - return _orig; - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/BusFilter.java b/src/antidote/org/apache/tools/ant/gui/event/BusFilter.java deleted file mode 100644 index 9cd182768..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/BusFilter.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import java.util.EventObject; - - -/** - * Interace for determining whether an event should be given to a BusMember - * instance. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public interface BusFilter { - /** - * Determines if the given event should be accepted. - * - * @param event Event to test. - * @return True if event should be given to BusMember, false otherwise. - */ - boolean accept(EventObject event); -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/BusMember.java b/src/antidote/org/apache/tools/ant/gui/event/BusMember.java deleted file mode 100644 index e2fd1275e..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/BusMember.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; - -import java.util.EventObject; - -/** - * Interface for classes that want to be a member of the EventBus. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public interface BusMember { - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - BusFilter getBusFilter(); - - /** - * Called when an event is to be posed to the member. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - boolean eventPosted(EventObject event); - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/ConsoleNotVisibleEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ConsoleNotVisibleEvent.java deleted file mode 100644 index 60d69f67d..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/ConsoleNotVisibleEvent.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; - -import org.apache.tools.ant.gui.core.*; - -/** - * Event fired when the console pane is not visible - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class ConsoleNotVisibleEvent extends AntEvent { - /** - * Standard ctor. - * - * @param context application context. - */ - public ConsoleNotVisibleEvent(AppContext context) { - super(context); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/ConsoleVisibleEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ConsoleVisibleEvent.java deleted file mode 100644 index 5b0f70f10..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/ConsoleVisibleEvent.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; - -import org.apache.tools.ant.gui.core.*; - -/** - * Event fired when the console pane is visible - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class ConsoleVisibleEvent extends AntEvent { - /** - * Standard ctor. - * - * @param context application context. - */ - public ConsoleVisibleEvent(AppContext context) { - super(context); - } -} \ No newline at end of file diff --git a/src/antidote/org/apache/tools/ant/gui/event/DeleteElementEvent.java b/src/antidote/org/apache/tools/ant/gui/event/DeleteElementEvent.java deleted file mode 100644 index 1803e6cba..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/DeleteElementEvent.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import org.apache.tools.ant.gui.acs.ACSElement; - -/** - * FIX UP Nick - */ -public class DeleteElementEvent extends AntEvent { - - ACSElement _element = null; - - /** - * Standard ctor. - * - * @param context application context. - */ - public DeleteElementEvent(AppContext context,ACSElement e) { - super(context); - if(e == null) { - throw new IllegalArgumentException("A deleted element can't be null."); - } - _element = e; - } - - /** - * Get the newly added project. - * - * @return New project. - */ - public ACSElement getDeletedElement() { - return _element; - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/DtdDefinedElementSelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/DtdDefinedElementSelectionEvent.java deleted file mode 100644 index 73f3d7336..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/DtdDefinedElementSelectionEvent.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.acs.ACSElement; -import org.apache.tools.ant.gui.acs.ACSDtdDefinedElement; -import org.apache.tools.ant.gui.core.AppContext; - -/** - * Event indicating that a DtdDefined element was selected. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class DtdDefinedElementSelectionEvent extends ElementSelectionEvent { - /** - * Standard ctor. - * - * @param context application context. - * @param selected the selected Elements. - */ - public DtdDefinedElementSelectionEvent(AppContext context,ACSElement[] selected) { - super(context, selected); - } - - /** - * Get the selected properties. - */ - public ACSDtdDefinedElement[] getSelectedProperties() { - return (ACSDtdDefinedElement[]) getFiltered(ACSDtdDefinedElement.class); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/ElementSelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ElementSelectionEvent.java deleted file mode 100644 index 0aa5faeee..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/ElementSelectionEvent.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.acs.*; -import org.apache.tools.ant.gui.command.Command; -import org.apache.tools.ant.gui.command.DisplayErrorCmd; -import org.apache.tools.ant.gui.core.AppContext; - -import java.lang.reflect.Array; -import java.util.*; - -/** - * Event indicating that the current set of selected targets has changed. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ElementSelectionEvent extends AntEvent { - - /** New set of selected elements. */ - private ACSElement[] _selected = null; - - /** - * Standard ctor. - * - * @param context application context. - * @param selected the selected Elements. - */ - protected ElementSelectionEvent(AppContext context, - ACSElement[] selected) { - super(context); - _selected = selected; - } - - /** - * Current set of selected elements. - * - * @return selected element set. - */ - public ACSElement[] getSelectedElements() { - return _selected; - } - - - /** - * Get only those events of a specific type. - * - * @param type Specific type to get values for, or null if none. - */ - protected ACSElement[] getFiltered(Class type) { - ACSElement[] retval = null; - List vals = new ArrayList(1); - if(_selected != null) { - for(int i = 0; i < _selected.length; i++) { - if(type.isInstance(_selected[i])) { - vals.add(_selected[i]); - } - } - } - - if(vals.size() > 0) { - retval = (ACSElement[]) Array.newInstance(type, vals.size()); - vals.toArray(retval); - } - return retval; - } - - /** - * Factory method for creating the appropriate specialization of this - * for communicating an element selection. - * - * @param context App context. - * @param selected The set of selected events. The last elemetn in the - * array is used to determine the specialization of this - * that should be returned. - * @return Event to communicate selection to. - */ - public static ElementSelectionEvent createEvent(AppContext context, - ACSElement[] selected) { - ElementSelectionEvent retval = null; - - if(selected != null && selected.length > 0) { - Class type = selected[selected.length - 1].getClass(); - if(ACSTargetElement.class.isAssignableFrom(type)) { - retval = new TargetSelectionEvent(context, selected); - } - else if(ACSTaskElement.class.isAssignableFrom(type)) { - retval = new TaskSelectionEvent(context, selected); - } - else if(ACSPropertyElement.class.isAssignableFrom(type)) { - retval = new PropertySelectionEvent(context, selected); - } - else if(ACSProjectElement.class.isAssignableFrom(type)) { - retval = new ProjectSelectedEvent( - context, (ACSProjectElement) selected[0]); - } - else if(ACSDtdDefinedElement.class.isAssignableFrom(type)) { - retval = new DtdDefinedElementSelectionEvent( - context, selected); - } - else { - // For elements without a specific event - // type just send and instance of this. - retval = new ElementSelectionEvent(context, selected); - } - } - else { - retval = new NullSelectionEvent(context); - } - - return retval; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/ErrorEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ErrorEvent.java deleted file mode 100644 index dba93c9fe..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/ErrorEvent.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.command.DisplayErrorCmd; -import org.apache.tools.ant.gui.command.Command; -import org.apache.tools.ant.gui.util.StackFrame; - - -/** - * Event fired whenever there is an error of any sort. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ErrorEvent extends AntEvent { - /** Text description of error. */ - private String _message = null; - /** Throwable associated with the error. */ - private Throwable _ex = null; - - /** - * Standard constructor. - * - * @param context Application context. - * @param message Message about the error. - * @param ex Throwable associated with the error. - */ - public ErrorEvent(AppContext context, String message, Throwable ex) { - super(context); - _message = message; - _ex = ex; - } - - /** - * Message centric constructor. - * - * @param context Application context. - * @param message Message to display. - */ - public ErrorEvent(AppContext context, String message) { - this(context, message, null); - } - - /** - * Throwable centric constructor. - * - * @param context Application context. - * @param ex Throwable behind the error. - */ - public ErrorEvent(AppContext context, Throwable ex) { - this(context, ex.getMessage(), ex); - } - - /** - * Create the appropriate response command to this event. - * - * @return Command representing an appropriate response to this event. - */ - public Command createDefaultCmd() { - Command retval = new DisplayErrorCmd(getContext(), _message, _ex); - return retval; - } - - /** - * Create human readable version of this. - * - * @return String representation.a - */ - public String toString() { - StringBuffer buf = new StringBuffer("Error: "); - - if(_message != null) { - buf.append(_message); - buf.append('\n'); - } - if(_ex != null) { - buf.append(StackFrame.toString(_ex)); - } - return buf.toString(); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/EventBus.java b/src/antidote/org/apache/tools/ant/gui/event/EventBus.java deleted file mode 100644 index d37f83954..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/EventBus.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; - -import java.util.*; -import javax.swing.SwingUtilities; -/** - * An event "bus" providing a centralized place for posting - * and recieving generic application events. To receive events a class must - * implement the "BusMember" interface. When registering as a member, an - * "interrupt level" is provided, which specifies a relative ordering level - * that the member wishes to receive events for. By convention, a member - * can be registered at the MONITORING, VETOING, or RESPONDING levels, which - * correspond to recieving events first to receiving events last. If a member - * receives an event, the event is of type AntEvent, and the member calls the - * AntEvent.cancel() method, the event is not then delivered - * to subsequent members. Members also indicate interest in an event - * by providing an instance of the BusFilter interface.
    - * - * NB: This class is overly simple right now, but will eventually - * be expanded to do better event filtering, interrupt levels, etc. - * - * @version $Revision$ - * @author Simeon Fitch -*/ -public class EventBus { - /** The default "vetoing" interrupt level, used by bus members - * whose role is to veto request events or otherwise handle an - * event before it is processed by the default handler. */ - public static final int VETOING = 1; - /** The default "monitoring" interrupt level, used by members who - * are only listeners/monitors of events. */ - public static final int MONITORING = 5; - /** The default "responding" interrupt level, for members who service - * events in a default manner. */ - public static final int RESPONDING = 10; - - /** The maximum valid interrupt value. */ - public static final int MAX_INTERRUPT = 15; - - /** Set of bus members, with a list for each interrupt level. */ - private List[] _memberSet = new List[MAX_INTERRUPT]; - - /** - * Default ctor. - * - */ - public EventBus() { - } - - /** - * Add a member to the bus. - * - * @param intLevel Interrupt level. - * @param member Member to add. - */ - public void addMember(int intLevel, BusMember member) { - if(intLevel < 1 || intLevel > MAX_INTERRUPT) { - throw new IllegalArgumentException( - "Invalid interrupt level: " + intLevel); - } - synchronized(_memberSet) { - List list = _memberSet[intLevel - 1]; - if(list == null) { - list = new LinkedList(); - _memberSet[intLevel - 1] = list; - } - list.add(member); - } - } - - - /** - * Remove a member from the bus. - * - * @param member Member to remove. - */ - public void removeMember(BusMember member) { - synchronized(_memberSet) { - // XXX lets hope we don't do too much removing. Yuck... - for(int i = 0; i < _memberSet.length; i++) { - if(_memberSet[i] == null) continue; - _memberSet[i].remove(member); - } - } - } - - /** - * Method used for sending an event to the bus. - * - * @param event Event to post. - */ - public void postEvent(EventObject event) { - EventDispatcher disp = new EventDispatcher(event); - - // Events need to be dispatched on the AWTEvent thread, as the UI - // components assume that. - if(SwingUtilities.isEventDispatchThread()) { - disp.run(); - } - else { - SwingUtilities.invokeLater(disp); - } - } - - /** Class that performs the duty of dispatching events to the members. */ - private class EventDispatcher implements Runnable { - /** Event to dispatch. */ - private EventObject _event = null; - - /** - * Standard ctor. - * - * @param event Event to dispatch. - */ - public EventDispatcher(EventObject event) { - _event = event; - } - - /** - * Perform dispatching. - * - */ - public void run() { - synchronized(_memberSet) { - outerLoop: - for(int i = 0; i < _memberSet.length; i++) { - if(_memberSet[i] == null) continue; - - Iterator it = _memberSet[i].iterator(); - while(it.hasNext()) { - BusMember next = (BusMember) it.next(); - BusFilter filter = next.getBusFilter(); - if(filter == null || filter.accept(_event)) { - // If false then callee canceled the event - // propogation. - if(!next.eventPosted(_event)) { - break outerLoop; - } - } - } - } - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewBaseElementEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewBaseElementEvent.java deleted file mode 100644 index a45113c5f..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/NewBaseElementEvent.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import org.apache.tools.ant.gui.acs.ACSElement; - -/** - * Event indicating that a new node was added. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class NewBaseElementEvent extends AntEvent implements NewElementEvent { - - ACSElement _element = null; - - /** - * Standard ctor. - * - * @param context application context. - */ - public NewBaseElementEvent(AppContext context,ACSElement e) { - super(context); - if(e == null) { - throw new IllegalArgumentException("A new element can't be null."); - } - _element = e; - } - - /** - * Get the element. - * - * @return New project. - */ - public ACSElement getNewElement() { - return _element; - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewElementEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewElementEvent.java deleted file mode 100644 index 2b8474ade..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/NewElementEvent.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.acs.ACSElement; -/** - * Tag interface for indicating that an event is related to creating new - * build definition elements. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public interface NewElementEvent { - /** - * Get the element that has been added. - * - * @return New element. - */ - ACSElement getNewElement(); -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewProjectEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewProjectEvent.java deleted file mode 100644 index 8515110eb..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/NewProjectEvent.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import org.apache.tools.ant.gui.acs.ACSElement; - -/** - * Event providing notification that a new project has been - * created or opened and selected. NB: Still not convinced that - * subclassing ProjectSelectedEvent is the correct thing to - * do, but it saves some time right now. It basically - * assumes that any new project added to the project manager - * is then selected. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NewProjectEvent extends ProjectSelectedEvent - implements NewElementEvent { - - /** - * Standard ctor. - * - * @param context application context. - */ - public NewProjectEvent( - AppContext context, ACSProjectElement project) { - super(context, project); - if(project == null) { - throw new IllegalArgumentException("A new project can't be null."); - } - } - - /** - * Get the newly added project. - * - * @return New project. - */ - public ACSElement getNewElement() { - return getSelectedProject(); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java deleted file mode 100644 index 08a169dd4..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/NewPropertyEvent.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.acs.ACSElement; -import org.apache.tools.ant.gui.acs.ACSPropertyElement; -import org.apache.tools.ant.gui.core.AppContext; - -/** - * Event fired when a new property is created. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NewPropertyEvent extends PropertySelectionEvent - implements NewElementEvent { - - /** - * Standard ctor. - * - * @param context application context. - * @param prop the new property. - */ - public NewPropertyEvent(AppContext context, - ACSPropertyElement prop) { - super(context, new ACSElement[] { prop }); - if(prop == null) { - throw new IllegalArgumentException( - "A new property can't be null."); - } - } - - /** - * Get the newly added task. - * - * @return New task. - */ - public ACSElement getNewElement() { - return getSelectedProperties()[0]; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewTargetEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewTargetEvent.java deleted file mode 100644 index 75a099a7c..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/NewTargetEvent.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.acs.ACSElement; -import org.apache.tools.ant.gui.acs.ACSTargetElement; -import org.apache.tools.ant.gui.core.AppContext; - -/** - * Event fired when a new target is created. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NewTargetEvent extends TargetSelectionEvent - implements NewElementEvent { - - /** - * Standard ctor. - * - * @param context application context. - * @param target the new target. - */ - public NewTargetEvent(AppContext context, - ACSTargetElement target) { - super(context, new ACSElement[] { target }); - if(target == null) { - throw new IllegalArgumentException("A new target can't be null."); - } - } - - /** - * Get the newly added target. - * - * @return New target. - */ - public ACSElement getNewElement() { - return getSelectedTargets()[0]; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java deleted file mode 100644 index 72a20ee03..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/NewTaskEvent.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.acs.ACSElement; -import org.apache.tools.ant.gui.acs.ACSTaskElement; -import org.apache.tools.ant.gui.core.AppContext; - -/** - * Event fired when a new target is created. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NewTaskEvent extends TaskSelectionEvent - implements NewElementEvent { - - /** - * Standard ctor. - * - * @param context application context. - * @param target the new task. - */ - public NewTaskEvent(AppContext context, - ACSTaskElement task) { - super(context, new ACSElement[] { task }); - if(task == null) { - throw new IllegalArgumentException("A new task can't be null."); - } - } - - /** - * Get the newly added task. - * - * @return New task. - */ - public ACSElement getNewElement() { - return getSelectedTasks()[0]; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/NullSelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/NullSelectionEvent.java deleted file mode 100644 index 7439fd8dc..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/NullSelectionEvent.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.acs.ACSElement; -import org.apache.tools.ant.gui.core.AppContext; - -/** - * Event fired when no elements are selected. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class NullSelectionEvent extends ElementSelectionEvent { - /** - * Standard ctor. - * - * @param context application context. - * @param selected the selected Elements. - */ - public NullSelectionEvent(AppContext context) { - super(context, null); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/OpenRequestEvent.java b/src/antidote/org/apache/tools/ant/gui/event/OpenRequestEvent.java deleted file mode 100644 index 4f3cd60c4..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/OpenRequestEvent.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.command.Command; -import org.apache.tools.ant.gui.command.LoadFileCmd; - -import java.io.File; -/** - * Event for requesting that the given file be opened. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class OpenRequestEvent extends AntEvent { - /** The file to open. */ - private File _file = null; - - /** - * Standard ctor. - * - * @param context Application context. - * @param file File to be opened. - */ - public OpenRequestEvent(AppContext context, File file) { - super(context); - _file = file; - } - - /** - * Create the appropriate response command to this event, which is to - * load in a build file. - * - * @return Load command. - */ - public Command createDefaultCmd() { - LoadFileCmd load = new LoadFileCmd(getContext()); - load.setFile(_file); - return load; - } -} - - diff --git a/src/antidote/org/apache/tools/ant/gui/event/ProjectClosedEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ProjectClosedEvent.java deleted file mode 100644 index a157cbd28..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/ProjectClosedEvent.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.core.AppContext; - - -/** - * Provides notification that the project was closed. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ProjectClosedEvent extends AntEvent { - - /** - * Standard ctor. - * - * @param context The application context. - */ - public ProjectClosedEvent(AppContext context) { - super(context); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/ProjectSelectedEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ProjectSelectedEvent.java deleted file mode 100644 index 86dab9c51..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/ProjectSelectedEvent.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import org.apache.tools.ant.gui.acs.ACSElement; - -/** - * Event providing notification of a change in the currently selected project. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ProjectSelectedEvent extends ElementSelectionEvent { - /** The selected project. */ - private ACSProjectElement _project = null; - - /** - * Standard ctor. - * - * @param context application context. - */ - public ProjectSelectedEvent( - AppContext context, ACSProjectElement project) { - super(context, new ACSElement[] { project }); - _project = project; - } - - /** - * Get the selected project, or null if there are no - * open projects. - * - * @return Selected project, or null if no projects selected. - */ - public ACSProjectElement getSelectedProject() { - return _project; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/PropertySelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/PropertySelectionEvent.java deleted file mode 100644 index 5d2a53276..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/PropertySelectionEvent.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.acs.ACSElement; -import org.apache.tools.ant.gui.acs.ACSPropertyElement; -import org.apache.tools.ant.gui.core.AppContext; - -/** - * Event fired when one or more tasks are selected. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class PropertySelectionEvent extends ElementSelectionEvent { - /** - * Standard ctor. - * - * @param context application context. - * @param selected the selected Elements. - */ - public PropertySelectionEvent(AppContext context, - ACSElement[] selected) { - super(context, selected); - } - - /** - * Get the selected properties. - * - */ - public ACSPropertyElement[] getSelectedProperties() { - return (ACSPropertyElement[]) getFiltered(ACSPropertyElement.class); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/RefreshDisplayEvent.java b/src/antidote/org/apache/tools/ant/gui/event/RefreshDisplayEvent.java deleted file mode 100644 index f6996d45b..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/RefreshDisplayEvent.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; - -import org.apache.tools.ant.gui.core.*; -import org.apache.tools.ant.gui.command.*; - -/** - * Request to show the console pane - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class RefreshDisplayEvent extends AntEvent { - /** - * Standard ctor. - * - * @param context application context. - */ - public RefreshDisplayEvent(AppContext context) { - super(context); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/ShowConsoleEvent.java b/src/antidote/org/apache/tools/ant/gui/event/ShowConsoleEvent.java deleted file mode 100644 index c1498ecea..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/ShowConsoleEvent.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; - -import org.apache.tools.ant.gui.core.*; -import org.apache.tools.ant.gui.command.*; - -/** - * Request to show the console pane - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class ShowConsoleEvent extends AntEvent { - /** - * Standard ctor. - * - * @param context application context. - */ - public ShowConsoleEvent(AppContext context) { - super(context); - } - - /** - * Create the appropriate response command to this event, which is to - * show the console pane. - * - * @return ShowOrHideConsoleCmd command. - */ - public Command createDefaultCmd() { - return new ShowOrHideConsoleCmd(getContext(), true); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/TargetSelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/TargetSelectionEvent.java deleted file mode 100644 index 8ae33e2a6..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/TargetSelectionEvent.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.acs.ACSElement; -import org.apache.tools.ant.gui.acs.ACSTargetElement; -import org.apache.tools.ant.gui.core.AppContext; - -/** - * Event fired when one or more targets are selected. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class TargetSelectionEvent extends ElementSelectionEvent { - /** - * Standard ctor. - * - * @param context application context. - * @param selected the selected Elements. - */ - public TargetSelectionEvent(AppContext context, - ACSElement[] selected) { - super(context, selected); - } - - /** - * Get the selected targets. - * - */ - public ACSTargetElement[] getSelectedTargets() { - return (ACSTargetElement[]) getFiltered(ACSTargetElement.class); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/event/TaskSelectionEvent.java b/src/antidote/org/apache/tools/ant/gui/event/TaskSelectionEvent.java deleted file mode 100644 index 69f703b20..000000000 --- a/src/antidote/org/apache/tools/ant/gui/event/TaskSelectionEvent.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.event; -import org.apache.tools.ant.gui.acs.ACSElement; -import org.apache.tools.ant.gui.acs.ACSTaskElement; -import org.apache.tools.ant.gui.core.AppContext; - -/** - * Event fired when one or more tasks are selected. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class TaskSelectionEvent extends ElementSelectionEvent { - /** - * Standard ctor. - * - * @param context application context. - * @param selected the selected Elements. - */ - public TaskSelectionEvent(AppContext context, - ACSElement[] selected) { - super(context, selected); - } - - /** - * Get the selected tasks. - * - */ - public ACSTaskElement[] getSelectedTasks() { - return (ACSTaskElement[]) getFiltered(ACSTaskElement.class); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/ide/EmacsNotifier.java b/src/antidote/org/apache/tools/ant/gui/ide/EmacsNotifier.java deleted file mode 100644 index 6497cc22e..000000000 --- a/src/antidote/org/apache/tools/ant/gui/ide/EmacsNotifier.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -package org.apache.tools.ant.gui.ide; - -import org.apache.tools.ant.taskdefs.ExecTask; -import org.apache.tools.ant.Project; -import java.util.StringTokenizer; -import java.io.File; - -/** - * FileErrorNotifier specialization for sending file error - * messages to emacs via the emacsclient command. This - * command must be in the runtime path of the JVM for - * it to be found. - *

    Install the notifier by running Ant as follows:
    - * - *   ant -listener net.noemis.ant.EmacsNotifier - * - * - * @version $Revision$ - * @author Simeon H.K. Fitch */ -public class EmacsNotifier extends FileErrorNotifier { - /** Command to run to communicate with emacs. */ - // XXX This should only be a default. A property should be checked - // for the actual version. Should Project.getProperty() or - // Project.getUserProperty() be used??? - private static final String EMACS = "emacsclient"; - - /** - * Called when a message has been logged indicating that - * there is an error of some sort at the given file and - * line number. Sends a message bto emacs to make emacs - * visit the file and place the mark at the source of - * the error. - * - * @param file File containing the error. - * @param lineNum Line number of error. - */ - protected void fireFileErrorNotification( - Project project, File file, int lineNum) { - // Launch our command using the built in exec support. - ExecTask exec = (ExecTask) project.createTask("exec"); - // Construct the command to communicate with emacs. - // Command has the form: - // emacsclient [-n] [--no-wait] [+LINENUMBER] FILENAME - exec.setExecutable(EMACS); - exec.createArg().setValue("-n"); - exec.createArg().setValue("--no-wait"); - exec.createArg().setValue("+" + lineNum); - exec.createArg().setValue(file.toString()); - exec.setFailonerror(false); - exec.execute(); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/ide/FileErrorNotifier.java b/src/antidote/org/apache/tools/ant/gui/ide/FileErrorNotifier.java deleted file mode 100644 index 3f35ac42c..000000000 --- a/src/antidote/org/apache/tools/ant/gui/ide/FileErrorNotifier.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -package org.apache.tools.ant.gui.ide; - -import org.apache.tools.ant.BuildListener; -import org.apache.tools.ant.BuildEvent; -import org.apache.tools.ant.Project; -import java.util.StringTokenizer; -import java.io.File; - -/** - * Abstract base class for BuildListener specializations interested - * in notification of build errors in source files. - * - * @version $Revision$ - * @author Simeon H.K. Fitch - */ -abstract class FileErrorNotifier implements BuildListener { - /** Command to run to communicate with emacs. */ - private static final String EMACS = "emacsclient"; - - /** - * Fired whenever a message is logged. Parses error messages looking - * for a filename and line number specification, which when found - * is then sent to the method fireFileErrorNotification() - * source of the error. Only the first error is processed. - * - * @param event Incoming event that is filtered for error messages. - */ - public void messageLogged(BuildEvent event) { - if(event.getPriority() == Project.MSG_ERR || - event.getPriority() == Project.MSG_WARN) { - StringTokenizer tok = new StringTokenizer(event.getMessage(), ":"); - File file = null; - int line = -1; - - if(tok.hasMoreTokens()) { - file = new File(tok.nextToken()); - if(tok.hasMoreTokens()) { - try { - line = Integer.parseInt(tok.nextToken()); - } - catch(NumberFormatException ex) { - // Allow execption to fall through as we test - // success by the value of 'line' below. - } - } - } - - // Test for successful filename and line number detection. - if(file != null && line > 0 && file.exists()) { - // Since we only want to trigger on the first error, - // remove ourself from being notified of others. - // XXX are there any reasons this should occur after - // notification? - event.getProject().removeBuildListener(this); - - // Send notification. - fireFileErrorNotification(event.getProject(), file, line); - } - } - } - - /** - * Called when a message has been logged indicating that there - * is an error of some sort at the given file and line number. - * - * @param file File containing the error. - * @param lineNum Line number of error. - */ - protected abstract void fireFileErrorNotification( - Project project, File file, int lineNum); - - // Event types that are ignored. Looks like we really need a - // BuildAdapter class... - /** Ignored */ - public void buildStarted(BuildEvent event) { - } - /** Ignored */ - public void buildFinished(BuildEvent event) { - } - /** Ignored */ - public void targetStarted(BuildEvent event) { - } - /** Ignored */ - public void targetFinished(BuildEvent event) { - } - /** Ignored */ - public void taskStarted(BuildEvent event) { - } - /** Ignored */ - public void taskFinished(BuildEvent event) { - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/TargetMonitor.java b/src/antidote/org/apache/tools/ant/gui/modules/TargetMonitor.java deleted file mode 100644 index f3d582cc3..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/TargetMonitor.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.modules; -import org.apache.tools.ant.gui.core.*; -import org.apache.tools.ant.gui.event.*; -import org.apache.tools.ant.gui.acs.ACSElement; -import org.apache.tools.ant.gui.acs.ACSTargetElement; -import org.apache.tools.ant.gui.acs.ElementTreeSelectionModel; -import javax.swing.*; -import javax.swing.plaf.ComponentUI; -import javax.swing.text.Document; -import java.awt.BorderLayout; -import java.awt.Insets; -import java.awt.Dimension; -import java.util.EventObject; - -/** - * A widget for displaying the currently selected targets. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class TargetMonitor extends AntModule { - - /** Place to display selected targets. */ - private JLabel _text = null; - - /** Default text. */ - private String _defText = null; - - /** - * Default ctor. - * - */ - public TargetMonitor() { - } - - /** - * Using the given AppContext, initialize the display. - * - * @param context Application context. - */ - public void contextualize(AppContext context) { - setContext(context); - context.getEventBus().addMember(EventBus.RESPONDING, new Handler()); - - setLayout(new BorderLayout()); - - _text = new JLabel(); - _text.setForeground(UIManager.getColor("TextField.foreground")); - add(BorderLayout.NORTH, _text); - - - _defText = context.getResources().getString(getClass(), "defText"); - setText(_defText); - } - - /** - * Set the displayed text. - * - * @param text Text to display. - */ - private void setText(String text) { - _text.setText("  " + text + ""); - } - - - /** Class for handling project events. */ - private class Handler implements BusMember { - private final Filter _filter = new Filter(); - - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - public BusFilter getBusFilter() { - return _filter; - } - - /** - * Called when an event is to be posed to the member. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - public boolean eventPosted(EventObject event) { - ElementSelectionEvent e = (ElementSelectionEvent) event; - String text = _defText; - ACSElement[] selected = e.getSelectedElements(); - - if(selected != null && selected.length > 0) { - StringBuffer buf = new StringBuffer(); - String name = null; - - for(int i = 0; i < selected.length; i++) { - if(selected[i] instanceof ACSTargetElement) { - name = ((ACSTargetElement)selected[i]).getName(); - if( buf.toString().indexOf( name ) < 0 ) { - if(buf.length() > 0) { - buf.append(", "); - } - buf.append( name ); - } - } - } - - if(buf.length() > 0) { - text = buf.toString(); - } - } - - setText(text); - - return true; - } - } - - /** Class providing filtering for project events. */ - private static class Filter implements BusFilter { - /** - * Determines if the given event should be accepted. - * - * @param event Event to test. - * @return True if event should be given to BusMember, false otherwise. - */ - public boolean accept(EventObject event) { - return event instanceof ElementSelectionEvent; - } - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/console/BuildConsole.java b/src/antidote/org/apache/tools/ant/gui/modules/console/BuildConsole.java deleted file mode 100644 index a2c1ebe08..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/console/BuildConsole.java +++ /dev/null @@ -1,356 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.modules.console; - -import org.apache.tools.ant.gui.core.AntModule; -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.*; -import javax.swing.*; -import javax.swing.plaf.ComponentUI; -import javax.swing.text.*; -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.awt.Dimension; -import java.awt.Color; -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; -import java.util.EventObject; -import java.util.Date; - -/** - * Logging console display. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class BuildConsole extends AntModule { - /** Area where messages are printed. */ - private JTextPane _text = null; - /** Selection of logging levels. */ - private JComboBox _logLevel = null; - /** Display styles. */ - private ConsoleStyleContext _styles = null; - /** ClearLog Button. */ - private JButton _clearLog = null; - - /** - * Default ctor. - */ - public BuildConsole() { - } - - - /** - * Using the given AppContext, initialize the display. - * - * @param context Application context. - */ - public void contextualize(AppContext context) { - setContext(context); - context.getEventBus().addMember(EventBus.MONITORING, new Handler()); - setLayout(new BorderLayout()); - - _styles = new ConsoleStyleContext(); - _text = new JTextPane(_styles.getStyledDocument()); - _text.setEditable(false); - JScrollPane scroller = new JScrollPane(_text); - scroller.setVerticalScrollBarPolicy( - JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); - add(BorderLayout.CENTER, scroller); - - JPanel controls = new JPanel(new FlowLayout(FlowLayout.LEFT)); - JLabel label = new JLabel( - context.getResources().getString(getClass(), "logLevel")); - controls.add(label); - _logLevel = new JComboBox(LogLevelEnum.getValues()); - _logLevel.setSelectedItem(LogLevelEnum.INFO); - controls.add(_logLevel); - - // Padding. - controls.add(Box.createHorizontalStrut(10)); - _clearLog = new JButton( - context.getResources().getString( - getClass(), "clearLog")); - _clearLog.addActionListener(new ActionHandler()); - controls.add(_clearLog); - - add(BorderLayout.NORTH, controls); - - /** Anonymous class to respond to resize envents and - * post ConsoleNotVisibleEvent or - * ConsoleVisibleEvent events. - */ - addComponentListener(new ComponentAdapter() { - public void componentResized(ComponentEvent e) { - AppContext c = BuildConsole.this.getContext(); - if (BuildConsole.this.getHeight() == 0) { - c.getEventBus().postEvent(new ConsoleNotVisibleEvent(c)); - } else { - c.getEventBus().postEvent(new ConsoleVisibleEvent(c)); - } - } - public void componentHidden(ComponentEvent e) {} - public void componentMoved(ComponentEvent e) {} - public void componentShown(ComponentEvent e) {} - }); - - } - - - /** - * Clear the contents of the console. - * - */ - private void clearDisplay() { - Document doc = _text.getDocument(); - try { - doc.remove(0, doc.getLength()); - } - catch(Exception ex) { - // Intentionally ignored. - } - } - - /** Class for handling project events. */ - private class Handler implements BusMember { - private final Filter _filter = new Filter(); - - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - public BusFilter getBusFilter() { - return _filter; - } - - /** - * Called when an event is to be posed to the member. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - public boolean eventPosted(EventObject event) { - if(event instanceof ProjectSelectedEvent) { - return true; - } - - AntBuildEvent buildEvent = (AntBuildEvent) event; - Style style = null; - String text = null; - - switch(buildEvent.getType().getValue()) { - case BuildEventType.BUILD_STARTED_VAL: - - case BuildEventType.BUILD_FINISHED_VAL: - text = buildEvent.getType().toString() + - " (" + new Date().toString() + ")"; - style = _styles.getHeadingStyle(); - break; - case BuildEventType.TARGET_STARTED_VAL: - text = buildEvent.getEvent().getTarget().getName() + ":"; - style = _styles.getSubheadingStyle(); - break; - case BuildEventType.TARGET_FINISHED_VAL: - case BuildEventType.TASK_STARTED_VAL: - case BuildEventType.TASK_FINISHED_VAL: - break; - case BuildEventType.MESSAGE_LOGGED_VAL: - // Filter out events that are below our - // selected filterint level. - LogLevelEnum level = - (LogLevelEnum) _logLevel.getSelectedItem(); - int priority = buildEvent.getEvent().getPriority(); - if(priority <= level.getValue()) { - text = buildEvent.toString(); - style = _styles.getStyle(LogLevelEnum.fromInt(priority)); - } - break; - } - - if(text != null) { - try { - Document doc = _text.getDocument(); - doc.insertString(doc.getLength(), text, style); - doc.insertString(doc.getLength(), "\n", null); - } - catch(Exception ex) { - // XXX log me. - ex.printStackTrace(); - } - } - - return true; - } - } - - /** Handles press of the ClearLog button. */ - private class ActionHandler implements java.awt.event.ActionListener { - public void actionPerformed(java.awt.event.ActionEvent e) { - if (e.getSource() == _clearLog) clearDisplay(); - } - } - - /** Class providing filtering for project events. */ - private static class Filter implements BusFilter { - /** - * Determines if the given event should be accepted. - * - * @param event Event to test. - * @return True if event should be given to BusMember, false otherwise. - */ - public boolean accept(EventObject event) { - return event instanceof AntBuildEvent || - event instanceof ProjectSelectedEvent; - } - } - - /** Style set for pretty display of the console messages. */ - private static class ConsoleStyleContext extends StyleContext { - /** Name of the style used for headings. */ - public static final String HEADING_STYLE = "headingStyle"; - /** Name of the style used for subheadings. */ - public static final String SUBHEADING_STYLE = "subheadingStyle"; - - /** XXX temporary list of style colors. To go away once a real set of - * properties is implemented... */ - private static final Color[] _colors = { - Color.red, - Color.magenta, - Color.black, - Color.darkGray, - Color.blue - }; - - /** - * Default ctor. - * - */ - public ConsoleStyleContext() { - Style defaultStyle = getStyle(DEFAULT_STYLE); - StyleConstants.setFontSize(defaultStyle, 12); - - Style msgBase = addStyle("msgBase", defaultStyle); - StyleConstants.setFontFamily(msgBase, "Monospaced"); - - LogLevelEnum[] levels = LogLevelEnum.getValues(); - for(int i = 0; i < levels.length; i++) { - Style curr = addStyle(levels[i].toString(), msgBase); - StyleConstants.setFontSize(curr, 10); - StyleConstants.setForeground(curr, _colors[i]); - } - - Style heading = addStyle(HEADING_STYLE, defaultStyle); - StyleConstants.setFontFamily(heading, "SansSerif"); - StyleConstants.setBold(heading, true); - StyleConstants.setUnderline(heading, true); - - Style subheading = addStyle(SUBHEADING_STYLE, heading); - StyleConstants.setFontSize(subheading, 10); - StyleConstants.setUnderline(subheading, false); - } - - /** - * Get the style to use for the given logging level. - * - * @param level Logging level. - * @return Style to use for display. - */ - Style getStyle(LogLevelEnum level) { - Style retval = getStyle(level.toString()); - return retval == null ? getDefaultStyle() : retval; - } - - /** - * Get the default style. - * - * @return Default style. - */ - Style getDefaultStyle() { - return getStyle(DEFAULT_STYLE); - } - - /** - * Get the style to use for headings. - * - * @return Heading style. - */ - Style getHeadingStyle() { - return getStyle(HEADING_STYLE); - } - - /** - * Get the style to use for subheadings. - * - * @return Subheading style. - */ - Style getSubheadingStyle() { - return getStyle(SUBHEADING_STYLE); - } - - /** - * Get a StyledDocument initialized with this. - * - * @return SytledDocument. - */ - StyledDocument getStyledDocument() { - DefaultStyledDocument retval = new DefaultStyledDocument(this); - retval.setLogicalStyle(0, getDefaultStyle()); - return retval; - } - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/console/LogLevelEnum.java b/src/antidote/org/apache/tools/ant/gui/modules/console/LogLevelEnum.java deleted file mode 100644 index fbf9c674b..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/console/LogLevelEnum.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.modules.console; - -/** - * Enumeration class of the different log levels. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class LogLevelEnum { - /** Enum value. */ - private int _value = 0; - - /** - * Standard ctor. - * - * @param value Index value. - */ - private LogLevelEnum(int value) { - _value = value; - } - - /** - * Get the enumeration value. - * - * @return - */ - public int getValue() { - return _value; - } - - /** - * Get the enumeration value with the given index value. - * - * @param value Index value. - * @return Enumeration value. - */ - public static LogLevelEnum fromInt(int value) { - return _objectMap[value]; - } - - /** - * Get the set of enumeration values. - * - * @return Value set. - */ - public static LogLevelEnum[] getValues() { - return _objectMap; - } - - /** - * Determine if the given object is logically equal to this one. - * - * @param o Object to compare to - * @return True if equal, false otherwise. - */ - public boolean equals(Object o) { - if(o instanceof LogLevelEnum) { - return ((LogLevelEnum)o)._value == _value; - } - return false; - } - /** - * Generate a hash value. - * - * @return Hash value. - */ - public int hashValue() { - return _value; - } - - /** - * Provide a string representation of this. - * - * @return String representation. - */ - public String toString() { - return _stringMap[_value]; - } - - - /* Index values. */ - public static final int ERROR_VAL = 0; - public static final int WARNING_VAL = 1; - public static final int INFO_VAL = 2; - public static final int VERBOSE_VAL = 3; - public static final int DEBUG_VAL = 4; - - /* Enumeration values. */ - public static final LogLevelEnum ERROR = - new LogLevelEnum(ERROR_VAL); - public static final LogLevelEnum WARNING = - new LogLevelEnum(WARNING_VAL); - public static final LogLevelEnum INFO = - new LogLevelEnum(INFO_VAL); - public static final LogLevelEnum VERBOSE = - new LogLevelEnum(VERBOSE_VAL); - public static final LogLevelEnum DEBUG = - new LogLevelEnum(DEBUG_VAL); - - /** Index to object mapping. */ - private static final LogLevelEnum[] _objectMap = { - ERROR, WARNING, INFO, VERBOSE, DEBUG - }; - - /** String map. XXX needs to be localized. */ - private static final String[] _stringMap = { - "Error", "Warning", "Info", "Verbose", "Debug" - }; - -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/DependentTargetChooser.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/DependentTargetChooser.java deleted file mode 100755 index f1d31955c..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/edit/DependentTargetChooser.java +++ /dev/null @@ -1,376 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS ConstrIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.modules.edit; - -import java.util.List; -import java.util.ArrayList; - -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.awt.Frame; -import java.awt.Dimension; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; - -import javax.swing.JDialog; -import javax.swing.JPanel; -import javax.swing.JButton; -import javax.swing.JScrollPane; -import javax.swing.ListSelectionModel; -import javax.swing.ImageIcon; -import javax.swing.JTable; -import javax.swing.table.TableColumn; - -import org.apache.tools.ant.gui.util.WindowUtils; -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import org.apache.tools.ant.gui.acs.ACSTargetElement; -import org.apache.tools.ant.gui.core.ResourceManager; - -/** - * Dialog for choosing dependent targes comfortable. - * - * @version $Revision$ - * @author Christoph Wilhelms - */ -public class DependentTargetChooser extends JDialog { - // "Business"-Object - private ACSTargetElement _target = null; - // Tables - private JTable _targetsTable = null; - // Major Elements; - private JPanel _commandButtonPanel = null; - // CommandButtons - private JButton _ok = null; - private JButton _cancel = null; - // common - private ResourceManager _resources = new ResourceManager(); - - private static ActionHandler _handler = null; - - /** - * Constructor needs a parent Frame - */ - public DependentTargetChooser (Frame parentFrame) { - this (parentFrame, null); - } - - /** - * Constructor needs a parent Frame, target can be set later - */ - public DependentTargetChooser (Frame parentFrame, ACSTargetElement target) { - super(parentFrame, true); - - _handler = new ActionHandler(); // get the ActionHandler ready - - // Dialog settings - setTitle("Select dependent targets"); - setDefaultCloseOperation(HIDE_ON_CLOSE); - - // Container - JPanel container = new JPanel(); - this.setContentPane(container); - container.setLayout(new BorderLayout()); - - JScrollPane tableScrollPane = new JScrollPane(); - tableScrollPane.setViewportView(getTargetsTable()); - - // Populate container - container.add(getCommandButtonPanel(), BorderLayout.SOUTH); - container.add(tableScrollPane, BorderLayout.CENTER); - - // Apply model - must be done this late, because it relies - // on an instntiated GUI - setTarget(target); - - // Set an initial size and pack it - container.setPreferredSize(new Dimension(350,250)); - pack(); - } - - - /** - * Lazily get the commandButtonPanel - * @return the created JPanel - */ - private JPanel getCommandButtonPanel() { - if (_commandButtonPanel == null) { - _commandButtonPanel = new JPanel(); - FlowLayout btnLayout = new FlowLayout(); - btnLayout.setAlignment(FlowLayout.RIGHT); - _commandButtonPanel.setLayout(btnLayout); - - _ok = new JButton(_resources.getString(getClass(), "ok")); - _ok.setMnemonic('O'); - _ok.addActionListener(_handler); - getRootPane().setDefaultButton(_ok); - getRootPane().setDefaultButton(_ok); - _cancel = new JButton(_resources.getString(getClass(), "cancel")); - _cancel.setMnemonic('c'); - _cancel.addActionListener(_handler); - - _commandButtonPanel.add(_ok); - _commandButtonPanel.add(_cancel); - } - return _commandButtonPanel; - } - - /** - * Writer method for the model-element - * @param ACSTargetElement the new Target model element. - */ - public void setTarget(ACSTargetElement newTarget) { - _target = newTarget; - - // fill source-TableModel with "sister-targets" - SelectableTargetsTableModel model = (SelectableTargetsTableModel) _targetsTable.getModel(); - model.setTargets(getCoTargets(newTarget)); - model.preselectTargets(newTarget.getDepends()); - model.fireTableDataChanged(); - } - - /** - * Fills a List with all sister-targets of a single target - * @return filled or empty List - */ - private ArrayList getCoTargets (ACSTargetElement aTarget) { - ACSProjectElement parentProject = null; - // Caution is the mother of wisdom ;-) - if (aTarget.getParentNode() instanceof ACSProjectElement) - parentProject = (ACSProjectElement) aTarget.getParentNode(); - else throw new IllegalArgumentException("Target not part of Project"); - - NodeList allNodes = parentProject.getChildNodes(); - ArrayList retVal = new ArrayList(); - int length = allNodes.getLength(); - for (int i = 0; i < length; i++) - { - Node node = allNodes.item(i); - if (node instanceof ACSTargetElement) { - ACSTargetElement currentElement = ((ACSTargetElement)node); - // ... leave out the current target TODO: avoid cyclic relations! - if (currentElement != aTarget) retVal.add(currentElement); - } - } - return retVal; - } - - /** - * Lazily get a target-table - * @return created JTable - */ - private JTable getTargetsTable() { - if (_targetsTable == null) { - _targetsTable = new JTable(); - _targetsTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); - _targetsTable.setAutoCreateColumnsFromModel(false); - _targetsTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - // Coulumn showing the selection of the Target - TableColumn selectCol = new TableColumn(); - selectCol.setHeaderValue(_resources.getString(getClass(), "selection")); - selectCol.setModelIndex(0); - selectCol.setPreferredWidth(70); - selectCol.setMaxWidth(70); - selectCol.setResizable(false); - // Coulumn showing the Target - TableColumn targetCol = new TableColumn(); - targetCol.setHeaderValue(_resources.getString(getClass(), "target")); - targetCol.setModelIndex(1); - targetCol.setPreferredWidth(150); - targetCol.setMaxWidth(150); - targetCol.setResizable(true); - // Coulumn showing the description of targets - TableColumn descrCol = new TableColumn(); - descrCol.setHeaderValue(_resources.getString(getClass(), "description")); - descrCol.setModelIndex(2); - descrCol.setPreferredWidth(250); - descrCol.setResizable(false); - _targetsTable.addColumn(selectCol); - _targetsTable.addColumn(targetCol); - _targetsTable.addColumn(descrCol); - _targetsTable.setModel(new SelectableTargetsTableModel()); - } - return _targetsTable; - } - - /** - * A decorator for TargetsTableModel to allow selection of targets. - * - * @see org.apache.tools.ant.gui.modules.edit.TargetsTableModel - */ - private class SelectableTargetsTableModel extends TargetsTableModel { - private boolean[] _selected = new boolean[0]; - - /** - * Change the entire model. - * @param List of ACSTargetElements - */ - public void setTargets(List newTargets) { - _selected = new boolean[newTargets.size()]; - super.setTargets(newTargets); - } - - /** - * @param Stringarray of target-names - */ - public void preselectTargets(String[] targetNames) { - int i = 0, j = 0; - int iDim = getRowCount(); - int jDim = targetNames.length; - for (i = 0; i < iDim; i++) { - String name = getTarget(i).getName(); - for( j= 0; j < jDim; j++) { - if (name.equalsIgnoreCase(targetNames[j])) _selected[i] = true; - } - } - } - - /** - * @param int columnIndex - * @return String.class - */ - public Class getColumnClass(int columnIndex) { - if (columnIndex == 0) return Boolean.class; - else return String.class; - } - - /** - * @return 3 - */ - public int getColumnCount() { - return 3; - } - - /** - * @return true in case of the first column. - */ - public boolean isCellEditable(int row, int col) { - return (col == 0); - } - - /** - * @param row and column in table - * @return the requested object to be shown. - */ - public Object getValueAt(int row, int col) { - ACSTargetElement rowObj = getTarget(row); - switch (col) { - case 0: return new Boolean(_selected[row]); - case 1: return rowObj.getName(); - case 2: return rowObj.getDescription(); - default: return ""; - } - } - - /** - * @param new value resulting from the editor - * @param row and column in table - */ - public void setValueAt(Object newValue, int row, int col) { - if (col == 0) { - _selected[row] = ((Boolean)newValue).booleanValue(); - } - } - - public int getSelectedTargetCount() { - int retVal = 0; - int length = getRowCount(); - for (int i = 0; i < length; i++) { - if (_selected[i]) retVal++; - } - return retVal; - } - - /** - * @return a StringArray (String[]) containing the names of all selected targets. - */ - public String[] getSelectedTargetsAsStringArray() { - int length = getRowCount(); - String[] retVal = new String[getSelectedTargetCount()]; - int i = 0, j = 0; - - for (i = 0; i < length; i++) { - if (_selected[i]) { - retVal[j] = getTarget(i).getName(); - j++; - } - } - return retVal; - } - } - - /** - * Ihis handler is the ActionListener for each button. - */ - private class ActionHandler implements ActionListener { - /** - * ActionListener Interface ethod - * @param ActionEvent - */ - public void actionPerformed(ActionEvent e) { - // Get some initial values needed later - // Evaluate EventSource - if (e.getSource()==_ok) { - // OK: take the selected targets and leave - _target.setDepends( ((SelectableTargetsTableModel)_targetsTable.getModel()).getSelectedTargetsAsStringArray() ); - dispose(); - } else if (e.getSource()==_cancel) { - // just close dialog - dispose(); - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/DependentTargetPropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/DependentTargetPropertyEditor.java deleted file mode 100755 index c3cc1eadc..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/edit/DependentTargetPropertyEditor.java +++ /dev/null @@ -1,327 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.modules.edit; - -import java.util.StringTokenizer; - -import java.awt.Component; -import java.awt.BorderLayout; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; -import java.awt.event.FocusListener; -import java.awt.event.FocusEvent; -import java.awt.event.KeyListener; -import java.awt.event.KeyEvent; -import java.awt.Point; -import java.awt.Dimension; -import java.awt.Toolkit; - -import javax.swing.JPanel; -import javax.swing.JButton; -import javax.swing.JTextField; -import javax.swing.JOptionPane; -import javax.swing.BorderFactory; -import javax.swing.border.BevelBorder; - -import org.apache.tools.ant.gui.customizer.AbstractPropertyEditor; -import org.apache.tools.ant.gui.acs.ACSTargetElement; - -/** - * PropertyEditor for DependentTargets - * - * @version $Revision$ - * @author Christoph Wilhelms - */ -public class DependentTargetPropertyEditor extends AbstractPropertyEditor { - private JTextField _textField = null; - private JButton _button = null; - private JPanel _widget = null; - private ACSTargetElement _value = null; - private EventHandler _handler = new EventHandler(); - private static DependentTargetChooser _dialog = null; - - /** - * Gets the editor component: A panel containing a textfield an a button. - * @return the property editor component - */ - public Component getChild() { - if (_widget == null) // Lazy get - { - _widget = new JPanel(); - _widget.setLayout(new BorderLayout()); - _widget.add(getTextField(), BorderLayout.CENTER); - _widget.add(getButton(), BorderLayout.EAST); - } - return _widget; - } - - /** - * Lazily create the textfield, to make sure its only instantiated once. - * @return the button - */ - private JTextField getTextField() { - if (_textField == null) { - _textField = new JTextField(); - _textField.setText(getAsText()); - _textField.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); - _textField.addFocusListener(_handler); - _textField.addKeyListener(_handler); - // We dont really need the next line in Antidote context, just for testpurpose! - _textField.setPreferredSize(new Dimension(150, _textField.getPreferredSize().height)); - } - // Transfer Tooltip from Panel to TextField - this hat to be done at every get! - _textField.setToolTipText( _widget.getToolTipText()); - - return _textField; - } - - /** - * Lazily create the button, to make sure its only instantiated once. - * @return the button - */ - private JButton getButton() { - if (_button == null) { - _button = new JButton(); - _button.setText("..."); // Probably an Image is more nice, but ... is standart, I think. - _button.setPreferredSize(new Dimension(getTextField().getPreferredSize().height, getTextField().getPreferredSize().height)); - _button.addActionListener(_handler); - } - return _button; - } - - /** - * Sets the model for the component. Used to comunicate externally. - * @param The target element the editior works with. - */ - public void setValue(Object newValue) { - if(!(newValue instanceof ACSTargetElement)) { - throw new IllegalArgumentException( - "Value must be of type ACSTargetElement."); - } - _value = (ACSTargetElement)newValue; - - // Directly show the targets. - getTextField().setText(getAsText()); - } - - /** - * Sets the model for the component. Used to comunicate externally. - * @return The target element the editior works with. - */ - public Object getValue() { - return _value; - } - - /** - * Sets the depends for the target as text. - * @param A String containing all targetnames, separated by "," - */ - public void setAsText(String newValue) { - String vals = getTextField().getText(); - StringTokenizer tok = new StringTokenizer(vals,","); - String[] depends = new String[tok.countTokens()]; - for(int i = 0; i < depends.length; i++) { - depends[i] = tok.nextToken().trim(); - } - // Directly supply the target with the new depends. - ((ACSTargetElement)getValue()).setDepends(depends);; - } - - /** - * Gets the depends for the target as text. - * @return A String containing all targetnames, separated by "," - */ - public String getAsText() { - if (_value == null) return ""; - String[] dep = _value.getDepends(); - String retVal = ""; - for (int i = 0; i < dep.length; i++) { - retVal += dep[i]; - if (i < dep.length - 1) retVal += ", "; - } - return retVal; - } - - /** - * Creates and shows the dialog for selecting dependent targets. - */ - private void showSelectionDialog() { - // Create the dialog lazyly - it is static, for we want only ONE instance! - if (_dialog == null) { - _dialog = new DependentTargetChooser(JOptionPane.getFrameForComponent(getChild()), (ACSTargetElement)getValue()); - } - else { - // Supply dialog with target - it needs nothing else ;-) - but the - // target will be modified by the dialog. - _dialog.setTarget((ACSTargetElement)getValue()); - } - String oldValue = getTextField().getText(); - // Set the position of the dialog right under the Editor, if possible - DependentTargetPropertyEditor.setWindowRelativeToComponent (_dialog, getChild()); - _dialog.show(); - // after the modal dialog is disposed make shure that the propertyChangeEvent - // will be thrown and the textfield becomes updated! - Object newValue = (Object)getAsText(); - - getTextField().setText(getAsText()); - firePropertyChange(newValue, oldValue); - } - - /** - * Handler for ButtonAction, Focus- and KeyListening. I can't use the FocusHandler - * in superclass, for I have a different Object in Property Change! - */ - private class EventHandler implements ActionListener, FocusListener, KeyListener { - /* ActionListener methods */ - public void actionPerformed(ActionEvent e) { - if (e.getSource() == _button) showSelectionDialog(); - } - /* FocusListener methods */ - public void focusLost(FocusEvent e) { - Object oldValue = (Object)getAsText(); - String newValue = getTextField().getText(); - setAsText(newValue); - firePropertyChange(newValue, oldValue); - } - public void focusGained(FocusEvent e) { - } - /* KeyListener methods */ - public void keyPressed(KeyEvent e) { - } - public void keyTyped(KeyEvent e) { - } - public void keyReleased(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_F4) { - showSelectionDialog(); - } - } - } - - /** - * Places a window, depending of it's size, relative to a component and it's size - * TODO: move to WindowUtilities - */ - public static void setWindowRelativeToComponent (java.awt.Window window, Component theComp) { - int compX = theComp.getLocationOnScreen().x; - int compY = theComp.getLocationOnScreen().y; - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - Dimension dialogSize = window.getSize(); - int x = 0, y = 0; - - // Window should be aligned LEFT with component - x = compX; - // If there is not enough space to align LEFT, align RIGTH - if (x + dialogSize.width > screenSize.getWidth()) { - x = compX - (dialogSize.width - theComp.getWidth()); - } - // If there is not enough space to align LEFT, make sure that it - // will be display completely. - if (x < 0) x = 0; - - // Window should be located BELOW component - y = compY + theComp.getHeight(); - // If there is not enough space Window BELOW component, place ABOVE component - if (y + dialogSize.height > screenSize.getHeight() ) { - y = compY - dialogSize.height; - } - // If there is not enough space Window ABOVE component make sure that it - // will be display completely. - if (y < 0) y = 0; - - window.setLocation(x, y); - } - - /** main just for Test reasons */ - public static void main(String[] args) { - javax.swing.JFrame f = new javax.swing.JFrame(); - f.setDefaultCloseOperation(3 /*JFrame.EXIT_ON_CLOSE*/); - - org.apache.tools.ant.gui.core.AppContext context = new org.apache.tools.ant.gui.core.AppContext(f); - try { - context.getProjectManager().open(new java.io.File("G:\\build.xml")); - } catch (Exception e) { - System.out.println("No buildfile found"); - } - - JPanel c = new JPanel(); - c.setLayout(new java.awt.FlowLayout()); - f.setContentPane(c); - - org.w3c.dom.NodeList all2ndLevelNodes = context.getProjectManager().getOpen()[0].getChildNodes(); - - int i= 0; - while (i < all2ndLevelNodes.getLength()) { - org.w3c.dom.Node node = all2ndLevelNodes.item(i); - if (node instanceof ACSTargetElement) { - ACSTargetElement newTarget = ((ACSTargetElement)node); - DependentTargetPropertyEditor a = new DependentTargetPropertyEditor(); - c.add(a.getChild()); - a.setValue(newTarget); - } - i++; - } - f.pack(); - - f.addWindowListener(new java.awt.event.WindowListener() { - public void windowOpened(java.awt.event.WindowEvent e) {} - public void windowIconified(java.awt.event.WindowEvent e) {} - public void windowDeiconified(java.awt.event.WindowEvent e) {} - public void windowActivated(java.awt.event.WindowEvent e) {} - public void windowDeactivated(java.awt.event.WindowEvent e) {} - public void windowClosing(java.awt.event.WindowEvent e) {} - public void windowClosed(java.awt.event.WindowEvent e) {System.exit(0);} - }); - f.show(); - } -} \ No newline at end of file diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/DragTree.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/DragTree.java deleted file mode 100644 index 0e5e02759..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/edit/DragTree.java +++ /dev/null @@ -1,606 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -package org.apache.tools.ant.gui.modules.edit; - -import java.awt.datatransfer.*; -import java.awt.dnd.*; - -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Point; -import java.awt.Component; -import java.awt.Insets; -import java.awt.Rectangle; - -import javax.swing.JComponent; -import javax.swing.JTree; -import javax.swing.tree.DefaultTreeCellRenderer; -import javax.swing.tree.TreePath; -import javax.swing.JScrollPane; - -import java.io.IOException; -import java.util.TooManyListenersException; - -/** - * A tree which allows reorganization via drop and drag - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class DragTree extends JTree implements DragSourceListener, - DragGestureListener, DropTargetListener { - - /** - * The DragTreeListener - * associated with this DragTree. - */ - private DragTreeListener _dragTreeListener; - - /** - * Holds the position where the dropped item should be - * placed. Possible values are DROP_BEFORE, DROP_ON - * or DROP_AFTER. - */ - private int _dropPosition; - - /** - * The point where the drop line should be drawn. - */ - private Point _point; - - /** - * The object the drop occured on. - */ - private Object _dropOn; - - /** - * The path of where the drop occured. - */ - private TreePath _dropOnPath; - - /** - * The path of the item being dropped. - */ - private TreePath _droppedPath; - - /** - * The item being dragged should be placed before (or above) - * the item it is dropped on. - */ - final static protected int DROP_BEFORE = 0; - - /** - * The item being dragged should be placed on (as a child) - * the item it is dropped on. - */ - final static protected int DROP_ON = 1; - - /** - * The item being dragged should be placed on (or after) - * the item it is dropped on. - */ - final static protected int DROP_AFTER = 2; - - /** - * Default Constuctor - */ - public DragTree() { - - DragSource dragSource = DragSource.getDefaultDragSource(); - - // Use the default gesture recognizer - dragSource.createDefaultDragGestureRecognizer( - this, - DnDConstants.ACTION_COPY_OR_MOVE, - this); - - // Setup to be a drop target - new DropTarget(this, - DnDConstants.ACTION_COPY_OR_MOVE, - this); - } - - /** - * Starts the drag operation. - *

    - * @param e the DragGestureEvent describing - * the gesture that has just occurred - */ - public void dragGestureRecognized(DragGestureEvent e) { - - // Find the path for the cursor position. - Point p = e.getDragOrigin(); - _droppedPath = getPathForLocation(p.x, p.y); - - if (_droppedPath == null) { - return; - } - - // Select the item. - setSelectionPath(_droppedPath); - - // Wrap the object and start the drag. - Object obj = _droppedPath.getLastPathComponent(); - Wrapper wrapper = new Wrapper(obj); - e.startDrag(DragSource.DefaultMoveNoDrop, wrapper, this); - } - - // - // DragSourceListener methods - // - public void dragDropEnd(DragSourceDropEvent e) {} - public void dragEnter(DragSourceDragEvent e) {} - public void dragExit(DragSourceEvent e) {} - public void dragOver(DragSourceDragEvent e) {} - public void dropActionChanged(DragSourceDragEvent e) {} - - // - // DropTargetListener methods - // - public void dropActionChanged(java.awt.dnd.DropTargetDragEvent e) {} - public void dragEnter(DropTargetDragEvent e) { - dragOver(e); - } - - /** - * Called when a drag operation is ongoing - * on the DropTarget. - *

    - * @param dtde the DropTargetDragEvent - */ - public void dragOver(DropTargetDragEvent e) { - - checkAutoScroll(e.getLocation()); - - Point p = computeDropLocation(e.getLocation()); - - // Don't allow a parent to be dropped on one of its children. - if (_droppedPath.isDescendant(_dropOnPath)) { - _point = null; - _dropOn = null; - p = null; - e.rejectDrag(); - } else { - e.acceptDrag(e.getDropAction()); - } - - // If the point has changed, repaint the display. - if (_point == null || !p.equals(_point)) { - _point = p; - repaint(); - } - } - - /** - * Determines where the item will be dropped. - */ - private Point computeDropLocation(Point p) { - - int rowCount = getRowCount(); - int height = findCellHeight(); - int row = (p.y / height); - int offset = (p.y % height); - - // Move the point to the top of the cell. - p.y -= offset; - - int delta = 0; - - // Is the point at or past the end of the list? - if (row > (rowCount - 1) ) { - p.y = (rowCount - 1) * height; - row = rowCount - 1; - delta = height; - _dropPosition = DROP_AFTER; - } - // Is the point at the begining of the list? - else if (row <= 0) { - p.y = 0; - delta = height; - if (rowCount > 1) { - row = 1; - _dropPosition = DROP_BEFORE; - } else { - row = 0; - _dropPosition = DROP_ON; - } - } - // The point is in the middle of the tree. - else { - // Is the point on the top third of the cell? - if (offset < height * 0.333) { - - // Set the line to the top of the cell. - delta = 0; - _dropPosition = DROP_BEFORE; - } - // Is the point on the bottom third of the cell? - else if (offset > height * 0.666){ - - // Set the line to the bottom of the cell. - delta = height; - _dropPosition = DROP_AFTER; - } - // The point is in the middle of the cell? - else { - - // Set the line to the middle of the cell. - delta = height / 2; - _dropPosition = DROP_ON; - } - } - - // Find the object to use for the drop. - _dropOnPath = getPathForRow(row); - if (_dropOnPath != null) { - _dropOn = _dropOnPath.getLastPathComponent(); - } else { - _dropOn = null; - } - - // Adjust the point used to draw the drop line. - p.y += delta; - p.x = 0; - - return p; - } - - /** - * Process the drop - * - * @param e the DropTargetDropEvent - * @see DropTargetListener.drop - */ - public void drop(DropTargetDropEvent e) { - - if (_dropOn == null || _dropOnPath == null) { - return; - } - - // Get the object being transfered. - Object obj = null; - Transferable t = e.getTransferable(); - try { - obj = t.getTransferData(_flavors[0]); - } catch (Exception exp) { - System.out.println(exp); - } - - if (obj != null) { - - Object droppedObj = obj; - Object droppedOnObj = _dropOn; - Object parentObj = getParentOfDroppedOnObject(); - - if (_dropPosition == DROP_ON) { - - fireAppendChild(droppedOnObj, droppedObj); - setExpandedState(_dropOnPath, true); - } - else if (_dropPosition == DROP_BEFORE) { - - fireInsertBefore(parentObj, droppedOnObj, droppedObj); - } - else if (_dropPosition == DROP_AFTER) { - - // If the cell is exanded, add the new item before our - // first child. - if (isExpanded(getRowForPath(_dropOnPath))) { - parentObj = droppedOnObj; - } - - // Find the next sibling - int index = getModel().getIndexOfChild(parentObj, droppedOnObj); - int count = getModel().getChildCount(parentObj); - - if (index == count-1) { - fireAppendChild(parentObj, droppedObj); - } else { - Object sibling = getModel().getChild(parentObj, index+1); - fireInsertBefore(parentObj, sibling, droppedObj); - } - } - - if (e.getDropAction() == DnDConstants.ACTION_MOVE) { - fireRemoveChild(droppedObj); - } - - this.updateUI(); - } - } - - /** - * Returns the parent of the dropped on object. - */ - private Object getParentOfDroppedOnObject() { - int count = _dropOnPath.getPathCount(); - return _dropOnPath.getPathComponent(count-2); - } - - /** - * Repaint the display to cleanup any lines. - */ - public void dragExit(DropTargetEvent e) { - _point = null; - repaint(); - } - - /** - * Draws the line which shows where the dropped - * item will land. - * - * @see #JComponent.paintComponent - */ - public void paintComponent(Graphics g){ - super.paintComponent(g); - - if (_point != null) { - - if (_dropPosition == DROP_ON) { - // If the drop is on another item, draw - // two short lines. - g.drawLine(0, _point.y, 10, _point.y); - g.drawLine(getWidth()-10, _point.y, getWidth(), _point.y); - } else { - // If the drop is above or below an item, draw - // one long line. - g.drawLine(0, _point.y, getWidth(), _point.y); - } - } - } - - /** - * Wrapper holds the object to transfer - */ - protected class Wrapper implements Transferable { - - /** The object to transfer */ - private Object _obj; - - /** - * Creates a wrapper for the input object. - * - * @param obj object to wrap - */ - public Wrapper(Object obj) { - _obj = obj; - } - - /** - * Return out object if the DataFlavor is correct. - * - * @param flavor only javaJVMLocalObjectMimeType is supported - */ - public Object getTransferData(DataFlavor flavor) - throws UnsupportedFlavorException, IOException { - if (isDataFlavorSupported(flavor)) { - return _obj; - } - throw new UnsupportedFlavorException(flavor); - } - - /** - * Return true if the input flavor is support. - * - * @param flavor DataFlavor to test - */ - public boolean isDataFlavorSupported(DataFlavor flavor) { - return flavor.equals(_flavors[0]); - } - - /** - * Return true if the input flavor is support. - * - * @param flavor DataFlavor to test - */ - public DataFlavor[] getTransferDataFlavors() { - return _flavors; - } - } - - /** - * DataFlavors which are support for transfer - */ - private static final DataFlavor[] _flavors = { - createConstant(DataFlavor.javaJVMLocalObjectMimeType) - }; - - /** - * Returns a new DataFlavor or null - * - * @param flavor the flavor - */ - static private DataFlavor createConstant(String flavor) { - try { - return new DataFlavor(flavor); - } catch (Exception e) { - return null; - } - } - - /** - * Returns the cell height for the tree. - */ - protected int findCellHeight() { - DefaultTreeCellRenderer renderer = - (DefaultTreeCellRenderer) getCellRenderer(); - return renderer.getPreferredSize().height; - } - - /** - * Register a new DragTreeListener. - *

    - * @param dtl the DragTreeListener to register - * with this DragTree. - */ - public synchronized void addDragTreeListener(DragTreeListener dtl) { - _dragTreeListener = dtl; - } - - /** - * unregister the current DragTreeListener - *

    - * @param dtl the DragTreeListener to unregister - *

    - * @throws IllegalArgumentException if - * dtl is not (equal to) the currently registered - * DragTreeListener. - */ - public synchronized void removeDragTreeListener(DragTreeListener dtl) { - if (_dragTreeListener == null || !_dragTreeListener.equals(dtl)) - throw new IllegalArgumentException(); - else { - _dragTreeListener = null; - } - } - - /** - * Notify the DragTreeListener that an appendChild has - * been requested. - */ - protected synchronized Object fireAppendChild(Object parent, - Object newChild) { - - if (_dragTreeListener != null) { - return _dragTreeListener.appendChild(parent, newChild); - } - return null; - } - - /** - * Notify the DragTreeListener that an insertBefore has - * been requested. - */ - protected synchronized Object fireInsertBefore(Object parent, Object index, - Object newChild) { - - if (_dragTreeListener != null) { - return _dragTreeListener.insertBefore(parent, index, newChild); - } - return null; - } - - /** - * Notify the DragTreeListener that an removeChild has - * been requested. - */ - protected synchronized void fireRemoveChild(Object child) { - - if (_dragTreeListener != null) { - _dragTreeListener.removeChild(child); - } - } - - /** - * Scrolls tree if nessasary - *

    - * @param p A Point indicating the - * location of the cursor that triggered this operation. - */ - protected void checkAutoScroll(Point p) { - - Point locn = new Point(p); - javax.swing.SwingUtilities.convertPointToScreen(locn, this); - javax.swing.SwingUtilities.convertPointFromScreen(locn, getParent()); - - Rectangle outer = new Rectangle(); - Rectangle inner = new Rectangle(); - - Insets i = new java.awt.Insets(10, 10, 10, 10); - Dimension size = getParent().getSize(); - - if (size.width != outer.width || size.height != outer.height) - outer.setBounds(0, 0, size.width, size.height); - - if (inner.x != i.left || inner.y != i.top) - inner.setLocation(i.left, i.top); - - int newWidth = size.width - (i.left + i.right); - int newHeight = size.height - (i.top + i.bottom); - - if (newWidth != inner.width || newHeight != inner.height) - inner.setSize(newWidth, newHeight); - - if (outer.contains(locn) && !inner.contains(locn)) { - if (locn.y >= inner.height) { - scrollDown(); - } else { - scrollUp(); - } - } - } - - /** - * Scroll the tree up one cell - */ - public void scrollUp() { - Rectangle visibleRect = getVisibleRect(); - int height = findCellHeight(); - visibleRect.y -= height; - visibleRect.height -= height; - scrollRectToVisible(visibleRect); - } - - /** - * Scroll the tree down one cell - */ - public void scrollDown() { - Rectangle visibleRect = getVisibleRect(); - int height = findCellHeight(); - visibleRect.y += height; - visibleRect.height += height; - scrollRectToVisible(visibleRect); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/DragTreeListener.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/DragTreeListener.java deleted file mode 100644 index cd2271dbb..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/edit/DragTreeListener.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -package org.apache.tools.ant.gui.modules.edit; - -import java.util.EventListener; - -/** - * This interface is sourced from a DragTree and is invoked - * when an object of that (sub)class detects the completion - * of a drag operation. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public interface DragTreeListener extends EventListener { - - /** - * Append the object to the end of the parent's child list. - * - * @param parent parent object - * @param newChild new child object - * @return the new object - */ - public Object appendChild(Object parent, Object newChild); - - /** - * Append the object to the end of the parent's child list. - * - * @param parent parent object - * @param index child object of parent the newChild should be added - * before. - * @param newChild new child object - * @return the new object - */ - public Object insertBefore(Object parent, Object index, Object newChild); - - /** - * Removes the child object from the parent. - * - * @param parent parent object - * @param child child object - */ - public void removeChild(Object child); -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/DtdAttributePropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/DtdAttributePropertyEditor.java deleted file mode 100644 index 73f11a8c7..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/edit/DtdAttributePropertyEditor.java +++ /dev/null @@ -1,389 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -package org.apache.tools.ant.gui.modules.edit; -import org.apache.tools.ant.gui.customizer.AbstractPropertyEditor; -import org.apache.tools.ant.gui.acs.ACSDtdDefinedAttributes; -import javax.swing.*; -import javax.swing.table.*; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.BorderLayout; -import java.awt.event.*; -import java.util.*; - -/** - * Custom property editor for the DtdAttributes. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class DtdAttributePropertyEditor extends AbstractPropertyEditor { - - /** Recommended size for widgets inside a JScrollPane, as communicated - * through the setPreferredScrollableViewportSize() method. */ - protected static final Dimension VIEWPORT_SIZE = new Dimension(200, 150); - - /** Container. */ - private JPanel _widget = null; - /* The current properties being edited. */ - private ACSDtdDefinedAttributes _attributes = null; - /** The table editor for the properties. */ - private JTable _table = null; - /** Displays possible attribute values. */ - private JComboBox _combo = new JComboBox(); - - /** - * Default ctor. - * - */ - public DtdAttributePropertyEditor() { - _widget = new JPanel(new BorderLayout()); - _widget.addFocusListener(new FocusHandler(this)); - - _table = new JTable(); - _table.setPreferredScrollableViewportSize(VIEWPORT_SIZE); - JScrollPane scroller = new JScrollPane(_table); - _widget.add(BorderLayout.CENTER, scroller); - } - - /** - * Get the child editing component. Uses JComponent so we can have tool - * tips, etc. - * - * @return Child editing component. - */ - protected Component getChild() { - return _widget; - } - - /** - * This method is intended for use when generating Java code to set - * the value of the property. It should return a fragment of Java code - * that can be used to initialize a variable with the current property - * value. - *

    - * Example results are "2", "new Color(127,127,34)", "Color.orange", etc. - * - * @return A fragment of Java code representing an initializer for the - * current value. - */ - public String getJavaInitializationString() { - return "new ACSDtdDefinedAttributes()"; - } - - /** - * Set (or change) the object that is to be edited. Builtin types such - * as "int" must be wrapped as the corresponding object type such as - * "java.lang.Integer". - * - * @param value The new target object to be edited. Note that this - * object should not be modified by the PropertyEditor, rather - * the PropertyEditor should create a new object to hold any - * modified value. - */ - public void setValue(Object value) { - if(value == null) { - value = new ACSDtdDefinedAttributes(); - } - - if(!(value instanceof ACSDtdDefinedAttributes)) { - throw new IllegalArgumentException( - value.getClass().getName() + - " is not of type ACSDtdDefinedAttributes."); - } - - Object old = _attributes; - _attributes = (ACSDtdDefinedAttributes) - ((ACSDtdDefinedAttributes) value).clone(); - - TableModel model = new TableModel(); - _table.setModel(model); - - // Setup the combo box - updateComboBox(); - _combo.setEditable(true); - - // Set the first column to use the combo box - TableColumn tableColumn = _table.getColumnModel().getColumn(0); - tableColumn.setCellEditor(new DefaultCellEditor(_combo)); - - // When the combo box is updated, update the table. - _combo.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - JComboBox cb = (JComboBox)e.getSource(); - String newSelection = (String)cb.getSelectedItem(); - - // Should we update the table? - if (newSelection != null && _table.getEditingRow() > 0) { - _table.getModel().setValueAt(newSelection, - _table.getEditingRow(), _table.getEditingColumn() ); - } - } - }); - - _table.clearSelection(); - } - - /** - * Fills the combobox with possible values - */ - private void updateComboBox() { - _combo.removeAllItems(); - ArrayList array = new ArrayList(); - - // Add the optional attributes - String[] valueArray = _attributes.getOptionalAttributes(); - if (valueArray != null) { - for(int i = 0; i < valueArray.length; i++) { - if (_attributes.getProperty(valueArray[i]) == null) { - array.add(valueArray[i]); - } - } - } - - // Add the required attributes - valueArray = _attributes.getRequiredAttributes(); - if (valueArray != null) { - for(int i = 0; i < valueArray.length; i++) { - if (_attributes.getProperty(valueArray[i]) == null) { - array.add(valueArray[i]); - } - } - } - - Collections.sort(array); - for(int i = 0; i < array.size(); i++) { - _combo.addItem(array.get(i)); - } - } - - /** - * @return The value of the property. Builtin types - * such as "int" will be wrapped as the corresponding - * object type such as "java.lang.Integer". - */ - public Object getValue() { - return _attributes; - } - - /** - * Set the property value by parsing a given String. May raise - * java.lang.IllegalArgumentException if either the String is - * badly formatted or if this kind of property can't be expressed - * as text. - * @param text The string to be parsed. - */ - public void setAsText(String text) throws IllegalArgumentException { - throw new IllegalArgumentException("Cannot be expressed as a String"); - } - - /** - * @return The property value as a human editable string. - *

    Returns null if the value can't be expressed - * as an editable string. - *

    If a non-null value is returned, then the PropertyEditor should - * be prepared to parse that string back in setAsText(). - */ - public String getAsText() { - return null; - } - - /** Table model view of the Properties object. */ - private class TableModel extends AbstractTableModel { - private static final int NAME = 0; - private static final int VALUE = 1; - - private List _keys = null; - - public TableModel() { - // We need to store the property keys in an array - // so that the ordering is preserved. - _keys = new ArrayList(_attributes.keySet()); - Collections.sort(_keys); - } - - /** - * Get the number of rows. - * - * @return Number of rows. - */ - public int getRowCount() { - return _attributes.size() + 1; - } - - /** - * Get the number of columns. - * - * @return 2 - */ - public int getColumnCount() { - return 2; - } - - /** - * Get the editing and display class of the given column. - * - * @return String.class - */ - public Class getColumnClass(int column) { - return String.class; - } - - /** - * Get the header name of the column. - * - * @param column Column index. - * @return Name of the column. - */ - public String getColumnName(int column) { - // XXX fix me. - return column == NAME ? "Name" : "Value"; - } - - /** - * Determine if the given cell is editable. - * - * @param row Cell row. - * @param column Cell column. - * @return true - */ - public boolean isCellEditable(int row, int column) { - return true; - } - - /** - * Get the object at the given table coordinates. - * - * @param row Table row. - * @param column Table column. - * @return Object at location, or null if none. - */ - public Object getValueAt(int row, int column) { - if(row < _attributes.size()) { - switch(column) { - case NAME: - return _keys.get(row); - case VALUE: - return _attributes.getProperty((String)_keys.get(row)); - } - } - return null; - } - /** - * Set the table value at the given location. - * - * @param value Value to set. - * @param row Row. - * @param column Column. - */ - public void setValueAt(Object value, int row, int column) { - String k = null; - String v = null; - - // Get the current key and value. - String currKey = (String) getValueAt(row, NAME); - String currValue = null; - if(currKey != null) { - currValue = _attributes.getProperty(currKey); - } - - switch(column) { - case NAME: - k = (String) value; - - // Update or add the key value. - if(row < _keys.size()) { - _keys.set(row, k); - } - else { - _keys.add(k); - } - - // Remove the old key. - if(currKey != null) { - _attributes.remove(currKey); - } - v = currValue == null ? "" : currValue; - break; - case VALUE: - v = String.valueOf(value); - k = currKey; - - // Should we create a temp key? - if( (k == null || k.length() == 0 ) && v.length() != 0 ) { - k = "key-for-" + v; - } - break; - } - - // If there is a key, update the list. - if(k != null && k.length() > 0) { - _attributes.setProperty(k, v); - } - - // Has something changed? - if( (k != null && v != null) && - (!k.equals(currKey) || !v.equals(currValue) ) ) { - - fireTableRowsUpdated(row, row); - // Fire change in outer class. - firePropertyChange(null, _attributes); - - // Reset the combobox - updateComboBox(); - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementNavigator.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementNavigator.java deleted file mode 100644 index 7dceeeb0a..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementNavigator.java +++ /dev/null @@ -1,333 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.modules.edit; -import org.apache.tools.ant.gui.core.*; -import org.apache.tools.ant.gui.event.*; -import org.apache.tools.ant.gui.acs.*; -import javax.swing.*; -import javax.swing.tree.*; -import javax.swing.event.*; -import java.awt.GridLayout; -import java.awt.Dimension; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.EventObject; -import java.beans.PropertyChangeEvent; -import org.w3c.dom.Node; - -/** - * Module for navigating build file elemenets. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ElementNavigator extends AntModule { - - /** Navigation via a tree widget. */ - private DragTree _tree = null; - /** The selection model being used. */ - private ElementTreeSelectionModel _selections = null; - - /** - * Default ctor. - * - */ - public ElementNavigator() { - } - - /** - * Using the given AppContext, initialize the display. - * - * @param context Application context. - */ - public void contextualize(AppContext context) { - setContext(context); - context.getEventBus().addMember(EventBus.MONITORING, new Handler()); - - setLayout(new GridLayout(1,1)); - - _tree = new DragTree(); - _tree.addDragTreeListener(new DragHandler()); - _tree.setModel(null); - _tree.setCellRenderer(new ElementTreeCellRenderer()); - _tree.addMouseListener(new PopupHandler()); - _tree.putClientProperty("JTree.lineStyle", "Angled"); - _tree.setShowsRootHandles(true); - JScrollPane scroller = new JScrollPane(_tree); - add(scroller); - - setPreferredSize(new Dimension(250, 100)); - setMinimumSize(new Dimension(200, 100)); - - } - - /** Class for handling project events. */ - private class Handler implements BusMember { - private final Filter _filter = new Filter(); - - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - public BusFilter getBusFilter() { - return _filter; - } - - /** - * Called when an event is to be posed to the member. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - public boolean eventPosted(EventObject event) { - ElementTreeModel model = (ElementTreeModel)_tree.getModel(); - // XXX This crap needs cleaning up. Type switching is lazy... - if(event instanceof PropertyChangeEvent) { - // The project node has changed. - model.fireNodeChanged((ACSElement)event.getSource()); - } - else if(event instanceof RefreshDisplayEvent && model != null) { - _tree.updateUI(); - } - else if(event instanceof NewElementEvent && model != null) { - ACSElement element = ((NewElementEvent)event).getNewElement(); - model.fireNodeAdded(element); - TreePath path = new TreePath(model.getPathToRoot(element)); - _selections.setSelectionPath(path); - _tree.scrollPathToVisible(path); - } - else if(event instanceof DeleteElementEvent && model != null) { - _tree.updateUI(); - } - else { - ACSProjectElement project = null; - if(event instanceof ProjectSelectedEvent) { - ProjectSelectedEvent e = (ProjectSelectedEvent) event; - project = e.getSelectedProject(); - } - - if(project == null) { - // The project has been closed. - // XXX this needs to be tested against - // different version of Swing... - _tree.setModel(null); - _tree.setSelectionModel(null); - // Send an empty selection event to notify others that - // nothing is selected. - ElementSelectionEvent.createEvent(getContext(), null); - } - else { - boolean updateModel = false; - TreeModel testModel = _tree.getModel(); - - // Set the model if's not an ElementTreeModel - if (testModel instanceof ElementTreeModel) { - ElementTreeModel etm = (ElementTreeModel) testModel; - ACSProjectElement currentProject = - (ACSProjectElement) etm.getRoot(); - - // Set the model if the project is wrong - if (currentProject != project) { - updateModel = true; - } - } else { - updateModel = true; - } - - // Should we update the tree model - if (updateModel) { - _tree.setModel(new ElementTreeModel(project)); - _selections = new ElementTreeSelectionModel(); - _selections.addTreeSelectionListener( - new SelectionForwarder()); - _tree.setSelectionModel(_selections); - } - } - } - return true; - } - } - - /** Forwards selection events to the event bus. */ - private class SelectionForwarder implements TreeSelectionListener { - public void valueChanged(TreeSelectionEvent e) { - getContext().getEventBus().postEvent( - ElementSelectionEvent.createEvent( - getContext(), _selections.getSelectedElements())); - } - } - - /** Class providing filtering for project events. */ - private static class Filter implements BusFilter { - /** - * Determines if the given event should be accepted. - * - * @param event Event to test. - * @return True if event should be given to BusMember, false otherwise. - */ - public boolean accept(EventObject event) { - return event instanceof ProjectSelectedEvent || - event instanceof ProjectClosedEvent || - event instanceof NewElementEvent || - event instanceof PropertyChangeEvent || - event instanceof DeleteElementEvent || - event instanceof RefreshDisplayEvent; - } - } - - /** Mouse listener for showing popup menu. */ - private class PopupHandler extends MouseAdapter { - private void handle(MouseEvent e) { - if(e.isPopupTrigger()) { - Object source = e.getSource(); - String[] menuStr = null; - JTree tree = (JTree) source; - - // Find the selected path. - TreePath selPath = tree.getPathForLocation( - e.getX(), e.getY()); - if (selPath == null) { - return; - } - - // Update the selection. - tree.setSelectionPath(selPath); - - // Find the selected object. - Object selObj = selPath.getLastPathComponent(); - - String defaultID = null; - - // Does the item provide its own menu? - if (selObj instanceof ACSInfoProvider) { - ACSInfoProvider ip = (ACSInfoProvider) selObj; - menuStr = ip.getMenuString(); - defaultID = ip.getDefaultActionID(); - } else { - // Get the menu from the prop file. - menuStr = getContext().getResources().getStringArray( - ElementNavigator.class, defaultID); - } - - // Should we create a menu? - if (menuStr != null && menuStr.length != 0) { - ActionManager mgr = getContext().getActions(); - JPopupMenu menu = mgr.createPopup(menuStr, defaultID); - menu.show((JComponent)e.getSource(), e.getX(), e.getY()); - } - } - } - - public void mousePressed(MouseEvent e) { - handle(e); - } - public void mouseReleased(MouseEvent e) { - handle(e); - } - public void mouseClicked(MouseEvent e) { - handle(e); - } - } - - /** Class for handling drag operation. */ - private static class DragHandler implements DragTreeListener { - - /** - * Append the object to the end of the parent's child list. - */ - public Object appendChild(Object parent, Object newChild) { - - ACSTreeNodeElement parentNode = - (ACSTreeNodeElement) parent; - ACSTreeNodeElement newChildNode = - (ACSTreeNodeElement) newChild; - ACSTreeNodeElement clone = - (ACSTreeNodeElement) newChildNode.cloneNode(true); - parentNode.appendChild(clone); - return clone; - } - - /** - * Append the object to the end of the parent's child list. - */ - public Object insertBefore(Object parent, Object index, Object newChild) { - - ACSTreeNodeElement parentNode = - (ACSTreeNodeElement) parent; - ACSTreeNodeElement indexNode = - (ACSTreeNodeElement) index; - ACSTreeNodeElement newChildNode = - (ACSTreeNodeElement) newChild; - ACSTreeNodeElement clone = - (ACSTreeNodeElement) newChildNode.cloneNode(true); - parentNode.insertBefore(clone, indexNode); - return clone; - } - - /** - * Append the object to the end of the parent's child list. - */ - public void removeChild(Object child) { - - ACSTreeNodeElement childNode = - (ACSTreeNodeElement) child; - ACSTreeNodeElement parentNode = - (ACSTreeNodeElement) childNode.getParentNode(); - parentNode.removeChild(childNode); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementTreeCellRenderer.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementTreeCellRenderer.java deleted file mode 100644 index a948496a6..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/edit/ElementTreeCellRenderer.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.modules.edit; - -import org.apache.tools.ant.gui.acs.ACSElement; -import javax.swing.tree.DefaultTreeCellRenderer; -import javax.swing.JTree; -import javax.swing.ImageIcon; -import java.awt.Component; -import java.awt.Image; -import java.beans.*; - -/** - * Cell renderer for displaying the Ant XML file in a JTree. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ElementTreeCellRenderer extends DefaultTreeCellRenderer { - - public Component getTreeCellRendererComponent(JTree tree, - Object value, - boolean sel, - boolean expanded, - boolean leaf, - int row, - boolean hasFocus) { - super.getTreeCellRendererComponent(tree, value, sel, expanded, - leaf, row, hasFocus); - - try { - BeanInfo info = Introspector.getBeanInfo(value.getClass()); - Image icon = info.getIcon(BeanInfo.ICON_COLOR_16x16); - setIcon(icon == null ? null : new ImageIcon(icon)); - - if(value instanceof ACSElement) { - setText(((ACSElement)value).getDisplayName()); - } - else { - setText(info.getBeanDescriptor().getDisplayName()); - } - } - catch(IntrospectionException ex) { - // XXX log me. - ex.printStackTrace(); - } - - return this; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/PropertyEditor.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/PropertyEditor.java deleted file mode 100644 index d2be69bb2..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/edit/PropertyEditor.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.modules.edit; - -import org.apache.tools.ant.gui.customizer.DynamicCustomizer; -import org.apache.tools.ant.gui.core.*; -import org.apache.tools.ant.gui.acs.*; -import org.apache.tools.ant.gui.event.*; -import javax.swing.*; -import java.util.*; -import java.beans.*; -import java.io.StringReader; -import java.io.IOException; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Point; - -/** - * Stub for a property editor. - * - * @version $Revision$ - * @author Simeon H.K. Fitch - */ -public class PropertyEditor extends AntModule { - - /** The editor for current bean.*/ - private Customizer _customizer = null; - /** Container for the customizer. */ - private JPanel _container = null; - /** Scroll area containing contents. */ - private JScrollPane _scroller = null; - /** Property change forwarder. */ - private PropertyChangeForwarder _forwarder = new PropertyChangeForwarder(); - - /** - * Default ctor. - * - */ - public PropertyEditor() { - } - - /** - * Using the given AppContext, initialize the display. - * - * @param context Application context. - */ - public void contextualize(AppContext context) { - setContext(context); - context.getEventBus().addMember(EventBus.MONITORING, new Handler()); - setLayout(new BorderLayout()); - _container = new JPanel(new BorderLayout()); - add(_scroller = new JScrollPane(_container)); - } - - /** - * Update the display for the current items. - * - * @param items Current items to display. - */ - private void updateDisplay(ACSElement[] items) { - if(_customizer != null) { - _customizer.removePropertyChangeListener(_forwarder); - _container.remove((Component)_customizer); - _customizer = null; - } - - if(items != null && items.length > 0) { - // The last selection element is the the one the - // user most recently selected. - ACSElement item = items[items.length - 1]; - - try { - BeanInfo info = Introspector.getBeanInfo(item.getClass()); - _customizer = (Customizer) info.getBeanDescriptor(). - getCustomizerClass().newInstance(); - _customizer.setObject(item); - _container.add(BorderLayout.CENTER, (Component) _customizer); - _customizer.addPropertyChangeListener(_forwarder); - } - catch(Exception ex) { - // XXX log me. - ex.printStackTrace(); - } - } - - _container.validate(); - _container.repaint(); - } - - - /** Class for handling project events. */ - private class Handler implements BusMember { - private final Filter _filter = new Filter(); - - /** - * Get the filter to that is used to determine if an event should - * to to the member. - * - * @return Filter to use. - */ - public BusFilter getBusFilter() { - return _filter; - } - - /** - * Called when an event is to be posted to the member. - * - * @param event Event to post. - * @return true if event should be propogated, false if - * it should be cancelled. - */ - public boolean eventPosted(EventObject event) { - if(event instanceof ProjectClosedEvent) { - updateDisplay(null); - } - else { - ElementSelectionEvent e = (ElementSelectionEvent) event; - ACSElement[] elements = e.getSelectedElements(); - updateDisplay(elements); - } - return true; - } - - } - /** Class providing filtering for project events. */ - private static class Filter implements BusFilter { - /** - * Determines if the given event should be accepted. - * - * @param event Event to test. - * @return True if event should be given to BusMember, false otherwise. - */ - public boolean accept(EventObject event) { - return event instanceof ElementSelectionEvent || - event instanceof ProjectClosedEvent; - } - } - - /** Class for forwarding property change events to the event bus. */ - private class PropertyChangeForwarder implements PropertyChangeListener { - public void propertyChange(PropertyChangeEvent e) { - getContext().getEventBus().postEvent(e); - } - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/modules/edit/TargetsTableModel.java b/src/antidote/org/apache/tools/ant/gui/modules/edit/TargetsTableModel.java deleted file mode 100755 index cd6eb62a3..000000000 --- a/src/antidote/org/apache/tools/ant/gui/modules/edit/TargetsTableModel.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.modules.edit; - -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import java.util.List; -import java.util.ArrayList; - -import javax.swing.table.AbstractTableModel; - -import org.apache.tools.ant.gui.acs.ACSProjectElement; -import org.apache.tools.ant.gui.acs.ACSTargetElement; - -/** - * This is a TableModel containing the co-targets of a distinct target. - * - * @version $Revision$ - * @author Christoph Wilhelms - */ -public class TargetsTableModel extends AbstractTableModel { - // model data - private List _delegate = new ArrayList(); - private ACSTargetElement _mainTarget = null; - - /** - * Default constructor - */ - public TargetsTableModel() { - super(); - } - - /** - * @param int columnIndex - * @return String.class - */ - public Class getColumnClass(int columnIndex) { - return String.class; - } - - /** - * @return 2 - */ - public int getColumnCount() { - return 2; - } - - /** - * @return number of containing element - */ - public int getRowCount() { - return _delegate.size(); - } - - /** - * @param row and column in table - * @return the requested object to be shown. - */ - public Object getValueAt(int row, int col) { - ACSTargetElement rowObj = (ACSTargetElement)_delegate.get(row); - switch (col) { - case 0: return rowObj.getName(); - case 1: return rowObj.getDescription(); - default: return ""; - } - } - - /** - * @return false for no cell is editable. - */ - public boolean isCellEditable(int row, int col) { - return false; - } - - /** - * Change the entire model. - * @param List of ACSTargetElements - */ - public void setTargets(List newTargets) { - _delegate = newTargets; - fireTableDataChanged(); - } - - /** - * Access a single element. - * @param rowIndex - * @return ACSTargetElement - */ - public ACSTargetElement getTarget(int index) { - return (ACSTargetElement)_delegate.get(index); - } - - /** - * Remove a single element. - * @param int rowIndex - */ - public void removeTarget(int index) { - _delegate.remove(index); - fireTableRowsDeleted(index -1, index); - } - - /** - * Add a new element to list. - * @param ACSTargetElement newTarget to be added to the list. - */ - public void addTarget(ACSTargetElement newTarget) { - _delegate.add(newTarget); - fireTableRowsInserted(_delegate.size()-1, _delegate.size()); - } - - /** - * Moves a Target - * @param int rowindex in List - * @param int delta to move (negative to move up) - */ - public void moveTarget(int index, int delta) { - if (index + delta < 0) return; - else if (index + delta > _delegate.size()) return; - Object backObj = _delegate.get(index + delta); - _delegate.set(index + delta, _delegate.get(index) ); - _delegate.set(index, backObj); - fireTableRowsUpdated(index + delta, index); - } - - /** - * @return a StringArray (String[]) containing the names of all targets. - */ - public String[] getTargetsAsStringArray() { - int length = _delegate.size(); - String[] retVal = new String[length]; - - for (int i = 0; i < length; i++) { - retVal[i] = ((ACSTargetElement)_delegate.get(i)).getName(); - } - return retVal; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/resources/action.properties b/src/antidote/org/apache/tools/ant/gui/resources/action.properties deleted file mode 100644 index 7ecb66cc1..000000000 --- a/src/antidote/org/apache/tools/ant/gui/resources/action.properties +++ /dev/null @@ -1,185 +0,0 @@ -# Define the primary menubar items. -menus=File, View, Build, Projects, Help - -# Declare the list of known actions. -actions=\ - new, open, save, saveas, close, exit, about, \ - newTarget, newElement, newProperty, deleteElement, \ - startBuild, stopBuild, viewConsole - -# Configure the decalred actions. -new.name=New Project... -new.shortDescription=Create a new project -new.parentMenuName=File -new.icon=new-project.gif -new.accelerator=control N -new.enabled=true -new.command=org.apache.tools.ant.gui.command.NewProjectCmd - -open.name=Open... -open.shortDescription=Open an existing project -open.parentMenuName=File -open.icon=open.gif -open.accelerator=control O -open.enabled=true -open.command=org.apache.tools.ant.gui.command.OpenCmd - -save.name=Save -save.shortDescription=Save the current project -save.parentMenuName=File -save.icon=save.gif -save.accelerator=control S -save.command=org.apache.tools.ant.gui.command.SaveCmd -save.enabled=false -save.disableOn= \ - org.apache.tools.ant.gui.event.ProjectClosedEvent, \ - org.apache.tools.ant.gui.event.BuildStartedEvent -save.enableOn= \ - org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ - org.apache.tools.ant.gui.event.NewProjectEvent, \ - org.apache.tools.ant.gui.event.BuildFinishedEvent - -saveas.name=Save As... -saveas.shortDescription=Save to a specific file -saveas.parentMenuName=File -saveas.command=org.apache.tools.ant.gui.command.SaveAsCmd -saveas.enabled=false -saveas.disableOn= \ - org.apache.tools.ant.gui.event.ProjectClosedEvent, \ - org.apache.tools.ant.gui.event.BuildStartedEvent -saveas.enableOn= \ - org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ - org.apache.tools.ant.gui.event.NewProjectEvent, \ - org.apache.tools.ant.gui.event.BuildFinishedEvent - -close.name=Close -close.shortDescription=Close the current project -close.parentMenuName=File -close.command=org.apache.tools.ant.gui.command.CloseCmd -close.enabled=false -close.disableOn= \ - org.apache.tools.ant.gui.event.ProjectClosedEvent, \ - org.apache.tools.ant.gui.event.BuildStartedEvent -close.enableOn= \ - org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ - org.apache.tools.ant.gui.event.NewProjectEvent, \ - org.apache.tools.ant.gui.event.BuildFinishedEvent - -exit.name=Exit -exit.shortDescription=Quit the application -exit.parentMenuName=File -exit.separator=true -exit.command=org.apache.tools.ant.gui.command.ExitCmd -exit.enabled=true - -about.name=About... -about.shortDescription=About this application -about.parentMenuName=Help -about.separator=true; -about.enabled=true -about.command=org.apache.tools.ant.gui.command.AboutCmd - -startBuild.name=Start Build -startBuild.shortDescription=Start build of selected target -startBuild.parentMenuName=Build -startBuild.icon=start.gif -startBuild.separator=true -startBuild.accelerator=control B -startBuild.command=org.apache.tools.ant.gui.command.BuildCmd -startBuild.enabled=false -startBuild.enableOn=\ - org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ - org.apache.tools.ant.gui.event.NewProjectEvent, \ - org.apache.tools.ant.gui.event.BuildFinishedEvent -startBuild.disableOn=\ - org.apache.tools.ant.gui.event.BuildStartedEvent, \ - org.apache.tools.ant.gui.event.ProjectClosedEvent - -stopBuild.name=Stop Build -stopBuild.shortDescription=Stop the current build -stopBuild.parentMenuName=Build -stopBuild.icon=stop.gif -stopBuild.accelerator=control K -stopBuild.enabled=false -stopBuild.enableOn=\ - org.apache.tools.ant.gui.event.BuildStartedEvent -stopBuild.disableOn=\ - org.apache.tools.ant.gui.event.BuildFinishedEvent - -newTarget.name=New Target -newTarget.shortDescription=Create a new target -newTarget.icon=new-target.gif -newTarget.enabled=false -newTarget.separator=true -newTarget.command=org.apache.tools.ant.gui.command.NewTargetCmd -newTarget.enableOn=\ - org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ - org.apache.tools.ant.gui.event.NewProjectEvent -newTarget.disableOn=\ - org.apache.tools.ant.gui.event.TargetSelectionEvent, \ - org.apache.tools.ant.gui.event.TaskSelectionEvent, \ - org.apache.tools.ant.gui.event.PropertySelectionEvent, \ - org.apache.tools.ant.gui.event.ProjectClosedEvent, \ - org.apache.tools.ant.gui.event.NullSelectionEvent, \ - org.apache.tools.ant.gui.event.DtdDefinedElementSelectionEvent - -newTask.name=New Task -newTask.shortDescription=Create a new task under the selected target -newTask.icon=new-task.gif -newTask.enabled=false -newTask.command=org.apache.tools.ant.gui.command.NewTaskCmd -newTask.enableOn=\ - org.apache.tools.ant.gui.event.TargetSelectionEvent -newTask.disableOn=\ - org.apache.tools.ant.gui.event.ProjectClosedEvent, \ - org.apache.tools.ant.gui.event.TaskSelectionEvent, \ - org.apache.tools.ant.gui.event.PropertySelectionEvent, \ - org.apache.tools.ant.gui.event.NullSelectionEvent, \ - org.apache.tools.ant.gui.event.DtdDefinedElementSelectionEvent - -newProperty.name=New Property -newProperty.shortDescription=Create a new property under the selected element -newProperty.icon=new-property.gif -newProperty.command=org.apache.tools.ant.gui.command.NewPropertyCmd -newProperty.enabled=false -newProperty.enableOn=\ - org.apache.tools.ant.gui.event.ProjectSelectedEvent, \ - org.apache.tools.ant.gui.event.NewProjectEvent, \ - org.apache.tools.ant.gui.event.TargetSelectionEvent, \ - org.apache.tools.ant.gui.event.TaskSelectionEvent -newProperty.disableOn=\ - org.apache.tools.ant.gui.event.PropertySelectionEvent, \ - org.apache.tools.ant.gui.event.ProjectClosedEvent, \ - org.apache.tools.ant.gui.event.NullSelectionEvent, \ - org.apache.tools.ant.gui.event.DtdDefinedElementSelectionEvent - -newElement.name=New Element -newElement.shortDescription=Create a new element under the selected element -newElement.icon=default.gif -newElement.command=org.apache.tools.ant.gui.command.NewElementCmd -newElement.enabled=true -newElement.hidden=true -newElement.popupSeparator=true - -deleteElement.name=Delete Element -deleteElement.shortDescription=Delete the selected element -deleteElement.icon=default.gif -deleteElement.command=org.apache.tools.ant.gui.command.DeleteElementCmd -deleteElement.enabled=true -deleteElement.hidden=true -deleteElement.popupSeparator=true - -viewConsole.name=console -viewConsole.shortDescription=Displays or hides the console pane -viewConsole.parentMenuName=View -viewConsole.icon=console.gif -viewConsole.separator=true -viewConsole.accelerator=control C -viewConsole.enabled=true -viewConsole.toggle=true -viewConsole.initalToggleValue=true -viewConsole.command=org.apache.tools.ant.gui.command.ShowOrHideConsoleCmd -viewConsole.checkedTrueOn=\ - org.apache.tools.ant.gui.event.ConsoleVisibleEvent -viewConsole.checkedFalseOn=\ - org.apache.tools.ant.gui.event.ConsoleNotVisibleEvent diff --git a/src/antidote/org/apache/tools/ant/gui/resources/antidote.properties b/src/antidote/org/apache/tools/ant/gui/resources/antidote.properties deleted file mode 100644 index d1ec98e91..000000000 --- a/src/antidote/org/apache/tools/ant/gui/resources/antidote.properties +++ /dev/null @@ -1,141 +0,0 @@ -# This is the general properties file for the Antidote application. - -#debug=true - -# The following four module properties configure those properties that -# should be initialized and displayed by default by the GUI. If more -# than one module is configured for a property (as indicated providing -# class names as a comma delimited list), then each module will appear -# in its own tab in a JTabbedPane. - -# Configure the modules that appear on the right of the UI. -org.apache.tools.ant.gui.Antidote.right.modules=\ - org.apache.tools.ant.gui.modules.edit.PropertyEditor - -# Configure the modules that appear on the left of the UI. -org.apache.tools.ant.gui.Antidote.left.modules=\ - org.apache.tools.ant.gui.modules.edit.ElementNavigator - -# Configure the modules that appear on the bottom of the UI. -org.apache.tools.ant.gui.Antidote.bottom.modules=\ - org.apache.tools.ant.gui.modules.console.BuildConsole - -# Configure the modules that appear on the top of the UI. -org.apache.tools.ant.gui.Antidote.top.modules=\ - org.apache.tools.ant.gui.modules.TargetMonitor - -org.apache.tools.ant.gui.modules.edit.PropertyEditor.name=Properties - -# DependentTargetChooser part of the DependentTargetPropertyEditor -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.ok=OK -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.cancel=Cancel -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.target=Target -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.description=Description -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.upIcon=up.gif -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.downIcon=down.gif -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.addIcon=enter.gif -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.removeIcon=exit.gif -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.up=Move dependent target up -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.down=Move dependent target down -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.add=Add target to dependent list -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.remove=Remove target from dependent list -org.apache.tools.ant.gui.modules.edit.DependentTargetChooser.selection=Selection - -org.apache.tools.ant.gui.modules.edit.ElementNavigator.name=Project -org.apache.tools.ant.gui.modules.edit.ElementNavigator.popupActions=\ - newTarget, newTask, newProperty - -org.apache.tools.ant.gui.modules.TargetMonitor.name=Selected Target(s) -org.apache.tools.ant.gui.modules.TargetMonitor.defText=[none] - -org.apache.tools.ant.gui.modules.console.BuildConsole.name=Console -org.apache.tools.ant.gui.modules.console.BuildConsole.clearLog=\ - Clear Log -org.apache.tools.ant.gui.modules.console.BuildConsole.logLevel=\ - Log message level: - -org.apache.tools.ant.gui.core.XMLFileFilter.description=XML Files - -org.apache.tools.ant.gui.core.ProjectSelectionMenu.name=Projects - -org.apache.tools.ant.gui.command.LoadFileCmd.noFile=\ - The file "{0}" was not found. -org.apache.tools.ant.gui.command.LoadFileCmd.loadError=\ - The file "{0}" could not be loaded. -org.apache.tools.ant.gui.command.DisplayErrorCmd.title=Antidote Error... -org.apache.tools.ant.gui.command.DisplayErrorCmd.expand=Details >> - -org.apache.tools.ant.gui.command.SaveCmd.saveError=Could not save to "{0}". -org.apache.tools.ant.gui.command.SaveCmd.noProject=No project to save. -org.apache.tools.ant.gui.command.SaveCmd.title=Overwrite? -org.apache.tools.ant.gui.command.SaveCmd.overwrite=Overwrite file "{0}"? - -# Properties file for BeanInfo strings - -org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.beanName=Target -org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.beanDescription=\ - An executable target in the build. -org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.name=Name -org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.description=Description -org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.depends=Dependencies -org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.if=if Clause -org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.unless=unless Clause -org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.xmlString=XML Code -org.apache.tools.ant.gui.acs.ACSTargetElementBeanInfo.icon=target.gif - -org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.beanName=Project -org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.beanDescription=\ - The top level project in the build definition. -org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.name=Name -org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.description=Description -org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.basedir=Base Directory -org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.default=Default Target -org.apache.tools.ant.gui.acs.ACSProjectElementBeanInfo.icon=project.gif - -org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.beanName=Property -org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.beanDescription=\ - A scoped property -org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.name=Name -org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.value=Value -org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.file=File -org.apache.tools.ant.gui.acs.ACSPropertyElementBeanInfo.icon=property.gif - -org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.beanName=Task -org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.beanDescription=\ - A scoped property -org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.taskType=Type -org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.namedValues=Attributes -org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.xmlString=XML Code -org.apache.tools.ant.gui.acs.ACSTaskElementBeanInfo.icon=task.gif - -org.apache.tools.ant.gui.acs.ACSDtdDefinedElementBeanInfo.beanName= -org.apache.tools.ant.gui.acs.ACSDtdDefinedElementBeanInfo.beanDescription=\ - A scoped property -org.apache.tools.ant.gui.acs.ACSDtdDefinedElementBeanInfo.taskType=Type -org.apache.tools.ant.gui.acs.ACSDtdDefinedElementBeanInfo.namedValues=\ - Attributes -org.apache.tools.ant.gui.acs.ACSDtdDefinedElementBeanInfo.xmlString=XML Code -org.apache.tools.ant.gui.acs.ACSDtdDefinedElementBeanInfo.icon=default.gif - -org.apache.tools.ant.gui.command.NewProjectCmd.defName=New Project -org.apache.tools.ant.gui.command.NewTargetCmd.defName=New Target - -#---------------------------------------------------------------------------- -# About Description (NB: this is only a temporary approach). -#---------------------------------------------------------------------------- - -org.apache.tools.ant.gui.About.title=About -org.apache.tools.ant.gui.About.ok=OK -org.apache.tools.ant.gui.About.message=\ -

    Antidote

    \ -

    Copyright © 2000 The Apache Software Foundation.
    \ - All rights reserved.


    \ -

    Visit http://jakarta.apache.org/ant for more information.


    \ - \ - \ - \ -
    Version:{0}
    Date:{1}
    \ -
    \ -

    Icons Copyright © 1998 Dean S. Jones (deansjones@hotmail.com)
    \ - http://jfa.javalobby.org/projects/icons

    \ - diff --git a/src/antidote/org/apache/tools/ant/gui/resources/args.properties b/src/antidote/org/apache/tools/ant/gui/resources/args.properties deleted file mode 100644 index 15297f9c0..000000000 --- a/src/antidote/org/apache/tools/ant/gui/resources/args.properties +++ /dev/null @@ -1,7 +0,0 @@ -# Property file for the command-line strings used by the Args class. - -usage=usage: antidote [-help] [-wizzard] [-debug] [build-file]\n\ -\nReport bugs to http://jakarta.apache.org/site/bugs.html\n\ -Copyright (C) 2001 Apache Software Foundation. All rights reserved. - -invalidArg=Unrecognized argument: "{0}" diff --git a/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizard.properties b/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizard.properties deleted file mode 100644 index 7d5842e51..000000000 --- a/src/antidote/org/apache/tools/ant/gui/resources/buildFileWizard.properties +++ /dev/null @@ -1,88 +0,0 @@ -# Property file for the wizard used to create a new build file. - -########################################################### -# Define required properties for wizard. -########################################################### -next=Next >> -back=<< Back -cancel=Cancel -finish=Finish -progress=Progress -help=Help - -########################################################### -# Define the steps the comprise the wizard. -########################################################### -steps=start, type, setup, compile, jar, javadoc, finish - -########################################################### -# Step: start -########################################################### -start.editor=org.apache.tools.ant.gui.wizard.InstructionStep -start.title=Create new build file -start.description=This wizard will step you through the process of creating \ -a basic Ant build file for your project. - -start.instructions=Welcome to the Ant build file wizard!\n\ -You will be asked a series of questions about the project you wish to create\ -and the types of build options you want included.\n\n\ -Click "Next >>" to proceed. - -########################################################### -# Step: type -########################################################### - -type.editor=org.apache.tools.ant.gui.wizard.build.ProjectTypeStep -type.title=Select project type -type.description=Select "New" if you want the buile environment \ -directory structure defined and created for you \ -in addition to the build file. Select "Import" if you want \ -a build file created for an existing project. - -type.isNewLabel=New project -type.isImportLabel=Import existing project - -########################################################### -# Step: setup -########################################################### - -setup.editor=org.apache.tools.ant.gui.wizard.build.ProjectSetupStep -setup.title=Setup project -setup.description=Give the project a name, and select the features you \ -wish to be included in the project file, such as JavaDoc and JAR creation. -setup.fileLabel=Build File: -setup.nameLabel=Project Name: -setup.optionsLabel=Options -setup.compile.label=Compiled Java code (.class files) -setup.jar.label=Executable JAR file -setup.javadoc.label=JavaDoc - -########################################################### -# Step: compile -########################################################### -compile.title=Setup Java source compilation -compile.description=Need help? -compile.editor=org.apache.tools.ant.gui.wizard.build.CompileStep - -########################################################### -# Step: jar -########################################################### -jar.title=Setup executable JAR creation -jar.description=Need help? -jar.editor=org.apache.tools.ant.gui.wizard.build.JARStep - -########################################################### -# Step: javadoc -########################################################### -javadoc.title=Setup JavaDoc creation -javadoc.description=Need help? -javadoc.editor=org.apache.tools.ant.gui.wizard.build.JavaDocStep - -########################################################### -# Step: finish -########################################################### -finish.editor=org.apache.tools.ant.gui.wizard.build.FinishStep -finish.title=Complete build file -finish.description=Click "Finish" to save your build file definition. -finish.instructions=You are done!\n\nClick "Finish" to complete your new\ -build file. diff --git a/src/antidote/org/apache/tools/ant/gui/resources/console.gif b/src/antidote/org/apache/tools/ant/gui/resources/console.gif deleted file mode 100644 index 4fbd3361c460ab8215c4bf248cf54d5ee2ce51cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcmZ?wbhEHb6k!ly_|5R;~PF0e)DE_#&>Mm zcp!oZeiEU~nKEb03_H^t3FVL6cp5P9IN{Q>STLAZ=_qvIry*0YlMov87&z&1%w^W% zfI*=$p|Bl(9I_R53xoo_9`roAE-j0OK~<%qQ~)24fDH&hM>sP{cZ^n+#sF18B|)_N zh)cBEXc16!)YA*-PSEmb6sYE@IE3RPEs?U36wq|U=#egIkp`)f3M;7i@Fk=TTR`a0 zXTxF|ehM-PTZ4!}pACy~_^psFuoZ}U=v7$Zh5k=A8x|4w(JIkmLlLOgXTu`WK2j1% z8=62&ufifK75F}+gl$6z=;2J@a>Al#u%I$OomN#~9w%LnS8f|E3sI9H#?_hZN zx@nrzkDcLh(-wNTglhgZZw@dAtHa&!M?`=ciMchAp07>!Pkt%h-k#_l-hS@$yC-uO zuW3SW@Z#DTHCT%7xA*&}N{gDz(~V0r-(MbmojbDbuADj*J7iwLzJkAUF#7cB=i`sw zOVPON;>UMq8?}2YHucQ^(0i~LDQ!4bt}WftejI+#{U%?Ys$0{%*WL1Dm4BhGwEM)K zn;j2_)_;1Qd!4CU=nQ6eqv6<{%Z=Z^J+rpSFYh~FMw6G8$A`B53HCqkU$VCI#Qs;y Nww+(NdBHqv`3sPz^cnyF diff --git a/src/antidote/org/apache/tools/ant/gui/resources/down.gif b/src/antidote/org/apache/tools/ant/gui/resources/down.gif deleted file mode 100755 index c4ea1a7e0e6aeca7573c3bdfe835ffc6706df282..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmZvbPe>F|9LK*>gb*zuOSDqthR;J3pY zU^=;og@;`T9);{w2lKEC9mK=XLFS@M)}h1VrJ~qxqqkhY@Oxi=j~_ff@B7}B#9;Ti zTVaIplL%z)l(}PO(3$2^Ab)A$bB#5R8;YLAvcZzZf?xr@4L1WP4Vi=<1FIe@ibab# zgHmHka0Gq=ZX8Z0q<|g)J&#J!vS=98Gzw7%e82@9Kms~~nJQIOA}!J&HBzvSx)0xl>%ftaI`qA; zXv5FIO~Xk-#-Q(o#RU8~+)g+GG6KB;E4a|zWP4!|2_JD6oeqRVMBfXGuzh4)q#YzB zVtNA>QLn@I;ks}fNC`cdsVQz)^bD3YmbTMs2+U(uv0|}kFsD%prqB?WM^8~%vY~ZhQJ!Iu(h?dxw*Nvwzjge zvb?;!xVTs-6!Q7JZQI#wHj~LrPEMxN>Cw^AWHQ;)(-VuuIyyR9TU$e+5dYNX=3bko zx&7D~9Jg(O2TP#n@BK|c6HW)a!H)=|w>gV_&Bq?D%zk?O?ZBxUV}}v#&$cv8y_|~n zKL{N>e!WZ0Uw(Ax#Ndx#Dr&wsDe~>(YW-5*bV&U@+SWesEIj_@-FbVyG82jR`Q2~Z z%ky1BZwB74ejQrq9qtoPuT5N?y?D3&@%HNa@bpmeNXx|c=Qpj?E9=b6ePis&oqO4# J4`3_ig(_G?tC-dbLbuwYVsfz{Eeb_9q2T({M!_Ep-WDo!E@kns&>E1^ z4WwlSg%U*+6VdL$lC2`OXab7y;8rlKmqbbtgb)uRLSDD^AU646=4FNthG(9c6QSeX zhp#lF89xcH^wpuShVHF&ecmf~{=wTa%MObc9fMhw8JQ`GDYyyP8q6p}7)lT{02FvVC0aQeX{vF`f>MMS za1pZ6VKnUq*X)rD)rHem_~ z1xh_ECg5tYqcFn|K`8aG7=qgaI{;IH@I$G=@-B2OSv@Qw@de%!;iVVGc_ca|Y8Y<1&TB2>uF7{}blW zv1l1IRH`y%iBb&~N_29x(lp{!1?32(fwfpD(<#z&Xk@8oD5qA1{f`CK2&=(DrBYd1 zS}GI@`Fwt1VPST5HkC?EPfsTjiC8SAY1+`xP&67H92^XX!@a$|!CDhf@@mho^*+Fd{obzkBbtFm0}YM4BIc@Ru-jjEB zU*6bO7+(G`er#gX_YFro&rHoty^I##Eq{z1I&kp)++thbJy&V}a%1Gjw>Pa@aO4jlXx9G# diff --git a/src/antidote/org/apache/tools/ant/gui/resources/exit.gif b/src/antidote/org/apache/tools/ant/gui/resources/exit.gif deleted file mode 100755 index 70a31cecea22cb995ae9c1dd282a81fde1baabb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 zcmZvbPe>F|9LK+=g-}Y71+IFC8iNvSH$+2SLL_IGgaQ9-Rs^ll9|k0OP`Pv%C_H4$ z!Ul5)S`4DY?4=2mouV?S6)GfQh>+KzU6788heCq=HrgR_{lR-*-s1<4&-=XB7dh3@ zez6X9_(k|-Yz$)~41Z-9bAHLWryq(eddxfYOy+cERoV(|$Q0ZJtT;pzS_mw7TyU5% znbav%#uN@gM&NeC3PLE*>Os$=r_=LN(qpF3s`^vH26IQItw&2)RR;Nl^8K3 z5pmINAt<0|sHaz?lc(uX&r!`%u?bruMB)*N*NXk^cLu3XeOx(sxc}=%u&x$wKs(Qj|G+qE5pL->gvkM z%JTB^;^N}`{QT_ftZm!rbUKwvO-@cG5{a>~v3NW_JUkqYM#JH7C=_aLZVm(jwY9bU zU7VhNVi?ByW2b-Idid#2ejQk=ssJj`;_v!Dq7JBjh|20l_1W~>JJoxS4Bo0uzZ8`X z;oh&ift%ZoUg$a#%;n66oi}ceFEw=`sJ=LNV*FCg)c%3jcPE^}n?T!Dd2-_T;hI2e z|LVJu(JS}Uy;D}z^@BT>9`!%S%eBu<1N+(rrEzcO$FNFlxZ20H%$)sNO~ diff --git a/src/antidote/org/apache/tools/ant/gui/resources/icon-small.gif b/src/antidote/org/apache/tools/ant/gui/resources/icon-small.gif deleted file mode 100644 index 72878f344074a9a1e27da6cc544972f5b5f0612a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1403 zcmWlY|5KB79KfHw_wfPd8n_-N%{d1lB2LmZ*Mem*22Kt*96PMF;{>NEElzPa4R`6* z1VofC?ua-tzo2KF$02cugs5}Q`NTcI!}e%Th;yf8P(a~C3N%g&d?Ve6t$!npU@ceBtHf~`~rnt|ZQa3zSZsM@*9USm}$l%WM@AD5cDYKW^!G?eXdK0p!!Q~ETL<{&=jRh&3JS|DJ7oKJ+jhw|Z7wXv68}OR z44cQ~*aH7wfw3@Rq;t#vDS6tPl&$98dr&zSIGZalz5KGn zcs{UJD_z6?Gst#*|p?<3-n%Pw2vvc2SYUfcZG**2gvtWE^D7 zlMN}tuH_#X5?*b7w8&kh!@Imr`rJ^SNfXve#_l$0*6`IABk6VDlJTKy?^m2To{DAq zmjBRSSkw`l`;>; ztl+QZmy#g=AG96M;Q|J~<&&l27gV{1=5nzMg!-w{~$M|1Wv1Ap+gdi8-9InmaF z=gt(h+BUXiW&hdZ5@o7W2V7XE<*wedDK9o_c>8qr=dwLV#3g~t9I3Xpr16-&m~$*? zv-_vG*l@qh&0YWW8>i;LN9_JPk7{a+e>asSILTV(-+6>38a&!{%m^v X{JIJE8(*O$X9C;yQB^jFgJu2)^r|@4 diff --git a/src/antidote/org/apache/tools/ant/gui/resources/new-project.gif b/src/antidote/org/apache/tools/ant/gui/resources/new-project.gif deleted file mode 100644 index 9fadc876b2613d9f0407eaa465d7a6912cb98fba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmZ?wbhEHb6k!lyXklQuGl}8$WY54AuY#5r+Z* diff --git a/src/antidote/org/apache/tools/ant/gui/resources/new-property.gif b/src/antidote/org/apache/tools/ant/gui/resources/new-property.gif deleted file mode 100644 index 6e82de7811039e1af8772bb7f0c72ceac5b1c887..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmZ?wbhEHb6k!lySjxa~XA;AzOk-f!2{Z(#tFP}L1A{LE!&M+#RrNaq zgO``r|BV|#nrR6X|MB@IrlcyAXO?6rxO@5rFev_HVPs%XV9){j1?Wc+1_rjP4if@6 zB&7NeHzWWh*e<+KXb=&Z#g?9US~P@_y@j!mK}D#`^dBePgmw0z}ib`i0~`}a%AiiyZ==k;Y+aO(6~@eA9d8K#_+JbmEY zZ7*gfdBNSA&YV4*<1Ei4cx}_-E!*7Ww|`x-?8C>F6{|}$FRQ7zvH55$I2fYb;-SLv O;en&WLPbXg25SHUci?#d diff --git a/src/antidote/org/apache/tools/ant/gui/resources/new-target.gif b/src/antidote/org/apache/tools/ant/gui/resources/new-target.gif deleted file mode 100644 index 107fa6a9cfafa6c036fa0291cbe82a227857716b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmZ?wbhEHb6k!lyXklQuGl}8ijzl!0`9R`M-3=Fdv z7>ZT@10|*zGSq4?B*;zPb9LjR|Nl2`WSDg4e|G=X$a0Sz|F<*P++pyX#$Z^>paE12 z2a5mrd=pbr70NS9G8EiBeFGR2f3h%gFvv6LfNTP}f`N6(1NFKC8S^v*7!Ezy$D+0B zXx5z{ip(BCDjW??8xtf-)Z>&cMzG29D_;s(VJ3Aoi$TfvYmFbnIfENt>kb}%ThQ^A z$+TfsZOLf?)+2KqZk)EO;3!q9b!RHC%vEb;E~{nMDk_t&EzW5*PjXkwN_Ni@6cQGh zt(+w)CMr6gO;CLCQl;e*l2U5~MK%P>FPE0uR$?xkJ!f7iyS`q#vaViESN%mLMFwjC DAQXDI diff --git a/src/antidote/org/apache/tools/ant/gui/resources/new-task.gif b/src/antidote/org/apache/tools/ant/gui/resources/new-task.gif deleted file mode 100644 index 4309cf340034b80b7c88d7f89daea1e553fd1c6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmZ?wbhEHb6k!lySjxaKY0{*mq@+8O7*?%X#lXPu|5&!WyL)_m{Qv(9|NsBLb?erZ zD_6X{y#B9ZxO0c$+_`fnPMnxGZ(d$r-nMPqHg4QFbLPz6-rlyhwydnIs;a6(hYlGT z8U5e5v8=4jz`(%H&JJh@O@ZP+KHtQYRE6@)k_-iRPu~Cr#h)yU3=9ekIzaCL{V2k~ zz_!CdfJ17z8@2Yx5e#C0N+m!x?>RavLQjr!z+S zRmTUjBu`)C$IHPR%O$mGv(wh?EIW7a*%uxjy=N^`Wmv4_iNz}<8KtFJ&Yf3~iM=d+ r`^L?)cMfg7#Uga&-i@c1t~}l>%OW8sw?Ov30<*k)*stThjttfSZNA~X diff --git a/src/antidote/org/apache/tools/ant/gui/resources/new.gif b/src/antidote/org/apache/tools/ant/gui/resources/new.gif deleted file mode 100644 index 462ae4c09af0f56365da5379dabd0bcb47bb64bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 997 zcmZvbUr19?9LK*Sk5`fEDVwsD!6>*<&D+Zc_L4Dtk%;!~>RWDK_?<7m!w(Lh^F604*m>yS zrDil^nQ#a|Y8I z6Dozwu*4qNL6{xTeGn294`^953~Cxxm9k7pssJ`%0y-c71RF40GOZ#Fi&~cI6y?-vVEU2y$z(hpk4B^Y{r!6bc0b0l(kh+S=;%dK(%V_@_KR z{xlYgtvq%*$E}#-&f;jt?>ZOYLc6o;{D@}2J%e?1hkoQQ4Bc@zjy1hg#*d)UdjiLd zofz1#wSM2%i;ri!5_7ISxnGgacw@`;`7fJ}4_({I`}^;m>3eJALGKN|fp VdG|o~_6v=^w?ogHu55JU$Uk+^?j!&J diff --git a/src/antidote/org/apache/tools/ant/gui/resources/open.gif b/src/antidote/org/apache/tools/ant/gui/resources/open.gif deleted file mode 100644 index 3bd72bee0b648a3a353f688e56113583d0d51b7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1001 zcmZvbUuYav7{yO&!8DYm+LW@}KSuP%ihbE>tD#MTsBLCP#Hl6OCm$TzrzxTILXdqL zX^A0iCv}7ogoKFJ%0!eA8uyB!F}2yWfk^c}#eu@6ghESQqtKSZ9;bP;n*-lHe3uU{ zzkBZODIDr}?Sodd;y#heTP<(ZytMPY=~T(|*Vk*T=?B&LruJ`KbFY-msYqOn@O^+! zOK==m77PPi(yYXs@HygAnk)+TA}K(1A`pgTfSQWS~a1OSH5rpW>5?WX zSVuiUqM$;A64HiU)2znSK4)E)O-6zd7$7M@IS4IC1NK^2EFkHE$|DqzS=bF&>4iQ? zwiXsqNYJH_4zGy8(-+*O4Sp3SkH-VW%^-m{p(J<*do_DprIf zfGQz$AT8L2=2Fax&k2_!CZ%8z4S{Lun6XdarEAg@6b)EdqOLHWpg%%a(kxQ+K8b}I zb(OKEKTEevGg=Mo|5#u{U=3JUSy@?LUS3>WTv%9`nVFfKoQ$GqY-}tDg2BPTQmNG6 z-|sk1UtgbPS>4^;hGDd~x94)XOeVuewej(AKw3BbNtadv>hD&=k_xfdOqH?W$#eOjSFv|ZaKAoI(zcg<%?D99cnxB zve%P6yK{8-z0qFz?9A|%`AaW(am(+~JFk4P+q=}VeQxwX@s0Hxb~Sa5&wqCB{hv39 ze|Ow%`}W0i*dgyX&Y-sk(hUrwAVk55eJC`Z5O z-(eylQX(UALd8rh#7b<$9+$!-LZT!_;_+6QR7jQ7NIhDO$%IVFjLe}#&g4R_jsuq(T7F5 z;(&iZz#*t1253;?DL60~+K`5pM{;qE8pl*Uf`mVeMP;Vu$Q5=$flGB$M~+Au0e}n7 z5j5N)O5_1dbR!Nh!7vrt=4L_dcEFgG@8w3tJP|^+nr9Q+wJyxy?(zx7!1&R+Rge$o1jluO7X-{q4Ze%8{p!*Y51wHj^74%y*lG z)AJweFP^L~96opNYi4<)sGDP7p5HqA{lmhsOMkBHzIM^>PTbsi=hUYLN78%7sA@F(YIVb_@9se;SY!3`OY~I-e0lv zWFGSHi}0n-mp*U0-|6~@FL&h8TaTW@ltss2LgTQ^xWqWz80;v_2!sMP1Wr0kS{yXk zrcuajkXQ#d47&m83C9t&Osv)Iij^ z2-~PK5fqSA1n79QQZyWD3ChEi;zZm<%tq8iL_kpyqC;AwL29H-N=zf|!nI+WFa?AP zbulc);6`CbU@8zHsEc7S47Un)5T*nXfSQ5jU+6-z#juF5iz*vI6OuqcT?~texro|` zm{0^lY6cdOPQ!I!+b~TC0o9-JET#-P8WS>y=hDgu%;BWPq`^UrZ8C+#24n>0(6MM4 zG&E{5WraOmO~>!ZJ2U=KCu6>z>L5$urM<-Gc`3e zK0ZD+Ha0psIy5vCkH@>Zx?-_dOG`^M8f|WFjzl8$_4SIPR99DrLZOn9lET8m+}vEw zdfnZo=YfF zItxC2-isTdGtT84{mr$N%l~e@(BB)b*|5E7N8^$9qWwq>EVyH2c diff --git a/src/antidote/org/apache/tools/ant/gui/resources/save.gif b/src/antidote/org/apache/tools/ant/gui/resources/save.gif deleted file mode 100644 index fc7fc0507e3cf7afe6e083a30746beaec82dd203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 981 zcmZvbT}TvB9L0|mXhlARFG@iXV^IdWP$r@UQO<5rL!le=)bt@VCE@Ku_G!S-AQ*F_ zi7d=Mh?oUo`VfZ*RM4%61?h%hgW(#|OSalWgte#9w_FeW@8N&>!{v9+y>;OOyDLu? zp$NZ-K;~kZi)IF$X$}PP2cEvqFe90EDJ_l|>{sb1bl}I~#bE0Y5ojTBN;2s(VX?!Y zP#INN4?hgA26hF60<9R7lCDe3qG3=~sVG^%2Ry(A1fU_9nWCGdm7vin|>Gj!9mB#jZO{Zt&n@e%hBv!M$_G=wNgm$XQOR7r(dWPSJ^JR7!v(4Z}c z#W?&JJRNofA_Q$YEQaCNz^j0*KompE!3r*PDcN#ZMA%1-hYA~tK(V$Q77_Om^Pt;^ z2!ym8EFznQ@5A$8+Yka;Fq3hawkQpbsO(=zD{+_ zzd2dmJToyo-`IPq#+k6vq>{j#UI{8ZPPs^?z^Zf#u~U;lPpW9rKE z`OxXQm(NBYZ{MNIx1*cY&TW$qPp#^4J|&Jv8$P_h-FT#Z&*%MrOLjfd9#plKDo*c( z6PLcF-tF8nTlV^D%g^-X0manUa~1n1C0D6NRNgC{V-TjLVG8QIi8Y zh0HFA9q=M>nqf6SNKmUm*QIUKG^y*9WlB;J@Bjy}00F4*XJ%+;XpT}Jpe!hL5gi^P z4w@}A2uLcb>E>zYXu8zXlv9)vM8ZSdLDYgKpr{DbC2i6qby6lJ7E$!zIdCjk0z!ql z6c*#~qHr`=3Pc#{Qdo?@YlhPROM<9|T7pGjG1*dBM8re0g9ZzdK()FQ77_Olb)Z>L z1j1?w7Evt1^WZqJEC>PBpUK4rNROf(9A+ZZ3!d$vGZIh-> zU8XEiD#5}G-3;wfngi4Yp)fl;J3T#} z&1NSiCX&fyB9Ryx8j8o`u~;k`jrR8TYMR#B*{LW>OG`^Q91ev-H8nNCV32?F!^0zn zVfb!9|GD|{+u!_b_*1qFScWbBt^Xq`(HeM;<$;RF*;=D7u=e@7P4B+6o%^*qR(?BQ zyXVS^5A9DU?W1;I`L?REn_IR1!HsRlUI%)*cU?f}$c>fjzqVdOx_$SZHTTaB%8JRpsfbOz5m$b^7hSPbcawU3~VVY+SivG!pi z0uhpe*@)&LaqNN#?S_dJ4FuZ|;(`znZ5BlY`!)KO>j(ey@jv|G@H^i*dqTT6Z9Gzj zGW;fd>64{Tn(lYH-tWunzc-j=*5#;8*I-g(uR=?r1uqUK3Nr!`hAM*@mnoYGgB==$ z!X}9g@Ir9vUIOF;34Fo z&O}f^QW2n=r9Dc+rIw`9OUWWE4{--k6A^*13YjixlLo1g3Mny%oCnW=W5N^=D%9z) z7>5^y6M-3qkfBb8#SpwYI6;^aL;z|YmVcpB$)>|1LLTZI1WiZ+0d+boBJLsTAYvjc zAgg&;L@o!BoE|FOWl!1Ay#K0ZD+HkMAO zhlhs;1_pY1dMwN8?CgxkU2QI9y*}FUxXub#+BWMR9R4|7N?o zx^-QjcYl?hf59J9c>J^Utn5=a=43uTIyrY(Vf;L=E{S=Mp~ZDO`N!MsvM3Uq44qZf}0voEo@z Uyzjxs?^g4f*3xyA%Sy22AKGl_!T2LmsI4u}gfgMlSu!%5H8YaL(8=7subXvwiky*M;sX^B|tscp}b z*00s>tDM}Z?W#VVb6wlgMFE{#3{?HqJv=&pnH_wlufg&zjrTnViw1vzut1`(0TWA; haYU_!!kuQDD0hb+z1G!0yWwjzQI)&NX;JyQSx diff --git a/src/antidote/org/apache/tools/ant/gui/resources/task.gif b/src/antidote/org/apache/tools/ant/gui/resources/task.gif deleted file mode 100644 index 8c091865b9911c86e17344270065e02508845077..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmZvbTSyd99L7J>(7+^62<@SZj3wRJEhrQvDsy%vn*!ZHx-C6KLqZ+PmjW z9`f*$@T4u4wrHByY1*(SclhD^1QQM?Ejl_!RSw9ENsPfYU`JqvA%al+;FQBLi+wty zDuv9D#2UB(*kv$%5E7Jp&~a#4)OD&VWtozc1YE!dOh5n%yqPIlW7PYoMkxzQA)>}b zz($z~pMazwpH70-Bz1@CDCGf4F(T%|un{p476>Zv(;+QVCsk4=B_@${;o7iGm;yq9 zvK$r-xDnW4m_Z0Xl;yA(fLjLJ2UCK`hmwNjUFcG><*;_!DNB@6urNhuj8-4@C{;l@M5$&e77}zOX*twKsSZ$%Ee7^K7MK!P3Kr()=VxbU z$H&Lx@%YHdNPmBSEEenR>@*CcrKKejiPYEEhr{98+S*_+SYBT4_xp>AiV6w}a&mI` zC(+f_t7+Q8W2blAf_d&Oo;Lo~5K4I({5nR~LKq;X|#Pwv~NXAU$W z*_Qq_-d%BZ&6js~GOeD98`JTQx{uYp?;5szI6CxJ--Pz>JNEzGd~u@W-gLvO>vQ$p z`HS^#l)(e->R-1DKxe=J$Z2OZt=|@ zZ?aBLmt0PaKe}I+rwuk7&MeAC+li{^m5%1Kt&Qi=c=FWm-LBE`^49Uy&n{)#PftIN U&dhYQ?l?Kr-nn*Hb{0zi0qi&Jm;e9( diff --git a/src/antidote/org/apache/tools/ant/gui/resources/unknown.gif b/src/antidote/org/apache/tools/ant/gui/resources/unknown.gif deleted file mode 100644 index cd94e5f689d484e81ba4e711a43afdb61a26863a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 zcmZ|OTSyd990u?&47x~Lgb*tQMvYLJ;YO&{8WGg&N;NOKB}BDUR6|-EBipAX%A#U~ zt>&c~q@rl-!aSsoMU=>jmwbq+hiwpB%k4t47(^26*XCQTeQ-D&_`m%4&VO5AYenV$ z0u&&HKZ#DA=+qU>zM|0=*|;z6_NSS4n6&6C6h2+#B4-#gav{Md~`^Q)JT<-Nr@R`T(~xD9lC%} zpiIYN3~mH=7 zB!-5Dy1TpE+uKdkGz=pai#0blM`ucDmB|lOEaGB`wtu}I(4M+aM8BFb_Gi(XU@p}MwDdNBD*66!0cggPC?W7;;xh55)Ze8 zj<;?(^L3;zuc+bH#-^`B{^dVC(WmFe2A4F>8o9akd}_V9DzxK9^@)-<*EUYBk)kJ8 z@BLEJQGe)_v1*TTB~@xX6Qu)vgH4{{r#DiUjb(xP_bbHsi1%v8_{YkN$>(Rz**k_e z<5T0pdHMSuR5X^q>sx#8`^TQ9+Q@`97GkLF|9LK+wghZLtLabzeglA?R+&!3NyGVr1?jgp&-E$j3HQ?n1#YQlB*n(n~ zRvkKsm_)?vX)d-y7uis;gD6cMWG?N79=Z%mP!jC7(Oa%x_`NT`#}6K#_kHhrVtC-v ztq?-^O$5?+OW!p;=yZJ{khk#evrpe;#ina;Nn=T&C1}Abz{$eQKqjF^!K%w;n?-|p zjZ$G+a1>qwP7G!QQa}xZu1njdVNlbkC={X&cz^?#fCN+oGgaElG>X*nR3t^381;~F z5Hk^x5GulSecBZoF0~~pB?^nMJQN&cO=KjJDx!2rn>0v`R7k-(>K;4?jtNsjs!;dC zVgX(jP6lQYG75D+EGFQ^;6z{w$S~9ftl&cTlI@2@Bs|0%L`(>Yu(}@>QSgv;kTH>z zh^h@(M7<8rgX6$7Atlsc#Xg9xpZyX1`Umx zLPbzCV4+HPnRbyzo|>eRrWoCe1)pw(wo7A)T8WCa8`%F?U_)RHSg6%%o12>(8yl;u ztL1WeetzDvteKgaLZOh$<+9oA*w|PmlS!pg$z(Dfk4K}?uCA{3_V(7+R{r&8XW#0& zzVp}_9JgbE2TP!H+s#ct6MBQ);75co)RM!&mQ&sS^x(s-mY&{6YaO_nJ0cFO^?fhn z(3#=s=YHp>XY4$E^V)i4@nxGZe+{&W72|xz@%GTjk2kL_o}BYuf2rP>>U(mzd1&&k zYK9+oPHi9C8X51t_wB*`+U@np6EEV6eFj I^`FJyKlU`!=>Px# diff --git a/src/antidote/org/apache/tools/ant/gui/util/ChangeLookAndFeel.java b/src/antidote/org/apache/tools/ant/gui/util/ChangeLookAndFeel.java deleted file mode 100644 index 0506e8ee3..000000000 --- a/src/antidote/org/apache/tools/ant/gui/util/ChangeLookAndFeel.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -package org.apache.tools.ant.gui.util; - -import org.apache.tools.ant.gui.core.AppContext; -import org.apache.tools.ant.gui.event.ErrorEvent; -import org.apache.tools.ant.gui.util.WindowUtils; - -import javax.swing.*; -import java.io.IOException; -import java.util.*; -import java.awt.*; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; - -/** - * Dialog for changing the current Look and Feel - * - * @version $Revision$ - * @author Erik Meade - */ -public class ChangeLookAndFeel extends JDialog { - - private AppContext _context; - - private JList lookAndFeels; - /** - * Standard ctor. - * - * @param context Application context. - */ - public ChangeLookAndFeel(AppContext context) { - super(context.getParentFrame(), true); - _context = context; - setDefaultCloseOperation(DISPOSE_ON_CLOSE); - - setTitle(context.getResources().getString( - getClass(), "title")); - - // Add the OK button. - JButton ok = new JButton( - context.getResources().getString(getClass(), "ok")); - ok.addActionListener(new ActionHandler()); - JPanel p = new JPanel(); - p.add(ok); - Container contentPane = getContentPane(); - getRootPane().setDefaultButton(ok); - p.setPreferredSize(new Dimension(150, p.getPreferredSize().height)); - contentPane.add(BorderLayout.SOUTH, p); - - // Add the list of look and feels - p = new JPanel(new BorderLayout()); - p.setBorder(BorderFactory.createTitledBorder( - context.getResources().getString(getClass(), "border"))); - - UIManager.LookAndFeelInfo[] lookAndFeelInfos = - UIManager.getInstalledLookAndFeels(); - String[] lookAndFeelNames = new String[lookAndFeelInfos.length]; - for (int i = 0; i < lookAndFeelInfos.length; i++) { - lookAndFeelNames[i] = lookAndFeelInfos[i].getName(); - } - - lookAndFeels = new JList(lookAndFeelNames); - lookAndFeels.setSelectedValue( - UIManager.getLookAndFeel().getName(), true); - p.add(lookAndFeels); - contentPane.add(BorderLayout.CENTER, p); - - // Just go ahead and show it... - pack(); - WindowUtils.centerWindow(context.getParentFrame(), this); - setVisible(true); - } - - /** Handles press of the OK button. */ - private class ActionHandler implements ActionListener { - public void actionPerformed(ActionEvent e) { - try { - UIManager.setLookAndFeel(getLookAndFeelClass( - (String)lookAndFeels.getSelectedValue())); - SwingUtilities.updateComponentTreeUI( - _context.getParentFrame()); - } catch (Exception ex) { - _context.getEventBus().postEvent( - new ErrorEvent( - _context, _context.getResources().getString( - ChangeLookAndFeel.class, "error") + ex)); - } - WindowUtils.sendCloseEvent(ChangeLookAndFeel.this); - } - } - - /** - * Get the Look and Feel class for the given name. - * - * @param lookAndFeelName Name of the look and feel. - * @return Class name to load. - */ - private String getLookAndFeelClass(String lookAndFeelName) { - UIManager.LookAndFeelInfo[] lookAndFeelInfos = - UIManager.getInstalledLookAndFeels(); - for (int i = 0; i < lookAndFeelInfos.length; i++) { - if (lookAndFeelInfos[i].getName().equals(lookAndFeelName)) - return lookAndFeelInfos[i].getClassName(); - } - return null; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/util/CheckableButtonModel.java b/src/antidote/org/apache/tools/ant/gui/util/CheckableButtonModel.java deleted file mode 100644 index 21b737ace..000000000 --- a/src/antidote/org/apache/tools/ant/gui/util/CheckableButtonModel.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.util; - -import java.awt.event.ActionEvent; -import javax.swing.DefaultButtonModel; - -/** - * Provides a button which appears "pressed" when it is in - * a selected state. - *

    - * Call setSelected to select the button. When the - * button is selected, both the PRESSED and ARMED properties are - * set which gives the button a pressed appearance. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class CheckableButtonModel extends DefaultButtonModel { - - boolean _pressed = false; - boolean _armed = false; - - /** - * Constructs a CheckableButtonModel - * - */ - public CheckableButtonModel() { - } - - /** - * Sets the button to pressed or unpressed. - * - * @param b true to set the button to "pressed" - * @see #isPressed - */ - public void setPressed(boolean b) { - - if((_pressed == b) || !isEnabled()) { - return; - } - - _pressed = b; - - if(!_pressed && _armed) { - fireActionPerformed( - new ActionEvent(this, ActionEvent.ACTION_PERFORMED, - getActionCommand()) - ); - } - - fireStateChanged(); - - stateMask |= PRESSED; - } - - /** - * Marks the button as "armed". If the mouse button is - * released while it is over this item, the button's action event - * fires. If the mouse button is released elsewhere, the - * event does not fire and the button is disarmed. - * - * @param b true to arm the button so it can be selected - */ - public void setArmed(boolean b) { - - if((_armed == b) || !isEnabled()) { - return; - } - - _armed = b; - fireStateChanged(); - stateMask |= ARMED; - } - - /** - * Returns true if the button is selected. - * - * @return true if the button is "selected" - */ - public boolean isArmed() { - return isSelected(); - } - - /** - * Returns true if the button is selected. - * - * @return true if the button is "selected" - */ - public boolean isPressed() { - return isSelected(); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/util/Collections.java b/src/antidote/org/apache/tools/ant/gui/util/Collections.java deleted file mode 100644 index aee959d4c..000000000 --- a/src/antidote/org/apache/tools/ant/gui/util/Collections.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -package org.apache.tools.ant.gui.util; -import java.util.List; -import java.util.ArrayList; - -/** - * This class consists exclusively of static methods that operate on or return - * collections. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class Collections { - /** - * Fills the input collection with the input array. - * - * @param dest the collection to fill, if null an ArrayList will be - * created and used. - * @param source source array - */ - public static List fill(List dest, Object[] source) { - if (dest == null) { - dest = new ArrayList(source.length); - } - for(int i = 0; i < source.length; i++) { - dest.add(source[i]); - } - return dest; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/util/LabelFieldGBC.java b/src/antidote/org/apache/tools/ant/gui/util/LabelFieldGBC.java deleted file mode 100644 index 4a34abbee..000000000 --- a/src/antidote/org/apache/tools/ant/gui/util/LabelFieldGBC.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.util; - -import java.awt.GridBagConstraints; -import java.awt.Insets; -import java.awt.Container; -import javax.swing.JLabel; - -/** - * Convenience specialization of the GridBagConstraints for laying - * out label:field pairs. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class LabelFieldGBC extends GridBagConstraints { - - /** - * Default ctor. Sets up the default settings. - * - */ - public LabelFieldGBC() { - // Add small abount of padding. - insets = new Insets(1,3,1,3); - // All vertical layout is relative - gridy = RELATIVE; - // Grid dimensions are equal (one label field pair per row). - gridheight = 1; - gridwidth = 1; - } - - /** - * Set up constraint values for placing a label before a field. - * - * @return Constraints for a label. - */ - public LabelFieldGBC forLabel() { - // Labels should only take up as much room as needed. - fill = NONE; - // Set location to left side. - gridx = 0; - // Move it over to be as close to field as possible. - anchor = NORTHEAST; - // Don't take up any extra. - weightx = 0.0; - return this; - } - - /** - * Provide the same setup as forLabel(), but allow it to expand vertically - * to use up any extra space there may be. - * - * @return Constraints for label that sucks up vertical space. - */ - public LabelFieldGBC forLastLabel() { - forLabel(); - fill = VERTICAL; - weighty = 1.0; - return this; - } - - /** - * Set up constraint values for placing a field after a label. - * - * @return Constraints for a field. - */ - public LabelFieldGBC forField() { - // The field should take up as much space as is necessary. - fill = HORIZONTAL; - // Set the location to the right side. - gridx = 1; - // Center the field in the space available (a noop in this case). - anchor = CENTER; - // Take up any extra space. - weightx = 1.0; - return this; - } - - /** - * Provide the same setup as forField(), but allow it to expand vertically - * - * - * @return Constraintes for field that sucks up vertical space. - */ - public LabelFieldGBC forLastField() { - forField(); - fill = BOTH; - weighty = 1.0; - return this; - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/util/StackFrame.java b/src/antidote/org/apache/tools/ant/gui/util/StackFrame.java deleted file mode 100644 index 00607c8ca..000000000 --- a/src/antidote/org/apache/tools/ant/gui/util/StackFrame.java +++ /dev/null @@ -1,208 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.util; - -import java.io.StringWriter; -import java.io.PrintWriter; -import java.util.StringTokenizer; - -/* - * Class for parsing the stack frame information from a Throwable's stack frame - * dump. Probably only suitable for debugging, as it depends on the specific - * output format of the stack dump, which could change with JVM releases. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class StackFrame { - private String _method = null; - private int _line = -1; - private String _clazz = null; - - /** - * Default ctor. Gets the stack frame info for the calling method. - * - */ - public StackFrame() { - this(1); - } - - public StackFrame(int frame) { - if(frame < 0) { - throw new IllegalArgumentException("Frame number must be <= 0"); - } - // Add a stack frame for this method and for - // the fillInStackTrace method. - frame += 2; - - Throwable t = new Throwable(); - t.fillInStackTrace(); - String text = toString(t); - - // Extract the line that has the stack frame info we want on it. - StringTokenizer tok = new StringTokenizer(text, "\n"); - // Ignore the first line as it just has the exception type on it. - tok.nextToken(); - String hit = null; - while(tok.hasMoreTokens() && frame-- >= 0) { - hit = tok.nextToken(); - } - - // This should always pass. '4' is the number of characters to get - // to the start of the class name ("\tat "). - if(hit != null && hit.length() > 4) { - int idx = hit.indexOf('('); - if(idx > 4) { - String before = hit.substring(4, idx); - String after = hit.substring(idx + 1, hit.length() - 1); - - // Extract the method name and class name. - idx = before.lastIndexOf('.'); - if(idx >= 0) { - _clazz = before.substring(0, idx); - _method = before.substring( - idx + 1, before.length()); - } - idx = after.lastIndexOf(':'); - // Extract the line number. If it fails in any way - // then just leave the value at -1 which is a valid value. - try { - _line = Integer.parseInt( - after.substring(idx + 1, after.length())); - } - catch(Exception ex) { - // Ignore. - } - } - } - } - - /** - * Utility method for converting a throwable object to a string. - * - * @param t Throwable to convert. - * @return String representation. - */ - public static String toString(Throwable t) { - StringWriter writer = new StringWriter(); - t.printStackTrace(new PrintWriter(writer)); - return writer.toString(); - } - - /** - * Get the stack frame class. - * - * @return - */ - public String getClassName() { - return _clazz; - } - - /** - * Get the name of the stack frame method - * - * @return - */ - public String getMethodName() { - return _method; - } - - /** - * Get the line number for the frame call. - * - * @return Line number, or -1 if unknown. - */ - public int getLineNumber() { - return _line; - } - - public String toString() { - return getClassName() + "." + getMethodName() + "(line " + - (getLineNumber() >= 0 ? - String.valueOf(getLineNumber()) : "unknown") + ")"; - } - - /** - * Test code. - * - * @param args Ignored. - */ -/* - public static void main(String[] args) { - //Test class for generating a bunch of stack frames. - class Test { - public Test() { - System.out.println("Main method: " + new StackFrame(2)); - recurse(20); - } - - private void recurse(int val) { - if(val == 0) { - System.out.println("Recurse method: " + new StackFrame()); - } - else if(val % 2 == 0) { - recurse(val - 1); - } - else { - recurse(val - 1); - } - } - } - - new Test(); - } -*/ -} - - diff --git a/src/antidote/org/apache/tools/ant/gui/util/WindowUtils.java b/src/antidote/org/apache/tools/ant/gui/util/WindowUtils.java deleted file mode 100644 index 446e23fba..000000000 --- a/src/antidote/org/apache/tools/ant/gui/util/WindowUtils.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.util; - -import java.awt.Window; -import java.awt.Rectangle; -import java.awt.Dimension; -import java.awt.event.WindowEvent; - -/** - * Function container for various window operations. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class WindowUtils { - /** - * Default ctor. - * - */ - private WindowUtils() {} - - /** - * Send a close event to the given window. - * - * @param window Window to send close event to. - */ - public static void sendCloseEvent(Window window) { - window.dispatchEvent( - new WindowEvent(window, WindowEvent.WINDOW_CLOSING)); - } - - /** - * Center the given child window with repsect to the parent window. - * - * @param parent Window to base centering on. - * @param child Window to center. - */ - public static void centerWindow(Window parent, Window child) { - Rectangle bounds = parent.getBounds(); - Dimension size = child.getSize(); - child.setLocation(bounds.x + (bounds.width - size.width)/2, - bounds.y + (bounds.height - size.height)/2); - } - - /** - * Center the given child window with repsect to the root. - * - * @param child Window to center. - */ - public static void centerWindow(Window child) { - Dimension rsize = child.getToolkit().getScreenSize(); - Dimension size = child.getSize(); - child.setLocation((rsize.width - size.width)/2, - (rsize.height - size.height)/2); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/util/XMLHelper.java b/src/antidote/org/apache/tools/ant/gui/util/XMLHelper.java deleted file mode 100644 index 277a64f76..000000000 --- a/src/antidote/org/apache/tools/ant/gui/util/XMLHelper.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.util; - -/** - * Placeholder for XML related duties. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class XMLHelper { - public static void init() { - try { - Class.forName("javax.xml.parsers.SAXParserFactory"); - } - catch(Exception ex) { - System.err.println("No JAXP compliant XML parser found. " + - "See http://java.sun.com/xml for the\n" + - "reference implementation."); - ex.printStackTrace(); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/version.txt b/src/antidote/org/apache/tools/ant/gui/version.txt deleted file mode 100644 index b6b2f8db9..000000000 --- a/src/antidote/org/apache/tools/ant/gui/version.txt +++ /dev/null @@ -1,2 +0,0 @@ -VERSION=@VERSION@ -DATE=@DATE@ diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/AbstractWizardStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/AbstractWizardStep.java deleted file mode 100644 index f5160ba53..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/AbstractWizardStep.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; -import org.apache.tools.ant.gui.core.ResourceManager; -import javax.swing.JComponent; - - -/** - * Abstract class implementing the basic support for the WizardStep interface. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public abstract class AbstractWizardStep extends JComponent - implements WizardStep { - - /** Flag to indicate whether or not init has been called. */ - private boolean _initialized = false; - /** Resources. */ - private ResourceManager _resources = null; - /** Step id. */ - private String _id = null; - /** Step display title. */ - private String _title = null; - /** Description of the step. */ - private String _description = null; - /** Data model. */ - private WizardData _model = null; - - /** - * Called when the instance should initialize its contents, e.g. - * create the widgets, etc. When this is called then all - * data values, including the ResourceManager, have been setup. - * - */ - protected abstract void init(); - - /** - * Set the step's resources. - * - */ - public void setResources(ResourceManager resources) { - _resources = resources; - } - - /** - * Get the step's resources. - * - * @return Resources. - */ - protected ResourceManager getResources() { - return _resources; - } - - /** - * Set the step id. The id must be unique among steps within the wizard. - * - * @param id Wizard id. - */ - public void setID(String id) { - _id = id; - } - - /** - * Get the step id. - * - * @return Step id. - */ - public String getID() { - return _id; - } - - /** - * Set the step title. - * - * @param title Step title. - */ - public void setTitle(String title) { - _title = title; - } - - /** - * Get the step title. - * - * @return Step title. - */ - public String getTitle() { - return _title; - } - - /** - * Set the step description. - * - * @param desc Step description. - */ - public void setDescription(String desc) { - _description = desc; - } - - /** - * Get the step description. - * - * @return Step description. - */ - public String getDescription() { - return _description; - } - - - /** - * Set the data model object that the step will edit. It is assumed - * that all steps initialized within a single wizard agree on the - * data model type. - * - * @param model Data model to edit. - */ - public void setDataModel(WizardData model) { - _model = model; - } - - /** - * Get the data model that should be passeed on to the next step. - * - * @return Current data model. - */ - public WizardData getDataModel() { - return _model; - } - - /** - * Get the component that should be displayed to the user for - * editing the model. This component should not include the - * title and text display, which is handled by the wizard container. - * - * @return Editing component. - */ - public JComponent getEditorComponent() { - if(!_initialized) { - init(); - _initialized = true; - } - - return this; - } - - /** - * Get the id of the next step. - * - * @return ID of next step. - */ - public String getNext() { - return getDataModel().getStateMachine().getNext( - this, getDataModel()); - } - - /** - * Get the id of the previous step. - * - * @return Previous step. - */ - public String getPrevious() { - return getDataModel().getStateMachine().getPrevious( - this, getDataModel()); - } - - /** - * Get a string representation of this. - * - * @return String representation. - */ - public String toString() { - StringBuffer buf = new StringBuffer(getClass().getName()); - buf.append("[id="); - buf.append(getID()); - buf.append("]"); - return buf.toString(); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/ButtonNavigator.java b/src/antidote/org/apache/tools/ant/gui/wizard/ButtonNavigator.java deleted file mode 100644 index 2780aed83..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/ButtonNavigator.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; -import org.apache.tools.ant.gui.core.ResourceManager; -import javax.swing.*; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; -import java.awt.FlowLayout; -import java.util.*; - -class ButtonNavigator extends JComponent implements WizardNavigator { - public static final String NEXT = "next"; - public static final String BACK = "back"; - public static final String CANCEL = "cancel"; - public static final String FINISH = "finish"; - - /** Resources. */ - private ResourceManager _resources = null; - /** Event listeners. */ - private List _listeners = new ArrayList(); - - /* Buttons. */ - private JButton _next = null; - private JButton _back = null; - private JButton _cancel = null; - private JButton _finish = null; - - /** Action handler. */ - private ActionHandler _handler = new ActionHandler(); - - public ButtonNavigator(ResourceManager resources) { - _resources = resources; - setLayout(new FlowLayout(FlowLayout.RIGHT)); - - _back = new JButton(_resources.getString(BACK)); - _next = new JButton(_resources.getString(NEXT)); - _finish = new JButton(_resources.getString(FINISH)); - _cancel = new JButton(_resources.getString(CANCEL)); - - _back.setActionCommand(BACK); - _next.setActionCommand(NEXT); - _finish.setActionCommand(FINISH); - _cancel.setActionCommand(CANCEL); - - _back.addActionListener(_handler); - _next.addActionListener(_handler); - _finish.addActionListener(_handler); - _cancel.addActionListener(_handler); - - _back.setEnabled(false); - _next.setEnabled(false); - _finish.setEnabled(false); - _cancel.setEnabled(true); - - add(_back); - add(_next); - add(_finish); - add(_cancel); - } - - /** - * Add a navigator listener. - * - * @param l Listener to add. - */ - public void addNavigatorListener(NavigatorListener l) { - _listeners.add(l); - } - - /** - * Remove a navigator listener. - * - * @param l Listener to remove. - */ - public void removeNavigatorListener(NavigatorListener l) { - _listeners.remove(l); - } - - /** - * Set the enabled state of the back button. - * - * @param state True for enabled, false for disabled. - */ - public void setBackEnabled(boolean state) { - _back.setEnabled(state); - } - /** - * Set the enabled state of the next button. - * - * @param state True for enabled, false for disabled. - */ - public void setNextEnabled(boolean state) { - _next.setEnabled(state); - } - /** - * Set the enabled state of the finished button. - * - * @param state True for enabled, false for disabled. - */ - public void setFinishEnabled(boolean state) { - _finish.setEnabled(state); - } - - /** Handler of the button presses. */ - private class ActionHandler implements ActionListener { - public void actionPerformed(ActionEvent e) { - Object source = e.getSource(); - - // Predetermine which method to call so that - // we don't traverse if statements for each iteration. - int idx = -1; - if(source == _next) { - idx = 0; - } - else if(source == _back) { - idx = 1; - } - else if(source == _cancel) { - idx = 2; - } - else if(source == _finish) { - idx = 3; - } - - Iterator it = _listeners.iterator(); - while(it.hasNext()) { - NavigatorListener l = (NavigatorListener) it.next(); - switch(idx) { - case 0: - l.nextStep(); - break; - case 1: - l.backStep(); - break; - case 2: - l.cancel(); - break; - case 3: - l.finish(); - break; - } - - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/DefaultStateMachine.java b/src/antidote/org/apache/tools/ant/gui/wizard/DefaultStateMachine.java deleted file mode 100644 index 317a7a9da..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/DefaultStateMachine.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; -import org.apache.tools.ant.gui.core.ResourceManager; -import java.util.*; - -/** - * A simple state machine based on the defined ordering of steps - * in the resources. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class DefaultStateMachine implements StateMachine { - - /** - * Get the list of step IDs defined in the resources as a list. - * - * @param data Current wizard state. - * @return List of step IDs - */ - protected List getStepList(WizardData data) { - return Arrays.asList(data.getResources().getStringArray("steps")); - } - - /** - * Get the next step. - * - * @param curr The current step. - * @param data The current state of the wizard. - * @return The ID of next step, or null if there currently isn't one. - */ - public String getNext(WizardStep curr, WizardData data) { - List steps = getStepList(data); - int nextIndex = steps.indexOf(curr.getID()) + 1; - if(nextIndex > 0 && nextIndex < steps.size()) { - return (String) steps.get(nextIndex); - } - return null; - } - - /** - * Get the previous step. - * - * @param curr The current step. - * @param data The current state of the wizard. - * @return The ID of previous step, or null if there currently isn't one. - */ - public String getPrevious(WizardStep curr, WizardData data) { - List steps = getStepList(data); - int nextIndex = steps.indexOf(curr.getID()) - 1; - if(nextIndex > 0 && nextIndex < steps.size()) { - return (String) steps.get(nextIndex); - } - return null; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/InstructionStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/InstructionStep.java deleted file mode 100644 index 65630e101..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/InstructionStep.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; -import javax.swing.*; -import java.awt.BorderLayout; -import java.awt.Font; -import java.awt.Insets; - -/** - * Wizard step whose only purpose is to display some text. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class InstructionStep extends AbstractWizardStep { - - /** - * Initialize the contents of the container. - * - */ - protected void init() { - setLayout(new BorderLayout()); - String msg = getResources().getString(getID() + ".instructions"); - - JTextArea text = new JTextArea(msg); - text.setMargin(new Insets(30, 20, 5, 5)); - text.setOpaque(false); - text.setFont(new Font("Serif", Font.PLAIN, 18)); - text.setEditable(false); - text.setLineWrap(true); - text.setWrapStyleWord(true); - add(text); - } - - /** - * Called when the step should refresh its display based on the - * current model setting. - * - */ - public void updateDisplay() { - // NOOP - } - /** - * Called when the step should update the data model based on the - * settings of its widgets. - * - */ - public void updateDataModel() { - // NOOP - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/NavigatorListener.java b/src/antidote/org/apache/tools/ant/gui/wizard/NavigatorListener.java deleted file mode 100644 index 9837f8d3e..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/NavigatorListener.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; - -/** - * Interface for classes interested in events from the WizardNavigator. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public interface NavigatorListener { - /** - * Called when the wizard should show the next step. - * - */ - void nextStep(); - /** - * Called when the wizard should show the previous step. - * - */ - void backStep(); - /** - * Called when the wizard should show the step with the given id. - * - * @param stepID ID of step to show. - */ - void gotoStep(String stepID); - /** - * Called when the wizard activity shold be cancelled. - * - */ - void cancel(); - /** - * Called when the wizard is finished. - * - */ - void finish(); -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/StateMachine.java b/src/antidote/org/apache/tools/ant/gui/wizard/StateMachine.java deleted file mode 100644 index 3ea92c82f..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/StateMachine.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; - -/** - * Interface for the wizard state machine, responsible for determining the - * next step in the wizard. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public interface StateMachine { - - /** - * Get the next step. - * - * @param curr The current step. - * @param data The current state of the wizard. - * @return The next step, or null if there currently isn't one. - */ - String getNext(WizardStep curr, WizardData data); - - /** - * Get the previous step. - * - * @param curr The current step. - * @param data The current state of the wizard. - * @return The previous step, or null if there currently isn't one. - */ - String getPrevious(WizardStep curr, WizardData data); -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/Wizard.java b/src/antidote/org/apache/tools/ant/gui/wizard/Wizard.java deleted file mode 100644 index a18424179..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/Wizard.java +++ /dev/null @@ -1,261 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; -import org.apache.tools.ant.gui.core.ResourceManager; - -import javax.swing.*; -import javax.swing.border.TitledBorder; -import java.awt.BorderLayout; -import java.awt.CardLayout; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.Insets; -import java.util.*; - -/** - * Top level container and controller for wizard-type GUI. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class Wizard extends JComponent { - /** The data model to pass on to each step. */ - private WizardData _data = null; - /** Container for the step editors. */ - private JPanel _stepContainer = null; - /** Layout manager for all the step panels. */ - private CardLayout _layout = null; - /** Set initialized steps. */ - private Map _steps = new HashMap(); - /** Steps saved in a list to preserve ordering. */ - private List _stepOrdering = new ArrayList(); - /** Description text. XXX should probably change to some other widget. */ - private JTextArea _description = null; - /** Progress meter. */ - private JProgressBar _progress = null; - /** Widget for navigating through steps. */ - private WizardNavigator _nav = null; - /** The current Wizard step. */ - private WizardStep _curr = null; - /** The set of wizard listeners. */ - private List _listeners = new ArrayList(1); - - /** - * Standard ctor. - * - * @param data Data for the wizard. - */ - public Wizard(WizardData data) { - setLayout(new BorderLayout()); - _data = data; - - _progress = new JProgressBar(); - _progress.setBorder(BorderFactory.createTitledBorder( - _data.getResources().getString("progress"))); - _progress.setStringPainted(true); - add(_progress, BorderLayout.NORTH); - - _description = new JTextArea(); - _description.setMargin(new Insets(5, 5, 5, 5)); - _description.setPreferredSize(new Dimension(100, 100)); - _description.setOpaque(true); - _description.setFont(new Font("Serif", Font.PLAIN, 12)); - _description.setEditable(false); - _description.setLineWrap(true); - _description.setWrapStyleWord(true); - - JScrollPane scroller = new JScrollPane( - _description, - JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, - JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); - - scroller.setBorder(BorderFactory.createTitledBorder( - _data.getResources().getString("help"))); - add(scroller, BorderLayout.WEST); - - _stepContainer = new JPanel(_layout = new CardLayout()); - _stepContainer.setBorder(BorderFactory.createEtchedBorder()); - _stepContainer.setPreferredSize(new Dimension(400, 400)); - - - add(_stepContainer, BorderLayout.CENTER); - - _nav = new ButtonNavigator(_data.getResources()); - _nav.addNavigatorListener(new NavHandler()); - ((ButtonNavigator)_nav).setBorder(BorderFactory.createEtchedBorder()); - add((ButtonNavigator)_nav, BorderLayout.SOUTH); - - String[] steps = _data.getResources().getStringArray("steps"); - _progress.setMaximum(steps.length - 1); - try { - for(int i = 0; i < steps.length; i++) { - Class type = _data.getResources().getClass(steps[i] + ".editor"); - WizardStep step = (WizardStep) type.newInstance(); - step.setResources(_data.getResources()); - step.setID(steps[i]); - step.setTitle( - _data.getResources().getString(steps[i]+ ".title")); - step.setDescription( - _data.getResources().getString(steps[i]+ ".description")); - - _steps.put(steps[i], step); - _stepOrdering.add(step); - _stepContainer.add(step.getEditorComponent(), steps[i]); - } - // Initialize the first screen with the data model. - if(steps.length > 0) { - WizardStep first = (WizardStep)_steps.get(steps[0]); - first.setDataModel(_data); - _curr = first; - showStep(first); - } - } - catch(Exception ex) { - // If we get here then the wizard didn't initialize properly. - // XXX log me. - ex.printStackTrace(); - } - - } - - /** - * Add a wizard listener. - * - * @param l Listener to add. - */ - public void addWizardListener(WizardListener l) { - _listeners.add(l); - } - - /** - * Remove a wizard listener. - * - * @param l Listener to remove. - */ - public void removeWizardListener(WizardListener l) { - _listeners.remove(l); - } - - /** - * Go to the given step. - * - * @param step Step to go to. - */ - private void showStep(WizardStep step) { - if(step == null) return; - - step.setDataModel(_curr.getDataModel()); - - // Update the title and description. - _stepContainer.setBorder( - BorderFactory.createCompoundBorder( - BorderFactory.createTitledBorder(step.getTitle()), - BorderFactory.createEmptyBorder(5, 15, 5, 15))); - _description.setText(step.getDescription()); - - _nav.setBackEnabled(step.getPrevious() != null); - _nav.setNextEnabled(step.getNext() != null); - _nav.setFinishEnabled(step.getNext() == null); - _progress.setValue(_stepOrdering.indexOf(step)); - - // Tell the step to refresh its display based on the data model. - step.updateDisplay(); - - // Display the step. - _layout.show(_stepContainer, step.getID()); - - _curr = step; - } - - /** Handler for actions invoked by wizard. */ - private class NavHandler implements NavigatorListener { - public void nextStep() { - // Called to give data model chance to make changes to what is next. - _curr.updateDataModel(); - String nextID = _curr.getNext(); - if(nextID != null) { - showStep((WizardStep)_steps.get(nextID)); - } - } - public void backStep() { - // Called to give data model chance to make changes to what is - // before. - _curr.updateDataModel(); - String prevID = _curr.getPrevious(); - if(prevID != null) { - showStep((WizardStep)_steps.get(prevID)); - } - } - public void gotoStep(String stepID){ - _curr.updateDataModel(); - showStep((WizardStep) _steps.get(stepID)); - } - public void cancel() { - _curr.updateDataModel(); - Iterator it = _listeners.iterator(); - while(it.hasNext()) { - WizardListener l = (WizardListener) it.next(); - l.canceled(); - } - } - public void finish() { - _curr.updateDataModel(); - Iterator it = _listeners.iterator(); - while(it.hasNext()) { - WizardListener l = (WizardListener) it.next(); - l.finished(_curr.getDataModel()); - } - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/WizardData.java b/src/antidote/org/apache/tools/ant/gui/wizard/WizardData.java deleted file mode 100644 index 1e92fe175..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/WizardData.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; - -import org.apache.tools.ant.gui.core.ResourceManager; - -/** - * Interface for the wizard data model. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public interface WizardData { - /** - * Get access to the resources for the wizard. - * - * @return Wizard resources. - */ - ResourceManager getResources(); - - /** - * Get the class the determines what the next step should be. - * - * @return State machine. - */ - StateMachine getStateMachine(); - - - /** - * Get any listeners to register with the wizard controller. - * - * @return WizardListener instances to register for control events, or null - * for none. - */ - // XXX not sure about this yet. - //WizardListener[] getWizardListeners(); - -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/WizardListener.java b/src/antidote/org/apache/tools/ant/gui/wizard/WizardListener.java deleted file mode 100644 index 3d4d4c11f..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/WizardListener.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; - - -/** - * Interface for classes desiring notifiction of when the user - * completes his/her use of wizard. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public interface WizardListener { - /** - * Called when the user has clicked the finish button. - * - * @param model Last state of the object model. - */ - void finished(Object model); - - /** - * Called when the user has clicked the cancel button. - * - */ - void canceled(); -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/WizardNavigator.java b/src/antidote/org/apache/tools/ant/gui/wizard/WizardNavigator.java deleted file mode 100644 index 5fb2495e3..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/WizardNavigator.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; - -/** - * Interface for classes that control the movement from one step of a - * wizard to another. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public interface WizardNavigator { - /** - * Add a navigator listener. - * - * @param l Listener to add. - */ - void addNavigatorListener(NavigatorListener l); - /** - * Remove a navigator listener. - * - * @param l Listener to remove. - */ - void removeNavigatorListener(NavigatorListener l); - - /** - * Set the enabled state of the back control. - * - * @param state True for enabled, false for disabled. - */ - void setBackEnabled(boolean state); - /** - * Set the enabled state of the next control. - * - * @param state True for enabled, false for disabled. - */ - void setNextEnabled(boolean state); - /** - * Set the enabled state of the finished control. - * - * @param state True for enabled, false for disabled. - */ - void setFinishEnabled(boolean state); -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/WizardStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/WizardStep.java deleted file mode 100644 index 94f722ad4..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/WizardStep.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard; -import org.apache.tools.ant.gui.core.ResourceManager; -import javax.swing.JComponent; - - -/** - * Interface for classes defining a step in a wizard. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public interface WizardStep { - /** - * Set the step's resources. - * - */ - void setResources(ResourceManager resources); - - /** - * Set the step id. The id must be unique among steps within the wizard. - * - * @param id Wizard id. - */ - void setID(String id); - - /** - * Get the step id. - * - * @return Step id. - */ - String getID(); - - /** - * Set the step title. - * - * @param title Step title. - */ - void setTitle(String title); - /** - * Get the step title. - * - * @return Step title. - */ - String getTitle(); - - /** - * Set the step description. - * - * @param desc Step description. - */ - void setDescription(String desc); - /** - * Get the step description. - * - * @return Step description. - */ - String getDescription(); - - /** - * Set the data model object that the step will edit. It is assumed - * that all steps initialized within a single wizard agree on the - * data model type. - * - * @param model Data model to edit. - */ - void setDataModel(WizardData model); - - /** - * Get the data model that should be passeed on to the next step. - * - * @return Current data model. - */ - WizardData getDataModel(); - - /** - * Get the component that should be displayed to the user for - * editing the model. This component should not include the - * title and text display, which is handled by the wizard container. - * - * @return Editing component. - */ - JComponent getEditorComponent(); - - /** - * Called when the step should refresh its display based on the - * current model setting. - * - */ - void updateDisplay(); - - /** - * Called when the step should update the data model based on the - * settings of its widgets. - * - */ - void updateDataModel(); - - /** - * Get the id of the next step. - * - * @return ID of next step. - */ - String getNext(); - - /** - * Get the id of the previous step. - * - * @return Previous step. - */ - String getPrevious(); - -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildData.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildData.java deleted file mode 100644 index 4b131a0b0..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildData.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard.build; - -import org.apache.tools.ant.gui.wizard.*; -import org.apache.tools.ant.gui.core.ResourceManager; -import org.apache.tools.ant.gui.acs.*; -import java.util.*; -import java.io.File; - -/** - * Data model for the build wizard. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class BuildData implements WizardData { - /** Wizard resources. */ - private ResourceManager _resources = new ResourceManager( - "org.apache.tools.ant.gui.resources.buildFileWizard"); - - private StateMachine _stateMachine = new BuildStateMachine(); - private String _name = "MyProject"; - private File _outputFile = new File("build.xml"); - private boolean _isNewProject = true; - private List _optionalSteps = null; - - /** - * Default ctor. - * - */ - public BuildData() { - //_project = ACSFactory.getInstance().createProject(); - _optionalSteps = Arrays.asList(ProjectSetupStep.OPTIONS); - } - - /** - * Get access to the resources for the wizard. - * - * @return Wizard resources. - */ - public ResourceManager getResources() { - return _resources; - } - - /** - * Get the class the determines what the next step should be. - * - * @return State machine. - */ - public StateMachine getStateMachine() { - return _stateMachine; - } - - /** - * Get the project name. - * - * @param name Project name. - */ - public void setProjectName(String name) { - _name = name; - } - - /** - * Set the project name. - * - * @return Project name. - */ - public String getProjectName() { - return _name; - } - - /** - * Set the output file. - * - * @param out Output file. - */ - public void setOutputFile(File out) { - _outputFile = out; - } - - /** - * Get the output file. - * - * @return Output file. - */ - public File getOutputFile() { - return _outputFile; - } - - - /** - * Set whether or not a new project is being created. - * - * @param isNew True if new project, false if importing a project. - */ - public void setNewProject(boolean isNew) { - _isNewProject = isNew; - } - - /** - * Determine if we are creating a new project. - * - * @return True if new project, false if importing a project. - */ - public boolean isNewProject() { - return _isNewProject; - } - - /** - * Set the set of optional steps (as IDs) that should be executed. - * - * @param steps Set of optional step IDs. - */ - public void setOptionalSteps(List steps) { - _optionalSteps = steps; - } - - /** - * Get the set of optional steps (as IDs) that should be executed. - * - * @return Set of optional step IDs. - */ - public List getOptionalSteps() { - return _optionalSteps; - - } - - /** - * Convert the state data into a project. - * - * @return Created project. - */ - public ACSProjectElement createProject() { - Builder builder = new Builder(this); - return builder.buildProject(); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildStateMachine.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildStateMachine.java deleted file mode 100644 index be69de3ed..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/build/BuildStateMachine.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard.build; -import org.apache.tools.ant.gui.wizard.*; -import org.apache.tools.ant.gui.core.ResourceManager; -import java.util.*; - -/** - * State machine defining the step ordering for the build wizard. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class BuildStateMachine extends DefaultStateMachine { - private List _optionals = Arrays.asList(ProjectSetupStep.OPTIONS); - - - /** - * Get the next step. - * - * @param curr The current step. - * @param data The current state of the wizard. - * @return The ID of next step, or null if there currently isn't one. - */ - public String getNext(ProjectSetupStep curr, WizardData data) { - return getFollowingID(super.getNext(curr, data), data, +1); - } - - /** - * Get the next step. - * - * @param curr The current step. - * @param data The current state of the wizard. - * @return The ID of next step, or null if there currently isn't one. - */ - public String getNext(OptionalStep curr, WizardData data) { - return getFollowingID(super.getNext(curr, data), data, +1); - } - - /** - * Get the previous step. - * - * @param curr The current step. - * @param data The current state of the wizard. - * @return The ID of previous step, or null if there currently isn't one. - */ - public String getPrevious(OptionalStep curr, WizardData data) { - return getFollowingID(super.getPrevious(curr, data), data, -1); - } - - /** - * Get the previous step. - * - * @param curr The current step. - * @param data The current state of the wizard. - * @return The ID of previous step, or null if there currently isn't one. - */ - public String getPrevious(FinishStep curr, WizardData data) { - return getFollowingID(super.getPrevious(curr, data), data, -1); - } - - /** - * Figure out which ID should follow the given one based on the current - * state setting of the optional steps. - * - * @param curr ID of the current step. - * @param data State data. - * @param direction +1 for next, -1 for previous. - * @return The ID to follow, or null if none. - */ - private String getFollowingID(String curr, WizardData data, int direction) { - String follow = curr; - List steps = getStepList(data); - List setting = ((BuildData)data).getOptionalSteps(); - - while(follow != null && _optionals.contains(follow) && - !setting.contains(follow)) { - - int index = steps.indexOf(follow) + direction; - if(index >= 0 && index < steps.size()) { - follow = (String) steps.get(index); - } - else { - follow = null; - } - } - - return follow; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/Builder.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/Builder.java deleted file mode 100644 index d2943b6bc..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/build/Builder.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard.build; - -import org.apache.tools.ant.gui.acs.*; - -/** - * Class that takes care of converting the wizard state data stored in - * BuildData and translates it into a build file. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class Builder { - - /** Build data. */ - private BuildData _data = null; - - /** - * Constructor. - * - * @param data Build data to create project from. - */ - public Builder(BuildData data) { - _data = data; - } - - /** - * Convert build data into a project. - * - * @return Project. - */ - public ACSProjectElement buildProject() { - ACSProjectElement retval = ACSFactory.getInstance().createProject(); - retval.setName(_data.getProjectName()); - - - return retval; - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/CompileStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/CompileStep.java deleted file mode 100644 index 72e6515a4..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/build/CompileStep.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard.build; - -import org.apache.tools.ant.gui.wizard.AbstractWizardStep; -import javax.swing.*; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; - -/** - * - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class CompileStep extends AbstractWizardStep implements OptionalStep { - - /** - * Initialize the display. - * - */ - protected void init() { - - - - } - - /** - * Called when the step should refresh its display based on the - * current model setting. - * - */ - public void updateDisplay() { - BuildData data = (BuildData) getDataModel(); - - } - - /** - * Called when the step should update the data model based on the - * settings of its widgets. - * - */ - public void updateDataModel() { - BuildData data = (BuildData) getDataModel(); - - } - - /** - * Get the id of the next step. - * - * @return ID of next step. - */ - public String getNext() { - return ((BuildStateMachine)getDataModel().getStateMachine()). - getNext(this, getDataModel()); - } - - /** - * Get the id of the previous step. - * - * @return Previous step. - */ - public String getPrevious() { - return ((BuildStateMachine)getDataModel().getStateMachine()). - getPrevious(this, getDataModel()); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/FinishStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/FinishStep.java deleted file mode 100644 index 421653d2d..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/build/FinishStep.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard.build; - -import org.apache.tools.ant.gui.wizard.InstructionStep; -import javax.swing.*; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; - -/** - * - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class FinishStep extends InstructionStep { - - - /** - * Called when the step should refresh its display based on the - * current model setting. - * - */ - public void updateDisplay() { - BuildData data = (BuildData) getDataModel(); - - } - - /** - * Called when the step should update the data model based on the - * settings of its widgets. - * - */ - public void updateDataModel() { - BuildData data = (BuildData) getDataModel(); - - } - - /** - * Get the id of the next step. - * - * @return ID of next step. - */ - public String getNext() { - return ((BuildStateMachine)getDataModel().getStateMachine()). - getNext(this, getDataModel()); - } - - /** - * Get the id of the previous step. - * - * @return Previous step. - */ - public String getPrevious() { - return ((BuildStateMachine)getDataModel().getStateMachine()). - getPrevious(this, getDataModel()); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/JARStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/JARStep.java deleted file mode 100644 index da90c62f6..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/build/JARStep.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard.build; - -import org.apache.tools.ant.gui.wizard.AbstractWizardStep; -import javax.swing.*; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; - -/** - * - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class JARStep extends AbstractWizardStep implements OptionalStep { - - /** - * Initialize the display. - * - */ - protected void init() { - } - - /** - * Called when the step should refresh its display based on the - * current model setting. - * - */ - public void updateDisplay() { - BuildData data = (BuildData) getDataModel(); - - } - - /** - * Called when the step should update the data model based on the - * settings of its widgets. - * - */ - public void updateDataModel() { - BuildData data = (BuildData) getDataModel(); - - } - - /** - * Get the id of the next step. - * - * @return ID of next step. - */ - public String getNext() { - return ((BuildStateMachine)getDataModel().getStateMachine()). - getNext(this, getDataModel()); - } - - /** - * Get the id of the previous step. - * - * @return Previous step. - */ - public String getPrevious() { - return ((BuildStateMachine)getDataModel().getStateMachine()). - getPrevious(this, getDataModel()); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/JavaDocStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/JavaDocStep.java deleted file mode 100644 index e8af955ed..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/build/JavaDocStep.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard.build; - -import org.apache.tools.ant.gui.wizard.AbstractWizardStep; -import javax.swing.*; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; - -/** - * - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class JavaDocStep extends AbstractWizardStep implements OptionalStep { - - /** - * Initialize the display. - * - */ - protected void init() { - } - - /** - * Called when the step should refresh its display based on the - * current model setting. - * - */ - public void updateDisplay() { - BuildData data = (BuildData) getDataModel(); - - } - - /** - * Called when the step should update the data model based on the - * settings of its widgets. - * - */ - public void updateDataModel() { - BuildData data = (BuildData) getDataModel(); - - } - - /** - * Get the id of the next step. - * - * @return ID of next step. - */ - public String getNext() { - return ((BuildStateMachine)getDataModel().getStateMachine()). - getNext(this, getDataModel()); - } - - /** - * Get the id of the previous step. - * - * @return Previous step. - */ - public String getPrevious() { - return ((BuildStateMachine)getDataModel().getStateMachine()). - getPrevious(this, getDataModel()); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/OptionalStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/OptionalStep.java deleted file mode 100644 index 1264c619b..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/build/OptionalStep.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard.build; -import org.apache.tools.ant.gui.wizard.WizardStep; - -/** - * A tagging interface for optional steps to make virtual dispatching easier. - * - * @version $Revision$ - * @author Simeon Fitch - */ -interface OptionalStep extends WizardStep { - -} diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectSetupStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectSetupStep.java deleted file mode 100644 index f1eba8f9f..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectSetupStep.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard.build; - -import org.apache.tools.ant.gui.wizard.AbstractWizardStep; -import org.apache.tools.ant.gui.util.LabelFieldGBC; -import org.apache.tools.ant.gui.customizer.FilePropertyEditor; -import javax.swing.*; -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.awt.GridBagLayout; -import java.util.*; -import java.io.File; - -/** - * Build file wizard step for naming the project and - * selecting what features are desired. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ProjectSetupStep extends AbstractWizardStep { - - /** ID for compile option. */ - public static final String COMPILE_OPTION = "compile"; - /** ID for JAR option. */ - public static final String JAR_OPTION = "jar"; - /** ID for JavaDoc option. */ - public static final String JAVADOC_OPTION = "javadoc"; - - /** Available options as an array. */ - public static final String[] OPTIONS = { - COMPILE_OPTION, - JAR_OPTION, - JAVADOC_OPTION - }; - - /** Array of the option selections. */ - private JCheckBox[] _selections = null; - - - /** Name of the project. */ - private JTextField _name = null; - /** Control for selecting a file. */ - private FilePropertyEditor _fileEditor = null; - - - /** - * Initialize the screen widgets. - * - */ - protected void init() { - setLayout(new BorderLayout()); - - LabelFieldGBC gbc = new LabelFieldGBC(); - JPanel p = new JPanel(new GridBagLayout()); - add(p, BorderLayout.NORTH); - - _fileEditor = new FilePropertyEditor(); - p.add(new JLabel( - getResources().getString(getID() + ".fileLabel")), gbc.forLabel()); - p.add(_fileEditor.getCustomEditor(), gbc.forField()); - - _name = new JTextField(10); - p.add(new JLabel( - getResources().getString(getID() + ".nameLabel")), gbc.forLabel()); - p.add(_name, gbc.forField()); - - p = new JPanel(null); - p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); - p.setBorder(BorderFactory.createCompoundBorder( - BorderFactory.createTitledBorder( - getResources().getString(getID() + ".optionsLabel")), - BorderFactory.createEmptyBorder(5, 10, 5, 10))); - add(p, BorderLayout.CENTER); - - _selections = new JCheckBox[OPTIONS.length]; - for(int i = 0; i < OPTIONS.length; i++) { - _selections[i] = new JCheckBox( - getResources().getString(getID() + "." + OPTIONS[i] + ".label")); - _selections[i].setSelected(true); - p.add(_selections[i]); - } - } - - /** - * Called when the step should refresh its display based on the - * current model setting. - * - */ - public void updateDisplay() { - // Name. - BuildData data = (BuildData) getDataModel(); - _name.setText(data.getProjectName()); - - _fileEditor.setValue(data.getOutputFile()); - - // Steps. - List steps = data.getOptionalSteps(); - if(steps != null) { - for(int i = 0; i < _selections.length; i++) { - _selections[i].setSelected(steps.contains(OPTIONS[i])); - } - } - } - - /** - * Called when the step should update the data model based on the - * settings of its widgets. - * - */ - public void updateDataModel() { - // Name. - BuildData data = (BuildData) getDataModel(); - data.setProjectName(_name.getText()); - - data.setOutputFile((File)_fileEditor.getValue()); - - // Steps. - List steps = new ArrayList(); - for(int i = 0; i < _selections.length; i++) { - if(_selections[i].isSelected()) { - steps.add(OPTIONS[i]); - } - } - - data.setOptionalSteps(steps); - } - - /** - * Get the id of the next step. - * - * @return ID of next step. - */ - public String getNext() { - return ((BuildStateMachine)getDataModel().getStateMachine()). - getNext(this, getDataModel()); - } - - /** - * Get the id of the previous step. - * - * @return Previous step. - */ - public String getPrevious() { - return ((BuildStateMachine)getDataModel().getStateMachine()). - getPrevious(this, getDataModel()); - } -} - diff --git a/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectTypeStep.java b/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectTypeStep.java deleted file mode 100644 index 880a16131..000000000 --- a/src/antidote/org/apache/tools/ant/gui/wizard/build/ProjectTypeStep.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.wizard.build; - -import org.apache.tools.ant.gui.wizard.AbstractWizardStep; -import javax.swing.*; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; -import org.apache.tools.ant.gui.acs.*; -import java.util.*; - -/** - * Step for selecting whether a new project is being created, or - * if an existing one is being imported. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ProjectTypeStep extends AbstractWizardStep { - - private JRadioButton _isNew = null; - private JRadioButton _isImport = null; - - /** - * Initialize the display. - * - */ - protected void init() { - setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); - - ButtonGroup group = new ButtonGroup(); - _isNew = new JRadioButton( - getResources().getString(getID() + ".isNewLabel")); - group.add(_isNew); - add(_isNew); - _isImport = new JRadioButton( - getResources().getString(getID() + ".isImportLabel")); - group.add(_isImport); - add(_isImport); - // XXX Not implemented yet. - _isImport.setEnabled(false); - _isImport.setToolTipText("Not implemented yet."); - } - - /** - * Called when the step should refresh its display based on the - * current model setting. - * - */ - public void updateDisplay() { - BuildData data = (BuildData) getDataModel(); - _isNew.setSelected(data.isNewProject()); - } - - /** - * Called when the step should update the data model based on the - * settings of its widgets. - * - */ - public void updateDataModel() { - BuildData data = (BuildData) getDataModel(); - data.setNewProject(_isNew.isSelected()); - } -}

    0{^A2Pf5o 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 diff --git a/src/antidote/etc/manifest b/src/antidote/etc/manifest deleted file mode 100644 index c06eb52b9..000000000 --- a/src/antidote/etc/manifest +++ /dev/null @@ -1,4 +0,0 @@ -Manifest-Version: 1.0 -Main-Class: org.apache.tools.ant.gui.Main - - diff --git a/src/antidote/org/apache/tools/ant/gui/About.java b/src/antidote/org/apache/tools/ant/gui/About.java deleted file mode 100644 index aa07f16b6..000000000 --- a/src/antidote/org/apache/tools/ant/gui/About.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui; -import org.apache.tools.ant.gui.util.WindowUtils; - -import org.apache.tools.ant.gui.core.AppContext; -import javax.swing.*; -import java.io.IOException; -import java.util.*; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; - -/** - * Dialog displaying information on the application. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class About extends JDialog { - - /** - * Standard ctor. - * - * @param context Application context. - */ - public About(AppContext context) { - super(context.getParentFrame(), true); - setDefaultCloseOperation(DISPOSE_ON_CLOSE); - - String version = null; - String date = null; - - Properties props = new Properties(); - - try { - props.load(getClass().getResourceAsStream("version.txt")); - } - catch(IOException ex) { - // XXX log me. - ex.printStackTrace(); - return; - } - - version = props.getProperty("VERSION", "??"); - date = props.getProperty("DATE", "??"); - - String message = context.getResources().getMessage( - getClass(), "message", - new Object[] { version, date }); - - String title = context.getResources().getString( - getClass(), "title"); - setTitle(title); - - JTextPane contents = new JTextPane(); - contents.setContentType("text/html"); - contents.setText(message); - contents.setEditable(false); - // XXX Still not sure why this is necessary. JTextPane doesn't - // seem to report a "true" preferred size. - contents.setPreferredSize( - new Dimension(contents.getPreferredSize().width, 450)); - getContentPane().add(BorderLayout.CENTER, contents); - - // Add the OK button. - JButton ok = new JButton( - context.getResources().getString(getClass(), "ok")); - ok.addActionListener(new ActionHandler()); - JPanel p = new JPanel(); - p.add(ok); - getContentPane().add(BorderLayout.SOUTH, p); - - getRootPane().setDefaultButton(ok); - - - // Just go ahead and show it... - pack(); - WindowUtils.centerWindow(context.getParentFrame(), this); - setVisible(true); - } - - /** Handles press of the OK button. */ - private class ActionHandler implements ActionListener { - public void actionPerformed(ActionEvent e) { - WindowUtils.sendCloseEvent(About.this); - } - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/Antidote.java b/src/antidote/org/apache/tools/ant/gui/Antidote.java deleted file mode 100644 index 6f9eb6e25..000000000 --- a/src/antidote/org/apache/tools/ant/gui/Antidote.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui; -import org.apache.tools.ant.gui.core.*; -import javax.swing.*; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.lang.reflect.Constructor; - -/** - * The root class for the Ant GUI. Assembles all the graphical components - * based on the configuration files. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class Antidote extends JComponent { - /** Source of application state data. */ - private AppContext _context = null; - - /** - * Default ctor. - * - */ - public Antidote(AppContext context) { - setLayout(new BorderLayout()); - - _context = context; - - // Add the various modules to the editing area. - JSplitPane splitter = new JSplitPane(); - splitter.add(JSplitPane.LEFT, populateModules("left")); - splitter.add(JSplitPane.RIGHT, populateModules("right")); - // This is necessary because, frankly, the JSplitPane widget - // sucks, and doesn't provide enought (working) control over the - // initial size of it's subcomponents. setDividerLocation(double) - // doesn't seem to work until after the widget is visible. - splitter.setPreferredSize(new Dimension(500, 300)); - - // Top bottom splitter. - JSplitPane splitter2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT); - splitter2.setOneTouchExpandable(true); - - splitter2.add(JSplitPane.TOP, splitter); - splitter2.add(JSplitPane.BOTTOM, populateModules("bottom")); - - add(BorderLayout.CENTER, splitter2); - splitter2.resetToPreferredSizes(); - - add(BorderLayout.NORTH, populateModules("top")); - - setPreferredSize(new Dimension(640, 480)); - } - - - /** - * Instantiate the configured modules. - * - * @return Component containing the modules(s). - */ - private JComponent populateModules(String prefix) { - - String[] classNames = _context.getResources(). - getStringArray(getClass(), prefix + ".modules"); - - AntModule[] modules = new AntModule[classNames.length]; - - for(int i = 0; i < classNames.length; i++) { - try { - Class type = Class.forName(classNames[i]); - - modules[i] = (AntModule) type.newInstance(); - modules[i].contextualize(_context); - } - catch(Exception ex) { - // XXX log me. - ex.printStackTrace(); - } - } - - if(modules.length == 1) { - return modules[0]; - } - else if(modules.length > 1) { - JTabbedPane tabbed = new JTabbedPane(JTabbedPane.BOTTOM); - - for(int i = 0; i < modules.length; i++) { - tabbed.addTab(modules[i].getName(), modules[i]); - } - return tabbed; - } - else { - return new JLabel("I shouldn't be here..."); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/Args.java b/src/antidote/org/apache/tools/ant/gui/Args.java deleted file mode 100644 index 9c9581a6f..000000000 --- a/src/antidote/org/apache/tools/ant/gui/Args.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -package org.apache.tools.ant.gui; -import org.apache.tools.ant.gui.core.ResourceManager; - -/** - * Class encapsulating the parsing of command-line arguments for Antidote. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class Args { - - private ResourceManager _resources = null; - private boolean _wizardMode = false; - private String _fileName = null; - private boolean _debugMode = false; - - /** - * Ctor for parsing command line arguments. - * - * @param args Arguments to parse. - */ - public Args(String[] args) { - for(int i = 0; i < args.length; i++) { - String arg = args[i]; - if(i == args.length - 1 && !arg.startsWith("-")) { - _fileName = arg; - } - else if(arg.startsWith("-h")) { - System.out.println(getUsage()); - System.exit(0); - } - else if(arg.equals("-wizard")) { - _wizardMode = true; - } - else if(arg.equals("-debug")) { - _debugMode = true; - } - else { - String msg = getResources().getMessage( - "invalidArg", new Object[] { arg }); - abort(msg); - } - } - } - - /** - * Get the resources, loading them if necessary. - * - * @return Loaded resources. - */ - private ResourceManager getResources() { - if(_resources == null) { - _resources = new ResourceManager( - "org.apache.tools.ant.gui.resources.args"); - } - return _resources; - } - - /** - * Print message and exit. - * - * @param error Error message to print. - */ - private void abort(String error) { - System.err.println(error); - System.err.println(getUsage()); - System.exit(1); - } - - /** - * Get the command line usage of Antidote. - * - * @return Command line usage help. - */ - public String getUsage() { - return getResources().getString("usage"); - } - - /** - * Get the build filename. - * - * @return Build file name. - */ - public String getBuildFile() { - return _fileName; - } - - /** - * Determine if wizard mode was requested for generating a new - * build file. - * - * @return True if wizard mode, false otherwise. - */ - public boolean isWizardMode() { - return _wizardMode; - } - - /** - * Determine if debug mode was requested. - * - * @return True if debug mode, false otherwise. - */ - public boolean isDebugMode() { - return _debugMode; - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/Main.java b/src/antidote/org/apache/tools/ant/gui/Main.java deleted file mode 100644 index 5047a0ab1..000000000 --- a/src/antidote/org/apache/tools/ant/gui/Main.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui; -import org.apache.tools.ant.gui.core.*; -import org.apache.tools.ant.gui.util.XMLHelper; -import org.apache.tools.ant.gui.wizard.Wizard; -import org.apache.tools.ant.gui.wizard.build.BuildData; -import org.apache.tools.ant.gui.wizard.WizardListener; -import org.apache.tools.ant.gui.command.LoadFileCmd; -import org.apache.tools.ant.gui.event.EventBus; -import org.apache.tools.ant.gui.acs.ACSFactory; -import javax.swing.*; -import java.awt.BorderLayout; -import java.io.File; - -/** - * Launch point for the Antidote GUI. Configurs it as an application. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class Main { - /** - * Application start. - * - * @param args TBD - */ - public static void main(String[] args) { - XMLHelper.init(); - - Args settings = new Args(args); - - - try { - JFrame f = new JFrame("Antidote"); - f.setDefaultCloseOperation(3 /*JFrame.EXIT_ON_CLOSE*/); - AppContext context = new AppContext(f); - - if(!settings.isWizardMode()) { - EventResponder resp = new EventResponder(context); - Antidote gui = new Antidote(context); - - JMenuBar menu = context.getActions().createMenuBar(); - f.setJMenuBar(menu); - f.getContentPane().add(BorderLayout.CENTER, gui); - f.getContentPane().add(BorderLayout.NORTH, - context.getActions().createToolBar()); - - // Add the project selection menu. - ProjectSelectionMenu ps = new ProjectSelectionMenu(context); - ps.insertInto(menu); - - // Add debugging items. - if(settings.isDebugMode()) { - context.getEventBus().addMember( - EventBus.VETOING, new EventDebugMonitor()); - } - - // Load a build file if one is provided. - if(settings.getBuildFile() != null) { - LoadFileCmd load = new LoadFileCmd(context); - load.setFile(new File(settings.getBuildFile())); - load.run(); - } - } - else { - // We are in wizard mode. Create it. - Wizard wiz = new Wizard(new BuildData()); - // XXX this is temporary for testing. Eventually - // it will launch the regular antidote screen with the - // results of the wizard. - wiz.addWizardListener(new WizardListener() { - public void finished(Object model) { - BuildData data = (BuildData) model; - System.out.println(data.createProject()); - System.exit(0); - } - public void canceled() { - System.exit(0); - } - - }); - - f.getContentPane().add(BorderLayout.CENTER, wiz); - } - - ImageIcon icon = - context.getResources().loadImageIcon("icon-small.gif"); - if(icon != null) { - f.setIconImage(icon.getImage()); - } - else { - System.out.println("Application icon not found."); - } - - f.pack(); - f.setVisible(true); - - } - catch(Exception ex) { - ex.printStackTrace(); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSBeanDescriptor.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSBeanDescriptor.java deleted file mode 100644 index 2912e302b..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSBeanDescriptor.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import org.apache.tools.ant.gui.core.ResourceManager; -import java.beans.*; - -/** - * Specialized BeanDescriptor for providing more descriptive information. - * - * @version $Revision$ - * @author Simeon Fitch - */ -class ACSBeanDescriptor extends BeanDescriptor { - public ACSBeanDescriptor(BaseBeanInfo type) { - super(type.getType(), type.getCustomizerType()); - setDisplayName( - type.getResources().getString(type.getClass(), "beanName")); - setShortDescription( - type.getResources().getString(type.getClass(), "beanDescription")); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSDefaultElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSDefaultElement.java deleted file mode 100644 index eb82fa671..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSDefaultElement.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import com.sun.xml.tree.ElementNode; - -/** - * Default element used when no other element is specificed. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSDefaultElement extends ACSElement { - /** - * Default ctor. - * - */ - public ACSDefaultElement() { - - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSDocumentType.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSDocumentType.java deleted file mode 100644 index 4ad48f039..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSDocumentType.java +++ /dev/null @@ -1,504 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; -import java.io.*; -import java.net.*; -import java.util.*; -import org.w3c.dom.*; -import javax.xml.parsers.*; -import org.xml.sax.SAXException; -import org.xml.sax.InputSource; -import com.sun.xml.parser.Parser; -import com.sun.xml.parser.DtdEventListener; -import com.sun.xml.parser.ValidatingParser; -import com.sun.xml.tree.*; -import com.sun.xml.parser.Resolver; - -/** - * Reads the ANT DTD and provides information about it. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class ACSDocumentType extends java.lang.Object { - /** ID for core elements */ - public final static int CORE_ELEMENT = 0; - /** ID for optional elements */ - public final static int OPTIONAL_ELEMENT = 1; - /** True if the DTD has been loaded */ - private boolean isInit = false; - /** Hold the core DTD elements */ - private HashMap coreElementMap = new HashMap(); - /** Hold the optional DTD elements */ - private HashMap optionalElementMap = new HashMap(); - /** Hold the DTD elements */ - private HashMap elementMap; - /** First part of the XML document used to load the DTD */ - private final static String XMLDOC_1 = - "" + - "" + - ""; - /** DTD which holds the core tasks */ - private final static String DTD_1 = "project.dtd"; - /** DTD which holds the optional tasks */ - private final static String DTD_2 = "project-ext.dtd"; - /** DTD which holds the shared elements */ - private final static String DTD_SHARE = "share.dtd"; - - /** - * Standard ctor. - */ - public ACSDocumentType() { - } - - /** - * Loads the DTD if not already loaded. - */ - public void init() { - // Return if already inited. - if (isInit) { - return; - } - - try { - // Setup the parser - Parser p = new Parser(); - p.setEntityResolver(new ACSResolver()); - - // Setup the builder - XmlDocumentBuilder builder = new XmlDocumentBuilder(); - SimpleElementFactory fact = new SimpleElementFactory(); - fact.addMapping(new Properties(), - ACSDocumentType.class.getClassLoader()); - builder.setElementFactory(fact); - builder.setParser(p); - - DtdHandler dtdh = new DtdHandler(); - p.setDTDHandler(dtdh); - - String coreDoc = XMLDOC_1 + DTD_1 + XMLDOC_2; - String optionalDoc = XMLDOC_1 + DTD_2 + XMLDOC_2; - - // Parse the core task DTD - elementMap = coreElementMap; - InputSource xmldocCore = new InputSource( - new ByteArrayInputStream(coreDoc.getBytes())); - p.parse(xmldocCore); - - // Parse the core task DTD - elementMap = optionalElementMap; - InputSource xmldocOptional = new InputSource( - new ByteArrayInputStream(optionalDoc.getBytes())); - p.parse(xmldocOptional); - - isInit = true; - } catch (Exception e) { - System.out.println(e); - } - } - - /** - * Returns the dtd element. - * - * @param elementType CORE_ELEMENT or OPTIONAL_ELEMENT - * @param name the element name - */ - public DtdElement findElement(int elementType, String name) { - if (elementType == OPTIONAL_ELEMENT) { - return (DtdElement) optionalElementMap.get(name); - } - return (DtdElement) coreElementMap.get(name); - } - - /** - * Class which represents a DTD element. - */ - static class DtdElement { - private String _name; - private String[] _contentModel; - private DtdAttributes _map = new DtdAttributes(); - - public String getName() { - return _name; - } - public void setName(String name) { - _name = name; - } - public String[] getContentModel() { - return _contentModel; - } - public void setContentModel(String[] model) { - _contentModel = model; - } - public DtdAttributes getAttributes() { - return _map; - } - } - - /** - * Class which represents a DTD attribute. - */ - static class DtdAttribute { - private String _name; - private String _type; - private String[] _options; - private String _defaultValue; - private boolean _isFixed; - private boolean _isRequired; - - public String getName() { - return _name; - } - public void setName(String name) { - _name = name; - } - public String getType() { - return _type; - } - public void setType(String type) { - _type = type; - } - public String getDefaultValue() { - return _defaultValue; - } - public void setDefaultValue(String value) { - _defaultValue = value; - } - public String[] getOptions() { - return _options; - } - public void setOptions(String[] s) { - _options = s; - } - public boolean isFixed() { - return _isFixed; - } - public void setFixed(boolean value) { - _isFixed = value; - } - public boolean isRequired() { - return _isRequired; - } - public void setRequired(boolean value) { - _isRequired = value; - } - } - - /** - * Class which represents a collection of DTD attributes. - */ - public static class DtdAttributes extends HashMap { - /** - * Default constructor - */ - public DtdAttributes() { - } - - /** - * Adds the Attribute - * - * @param attribute new attribute - */ - public void addAttribute(DtdAttribute attribute) { - put(attribute.getName(), attribute); - } - - /** - * Return the requested attribute - * - * @param name attribute name - * @returns the requested attribute - */ - public DtdAttribute getAttribute(String name) { - return (DtdAttribute) get(name); - } - - /** - * @returns an array of the optional attribute names - */ - public String[] getOptionalAttributes() { - ArrayList list = new ArrayList(); - Iterator i = values().iterator(); - while(i.hasNext()) { - DtdAttribute a = (DtdAttribute)i.next(); - if (!a.isRequired()) { - list.add(a.getName()); - } - } - String[] result = new String[list.size()]; - list.toArray(result); - return result; - } - - /** - * @returns an array of the required attribute names - */ - public String[] getRequiredAttributes() { - ArrayList list = new ArrayList(); - Iterator i = values().iterator(); - while(i.hasNext()) { - DtdAttribute a = (DtdAttribute)i.next(); - if (a.isRequired()) { - list.add(a.getName()); - } - } - String[] result = new String[list.size()]; - list.toArray(result); - return result; - } - /** - * @returns an array of the all attribute names - */ - public String[] getAttributes() { - ArrayList list = new ArrayList(); - Iterator i = values().iterator(); - while(i.hasNext()) { - DtdAttribute a = (DtdAttribute)i.next(); - list.add(a.getName()); - } - String[] result = new String[list.size()]; - list.toArray(result); - return result; - } - } - - /** - * When parsing XML documents, DTD related events are signaled through - * this interface. - */ - class DtdHandler implements DtdEventListener { - public void externalDtdDecl ( - String publicId, - String systemId) - throws SAXException { } - - public void internalDtdDecl ( - String internalSubset) - throws SAXException { } - - public void internalEntityDecl ( - String name, - String value) - throws SAXException { } - - public void externalEntityDecl ( - String name, - String publicId, - String systemId) - throws SAXException { } - - public void endDtd () - throws SAXException { } - - public void notationDecl ( - String name, - String publicId, - String systemId) - throws SAXException { } - - public void unparsedEntityDecl ( - String name, - String publicId, - String systemId, - String notationName) - throws SAXException { } - - public void startDtd ( - String rootName - ) throws SAXException - { - elementMap.clear(); - } - - /** - * Reports an attribute declaration found within the DTD. - * - * @param elementName The name of the element to which the attribute - * applies; this includes a namespace prefix if one was used within - * the DTD. - * @param attributeName The name of the attribute being declared; this - * includes a namespace prefix if one was used within the DTD. - * @param attributeType The type of the attribute, either CDATA, NMTOKEN, - * NMTOKENS, ENTITY, ENTITIES, NOTATION, ID, IDREF, or IDREFS as - * defined in the XML specification; or null for enumerations. - * @param options When attributeType is null or NOTATION, this is an - * array of the values which are permitted; it is otherwise null. - * @param defaultValue When not null, this provides the default value - * of this attribute. - * @param isFixed When true, the defaultValue is the only legal value. - * (Precludes isRequired.) - * @param isRequired When true, the attribute value must be provided - * for each element of the named type. (Precludes isFixed.) - */ - public void attributeDecl ( - String elementName, - String attributeName, - String attributeType, - String options [], - String defaultValue, - boolean isFixed, - boolean isRequired - ) throws SAXException - { - // Try to find the element. - DtdElement e = (DtdElement) elementMap.get(elementName); - if (e == null) { - throw new SAXException("element " + elementName + - " not declared before attributes"); - } - - // Update the element's attribute. - DtdAttribute attrib = new DtdAttribute(); - attrib.setName(attributeName); - attrib.setType(attributeType); - attrib.setFixed(isFixed); - attrib.setRequired(isRequired); - attrib.setDefaultValue(defaultValue); - attrib.setOptions(options); - e.getAttributes().addAttribute(attrib); - } - - /** - * Reports an element declaration found within the DTD. The content - * model will be a string such as "ANY", "EMPTY", "(#PCDATA|foo)*", - * or "(caption?,tr*)". - * - * @param elementName The name of the element; this includes a namespace - * prefix if one was used within the DTD. - * @param contentModel The content model as defined in the DTD, with - * any whitespace removed. - */ - public void elementDecl ( - String elementName, - String contentModel - ) throws SAXException - { - DtdElement e = new DtdElement(); - e.setName(elementName); - - // Break the contentModel string into pieces. - ArrayList list = new ArrayList(); - StringTokenizer st = new StringTokenizer(contentModel, "|()*"); - while (st.hasMoreTokens()) { - String s = st.nextToken(); - if ( s.length() > 0 && !"EMPTY".equals(s) ) { - list.add(s); - } - } - String[] array = new String[list.size()]; - list.toArray(array); - e.setContentModel(array); - - // Update the map - elementMap.put(e.getName(), e); - } - } - - /** - * We provide the location for the ant dtds. - */ - class ACSResolver implements org.xml.sax.EntityResolver { - - /** - * We process the project.dtd and project-ext.dtd. - * - * @param name Used to find alternate copies of the entity, when - * this value is non-null; this is the XML "public ID". - * @param uri Used when no alternate copy of the entity is found; - * this is the XML "system ID", normally a URI. - */ - public InputSource resolveEntity ( - String publicId, - String systemId) - throws SAXException, IOException { - - InputStream result = null; - - // Is it the project.dtd? - if (systemId.indexOf(DTD_1) != -1) { - try { - // Look for it as a resource - result = getClass().getResourceAsStream(DTD_1); - } catch (Exception e) {} - } - // Is it the project-ext.dtd? - if (systemId.indexOf(DTD_2) != -1) { - try { - // Look for it as a resource - result = getClass().getResourceAsStream(DTD_2); - } catch (Exception e) {} - } - if (result != null) { - return new InputSource(result); - } - // Is it the share.dtd? - if (systemId.indexOf(DTD_SHARE) != -1) { - try { - // Look for it as a resource - result = getClass().getResourceAsStream(DTD_SHARE); - } catch (Exception e) {} - } - if (result != null) { - return new InputSource(result); - } - - // Otherwise, use the default impl. - com.sun.xml.parser.Resolver r = new com.sun.xml.parser.Resolver(); - return r.resolveEntity(publicId, systemId); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedAttributes.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedAttributes.java deleted file mode 100644 index d732d67b3..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedAttributes.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ - -package org.apache.tools.ant.gui.acs; -import org.apache.tools.ant.gui.acs.ACSDocumentType.DtdElement; -import java.util.Properties; - -/** - * Represents the attributes defined by the DTD. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class ACSDtdDefinedAttributes extends Properties { - - ACSDocumentType.DtdElement _element = null; - - /** - * Default constructor - */ - public ACSDtdDefinedAttributes() { - this(null); - } - - /** - * Constructor - * - * @param element provides information about possible attributes. - */ - public ACSDtdDefinedAttributes(ACSDocumentType.DtdElement element) { - _element = element; - } - - /** - * Return the required attributes or null. - */ - public String[] getRequiredAttributes() { - if (_element == null) { - return null; - } - return _element.getAttributes().getRequiredAttributes(); - } - /** - * Return the optional attributes or null. - */ - public String[] getOptionalAttributes() { - if (_element == null) { - return null; - } - return _element.getAttributes().getOptionalAttributes(); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedElement.java deleted file mode 100644 index 5c2bdd3e9..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedElement.java +++ /dev/null @@ -1,329 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; -import org.apache.tools.ant.gui.command.NewElementCmd; -import org.apache.tools.ant.gui.util.Collections; -import org.w3c.dom.*; -import java.beans.*; -import java.util.*; - -/** - * Element defined by the DTD. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class ACSDtdDefinedElement extends ACSTreeNodeElement -implements ACSInfoProvider { - - /** Property name for the task type. */ - public static final String TASK_TYPE = "taskType"; - /** Property name for attributes. It's called "namedValues" so - * it doesn't collide with the Node.getAttributes() method. */ - public static final String NAMED_VALUES = "namedValues"; - /** The ANT DTD */ - static ACSDocumentType docType = new ACSDocumentType(); - /** Our menu string */ - public String[] menuString = null; - /** The DTD element we represent */ - private ACSDocumentType.DtdElement _dtdElement = null; - - /** - * Default ctor. - * - */ - public ACSDtdDefinedElement() { - // Load the DTD - docType.init(); - } - - /** - * Get the task type. - * - * @return Task type. - */ - public String getTaskType() { - return getTagName(); - } - - /** - * Get the display name of this. - * - * @return Display name. - */ - public String getDisplayName() { - String name = getTagName(); - - // Is there only one attribute? - if (getAttributes().getLength() == 1) { - Node onlyNode = getAttributes().item(0); - - // Display the only attribute - name += ": " + onlyNode.getNodeValue(); - } else { - - // Display one of these attributes - // if they are present. - final String[] DISPLAY_ATTRIBUTES = - { - "name", - "id", - "property" - }; - - for(int i = 0; i < DISPLAY_ATTRIBUTES.length; i++) { - Node testNode = - getAttributes().getNamedItem(DISPLAY_ATTRIBUTES[i]); - if (testNode != null) { - name += ": " + testNode.getNodeValue(); - break; - } - } - } - - return name; - } - - /** - * Set the task type. - * - * @param type Type name. - */ - public void setTaskType(String type) { - setTag(type); - } - - /** - * Get the attributes (named value mappings). This method is not named - * getAttributes() because there is already a method of that name in - * the Node interface. - * - * @return Name-value mappings. - */ - public ACSDtdDefinedAttributes getNamedValues() { - ACSDtdDefinedAttributes retval = - new ACSDtdDefinedAttributes(getDtdElement()); - - NamedNodeMap attribs = getAttributes(); - for(int i = 0, len = attribs.getLength(); i < len; i++) { - Node n = attribs.item(i); - retval.setProperty(n.getNodeName(), n.getNodeValue()); - } - return retval; - } - - - /** - * Set the attributes. This method sets the Node attirbutes using - * the given Map containing name-value pairs. - * - * @param attributes New attribute set. - */ - public void setNamedValues(ACSDtdDefinedAttributes attributes) { - // XXX this code really sucks. It is really annoying that the - // DOM interfaces don't have a general "setAttributes()" or - // "removeAllAttributes()" method, but instead make you - // remove each attribute individually, or require you to figure - // out what the differences are between the two. - - // Although this is very inefficient, I'm taking the conceptually - // simplistic approach to this and brute force removing the existing - // set and replacing it with a brand new set. If this becomes a - // performance concern (which I doubt it will) it can be optimized - // later. - - ACSDtdDefinedAttributes old = (ACSDtdDefinedAttributes) getNamedValues(); - - Enumeration enum = old.propertyNames(); - while(enum.hasMoreElements()) { - String name = (String) enum.nextElement(); - removeAttribute(name); - } - - enum = attributes.propertyNames(); - while(enum.hasMoreElements()) { - String key = (String) enum.nextElement(); - setAttribute(key, attributes.getProperty(key)); - } - - firePropertyChange(NAMED_VALUES, old, attributes); - } - - /** - * Returns the menu items which may be used for this element. - */ - public String[] getMenuString() { - - // If it already exists, use it. - if (menuString != null) { - return menuString; - } - - // Find the DtdElement - String name = getTagName(); - - // Are we the project element? - boolean isProject = false; - if (name.equals("project")) { - isProject = true; - } - - ACSDocumentType.DtdElement e = - docType.findElement(ACSDocumentType.CORE_ELEMENT, name); - if (e == null) { - e = docType.findElement(ACSDocumentType.OPTIONAL_ELEMENT, name); - } - - if (e != null) { - // Use the content model (all the possible - // sub-elements) to create the menu. - String[] temp = e.getContentModel(); - - // Sort the items - List list = Collections.fill(null, temp); - java.util.Collections.sort(list); - list.toArray(temp); - - int size = (temp.length > 5) ? 5 : temp.length; - - // The project doesn't need a delete menu - if (isProject) { - menuString = new String[size+1]; - } else { - menuString = new String[size+2]; - } - System.arraycopy(temp, 0, menuString, 0, size); - - } else { - // This is for elements not in the DTD - menuString = new String[2]; - } - - if (isProject) { - menuString[menuString.length-1] = "newElement"; - } else { - // Add the delete and generic create commands - menuString[menuString.length-1] = "deleteElement"; - menuString[menuString.length-2] = "newElement"; - } - - return menuString; - } - - /** - * Returns the string to use if an action ID is not found. - * In our case, the newElement command is used. - */ - public String getDefaultActionID() { - return "newElement"; - } - - /** - * Returns a string array which contains this elements - * possible children. - * - * @param childType ACSDocumentType.CORE_ELEMENT or - * ACSDocumentType.OPTIONAL_ELEMENT - */ - public String[] getPossibleChildren(int childType) { - String name = getTagName(); - - ACSDocumentType.DtdElement e = - docType.findElement(childType, name); - if (e != null) { - return e.getContentModel(); - } - return null; - } - - /** - * Adds the attributes which are required by this node. - */ - public void addRequiredAttributes() { - ACSDocumentType.DtdElement e = getDtdElement(); - if (e == null) { - return; - } - String[] attributes = e.getAttributes().getRequiredAttributes(); - if (attributes == null) { - return; - } - for(int i = 0; i < attributes.length; i++) { - if ( getAttributes().getNamedItem(attributes[i]) == null) { - // XXX should set to default? - setAttribute(attributes[i], ""); - } - } - } - - /** - * Returns the DTD element we represent - */ - private ACSDocumentType.DtdElement getDtdElement() { - if (_dtdElement != null) { - return _dtdElement; - } - - String name = getNodeName(); - - _dtdElement = docType.findElement(ACSDocumentType.CORE_ELEMENT, name); - if (_dtdElement == null) { - _dtdElement = docType.findElement( - ACSDocumentType.OPTIONAL_ELEMENT, name); - } - - return _dtdElement; - } -} - diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedElementBeanInfo.java deleted file mode 100644 index 64694112a..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSDtdDefinedElementBeanInfo.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; -import org.apache.tools.ant.gui.customizer.DynamicCustomizer; -import org.apache.tools.ant.gui.modules.edit.DtdAttributePropertyEditor; -import java.beans.*; - -/** - * BeanInfo for the ACSDtdDefinedElement class. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public class ACSDtdDefinedElementBeanInfo extends BaseBeanInfo { - /** - * Default ctor. - * - */ - public ACSDtdDefinedElementBeanInfo() { - } - - /** - * Get the type that this BeanInfo represents. - * - * @return Type. - */ - public Class getType() { - return ACSDtdDefinedElement.class; - } - - /** - * Get the customizer type. - * - * @return Customizer type. - */ - public Class getCustomizerType() { - return Customizer.class; - } - - /** - * Get the property descriptors. - * - * @return Property descriptors. - */ - public PropertyDescriptor[] getPropertyDescriptors() { - PropertyDescriptor[] retval = null; - - try { - retval = new PropertyDescriptor[] { - new PropertyDescriptor(ACSDtdDefinedElement.TASK_TYPE, - ACSDtdDefinedElement.class, - "getTaskType", null), - new PropertyDescriptor(ACSDtdDefinedElement.NAMED_VALUES, - ACSDtdDefinedElement.class), - new PropertyDescriptor(ACSDtdDefinedElement.XML_STRING, - ACSDtdDefinedElement.class, - "getXMLString", null) - }; - int pos = 0; - retval[pos++].setDisplayName(getResources().getString( - getClass(),ACSDtdDefinedElement.TASK_TYPE)); - retval[pos++].setDisplayName(getResources().getString( - getClass(),ACSDtdDefinedElement.NAMED_VALUES)); - retval[pos++].setDisplayName(getResources().getString( - getClass(),ACSDtdDefinedElement.XML_STRING)); - - setSortingOrder(retval); - } catch(IntrospectionException ex) { - ex.printStackTrace(); - throw new Error(ex.toString()); - } - - return retval; - } - - /** Customizer for this bean info. */ - public static class Customizer extends DynamicCustomizer { - static { - PropertyEditorManager.registerEditor( - ACSDtdDefinedAttributes.class, DtdAttributePropertyEditor.class); - } - - public Customizer() { - super(ACSDtdDefinedElement.class); - } - } -} - diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSElement.java deleted file mode 100644 index e04835b8a..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSElement.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import com.sun.xml.tree.ElementNode; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeSupport; - -/** - * Abstract base class for all Ant Construction Set - * elements. Depends on the JAXP XML library from Sun. - * - * @version $Revision$ - * @author Simeon Fitch */ -public abstract class ACSElement extends ElementNode { - /** Name of the 'xmlString' property. */ - public static final String XML_STRING = "xmlString"; - - /** Event support. */ - private PropertyChangeSupport _propSupport = null; - - /** - * Default ctor. - * - */ - protected ACSElement() { - } - - /** - * Get the display name of this. - * - * @return Display name. - */ - public String getDisplayName() { - return getTagName(); - } - - /** - * Get the XML representation of this. - * - * @return XML representation. - */ - public String getXMLString() { - return toString(); - } - - /** - * Set the given attribute. - * - * @param name Name of the attribute. - * @param value Value of the attribute. - */ - public void setAttribute(String name, String value) { - if(value == null && getAttribute(name).length() != 0) { - removeAttribute(name); - } - else { - super.setAttribute(name, value); - } - } - - /** - * Add a change listener. - * - * @param l Listener to add. - */ - public void addPropertyChangeListener(PropertyChangeListener l) { - if(_propSupport == null) { - _propSupport = new PropertyChangeSupport(this); - } - _propSupport.addPropertyChangeListener(l); - } - - - /** - * Remove a change listener - * - * @param l Listener to remove. - */ - public void removePropertyChangeListener(PropertyChangeListener l) { - if(_propSupport == null) { - _propSupport = new PropertyChangeSupport(this); - } - _propSupport.removePropertyChangeListener(l); - } - - /** - * Fire a change event to all listener. - * - * @param propName Name of the property. - * @param oldValue The old value. - * @param newValue The new value. - */ - protected void firePropertyChange( - String propName, Object oldValue, Object newValue) { - - if(_propSupport != null) { - _propSupport.firePropertyChange(propName, oldValue, newValue); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java deleted file mode 100644 index 56e30ed52..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSFactory.java +++ /dev/null @@ -1,299 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import javax.xml.parsers.*; -import java.io.IOException; -import java.io.File; -import java.net.URL; -import org.w3c.dom.*; -import org.xml.sax.SAXException; -import com.sun.xml.parser.Parser; -import com.sun.xml.tree.*; -import java.util.Properties; -import java.util.Enumeration; -import com.sun.xml.parser.Resolver; - -/** - * Factory for loading Ant Construction set elements. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSFactory { - /** Singleton instance of the factory. */ - private static ACSFactory _instance = null; - - /** Element maping. */ - private static final Properties _elementMap = new Properties(); - - static { - try { - // First we bootstrap our knowledge of the Ant tasks by reading - // in the taskdef definitions and assigning them the default - // task element class. - _elementMap.load(org.apache.tools.ant.taskdefs.Ant.class. - getResourceAsStream("defaults.properties")); - Enumeration enum = _elementMap.propertyNames(); - while(enum.hasMoreElements()) { - String name = (String) enum.nextElement(); - // XXX the name of the class needs to be stored externally. - _elementMap.setProperty( - name, "org.apache.tools.ant.gui.acs.ACSDtdDefinedElement"); - } - - // Then we add/override the local definitions. - _elementMap.load(ACSFactory.class. - getResourceAsStream("acs-element.properties")); - } - catch(Throwable ex) { - // If something wrong happens here we can't do much more... - ex.printStackTrace(); - System.exit(1); - } - } - - /** - * Default ctor. - * - */ - private ACSFactory() { - - } - - /** - * Get an instance of the factory. - * - * @return Factory instance. - */ - public static ACSFactory getInstance() { - if(_instance == null) { - _instance = new ACSFactory(); - } - return _instance; - } - - /** - * Load a project from the given XML file. - * XXX fix me. - * - * @param location Location of the file. - * @return Loaded project. - */ - public ACSProjectElement load(File location) throws IOException { - return load(new URL("file", null, location.getPath())); - } - - /** - * Load a project from the given XML file. - * XXX fix me. - * - * @param location Location of the file. - * @return Loaded project. - */ - public ACSProjectElement load(URL location) throws IOException { - XmlDocument doc = null; - - try { - SAXParser sax = SAXParserFactory.newInstance().newSAXParser(); - Parser parser = (Parser) sax.getParser(); - XmlDocumentBuilder builder = new XmlDocumentBuilder(); - builder.setIgnoringLexicalInfo(false); - SimpleElementFactory fact = new SimpleElementFactory(); - fact.addMapping(_elementMap, ACSFactory.class.getClassLoader()); - - builder.setElementFactory(fact); - - parser.setDocumentHandler(builder); - parser.setEntityResolver(new Resolver()); - //parser.setErrorHandler(); - - sax.parse(location.openStream(), null); - - doc = builder.getDocument(); - } - catch(ParserConfigurationException ex) { - ex.printStackTrace(); - throw new IOException(ex.getMessage()); - } - catch(SAXException ex) { - ex.printStackTrace(); - throw new IOException(ex.getMessage()); - } - - return (ACSProjectElement) doc.getDocumentElement(); - } - - /** - * Create a new, empty project. - * - * @return Empty project. - */ - public ACSProjectElement createProject() { - SimpleElementFactory fact = new SimpleElementFactory(); - fact.addMapping(_elementMap, ACSFactory.class.getClassLoader()); - XmlDocument doc = new XmlDocument(); - doc.setElementFactory(fact); - return (ACSProjectElement) doc.createElement("project"); - } - - - /** - * Create a new target. - * - * @param project Project the target is assigned to. - * @return New, unnamed target. - */ - public ACSTargetElement createTarget(ACSProjectElement project) { - ACSTargetElement retval = (ACSTargetElement) project. - getOwnerDocument().createElement("target"); - indent(project, 1); - project.appendChild(retval); - return retval; - } - - /** - * Create a new task. - * - * @param target Target the task is assigned to. - * @return New, unnamed task. - */ - public ACSTaskElement createTask(ACSTargetElement target) { - ACSTaskElement retval = (ACSTaskElement) target. - getOwnerDocument().createElement("task"); - indent(target, 2); - target.appendChild(retval); - return retval; - } - - /** - * Create a new property. - * - * @param node the Node to assign the property to. - * @return New, unnamed property. - */ - public ACSPropertyElement createProperty(ACSElement node) { - ACSPropertyElement retval = (ACSPropertyElement) node. - getOwnerDocument().createElement("property"); - // XXX fixme. - indent(node, 1); - node.appendChild(retval); - return retval; - } - - /** - * Create a new element. - * - * @param node the Node to assign the property to. - * @param name the new elements type. - * @return New, unnamed property. - */ - public ACSElement createElement(ACSElement node, String name) { - ACSElement retval = (ACSElement) node. - getOwnerDocument().createElement(name); - // XXX fixme. - indent(node, 1); - addRequiredAttributes(retval); - node.appendChild(retval); - return retval; - } - - /** - * Add required attributes to the node. - * - * @param node the Node to add the attrinutes to. - */ - public void addRequiredAttributes(ACSElement node) { - if (node instanceof ACSDtdDefinedElement) { - ACSDtdDefinedElement dtdElement = - (ACSDtdDefinedElement) node; - dtdElement.addRequiredAttributes(); - } - } - - /** - * Insert a new line and indentation at the end of the given - * node in preparation for a new element being added. - * - * @param node Node to append indent to. - * @param level Indentation level. - */ - private void indent(ACSElement node, int level) { - StringBuffer buf = new StringBuffer("\n"); - for(int i = 0; i < level; i++) { - buf.append(" "); - } - - Text text = node.getOwnerDocument().createTextNode(buf.toString()); - node.appendChild(text); - } - - - /** - * Test code - * - * @param args XML file to parse. - */ - public static void main(String[] args) { - try { - ACSFactory f = ACSFactory.getInstance(); - - System.out.println(f.load(new File(args[0]))); - } - catch(Exception ex) { - ex.printStackTrace(); - } - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSInfoProvider.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSInfoProvider.java deleted file mode 100644 index 3764cc1b9..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSInfoProvider.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -/** - * Provides menu infomation for a node. - * - * @version $Revision$ - * @author Nick Davisnick_home_account@yahoo.com - */ -public interface ACSInfoProvider { - /** - * Returns the menu items which may be used on this node. - * If the strings are not valid action IDs, use - * getDefaultActionID to find the action for the menu item. - */ - public String[] getMenuString(); - /** - * Returns the action ID to use for a menu item which does not - * represent a valid action ID. - */ - public String getDefaultActionID(); -} - diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSNamedElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSNamedElement.java deleted file mode 100644 index 96f747cfc..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSNamedElement.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import com.sun.xml.tree.ElementNode; -import java.util.StringTokenizer; - -/** - * Class representing an element with a name and description. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSNamedElement extends ACSDtdDefinedElement { - /** The 'name' property name. */ - public static final String NAME = "name"; - /** The discription property name. */ - public static final String DESCRIPTION = "description"; - - /** - * Default ctor. - * - */ - public ACSNamedElement() { - } - - /** - * Get the target name. - * - * @return Target name. - */ - public String getName() { - return getAttribute(NAME); - } - - /** - * Set the name. - * - * @param name New name value. - */ - public void setName(String name) { - String old = getName(); - setAttribute(NAME, name); - firePropertyChange(NAME, old, name); - } - - /** - * Get the long description of the target. - * - * @return Target description. - */ - public String getDescription() { - return getAttribute(DESCRIPTION); - } - - /** - * Set the description - * - * @param description New description value. - */ - public void setDescription(String description) { - String old = getDescription(); - setAttribute(DESCRIPTION, description); - firePropertyChange(DESCRIPTION, old, description); - } - - /** - * Get the display name. - * - * @return Display name. - */ - public String getDisplayName() { - return getName(); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElement.java deleted file mode 100644 index 02743ab5f..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElement.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import com.sun.xml.tree.ElementNode; -import java.net.URL; -import java.io.File; - -/** - * Class representing a project element in the build file. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSProjectElement extends ACSNamedElement { - /** The 'default' property name. */ - public static final String DEFAULT = "default"; - /** The 'basdir' property name. */ - public static final String BASEDIR = "basedir"; - /** Property name of the persistence location. */ - public static final String LOCATION = "location"; - /** The location where this project is persisted. */ - private URL _location = null; - - /** - * Default ctor. - * - */ - public ACSProjectElement() { - } - - /** - * Get the type that this BeanInfo represents. - * - * @return Type. - */ - public Class getType() { - return ACSProjectElement.class; - } - - /** - * Get the name of the default target. - * - * @return Default target name. - */ - public String getDefault() { - return getAttribute(DEFAULT); - } - - /** - * Set the name of the default target. - * - * @param def Name of the default target. - */ - public void setDefault(String def) { - String old = getDefault(); - setAttribute(DEFAULT, def); - firePropertyChange(DEFAULT, old, def); - } - - /** - * Get the specified base directory for the build. - * - * @return Base directory - */ - public String getBasedir() { - return getAttribute(BASEDIR); - } - - /** - * Set the base directory for builds. - * - * @param baseDir Build base directory. - */ - public void setBasedir(String baseDir) { - String old = getBasedir(); - setAttribute(BASEDIR, baseDir); - firePropertyChange(BASEDIR, old, baseDir); - } - - /** - * Get the location where this project is persisted. - * - * @return Saved location, or null if not persisted. - */ - public URL getLocation() { - return _location; - } - - /** - * Set the loction where the project is persisted. - * - * @param location Location of project. - */ - public void setLocation(URL location) { - URL old = _location; - _location = location; - firePropertyChange(LOCATION, old, _location); - } - - /** - * Set the loction where the project is persisted. - * - * @param location Location of project as a file. - */ - public void setLocation(File location) { - try { - setLocation(new URL("file", null, location.getAbsolutePath())); - } - catch(java.net.MalformedURLException ex) { - // No reason why this should happen. - // xxx Log me. - ex.printStackTrace(); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElementBeanInfo.java deleted file mode 100644 index 3903a77bf..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSProjectElementBeanInfo.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import org.apache.tools.ant.gui.customizer.DynamicCustomizer; -import java.beans.*; - -/** - * BeanInfo for the ACSProjectElement class. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSProjectElementBeanInfo extends BaseBeanInfo { - /** - * Default ctor. - * - */ - public ACSProjectElementBeanInfo() { - } - - /** - * Get the type that this BeanInfo represents. - * - * @return Type. - */ - public Class getType() { - return ACSProjectElement.class; - } - - /** - * Get the customizer type. - * - * @return Customizer type. - */ - public Class getCustomizerType() { - return Customizer.class; - } - - /** - * Get the property descriptors. - * - * @return Property descriptors. - */ - public PropertyDescriptor[] getPropertyDescriptors() { - PropertyDescriptor[] retval = null; - - try { - retval = new PropertyDescriptor[] { - new PropertyDescriptor(ACSProjectElement.NAME, - ACSProjectElement.class), - new PropertyDescriptor(ACSProjectElement.DESCRIPTION, - ACSProjectElement.class), - new PropertyDescriptor(ACSProjectElement.DEFAULT, - ACSProjectElement.class), - new PropertyDescriptor(ACSProjectElement.BASEDIR, - ACSProjectElement.class) - - }; - retval[0].setDisplayName(getResources().getString( - getClass(),ACSProjectElement.NAME)); - retval[1].setDisplayName(getResources().getString( - getClass(),ACSProjectElement.DESCRIPTION)); - retval[2].setDisplayName(getResources().getString( - getClass(),ACSProjectElement.DEFAULT)); - retval[3].setDisplayName(getResources().getString( - getClass(),ACSProjectElement.BASEDIR)); - - setSortingOrder(retval); - } - catch(IntrospectionException ex) { - ex.printStackTrace(); - throw new Error(ex.toString()); - } - - return retval; - } - - /** Customizer for this bean info. */ - public static class Customizer extends DynamicCustomizer { - public Customizer() { - super(ACSProjectElement.class); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElement.java deleted file mode 100644 index 9e13cafa1..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElement.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import com.sun.xml.tree.ElementNode; - -/** - * Element containing a property definition. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSPropertyElement extends ACSDtdDefinedElement { - /** The 'name' property name. */ - public static final String NAME = "name"; - /** The 'value' property name. */ - public static final String VALUE = "value"; - /** The file to load properties from. */ - public static final String FILE = "file"; - - /** - * Default ctor. - * - */ - public ACSPropertyElement() { - } - - /** - * Get the display name of this. - * - * @return Display name. - */ - public String getDisplayName() { - String file = getFile(); - - if(file == null || file.trim().length() == 0) { - return getName(); - } - else { - return "file: " + file; - } - } - - /** - * Get the property name. - * - * @return Property name. - */ - public String getName() { - return getAttribute(NAME); - } - - /** - * Set the property name. - * - * @param name Property name. - */ - public void setName(String name) { - String old = getName(); - setAttribute(NAME, name); - firePropertyChange(NAME, old, name); - } - - /** - * Get the property value. - * - * @return Property value. - */ - public String getValue() { - return getAttribute(VALUE); - } - - /** - * Set the property value. - * - * @param name Property value. - */ - public void setValue(String value) { - String old = getValue(); - setAttribute(VALUE, value); - firePropertyChange(VALUE, old, value); - } - - /** - * Get the external property file. - * - * @return Property file. - */ - public String getFile() { - return getAttribute(FILE); - } - - /** - * Set the external property file. - * - * @param name Property file. - */ - public void setFile(String file) { - String old = getFile(); - setAttribute(FILE, file); - firePropertyChange(FILE, old, file); - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElementBeanInfo.java deleted file mode 100644 index 0c9872293..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSPropertyElementBeanInfo.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import org.apache.tools.ant.gui.customizer.DynamicCustomizer; -import java.beans.*; - -/** - * BeanInfo for the ACSPropertyElement class. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSPropertyElementBeanInfo extends BaseBeanInfo { - /** - * Default ctor. - * - */ - public ACSPropertyElementBeanInfo() { - } - - /** - * Get the type that this BeanInfo represents. - * - * @return Type. - */ - public Class getType() { - return ACSPropertyElement.class; - } - - /** - * Get the customizer type. - * - * @return Customizer type. - */ - public Class getCustomizerType() { - return Customizer.class; - } - - /** - * Get the property descriptors. - * - * @return Property descriptors. - */ - public PropertyDescriptor[] getPropertyDescriptors() { - PropertyDescriptor[] retval = null; - - try { - retval = new PropertyDescriptor[] { - new PropertyDescriptor(ACSPropertyElement.FILE, - ACSPropertyElement.class), - new PropertyDescriptor(ACSPropertyElement.NAME, - ACSPropertyElement.class), - new PropertyDescriptor(ACSPropertyElement.VALUE, - ACSPropertyElement.class) - }; - - retval[0].setDisplayName(getResources().getString( - getClass(),ACSPropertyElement.FILE)); - retval[1].setDisplayName(getResources().getString( - getClass(),ACSPropertyElement.NAME)); - retval[2].setDisplayName(getResources().getString( - getClass(),ACSPropertyElement.VALUE)); - - setSortingOrder(retval); - } - catch(IntrospectionException ex) { - ex.printStackTrace(); - throw new Error(ex.toString()); - } - - return retval; - } - - /** Customizer for this bean info. */ - public static class Customizer extends DynamicCustomizer { - public Customizer() { - super(ACSPropertyElement.class); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElement.java deleted file mode 100644 index d531d5503..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElement.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import com.sun.xml.tree.ElementNode; -import java.util.StringTokenizer; - -/** - * Class representing a build target. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSTargetElement extends ACSNamedElement implements Cloneable{ - - /** Dependency property name. */ - public static final String DEPENDS = "depends"; - /** 'if' clause property name. */ - public static final String IF = "if"; - /** 'unless' clause property name. */ - public static final String UNLESS = "unless"; - - /** - * Default ctor. - * - */ - public ACSTargetElement() { - - } - - /** - * Get the set of dependency names. - * - * @return Dependency names. - */ - public String[] getDepends() { - String depends = getAttribute(DEPENDS); - StringTokenizer tok = new StringTokenizer(depends,","); - String[] retval = new String[tok.countTokens()]; - for(int i = 0; i < retval.length; i++) { - retval[i] = tok.nextToken().trim(); - } - - return retval; - } - - /** - * Set the list of dependency names. - * - * @param depends Dependency names. - */ - public void setDepends(String[] depends) { - String old = getAttribute(DEPENDS); - StringBuffer buf = new StringBuffer(); - for(int i = 0; depends != null && i < depends.length; i++) { - buf.append(depends[i]); - if(i < depends.length - 1) { - buf.append(", "); - } - } - setAttribute(DEPENDS, buf.toString()); - firePropertyChange(DEPENDS, old, buf.toString()); - } - - /** - * Get the 'if' clause. - * - * @return 'if' clause. - */ - public String getIf() { - return getAttribute(IF); - } - - /** - * Set the 'if' clause. - * - * @param val 'if' clause value. - */ - public void setIf(String val) { - String old = getIf(); - setAttribute(IF, val); - firePropertyChange(IF, old, val); - } - - /** - * Get the 'unless' clause. - * - * @return 'unless' clause. - */ - public String getUnless() { - return getAttribute(UNLESS); - } - - /** - * Set the 'unless' clause. - * - * @param val 'unless' clase value. - */ - public void setUnless(String val) { - String old = getUnless(); - setAttribute(UNLESS, val); - firePropertyChange(UNLESS, old, val); - } - - /** - * Copys the depends of a given target to the current. - * - * @param Source target for the copy operation. - */ - public void copyDependsFromTarget(ACSTargetElement newTarget) { - setDepends(newTarget.getDepends()); - } - - /** - * Copys the depends of a given target to the current. - * I can't override clone, because I need an ACSTargetElement - * to be returned! - * - * @return A clones target element - */ - public ACSTargetElement getClone() { - ACSTargetElement retVal = null; - try { - retVal = (ACSTargetElement)clone(); - retVal.setDepends(getDepends()); - } catch (java.lang.CloneNotSupportedException ex) { - // Cannot occur, for ACSTarget implements Clonable! - } - return retVal; - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElementBeanInfo.java deleted file mode 100644 index 1e17d4a20..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTargetElementBeanInfo.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; -import org.apache.tools.ant.gui.customizer.DynamicCustomizer; - -import java.beans.*; - -/** - * BeanInfo for the ACSTargetElement class. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSTargetElementBeanInfo extends BaseBeanInfo { - /** - * Default ctor. - * - */ - public ACSTargetElementBeanInfo() { - } - - /** - * Get the type that this BeanInfo represents. - * - * @return Type. - */ - public Class getType() { - return ACSTargetElement.class; - } - - /** - * Get the customizer type. - * - * @return Customizer type. - */ - public Class getCustomizerType() { - return Customizer.class; - } - - /** - * Get the property descriptors. - * - * @return Property descriptors. - */ - public PropertyDescriptor[] getPropertyDescriptors() { - PropertyDescriptor[] retval = null; - - try { - retval = new PropertyDescriptor[] { - new PropertyDescriptor(ACSTargetElement.NAME, - ACSTargetElement.class), - new PropertyDescriptor(ACSTargetElement.DESCRIPTION, - ACSTargetElement.class), - new PropertyDescriptor(ACSTargetElement.DEPENDS, - ACSTargetElement.class, - "getClone", "copyDependsFromTarget"), - new PropertyDescriptor(ACSTargetElement.IF, - ACSTargetElement.class), - new PropertyDescriptor(ACSTargetElement.UNLESS, - ACSTargetElement.class), - new PropertyDescriptor(ACSTargetElement.XML_STRING, - ACSTargetElement.class, - "getXMLString", null) - }; - - // Set display names. - retval[0].setDisplayName(getResources().getString( - getClass(),ACSTargetElement.NAME)); - retval[1].setDisplayName(getResources().getString( - getClass(),ACSTargetElement.DESCRIPTION)); - retval[2].setDisplayName(getResources().getString( - getClass(),ACSTargetElement.DEPENDS)); - retval[3].setDisplayName(getResources().getString( - getClass(),ACSTargetElement.IF)); - retval[4].setDisplayName(getResources().getString( - getClass(),ACSTargetElement.UNLESS)); - retval[5].setDisplayName(getResources().getString( - getClass(),ACSTargetElement.XML_STRING)); - - setSortingOrder(retval); - } - catch(IntrospectionException ex) { - ex.printStackTrace(); - throw new Error(ex.toString()); - } - - return retval; - } - - - /** Customizer for this bean info. */ - public static class Customizer extends DynamicCustomizer { - static { - PropertyEditorManager.registerEditor( - org.apache.tools.ant.gui.acs.ACSTargetElement.class, org.apache.tools.ant.gui.modules.edit.DependentTargetPropertyEditor.class); - } - - public Customizer() { - super(ACSTargetElement.class); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java deleted file mode 100644 index 42ef9bc80..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElement.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import org.w3c.dom.Node; -import org.w3c.dom.NamedNodeMap; -import java.util.*; - -/** - * Element containing a property definition. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSTaskElement extends ACSTreeNodeElement { - /** Property name for the task type. */ - public static final String TASK_TYPE = "taskType"; - /** Property name for attributes. It's called "namedValues" so - * it doesn't collide with the Node.getAttributes() method. */ - public static final String NAMED_VALUES = "namedValues"; - - /** - * Default ctor. - * - */ - public ACSTaskElement() { - } - - /** - * Get the task type. - * - * @return Task type. - */ - public String getTaskType() { - return getTagName(); - } - - /** - * Set the task type. - * - * @param type Type name. - */ - public void setTaskType(String type) { - setTag(type); - } - - /** - * Get the attributes (named value mappings). This method is not named - * getAttributes() because there is already a method of that name in - * the Node interface. - * - * @return Name-value mappings. - */ - public Properties getNamedValues() { - Properties retval = new Properties(); - - NamedNodeMap attribs = getAttributes(); - for(int i = 0, len = attribs.getLength(); i < len; i++) { - Node n = attribs.item(i); - retval.setProperty(n.getNodeName(), n.getNodeValue()); - } - return retval; - } - - - /** - * Set the attributes. This method sets the Node attirbutes using - * the given Map containing name-value pairs. - * - * @param attributes New attribute set. - */ - public void setNamedValues(Properties props) { - // XXX this code really sucks. It is really annoying that the - // DOM interfaces don't have a general "setAttributes()" or - // "removeAllAttributes()" method, but instead make you - // remove each attribute individually, or require you to figure - // out what the differences are between the two. - - // Although this is very inefficient, I'm taking the conceptually - // simplistic approach to this and brute force removing the existing - // set and replacing it with a brand new set. If this becomes a - // performance concern (which I doubt it will) it can be optimized - // later. - - Properties old = getNamedValues(); - - Enumeration enum = old.propertyNames(); - while(enum.hasMoreElements()) { - String name = (String) enum.nextElement(); - removeAttribute(name); - } - - enum = props.propertyNames(); - while(enum.hasMoreElements()) { - String key = (String) enum.nextElement(); - setAttribute(key, props.getProperty(key)); - } - - firePropertyChange(NAMED_VALUES, old, props); - } - -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElementBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElementBeanInfo.java deleted file mode 100644 index 59a23ab79..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTaskElementBeanInfo.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import org.apache.tools.ant.gui.customizer.DynamicCustomizer; -import java.beans.*; - -/** - * BeanInfo for the ACSTaskElement class. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public class ACSTaskElementBeanInfo extends BaseBeanInfo { - /** - * Default ctor. - * - */ - public ACSTaskElementBeanInfo() { - } - - /** - * Get the type that this BeanInfo represents. - * - * @return Type. - */ - public Class getType() { - return ACSTaskElement.class; - } - - /** - * Get the customizer type. - * - * @return Customizer type. - */ - public Class getCustomizerType() { - return Customizer.class; - } - - /** - * Get the property descriptors. - * - * @return Property descriptors. - */ - public PropertyDescriptor[] getPropertyDescriptors() { - PropertyDescriptor[] retval = null; - - try { - retval = new PropertyDescriptor[] { - new PropertyDescriptor(ACSTaskElement.TASK_TYPE, - ACSTaskElement.class, - "getTaskType", null), - new PropertyDescriptor(ACSTaskElement.NAMED_VALUES, - ACSTaskElement.class), - new PropertyDescriptor(ACSTaskElement.XML_STRING, - ACSTaskElement.class, - "getXMLString", null) - }; - - retval[0].setDisplayName(getResources().getString( - getClass(),ACSTaskElement.TASK_TYPE)); - retval[1].setDisplayName(getResources().getString( - getClass(),ACSTaskElement.NAMED_VALUES)); - retval[2].setDisplayName(getResources().getString( - getClass(),ACSTaskElement.XML_STRING)); - - setSortingOrder(retval); - } - catch(IntrospectionException ex) { - ex.printStackTrace(); - throw new Error(ex.toString()); - } - - return retval; - } - - /** Customizer for this bean info. */ - public static class Customizer extends DynamicCustomizer { - public Customizer() { - super(ACSTaskElement.class); - } - } -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/ACSTreeNodeElement.java b/src/antidote/org/apache/tools/ant/gui/acs/ACSTreeNodeElement.java deleted file mode 100644 index 70c1f020e..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/ACSTreeNodeElement.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - - -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import com.sun.xml.tree.ElementNode; -import javax.swing.tree.TreeNode; -import java.util.*; - -/** - * Abstract base class for all ACSElement classes that are also tree node. - * - * @version $Revision$ - * @author Simeon Fitch - */ -public abstract class ACSTreeNodeElement extends ACSElement { - -} diff --git a/src/antidote/org/apache/tools/ant/gui/acs/BaseBeanInfo.java b/src/antidote/org/apache/tools/ant/gui/acs/BaseBeanInfo.java deleted file mode 100644 index 5168351d9..000000000 --- a/src/antidote/org/apache/tools/ant/gui/acs/BaseBeanInfo.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Ant", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - */ -package org.apache.tools.ant.gui.acs; - -import org.apache.tools.ant.gui.core.ResourceManager; -import org.apache.tools.ant.gui.customizer.DynamicCustomizer; -import java.beans.*; -import javax.swing.ImageIcon; -import java.awt.Image; - -/** - * Abstract base class for ACS BeanInfo classes. - * - * @version $Revision$ - * @author Simeon Fitch - */ -abstract class BaseBeanInfo extends SimpleBeanInfo { - /** Property name for specifiying a sorting order. */ - public static final String SORT_ORDER = DynamicCustomizer.SORT_ORDER; - /** Resource provider for bean info. */ - private static ResourceManager _resources = new ResourceManager(); - - /** Icon for this. */ - private Image _icon = null; - - /** - * Default ctor. - * - */ - protected BaseBeanInfo() { - // Load the icon. - ImageIcon img = _resources.getImageIcon(getClass(), "icon"); - if(img != null) { - _icon = img.getImage(); - } - } - - /** - * Get the local resources. - * - * @return Resources. - */ - ResourceManager getResources() { - return _resources; - } - - /** - * Get the bean descriptor. - * - * @return Bean descriptor. - */ - public BeanDescriptor getBeanDescriptor() { - return new ACSBeanDescriptor(this); - } - - /** - * Get the icon for displaying this bean. - * - * @param kind Kind of icon. XXX currently ignored - * @return Image for bean, or null if none. - */ - public Image getIcon(int kind) { - // XXX kind is currently ignored. - return _icon; - } - - /** - * Set the sorting order property of the given objects based - * on the order that they appear in the array. - * - * @param vals FeatureDescriptors to set sorting order property for. - */ - protected void setSortingOrder(FeatureDescriptor[] vals) { - for(int i = 0; i < vals.length; i++) { - vals[i].setValue(SORT_ORDER, new Integer(i)); - } - } - - /** - * Get the type that this BeanInfo represents. - * - * @return Type. - */ - public abstract Class getType(); - - /** - * Get the type of the customizer to use. - * - * @return Customizer to use. - */ - public abstract Class getCustomizerType(); - - /** - * Gets the beans PropertyDescriptors. - * - * @return An array of PropertyDescriptors describing the editable - * properties supported by this bean. May return null if the - * information should be obtained by automatic analysis. - *