From aeaa131e3a107550cfca63c489afed0cbf2d88ba Mon Sep 17 00:00:00 2001 From: Marcel Loose <loose@astron.nl> Date: Fri, 14 Aug 2015 07:38:24 +0000 Subject: [PATCH] Task #8249: Removed BaseSimGUI, TreeBrowser and wrapexec from support/tools. These tools were ancient like the Greek civilization. --- .gitattributes | 57 - support/tools/BaseSimGUI/BaseSimGUI.html | 25 - support/tools/BaseSimGUI/BaseSimGUI.jpx | 57 - support/tools/BaseSimGUI/BaseSimGUI.jpx.local | 28 - support/tools/BaseSimGUI/Makefile | 13 - support/tools/BaseSimGUI/RunBaseSimGUI | 7 - support/tools/BaseSimGUI/basesim.cfg | 7 - support/tools/BaseSimGUI/basesim.dtd | 36 - support/tools/BaseSimGUI/classMap.cfg | 44 - support/tools/BaseSimGUI/demo1.xml | 80 - support/tools/BaseSimGUI/demo2.xml | 20 - support/tools/BaseSimGUI/error.xml | 16 - support/tools/BaseSimGUI/images/4.gif | Bin 863 -> 0 bytes support/tools/BaseSimGUI/images/5.gif | Bin 198 -> 0 bytes support/tools/BaseSimGUI/images/8.gif | Bin 160 -> 0 bytes support/tools/BaseSimGUI/images/Antenna01.gif | Bin 24694 -> 0 bytes support/tools/BaseSimGUI/images/Copy24.gif | Bin 682 -> 0 bytes support/tools/BaseSimGUI/images/Cut16.gif | Bin 652 -> 0 bytes support/tools/BaseSimGUI/images/Cut24.gif | Bin 1193 -> 0 bytes support/tools/BaseSimGUI/images/Help16.gif | Bin 661 -> 0 bytes support/tools/BaseSimGUI/images/New16.gif | Bin 426 -> 0 bytes support/tools/BaseSimGUI/images/New24.gif | Bin 778 -> 0 bytes support/tools/BaseSimGUI/images/Open16.gif | Bin 228 -> 0 bytes support/tools/BaseSimGUI/images/Open24.gif | Bin 462 -> 0 bytes support/tools/BaseSimGUI/images/Paste16.gif | Bin 298 -> 0 bytes support/tools/BaseSimGUI/images/Paste24.gif | Bin 374 -> 0 bytes support/tools/BaseSimGUI/images/Print16.gif | Bin 293 -> 0 bytes support/tools/BaseSimGUI/images/Print24.gif | Bin 491 -> 0 bytes .../tools/BaseSimGUI/images/Properties16.gif | Bin 425 -> 0 bytes support/tools/BaseSimGUI/images/Save16.gif | Bin 206 -> 0 bytes support/tools/BaseSimGUI/images/Save24.gif | Bin 266 -> 0 bytes support/tools/BaseSimGUI/images/SaveAs16.gif | Bin 255 -> 0 bytes support/tools/BaseSimGUI/images/SaveAs24.gif | Bin 348 -> 0 bytes support/tools/BaseSimGUI/images/Stop16.gif | Bin 254 -> 0 bytes support/tools/BaseSimGUI/images/Stop24.gif | Bin 313 -> 0 bytes support/tools/BaseSimGUI/images/Zoom16.gif | Bin 303 -> 0 bytes support/tools/BaseSimGUI/images/Zoom24.gif | Bin 485 -> 0 bytes support/tools/BaseSimGUI/images/ZoomIn16.gif | Bin 304 -> 0 bytes support/tools/BaseSimGUI/images/ZoomIn24.gif | Bin 484 -> 0 bytes support/tools/BaseSimGUI/images/b1.gif | Bin 1618 -> 0 bytes .../BaseSimGUI/images/closeAllWindows16.gif | Bin 130 -> 0 bytes support/tools/BaseSimGUI/images/copy16.gif | Bin 288 -> 0 bytes support/tools/BaseSimGUI/images/edit.gif | Bin 156 -> 0 bytes support/tools/BaseSimGUI/images/mpan.gif | Bin 245 -> 0 bytes support/tools/BaseSimGUI/images/mzoom.gif | Bin 161 -> 0 bytes support/tools/BaseSimGUI/images/on.gif | Bin 997 -> 0 bytes support/tools/BaseSimGUI/images/openfile.gif | Bin 161 -> 0 bytes support/tools/BaseSimGUI/images/pan.gif | Bin 231 -> 0 bytes support/tools/BaseSimGUI/images/select.gif | Bin 135 -> 0 bytes support/tools/BaseSimGUI/images/tb1.jpg | Bin 14595 -> 0 bytes support/tools/BaseSimGUI/images/zoom.gif | Bin 241 -> 0 bytes support/tools/BaseSimGUI/jarpath.include | 2 - support/tools/BaseSimGUI/lib.xml | 36 - support/tools/BaseSimGUI/out.xml | 5331 ----------------- .../org/astron/basesim/BaseSimTreeModel.java | 171 - .../src/org/astron/basesim/Configuration.java | 55 - .../src/org/astron/basesim/Connection.java | 193 - .../org/astron/basesim/ConnectionStep.java | 42 - .../org/astron/basesim/ContHandlerSim.java | 888 --- .../org/astron/basesim/DimCtrlStepCenter.java | 28 - .../astron/basesim/DimensionController.java | 95 - .../org/astron/basesim/ErrorHandlerSim.java | 103 - .../src/org/astron/basesim/Graph.java | 702 --- .../org/astron/basesim/GraphActionEvent.java | 40 - .../astron/basesim/GraphActionListener.java | 34 - .../org/astron/basesim/GraphComposite.java | 428 -- .../org/astron/basesim/GraphDataHolder.java | 146 - .../src/org/astron/basesim/GraphDiagram.java | 100 - .../org/astron/basesim/GraphException.java | 127 - .../src/org/astron/basesim/GraphManager.java | 155 - .../org/astron/basesim/GraphParamHolder.java | 37 - .../astron/basesim/GraphSelectionEvent.java | 27 - .../basesim/GraphSelectionListener.java | 16 - .../src/org/astron/basesim/GraphSimul.java | 110 - .../src/org/astron/basesim/GraphStep.java | 348 -- .../org/astron/basesim/GraphWorkHolder.java | 81 - .../astron/basesim/GraphWorkHolderImage.java | 101 - .../src/org/astron/basesim/JBaseSim.java | 675 --- .../src/org/astron/basesim/JSimToolTip.java | 38 - .../src/org/astron/basesim/JTestGraph.java | 98 - .../org/astron/basesim/LayoutCentered.java | 68 - .../org/astron/basesim/LayoutController.java | 61 - .../org/astron/basesim/LayoutDataHolder.java | 379 -- .../src/org/astron/basesim/LayoutFlow.java | 100 - .../src/org/astron/basesim/LayoutSimul.java | 315 - .../src/org/astron/basesim/Main.java | 929 --- .../src/org/astron/basesim/Main.jbx | 6 - .../src/org/astron/basesim/MessageApp.java | 39 - .../src/org/astron/basesim/MessageGraph.java | 103 - .../src/org/astron/basesim/MessageXML.java | 80 - .../src/org/astron/basesim/Reference.java | 67 - .../org/astron/basesim/SelectionManager.java | 173 - .../src/org/astron/basesim/TestMain.java | 271 - .../src/org/astron/basesim/def/ConCorba.java | 29 - .../src/org/astron/basesim/def/ConMPI.java | 21 - .../src/org/astron/basesim/def/ConMem.java | 23 - .../src/org/astron/basesim/def/DHEmpty.java | 29 - .../src/org/astron/lofarsim/DHAntenna.java | 23 - .../src/org/astron/lofarsim/DHBeam.java | 23 - .../src/org/astron/lofarsim/DHBeamBand.java | 22 - .../src/org/astron/lofarsim/DHBeamT.java | 23 - .../src/org/astron/lofarsim/DHCorr.java | 23 - .../src/org/astron/lofarsim/DHFreq.java | 23 - .../src/org/astron/lofarsim/DHFreqT.java | 23 - .../src/org/astron/lofarsim/WHAntenna.java | 30 - .../src/org/astron/lofarsim/WHBeam.java | 32 - .../src/org/astron/lofarsim/WHCPInput.java | 30 - .../src/org/astron/lofarsim/WHController.java | 27 - .../src/org/astron/lofarsim/WHConvolve.java | 26 - .../src/org/astron/lofarsim/WHCorr.java | 30 - .../src/org/astron/lofarsim/WHDataProc.java | 31 - .../src/org/astron/lofarsim/WHFFT.java | 31 - .../src/org/astron/lofarsim/WHIntegrator.java | 27 - .../src/org/astron/lofarsim/WHMakeMS.java | 31 - .../src/org/astron/lofarsim/WHStation.java | 31 - .../src/org/astron/lofarsim/WHTransB.java | 31 - .../src/org/astron/lofarsim/WHTransF.java | 29 - .../src/org/astron/util/Arguments.java | 313 - .../src/org/astron/util/Sample.java | 93 - .../BaseSimGUI/src/org/astron/util/Utils.java | 28 - .../astron/util/gui/BatchFileTokenMarker.java | 112 - .../org/astron/util/gui/CCTokenMarker.java | 116 - .../src/org/astron/util/gui/CTokenMarker.java | 271 - .../astron/util/gui/DefaultInputHandler.java | 346 -- .../DefaultTransparentListCellRenderer.java | 67 - .../astron/util/gui/EiffelTokenMarker.java | 271 - .../org/astron/util/gui/HTMLTokenMarker.java | 259 - .../org/astron/util/gui/IDLTokenMarker.java | 76 - .../src/org/astron/util/gui/InputHandler.java | 1071 ---- .../src/org/astron/util/gui/JButtonEx.java | 65 - .../org/astron/util/gui/JEditTextArea.java | 2137 ------- .../src/org/astron/util/gui/JListEx.java | 578 -- .../astron/util/gui/JMultiLineToolTip.java | 148 - .../src/org/astron/util/gui/JNotifier.java | 181 - .../org/astron/util/gui/JScrollPaneEx.java | 121 - .../org/astron/util/gui/JToggleButtonEx.java | 78 - .../src/org/astron/util/gui/JTreeEx.java | 63 - .../util/gui/JavaScriptTokenMarker.java | 53 - .../org/astron/util/gui/JavaTokenMarker.java | 86 - .../src/org/astron/util/gui/KeywordMap.java | 138 - .../astron/util/gui/MakefileTokenMarker.java | 160 - .../src/org/astron/util/gui/MessageEvent.java | 93 - .../org/astron/util/gui/MessageListener.java | 41 - .../org/astron/util/gui/PHPTokenMarker.java | 357 -- .../org/astron/util/gui/PatchTokenMarker.java | 46 - .../org/astron/util/gui/PerlTokenMarker.java | 712 --- .../org/astron/util/gui/PropsTokenMarker.java | 84 - .../astron/util/gui/PythonTokenMarker.java | 238 - .../src/org/astron/util/gui/README.txt | 46 - .../org/astron/util/gui/SQLTokenMarker.java | 203 - .../util/gui/ShellScriptTokenMarker.java | 268 - .../src/org/astron/util/gui/StackLayout.java | 309 - .../org/astron/util/gui/SyntaxDocument.java | 166 - .../src/org/astron/util/gui/SyntaxStyle.java | 137 - .../org/astron/util/gui/SyntaxUtilities.java | 156 - .../org/astron/util/gui/TSQLTokenMarker.java | 968 --- .../org/astron/util/gui/TeXTokenMarker.java | 140 - .../src/org/astron/util/gui/Test.java | 60 - .../src/org/astron/util/gui/TestJTreeEx.java | 38 - .../org/astron/util/gui/TextAreaDefaults.java | 84 - .../org/astron/util/gui/TextAreaPainter.java | 692 --- .../org/astron/util/gui/TextUtilities.java | 182 - .../src/org/astron/util/gui/Token.java | 147 - .../src/org/astron/util/gui/TokenMarker.java | 343 -- .../org/astron/util/gui/XMLTokenMarker.java | 191 - support/tools/BaseSimGUI/template.xml | 13 - .../tools/TreeBrowser/description_init.html | 7 - .../tools/TreeBrowser/images/ftv2blank.png | Bin 174 -> 0 bytes support/tools/TreeBrowser/images/ftv2doc.png | Bin 1214 -> 0 bytes .../TreeBrowser/images/ftv2folderclosed.png | Bin 259 -> 0 bytes .../TreeBrowser/images/ftv2folderopen.png | Bin 261 -> 0 bytes .../tools/TreeBrowser/images/ftv2lastnode.png | Bin 233 -> 0 bytes .../TreeBrowser/images/ftv2mlastnode.png | Bin 160 -> 0 bytes .../tools/TreeBrowser/images/ftv2mnode.png | Bin 194 -> 0 bytes support/tools/TreeBrowser/images/ftv2node.png | Bin 235 -> 0 bytes .../TreeBrowser/images/ftv2plastnode.png | Bin 165 -> 0 bytes .../tools/TreeBrowser/images/ftv2pnode.png | Bin 200 -> 0 bytes .../tools/TreeBrowser/images/ftv2vertline.png | Bin 229 -> 0 bytes .../tools/TreeBrowser/images/lofar_back.gif | Bin 13792 -> 0 bytes .../tools/TreeBrowser/images/openordner.png | Bin 1214 -> 0 bytes support/tools/TreeBrowser/index.html | 9 - support/tools/TreeBrowser/links_init.html | 7 - .../tools/TreeBrowser/scripts/make_links.php | 65 - .../tools/TreeBrowser/scripts/makepage.php | 41 - support/tools/wrapexec/AUTHORS | 3 - support/tools/wrapexec/COPYING | 340 -- support/tools/wrapexec/ChangeLog | 0 support/tools/wrapexec/INSTALL | 182 - support/tools/wrapexec/Makefile.am | 3 - support/tools/wrapexec/NEWS | 0 support/tools/wrapexec/README | 37 - support/tools/wrapexec/acconfig.h | 2 - support/tools/wrapexec/bin/Makefile.am | 16 - support/tools/wrapexec/bin/unwrapexec.in | 48 - support/tools/wrapexec/bin/wrapexec.in | 61 - support/tools/wrapexec/bootstrap | 5 - support/tools/wrapexec/config/Config.cc | 489 -- support/tools/wrapexec/config/Config.h | 79 - support/tools/wrapexec/config/Makefile.am | 3 - support/tools/wrapexec/src/ArgList.cc | 140 - support/tools/wrapexec/src/ArgList.h | 30 - support/tools/wrapexec/src/Argv.cc | 0 support/tools/wrapexec/src/Makefile.am | 26 - support/tools/wrapexec/src/wrapexec.cc | 374 -- support/tools/wrapexec/src/wrapexec.cfg.in | 50 - .../tools/wrapexec/src/wrapexec_paths.h.in | 2 - 206 files changed, 28400 deletions(-) delete mode 100644 support/tools/BaseSimGUI/BaseSimGUI.html delete mode 100644 support/tools/BaseSimGUI/BaseSimGUI.jpx delete mode 100644 support/tools/BaseSimGUI/BaseSimGUI.jpx.local delete mode 100644 support/tools/BaseSimGUI/Makefile delete mode 100755 support/tools/BaseSimGUI/RunBaseSimGUI delete mode 100644 support/tools/BaseSimGUI/basesim.cfg delete mode 100644 support/tools/BaseSimGUI/basesim.dtd delete mode 100644 support/tools/BaseSimGUI/classMap.cfg delete mode 100644 support/tools/BaseSimGUI/demo1.xml delete mode 100644 support/tools/BaseSimGUI/demo2.xml delete mode 100644 support/tools/BaseSimGUI/error.xml delete mode 100644 support/tools/BaseSimGUI/images/4.gif delete mode 100644 support/tools/BaseSimGUI/images/5.gif delete mode 100644 support/tools/BaseSimGUI/images/8.gif delete mode 100644 support/tools/BaseSimGUI/images/Antenna01.gif delete mode 100644 support/tools/BaseSimGUI/images/Copy24.gif delete mode 100644 support/tools/BaseSimGUI/images/Cut16.gif delete mode 100644 support/tools/BaseSimGUI/images/Cut24.gif delete mode 100644 support/tools/BaseSimGUI/images/Help16.gif delete mode 100644 support/tools/BaseSimGUI/images/New16.gif delete mode 100644 support/tools/BaseSimGUI/images/New24.gif delete mode 100644 support/tools/BaseSimGUI/images/Open16.gif delete mode 100644 support/tools/BaseSimGUI/images/Open24.gif delete mode 100644 support/tools/BaseSimGUI/images/Paste16.gif delete mode 100644 support/tools/BaseSimGUI/images/Paste24.gif delete mode 100644 support/tools/BaseSimGUI/images/Print16.gif delete mode 100644 support/tools/BaseSimGUI/images/Print24.gif delete mode 100644 support/tools/BaseSimGUI/images/Properties16.gif delete mode 100644 support/tools/BaseSimGUI/images/Save16.gif delete mode 100644 support/tools/BaseSimGUI/images/Save24.gif delete mode 100644 support/tools/BaseSimGUI/images/SaveAs16.gif delete mode 100644 support/tools/BaseSimGUI/images/SaveAs24.gif delete mode 100644 support/tools/BaseSimGUI/images/Stop16.gif delete mode 100644 support/tools/BaseSimGUI/images/Stop24.gif delete mode 100644 support/tools/BaseSimGUI/images/Zoom16.gif delete mode 100644 support/tools/BaseSimGUI/images/Zoom24.gif delete mode 100644 support/tools/BaseSimGUI/images/ZoomIn16.gif delete mode 100644 support/tools/BaseSimGUI/images/ZoomIn24.gif delete mode 100644 support/tools/BaseSimGUI/images/b1.gif delete mode 100644 support/tools/BaseSimGUI/images/closeAllWindows16.gif delete mode 100644 support/tools/BaseSimGUI/images/copy16.gif delete mode 100644 support/tools/BaseSimGUI/images/edit.gif delete mode 100644 support/tools/BaseSimGUI/images/mpan.gif delete mode 100644 support/tools/BaseSimGUI/images/mzoom.gif delete mode 100644 support/tools/BaseSimGUI/images/on.gif delete mode 100644 support/tools/BaseSimGUI/images/openfile.gif delete mode 100644 support/tools/BaseSimGUI/images/pan.gif delete mode 100644 support/tools/BaseSimGUI/images/select.gif delete mode 100644 support/tools/BaseSimGUI/images/tb1.jpg delete mode 100644 support/tools/BaseSimGUI/images/zoom.gif delete mode 100644 support/tools/BaseSimGUI/jarpath.include delete mode 100644 support/tools/BaseSimGUI/lib.xml delete mode 100644 support/tools/BaseSimGUI/out.xml delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/BaseSimTreeModel.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/Configuration.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/Connection.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/ConnectionStep.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/ContHandlerSim.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/DimCtrlStepCenter.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/DimensionController.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/ErrorHandlerSim.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/Graph.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphActionEvent.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphActionListener.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphComposite.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphDataHolder.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphDiagram.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphException.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphManager.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphParamHolder.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphSelectionEvent.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphSelectionListener.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphSimul.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphStep.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphWorkHolder.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/GraphWorkHolderImage.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/JBaseSim.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/JSimToolTip.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/JTestGraph.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/LayoutCentered.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/LayoutController.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/LayoutDataHolder.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/LayoutFlow.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/LayoutSimul.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/Main.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/Main.jbx delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/MessageApp.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/MessageGraph.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/MessageXML.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/Reference.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/SelectionManager.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/TestMain.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/def/ConCorba.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/def/ConMPI.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/def/ConMem.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/basesim/def/DHEmpty.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/DHAntenna.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeam.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeamBand.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeamT.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/DHCorr.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/DHFreq.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/DHFreqT.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHAntenna.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHBeam.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHCPInput.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHController.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHConvolve.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHCorr.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHDataProc.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHFFT.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHIntegrator.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHMakeMS.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHStation.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHTransB.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/lofarsim/WHTransF.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/Arguments.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/Sample.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/Utils.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/BatchFileTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/CCTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/CTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/DefaultInputHandler.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/DefaultTransparentListCellRenderer.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/EiffelTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/HTMLTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/IDLTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/InputHandler.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/JButtonEx.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/JEditTextArea.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/JListEx.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/JMultiLineToolTip.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/JNotifier.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/JScrollPaneEx.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/JToggleButtonEx.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/JTreeEx.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/JavaScriptTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/JavaTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/KeywordMap.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/MakefileTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/MessageEvent.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/MessageListener.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/PHPTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/PatchTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/PerlTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/PropsTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/PythonTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/README.txt delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/SQLTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/ShellScriptTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/StackLayout.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxDocument.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxStyle.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxUtilities.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/TSQLTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/TeXTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/Test.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/TestJTreeEx.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/TextAreaDefaults.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/TextAreaPainter.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/TextUtilities.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/Token.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/TokenMarker.java delete mode 100644 support/tools/BaseSimGUI/src/org/astron/util/gui/XMLTokenMarker.java delete mode 100644 support/tools/BaseSimGUI/template.xml delete mode 100644 support/tools/TreeBrowser/description_init.html delete mode 100644 support/tools/TreeBrowser/images/ftv2blank.png delete mode 100644 support/tools/TreeBrowser/images/ftv2doc.png delete mode 100644 support/tools/TreeBrowser/images/ftv2folderclosed.png delete mode 100644 support/tools/TreeBrowser/images/ftv2folderopen.png delete mode 100644 support/tools/TreeBrowser/images/ftv2lastnode.png delete mode 100644 support/tools/TreeBrowser/images/ftv2mlastnode.png delete mode 100644 support/tools/TreeBrowser/images/ftv2mnode.png delete mode 100644 support/tools/TreeBrowser/images/ftv2node.png delete mode 100644 support/tools/TreeBrowser/images/ftv2plastnode.png delete mode 100644 support/tools/TreeBrowser/images/ftv2pnode.png delete mode 100644 support/tools/TreeBrowser/images/ftv2vertline.png delete mode 100644 support/tools/TreeBrowser/images/lofar_back.gif delete mode 100644 support/tools/TreeBrowser/images/openordner.png delete mode 100644 support/tools/TreeBrowser/index.html delete mode 100644 support/tools/TreeBrowser/links_init.html delete mode 100644 support/tools/TreeBrowser/scripts/make_links.php delete mode 100644 support/tools/TreeBrowser/scripts/makepage.php delete mode 100644 support/tools/wrapexec/AUTHORS delete mode 100644 support/tools/wrapexec/COPYING delete mode 100644 support/tools/wrapexec/ChangeLog delete mode 100644 support/tools/wrapexec/INSTALL delete mode 100644 support/tools/wrapexec/Makefile.am delete mode 100644 support/tools/wrapexec/NEWS delete mode 100644 support/tools/wrapexec/README delete mode 100644 support/tools/wrapexec/acconfig.h delete mode 100644 support/tools/wrapexec/bin/Makefile.am delete mode 100644 support/tools/wrapexec/bin/unwrapexec.in delete mode 100644 support/tools/wrapexec/bin/wrapexec.in delete mode 100755 support/tools/wrapexec/bootstrap delete mode 100644 support/tools/wrapexec/config/Config.cc delete mode 100644 support/tools/wrapexec/config/Config.h delete mode 100644 support/tools/wrapexec/config/Makefile.am delete mode 100644 support/tools/wrapexec/src/ArgList.cc delete mode 100644 support/tools/wrapexec/src/ArgList.h delete mode 100644 support/tools/wrapexec/src/Argv.cc delete mode 100644 support/tools/wrapexec/src/Makefile.am delete mode 100644 support/tools/wrapexec/src/wrapexec.cc delete mode 100644 support/tools/wrapexec/src/wrapexec.cfg.in delete mode 100644 support/tools/wrapexec/src/wrapexec_paths.h.in diff --git a/.gitattributes b/.gitattributes index 73ac29a4bc4..b5396faf6e0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4939,61 +4939,4 @@ SubSystems/Online_Cobalt/validation/validate eol=lf SubSystems/SAS_Tools/CMakeLists.txt -text /jenkins_make -text /lofar_config.h.cmake -text -support/tools/BaseSimGUI/images/4.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/5.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/8.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Antenna01.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Copy24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Cut16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Cut24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Help16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/New16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/New24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Open16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Open24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Paste16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Paste24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Print16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Print24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Properties16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Save16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Save24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/SaveAs16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/SaveAs24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Stop16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Stop24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Zoom16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/Zoom24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/ZoomIn16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/ZoomIn24.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/b1.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/closeAllWindows16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/copy16.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/edit.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/mpan.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/mzoom.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/on.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/openfile.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/pan.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/select.gif -text svneol=unset#unset -support/tools/BaseSimGUI/images/tb1.jpg -text svneol=unset#unset -support/tools/BaseSimGUI/images/zoom.gif -text svneol=unset#unset -support/tools/TreeBrowser/description_init.html -text -support/tools/TreeBrowser/images/ftv2blank.png -text -support/tools/TreeBrowser/images/ftv2doc.png -text -support/tools/TreeBrowser/images/ftv2folderclosed.png -text -support/tools/TreeBrowser/images/ftv2folderopen.png -text -support/tools/TreeBrowser/images/ftv2lastnode.png -text -support/tools/TreeBrowser/images/ftv2mlastnode.png -text -support/tools/TreeBrowser/images/ftv2mnode.png -text -support/tools/TreeBrowser/images/ftv2node.png -text -support/tools/TreeBrowser/images/ftv2plastnode.png -text -support/tools/TreeBrowser/images/ftv2pnode.png -text -support/tools/TreeBrowser/images/ftv2vertline.png -text -support/tools/TreeBrowser/images/lofar_back.gif -text -support/tools/TreeBrowser/images/openordner.png -text -support/tools/TreeBrowser/index.html -text -support/tools/TreeBrowser/links_init.html -text -support/tools/TreeBrowser/scripts/make_links.php -text -support/tools/TreeBrowser/scripts/makepage.php -text support/tools/lofstorman -text diff --git a/support/tools/BaseSimGUI/BaseSimGUI.html b/support/tools/BaseSimGUI/BaseSimGUI.html deleted file mode 100644 index e2fefef20a0..00000000000 --- a/support/tools/BaseSimGUI/BaseSimGUI.html +++ /dev/null @@ -1,25 +0,0 @@ -<HTML> -<HEAD> -<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> -<TITLE>JBuilder Project BaseSimGUI.jpx</TITLE> -</HEAD> -<BODY> -<H1>Project Notes</H1> -<HR> -<FONT SIZE=+1> -<STRONG>Project: </STRONG>BaseSim GUI<BR> -<STRONG>Author: </STRONG>Robbert Dam<BR> -<STRONG>Company: </STRONG>Astron<BR> -<STRONG>Description: </STRONG>Visualization of BaseSim/LofarSim functional end-to-end -simulations<BR> - -<HR> -<STRONG>Things to do... </STRONG><BR> -</FONT> -<UL> -<!-- Edit this section to keep track of your to do items --> -<LI>Create menu for opening/closing, changing view modus, etc. -<LI>Create toolbar -</UL> -</BODY> -</HTML> diff --git a/support/tools/BaseSimGUI/BaseSimGUI.jpx b/support/tools/BaseSimGUI/BaseSimGUI.jpx deleted file mode 100644 index 98ee07bbeca..00000000000 --- a/support/tools/BaseSimGUI/BaseSimGUI.jpx +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!--JBuilder XML Project--> -<project> - <property category="idl" name="ProcessIDL" value="false" /> - <property category="runtime.0" name="RunnableType" value="com.borland.jbuilder.runtime.ApplicationRunner" /> - <property category="runtime.0" name="application.class" value="org.astron.basesim.Main" /> - <property category="runtime.0" name="appserver.ejbJarsSaved" value="1" /> - <property category="runtime.0" name="appserver.parameters" value="-jts -jns -jss -jdb" /> - <property category="runtime.0" name="appserver.servername" value="ejbcontainer" /> - <property category="runtime.0" name="appserver.vmparameters" value="" /> - <property category="runtime.0" name="jsprunner.docbase" value="." /> - <property category="runtime.0" name="jsprunner.jspfile" value="../../../../../opt/jbuilder4/bin" /> - <property category="sys" name="AuthorLabel" value="@author" /> - <property category="sys" name="BackupPath" value="bak" /> - <property category="sys" name="CheckStable" value="1" /> - <property category="sys" name="Company" value="ASTRON" /> - <property category="sys" name="CompanyLabel" value="Company:" /> - <property category="sys" name="Copyright" value="Copyright (c) 2001" /> - <property category="sys" name="CopyrightLabel" value="Copyright:" /> - <property category="sys" name="DefaultPackage" value="org.astron.basesim.def" /> - <property category="sys" name="Description" value="" /> - <property category="sys" name="DescriptionLabel" value="Description:" /> - <property category="sys" name="DocPath" value="doc" /> - <property category="sys" name="ExcludeClassEnabled" value="0" /> - <property category="sys" name="JDK" value="java 1.3.0-C" /> - <property category="sys" name="LastTag" value="0" /> - <property category="sys" name="Libraries" value="Kiwi;XML Parser for Java" /> - <property category="sys" name="MakeStable" value="0" /> - <property category="sys" name="OutPath" value="classes" /> - <property category="sys" name="SourcePath" value="src" /> - <property category="sys" name="Title" value="" /> - <property category="sys" name="TitleLabel" value="Title:" /> - <property category="sys" name="Version" value="1.0" /> - <property category="sys" name="VersionLabel" value="@version" /> - <property category="sys" name="WorkingDirectory" value="." /> - <node type="Package" name="org" /> - <file path="basesim.dtd" /> - <file path="basesim.xml" /> - <file path="classMap.cfg" /> - <file path="corr.xml" /> - <file path="demo.xml" /> - <file path="src/org/astron/lofarsim/DHFreq.java" /> - <file path="src/org/astron/basesim/JTestGraph.java" /> - <file path="notes.txt" /> - <file path="../LOFARSim/output.xml" /> - <file path="simple.xml" /> - <file path="simple2.xml" /> - <file path="simple3.xml" /> - <file path="test1.xml" /> - <file path="test2.xml" /> - <file path="test3.xml" /> - <file path="test5.xml" /> - <file path="test6.xml" /> - <file path="worklog.txt" /> -</project> - diff --git a/support/tools/BaseSimGUI/BaseSimGUI.jpx.local b/support/tools/BaseSimGUI/BaseSimGUI.jpx.local deleted file mode 100644 index beee6921b6c..00000000000 --- a/support/tools/BaseSimGUI/BaseSimGUI.jpx.local +++ /dev/null @@ -1,28 +0,0 @@ -debug.Breakpoints.1[0]=1 027 org.astron.basesim.JBaseSim36 src/org/astron/basesim/JBaseSim.java3 3901 10 1 10 1 10 1 0 -1 -debug.NoTracingClasses.1[0]=23 com.borland.datastore.*1 1 -1 -debug.NoTracingClasses.10[0]=15 com.visigenic.*1 1 -1 -debug.NoTracingClasses.11[0]=6 java.*1 1 -1 -debug.NoTracingClasses.12[0]=7 javax.*1 1 -1 -debug.NoTracingClasses.13[0]=9 org.omg.*1 1 -1 -debug.NoTracingClasses.14[0]=5 sun.*1 1 -1 -debug.NoTracingClasses.2[0]=21 com.borland.dbswing.*1 1 -1 -debug.NoTracingClasses.3[0]=16 com.borland.dx.*1 1 -1 -debug.NoTracingClasses.4[0]=16 com.borland.jb.*1 1 -1 -debug.NoTracingClasses.5[0]=18 com.borland.jbcl.*1 1 -1 -debug.NoTracingClasses.6[0]=30 com.borland.jbuilder.runtime.*1 1 -1 -debug.NoTracingClasses.7[0]=17 com.borland.sql.*1 1 -1 -debug.NoTracingClasses.8[0]=21 com.inprise.vbroker.*1 1 -1 -debug.NoTracingClasses.9[0]=9 com.sun.*1 1 -1 -debug.Watches.1[0]=1 14 node10 expression -1 -editor.search.file_filter_history.1[0]=*.java -editor.search.path_history.1[0]=C:\WINNT\Profiles\rdam\jbproject\BaseSimGUI -editor.search.path_history.2[0]=/data/home/rdam/projects/BaseSimGUI/src -history.files.active[0]=src/org/astron/basesim/Main.java -history.files.open.1[0]=src/org/astron/basesim/Main.java,F;465,16163 -history.files.open.2[0]=src/org/astron/basesim/GraphStep.java,F;85,2922 -history.files.open.3[0]=src/org/astron/basesim/GraphSimul.java,F;55,1945 -history.files.open.4[0]=src/org/astron/basesim/LayoutSimul.java,F;273,9958 -history.files.open.5[0]=src/org/astron/basesim/DimensionController.java,F;37,1714 -history.files.open.6[0]=src/org/astron/basesim/GraphDiagram.java,F;39,1920 -history.files.open.7[0]=src/org/astron/basesim/JBaseSim.java,F;582,19626 -sys.Author[0]=Robbert Dam diff --git a/support/tools/BaseSimGUI/Makefile b/support/tools/BaseSimGUI/Makefile deleted file mode 100644 index 9544fd95708..00000000000 --- a/support/tools/BaseSimGUI/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -all: Main.class - -include jarpath.include - -Main.class: - javac -deprecation src/org/astron/lofarsim/*.java \ - -classpath $(SAXJAR):$(KIWIJAR) \ - -sourcepath src \ - -d classes - javac -deprecation src/org/astron/basesim/Main.java \ - -classpath $(SAXJAR):$(KIWIJAR) \ - -sourcepath src \ - -d classes diff --git a/support/tools/BaseSimGUI/RunBaseSimGUI b/support/tools/BaseSimGUI/RunBaseSimGUI deleted file mode 100755 index 0e25b0bc104..00000000000 --- a/support/tools/BaseSimGUI/RunBaseSimGUI +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -# Get paths to required jars -. ./jarpath.include - -# start BaseSim GUI -java -classpath $SAXJAR:$KIWIJAR:classes org/astron/basesim/Main diff --git a/support/tools/BaseSimGUI/basesim.cfg b/support/tools/BaseSimGUI/basesim.cfg deleted file mode 100644 index fb3d3c004ce..00000000000 --- a/support/tools/BaseSimGUI/basesim.cfg +++ /dev/null @@ -1,7 +0,0 @@ -#Fri Mar 15 16:10:53 CET 2002 -toolTipDismissDelay=2000 -lastSavePath=C\:\\demo2.xml -xmlParser=org.apache.xerces.parsers.SAXParser -enableStdout=true -toolTipReshowDelay=1 -lastOpenPath=/data/home/rdam/projects/LOFAR/support/tools/BaseSimGUI/lib.xml diff --git a/support/tools/BaseSimGUI/basesim.dtd b/support/tools/BaseSimGUI/basesim.dtd deleted file mode 100644 index 01bbadde36b..00000000000 --- a/support/tools/BaseSimGUI/basesim.dtd +++ /dev/null @@ -1,36 +0,0 @@ -<?xml encoding="UTF-8"?> -<!ELEMENT basesim (simul+)> -<!ELEMENT simul (workholder,(simul|step|exstep)*,connect*)> -<!ELEMENT step (workholder)> -<!ELEMENT exstep EMPTY> -<!ELEMENT workholder (dataholder*)> -<!ELEMENT dataholder EMPTY> -<!ELEMENT connect EMPTY> - -<!ATTLIST workholder - name CDATA #IMPLIED - class CDATA #IMPLIED> - -<!ATTLIST simul - name CDATA #REQUIRED - node CDATA #IMPLIED> - -<!ATTLIST step - name CDATA #REQUIRED - node CDATA #IMPLIED> - -<!ATTLIST exstep - name CDATA #REQUIRED - exname CDATA #REQUIRED - node CDATA #IMPLIED - src CDATA #REQUIRED> - -<!ATTLIST dataholder - name CDATA #IMPLIED - type (in|out) #REQUIRED> - -<!ATTLIST connect - src CDATA #REQUIRED - dest CDATA #REQUIRED - rate CDATA #IMPLIED - class CDATA #IMPLIED> diff --git a/support/tools/BaseSimGUI/classMap.cfg b/support/tools/BaseSimGUI/classMap.cfg deleted file mode 100644 index 9e43ca25e69..00000000000 --- a/support/tools/BaseSimGUI/classMap.cfg +++ /dev/null @@ -1,44 +0,0 @@ -# classMap.cfg -# -# Here you can map your C++ WorkHolders/DataHolders to a corresponding -# Java class that will visualize the object. DataHolders should map to -# classes inherited from GraphDataHolder and should start with -# DH. WorkHolders should map to classes inherited from GraphWorkHolder -# and should start with WH. -# ------------------------------------------------------------------------------ - -#-- DataHolder class map - -DH_Beam = org.astron.lofarsim.DHBeam -DH_BeamBand = org.astron.lofarsim.DHBeamBand -DH_BeamT = org.astron.lofarsim.DHBeamT -DH_Corr = org.astron.lofarsim.DHCorr -DH_Empty = org.astron.basesim.def.DHEmpty -DH_FreqT = org.astron.lofarsim.DHFreqT - -#-- WorkHolder class map - -WH_Antenna = org.astron.lofarsim.WHAntenna -WH_Beam = org.astron.lofarsim.WHBeam -WH_CPInput = org.astron.lofarsim.WHCPInput -WH_Controller = org.astron.lofarsim.WHController -WH_Convolve = org.astron.lofarsim.WHConvolve -WH_Corr = org.astron.lofarsim.WHCorr -WH_DataProc = org.astron.lofarsim.WHDataProc -WH_FFT = org.astron.lofarsim.WHFFT -WH_Integrator = org.astron.lofarsim.WHIntegrator -WH_MakeMS = org.astron.lofarsim.WHMakeMS -WH_Station = org.astron.lofarsim.WHStation -WH_TransB = org.astron.lofarsim.WHTransB -WH_TransF = org.astron.lofarsim.WHTransF - -#-- TransportHolder class map - -TH_Mem = org.astron.basesim.def.ConMem -TH_MPI = org.astron.basesim.def.ConMPI -TH_Corba = org.astron.basesim.def.ConCorba - -#-- Simul/Step class map - -exsimul = org.astron.basesim.GraphSimul -exstep = org.astron.basesim.GraphStep diff --git a/support/tools/BaseSimGUI/demo1.xml b/support/tools/BaseSimGUI/demo1.xml deleted file mode 100644 index c44e73f8be1..00000000000 --- a/support/tools/BaseSimGUI/demo1.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE basesim SYSTEM "basesim.dtd"> -<basesim> - <simul name="mySimul"> - - <!-- WorkHolder definition; only one WH per Simul --> - <workholder name="wh1"> - <dataholder name = "dh1" type="in"/> - <dataholder name = "dh2" type="out"/> - </workholder> - - <step name="myStep1"> - <workholder name="myWorkHolder" class="WH_Antenna"> - <dataholder name="dh1" type="in"/> - <dataholder name="dh1" type="in"/> - <dataholder name="dh1" type="in"/> - <dataholder name="dh1" type="in"/> - <dataholder name="dh1" type="in"/> - <dataholder name="dh1" type="in"/> - <dataholder name="dh2" type="out"/> - </workholder> - </step> - - <step name="myStep2"> - <workholder name="myWorkHolder" class="WH_Antenna"> - <dataholder name="dh1" type="in"/> - <dataholder name="dh1" type="in"/> - <dataholder name="dh1" type="in"/> - <dataholder name="dh2" type="in"/> - <dataholder name="dh1" type="in"/> - <dataholder name="dh1" type="in"/> - <dataholder name="dh2" type="out"/> - </workholder> - </step> - - <step name="myStep3"> - <workholder name="myWorkHolder" class="WH_Antenna"> - <dataholder name="dh1" type="in"/> - <dataholder name="dh1" type="in"/> - <dataholder name="dh2" type="out"/> - </workholder> - </step> - - <step name="myStep4"> - <workholder name="myWorkHolder" class="WH_Antenna"> - <dataholder name="dh1" type="in"/> - <dataholder name="dh2" type="out"/> - </workholder> - </step> - - <step name="myStep5"> - <workholder name="myWorkHolder" class="WH_Antenna"> - <dataholder name="dh2" type="in"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - <dataholder name="dh1" type="out"/> - </workholder> - </step> - - <connect src="myStep5" dest="myStep2"/> - <connect src="myStep2" dest="myStep3"/> - <connect src="myStep3" dest="myStep4"/> - <connect src="myStep5" dest="myStep1"/> - <connect src="myStep1" dest="myStep3"/> - - <connect src=".dh1" dest="myStep5.dh2"/> - <connect src="myStep4.dh2" dest=".dh2"/> - - - </simul> -</basesim> diff --git a/support/tools/BaseSimGUI/demo2.xml b/support/tools/BaseSimGUI/demo2.xml deleted file mode 100644 index 7e002a7a012..00000000000 --- a/support/tools/BaseSimGUI/demo2.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE basesim SYSTEM "basesim.dtd"> -<basesim> - <simul name="mySimul"> - - <!-- WorkHolder definition; only one WH per Simul --> - <workholder name="wh1"> - <dataholder name = "dh1" type="in"/> - <dataholder name = "dh2" type="out"/> - </workholder> - - <exstep name="simul1" exname="mySimul" src="lib.xml"/> - <exstep name="simul2" exname="mySimul" src="lib.xml"/> - <exstep name="simul3" exname="mySimul" src="lib.xml"/> - <exstep name="simul4" exname="mySimul" src="lib.xml"/> - - <connect src="simul1" dest="simul2"/> - <connect src="simul3" dest="simul4"/> - </simul> -</basesim> diff --git a/support/tools/BaseSimGUI/error.xml b/support/tools/BaseSimGUI/error.xml deleted file mode 100644 index d03a7676b93..00000000000 --- a/support/tools/BaseSimGUI/error.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE basesim SYSTEM "basesim.dtd"> -<basesim> - <simul name="mySimul"> - - <!-- WorkHolder definition; only one WH per Simul --> - <workholder name="wh1"> - <dataholder name = "dh1" type="in"/> - <dataholder name = "dh2" type="out"/> - </workholder> - - - <exstep name="myExStep" exname="mySimul" src="c:\emptySimul.xml"/> - - </simul> -</basesim> diff --git a/support/tools/BaseSimGUI/images/4.gif b/support/tools/BaseSimGUI/images/4.gif deleted file mode 100644 index 771d3e163a0b464510454c0ec1209c204eb241ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 863 zcmZ?wbhEHb<YVAwIP#z2z<~q*f4=?qp6TCf;eXGR|2;JMch~jbjj(@L(iEimrNw#0 zg}H_JIrw<kIoVlQS(q3|1d2ad7(rTeKm^E62UceV1_u?*d5?<L<Wwu1Ha=5gE8xHK zy}$*L0}C!RWUvUGSYl);#KW~-Zk6VWsP#-8%?I9Aak8-=cF>z0&%>H@HgCPCB7?PY z+8N`SXN=FBG5&wXnBl*%@qgpA|Hd=_8=v`a{Qti(14EiILs}X`+DwMDGYo0}8PXVx z(~OPN(u~t)g0!anH%?;!@zT=L(q^Wmok>gkpO(fjGtGD=h(B{?+L@VY|7WH#oJli2 z1CpM3Chg3bwEt()82+aj{|Bj_`9JN<|Fr-A(-;_L8Z*pHW0*OUVdfczng1DPG8oS^ zHU^nB6XeF3|BYudfUE@>Ju_|QnY5Yz(`GWvoM}9BX4*^;I5TtR|Cuux&dfAE1G0GL znVDzK%=~|5Cd2=k#{WU?nE8L^ng28Y|DVagaK@P7Od7+PnG9#nFr4|%aE8J7jIlAu zl`}zsapu4A8HTho#vl)Y%sK;d;~9pTpukF-d1fZa;4}Yco?$ox3cIv3Ae+vdIrIO_ z8HWF$piKJ@viQvZGyngeVPN=g%<w;r;r~pA|7RHf|7ZBmU<?ZAG-Hsn&VYjXKLaQr zLBTN-6gL0=r~PLDdG~)B$U`8r{?Gi+0CE&4ux5hn`TzgSe}?~{NJ{$;^3s|AAOK1p z1A!swb0-5leKK&^Fcd#!a+t8-Kr=g|$ce2R7#LcZxV`552v9uS&8shU=EOwBgMG5* dNir`lD0%eq`<tnpShe)@bY1PBB@zM*)&RrHQ~Uq` diff --git a/support/tools/BaseSimGUI/images/5.gif b/support/tools/BaseSimGUI/images/5.gif deleted file mode 100644 index 5433ba00551a65dc8273a951dd371ac0e7daf769..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmZ?wbhEHb<YVAwIP#z2z<~q*-+ug`TK_*Z>%U9De`D+aO3MEwg#Pm~s&VisaPUgA zaf`CB3$U<pGqJESGBJ<{6o0ZXg0$#>2#}o)tj-Dy4l0`S9vQ94vF12ke5RyU!hhv^ zfeRuB7EDmcU=cd8#K_V~hHJgts?HTr>p40OA9!2E%fjC5pf@|7r#0bh-g;3*25SKB CO)!Z7 diff --git a/support/tools/BaseSimGUI/images/8.gif b/support/tools/BaseSimGUI/images/8.gif deleted file mode 100644 index 621d19ed0e77471b13a8ac4a481c65eb93b0d1e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmZ?wbhEHb<YVAx*v!qqz`*eT|9|(z+r7NJW?i^_{`~o6%a*aTvuknl^6>C*b94Xy z{~x3Xh82IZFfuT3Gw6T>KxQzo_!j6otlT5s;mdI#NVRYNwz=ugXQn8XTw!A=Nnki7 z&HecSyT}o*u+?|l<~8I;GOS5(jk;{SP@}$anX1UyI)lAW7jQC(oXaqhC|Iy%yC8!# E0DRsxGXMYp diff --git a/support/tools/BaseSimGUI/images/Antenna01.gif b/support/tools/BaseSimGUI/images/Antenna01.gif deleted file mode 100644 index d2b0938889905a0b07e295ec0af36662c1b97c8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24694 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 NXky=B#Kgp44FGJh?9KoH diff --git a/support/tools/BaseSimGUI/images/Copy24.gif b/support/tools/BaseSimGUI/images/Copy24.gif deleted file mode 100644 index c665d0713e15fdff54a8ba7fcdfee29bb46590fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 682 zcmZ?wbhEHblwgoxc=n&+|NsBbpZ|aU?Ekap|DQek|Mcnqr%(SqdGh!1<G+s{{dxHC z_k#yN@8AD<@7|BQcfZ}a^YzxPFE?*}zIpT0jT;}YU;l9B%G=AA-(0%%`r^e`7cRU! zd-nO+v(L_)`G4ljv(1~&Y~FNc)8;dqHl5kD>GZ~pr#EakwPF3q^&3vETYqBRx)bZx z9bdcl*qSv*SFb*@YSodID-SJSesI~c1520fU$S)Hk|p~VFWI|z@!my?_AFSiYySM5 z^XBcCJ9qo+*;{7K+B|dS=9x1$F)%P3IB<YrC<DcxEQ|~c4h%XVPk`dYfqhGZLsN50 zYg?N=gOnjpr<GK{y^M@~dz1Z)nGEWTa&s9qMXWkIy80JSo;t0ybADep-<)|fRyWVw zzJsA-$IPv3mWl4!ySkHaGsALGL&iy~mabzk<WrqLPjkuE&Ux2FEGFF8_wdo<=?u@F zZ+X1lN>u;ss}tRw&!4@V)_F;;bHap!Q;smKcxk*<gTb_V|F*ZM!+U40Ygy1WGvkNS zjl)h~qH>w9`ZDjRX0V&PK%n`)yZ4u%dCKB?0t|}({GIa)DvL7HGfEVU3=9kuk}4H~ zOY;<bGn0$*iz|yuQge%S6g=~i^%NX)auk9<3X2tjQj1fI%2HGGc)7fM+!Wk{6v9%A M6b$tYc)1v?0km8VBme*a diff --git a/support/tools/BaseSimGUI/images/Cut16.gif b/support/tools/BaseSimGUI/images/Cut16.gif deleted file mode 100644 index 14b73a8577fa6d300ddf6ea8b1f999ee214f822f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmZ?wbhEHb6krfw*!-V?fq~)w|NjRL9567LSW$81)2C0<r%&(d>f+_)1<7Gx#h)yU z3=B*RIv^R484N5w0Vh1QSyu$GG@YHvk`-Dm5p+GWNot11Y{}y%x{lV|$^2GjBj1*C zP(qNIuYgH`heJ!fMALz5($0gXN2a*VUwzVBQ=(n7@sN@4(~U|D)^D#}eR=oJ`<pj! zE?Ke!moq@NgE7QCj7aWbD?QLq;Gx5pePYR`ur(LwT~J@lreI~L?(=4<lkaMGDW78( zQ$iN4pSrAbYmDjyciFUDqs5_5oyD#6HPuuU#bj$4O?kSyyF=W)C-~GcOqn{3p|691 ziA_LIh?$pzon>Z-v52q`D>oM>AOEt6-U*D;w@-1~<>JU-y>R~aty?~S{IGcL>;QlN z^0Kl&zkk1b`*z>nz5oCJ|NZ;-w{PD*efo6w?%nn4*Som5K)eQVKLe8c*{3zsH#N7k zGSrvz3wHH%_jS|@icA&}m^xK}UtmIcUQKX*ZdpES89OV>gsS`nHD&d6%T{F1S-ZYm zscv)is{C~wO3G4o+0`q{JNEB5BrjIS;<9SHlAP38N%6WpC(4)9pAoxpt8~@UE!S^W zmtMS6md(mu|LB!V<*N7WM>l+_begm5D4&4hhIR6C9<4%ryO<yJ9c~v;W@BPd{O9kS zUr<?;nVwOiU}RumppaCl5L}w4;G3CTlwVv~T#}kwtfSzWm#nAYn3JOr1X5V65R_V+ eT2z*rqQ}eS<>RK{9;6VKTBKm8XTZzFU=0BM!05C9 diff --git a/support/tools/BaseSimGUI/images/Cut24.gif b/support/tools/BaseSimGUI/images/Cut24.gif deleted file mode 100644 index 5c37d3aff1d65cbc155ac690ce2aeb172095a797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1193 zcmZ?wbhEHblwgox*!-V?fq~)w|NjRL9LUZ-UQu!7)2B~2Z{D0feR@|{S6f?KWo4y` ziV80;FGw92EB<6*WME)o&;jv4W-zcU3^?JrdM{6lHKX>NWvvH0L_0TydIi<Q{BFAX zyl9eHaQx1ql?^^ZArIATC-aqwobckjyLKk`f)cx|<KZW=R3+!Pe>>V$cct*h(rh=$ z?jD(mmJ@V)7#-KMz4`7V%2`v%!p+FhP{&**R_DzuU+KxBW;0QtUv;YV<Z>adu4+B@ zmMV@6q1jb4*!0)TnZJrlQjblDm0fPdCgHHK?ZUB#<Btk5SZ`i`X4AUUTQ;0IwC~RL z&F8mnJbU{1<Flt8o;ms8>ZKP~E<V3};n~Y)f9A~Cv1s1Db*oRTU3Gl*ildv>pIN)= z*y<HWwr@GVYx~8W+b$g3cVpk~D|>ccI&$#V;R81h?z?{L`p1X&zCC*I`QDxP@8AA^ z`TWPeJy%a0yLaZ)!_y}poH}v;^2O&D&OLc}|J$`IFE5;X{NmZ4ySLxpx%KY$&9~pa z{=anL)sx3xA3yr~`0>{pH*Q_Oe)HC?TQ_gs+_r5Sa<GF!dlb_k1R&{|5h*=${AXb1 zknz~C;9zs7kXFnI0R|@*1|_dK8iIjJ?X3DncV>Jz;@T{AU*=`w6JIeiR|en4Nhg%u znxy)-a9%lfeyWyBlMUzPPswf!o&PwRj8F7VwRCCl_;~5_Q-@xUTO6x0*_ZpN`8qPy zUT*K7Z&UtcisWOK)!u76zr}29a`m69n6{`Oa?;myC7Y5J7YvP5`X=bdO}f&`S;8x5 zl6mEi!sjKYh2)#(GqIMic}y@&n$-}v$<;fhQOeTDX13tb&dV!;7rQ+a-tyu)mum1F z-`me!otadgOt{$8)+;5?reSa~@o*zIYYwx4h~uF?cD;-P3?CaCySPNumT(w4?QC$i zP`G0}Bk{0fGrycr!G(s#mJZQ-oT85|9%}8A&=(WXXmn_9<k5*pkj~k#*X4HOX4xeV zniyGF7!?2cJLeZv7G<VqlqeV(7#JudRVoCR<|+7QCKu%wR~DC~<`(NHc;+SRDLCfj oC<K8N7Apj$7N-`KrKafda(Vf<DYyqIgrycK80s1Daxqu~0LU$e;Q#;t diff --git a/support/tools/BaseSimGUI/images/Help16.gif b/support/tools/BaseSimGUI/images/Help16.gif deleted file mode 100644 index dc5c2d310def06e1a13b61de3724a682dd4002d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 661 zcmZ?wbhEHb6krfwc=n&+|Ns974jhQ<il2Xa!Mv064dV<AVhl_YO)S$b!yCh6+GAqd zV>>o>w5@AvTie#Nxu<P)+X9fvd9#kpn!I~*&!(OQrxwgQJZsv%X%n_hXkXplxVUlF zp;_mDo<IHd^!Xp>kG(y%^Ty8WFRx#EeChg&>sOy$J$vV@ae`4)OJsakT-mhJS%+s% z+c$N>_Wte-UG1yeYUkBd	`MSuy|QylH!<PT4(q!nXe2O+C#^o0^t1*37AHTHJX0 z%c)~;k8ZlUanFO@J8o}ZcYf`vQ!DG1)D%xFs+nDV@Y()lN0%->xM<mtrFHXb)?HY` z%gf6!Sb^eC7DfgJMg|>_13_`Zz&^i$v8lPGwaKTWv#XP#-NW6<(V35j*Vabfr<c*k z)5wcWO-V_aRY-7FyOV(hs}d`#Du*D;$~oQ^0_yA%tSTHV+S`2W1oR|L_9?Q;m>zb} zGux|jTH93gu)VH?_C8i|5q_z|ZaTutnYc{N^`#Fhhzp5na%*tvTN@shTW-8=y>-b7 ziED`t23#A8L;@XCZY*lw#>6ngW22I*vjitA6NBPEf9L#y%A(Blj1mPS0|Ntvq)LV0 z(mVy<%;ci{;>zNZ)ZAhn1<$->Jq5>{9EBi|!eWJ>)Z)~lveXnkUM?>mHwE_~g|O5j M1w%apUM>b}0ORu61^@s6 diff --git a/support/tools/BaseSimGUI/images/New16.gif b/support/tools/BaseSimGUI/images/New16.gif deleted file mode 100644 index 3513dfddbb9402244b189c1886e738051f83b256..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmZ?wbhEHb6krfwxcZ-gfq~)w|NjRL9JqD;&+Qw3PMvsj?#zd?r{AAB_3rk~zc;V{ zK7I1twJSfbU;VXv*TbVn-W)&n_TYhM`}aNBxA*ap!!HjXdVc=gmn)ZlT)Oz}*3G}? z&;MVy?%JkJH#cs)v48*bg9l$6KK$y!g>Um0oLac(%*s_)wr+c{W$V37oA0dOaDB(l zhtp>sUbN)widC0Cefo6x@ZoLSw(;`vg4{$jR{Y7r$iTqFpaaqY@)HAFi9=(7hmKUg zJA=>3mc21<5!wcGnV9q+haMH0%P=c@i>uU3Gr3f6>4>QT^6jp%Q<hmR@Lb^_AiQ3N zUr2&m(j!PfP@Kb=AxD&los-F6itbeBAYL}+nbVmVdl}idM3}OIyl474O`pHeIb_q6 zEi*iv7?T(s85IBdJLeZv7G<VqlqeV(7#JudRVoCR<|+7QCKu%wR~DC~<`(NHc;+SR sDLCfjC<K8N7Apj$7N-`KrKafda(Vf<DYyqIgrycK80s1Daxqu~09gODqyPW_ diff --git a/support/tools/BaseSimGUI/images/New24.gif b/support/tools/BaseSimGUI/images/New24.gif deleted file mode 100644 index 1cc488d4524a8f74b5586883fe8d6ab2c91bcb05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 778 zcmZ?wbhEHblwgoxc=n%xfq~)w|NjRL95{FS!<m!su3!0i>-wLQ$6p^m`tsbF4`)xm zKXdBc?VEpZ-S~6k+OIvk9v(XIZ2#WJM-RU|fA;gaGoMZzdwu-qt7AuAo<05H%&GUM zPrf^K;_cPTKQ3SVcJun58`pkczxr$2);oK4KiakP!Ok7`j~sq|=-`XJdmbM>^7_F3 zr>9PSIC<jziQ{jN9DaH3?B}CLUS7QL?ab*9Cr`XNas2hwD?cw?{C45|m$PR+oI3gT z+SQ-8ZvMS-{rB~2zi!?9bN$-SdGk)JSaIp_;ZN(=-`uq6&f2wCckFn$efxt=n{I8~ zcw_zgYg@M5-n{wNzJ1Sj?6|*u``rTvp6}oPY~Q}8d-gm&eE8L&LofI4eY|JS!(+$Z z96I#k@ZlF1E_^+I{>$ad-)GG}I)A~bB}>oGUvP5ivJ0zLUtPBR!p2Q^)~>s;cHOmA zt1quyb!p4idmA?1Sij-=uHBD!?s_zH_K_vaE-YAddc~?M>o?wBx%$f1?e{-@`m}lT zW?o)iP(WkDia%Kx85o!tbU>1zIALJ_-@w$=+|t_C-qG1n&d}4>JE5zIfw6Sz^l81N zlgdl;^9t=#<1?p}mQR`zTb$sOSmILd$T+2IZc<!PvRhi9_ogjfQwmZXTs?ifG?X^Y z?VRhJk((W$7_KfXbhdL!dQO(VpN?R(z6o~^V|QtghnlapW|Wv6w-x8P_9^ZmDp~>t zX&(+8cyO#es@-a;gdnqbJF~TjK>!1jqn-1VH326Mr8c*-@EARjSfZCGD=uV_kzvrl zsK{`LDdvRZ0{1313zh>S4|38M`Y9OQF;-Z7Ol9stGtosVACL8MMa8L^T3&2ql@2Xg zwpb)HlYx~rYDa~EYrwK4Q|oS3K6#<xGrvv5An}ssgDYw~Cb8YsU1_p@;XWoNMh3-y z{?7RYl|`B986^rv1_lNSNtFu0rFjaznaM@@#g)Y+sky~E3Z8k%dJ2v?ISN4_g~bX% gsl};9WvMB8yj)&BZVK)}3Sp^53Wj<Hyj%>{0Qh&Nng9R* diff --git a/support/tools/BaseSimGUI/images/Open16.gif b/support/tools/BaseSimGUI/images/Open16.gif deleted file mode 100644 index fabd5676f96cf46b62fe3c91fce204c2339b64ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmZ?wbhEHb6krfw*!-X2|NsC0pPl(~_t@t<N6+kCcV^41Gn;3vnc22_M%(Hctuwo- z(~ON77#I#5IKTh~ia%Kx85npObU-|i84fIV8%}zzPEp7{%eC!_QkQ7*ycg{2M7A-u zKVTGICQv9S(&V}Mzyg68w^jsc&Rx~0c&ErZo?GoUCtu6bCr4$2lo%BM`8($qR2F5X zXOt)y85kHSBvmQ|m*y$>W+oTq7grXSq~;duD0t>2>nS+q<R}Dz6c#H4r52|am8GWW Z@p5_jxGA^?DTJjKDH!S*@NzL&0{~bDRk#2E diff --git a/support/tools/BaseSimGUI/images/Open24.gif b/support/tools/BaseSimGUI/images/Open24.gif deleted file mode 100644 index 2086bc296307753867ddb03be7f1a1bfc94d43e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmZ?wbhEHblwgoxxcZ;r|NsC0pP&8z?Ck$%XZ}4s{rAb~KaWrSest>B!;?QAocMO{ z_~+Y4KioR}{>GuV*AKqFdf>&C{ZB6Jd30{~gR?vDo!)Wl#J20lwp=~3`SPJn7Y}Z{ zaA3okz3a|wnRRCKtTUTup4l|>^ro4oHqJP)VfyiP(~hp4dU*AeeJdvJSvFzUlKvfw z`gSbp-M*-I+rpkrbGz2h?p!ykea+0aRnuD+O>9^&p?+Rp-Q3>VnO)Us#>NZ`3<nMz zV88&1KUo+V7%UldKr$ddIk3$*FsHynN2=d)PSHvhi}?&P3py4DhB5k?DP--@*}}WF zQ)l+l3njaDO_aM@u%gn>{@%MEw*#e?g$6`NX^ST2Ia?%28w;s7GAi>KigmQPSa3zn z<chEDoLahI;iAP$7FJdUhZHhIHz%)j^4YYxc4|$hk)T?ivS7#hX$(n14Kw@s^pis8 zdopNqDK&EGCCoeHx%sB|hNX8s92pe<`8($qR2F5XXOt)y85kHSBvmQ|m*y$>W+oTq z7grXSq~;duD0t>2>nS+q<R}Dz6c#H4r52|am8GWW@p5_jxGA^?DTJjKDH!S*@NzL& F0|58L+HL>< diff --git a/support/tools/BaseSimGUI/images/Paste16.gif b/support/tools/BaseSimGUI/images/Paste16.gif deleted file mode 100644 index f118c7eab8c450001b762d80446f6b7b9f5222c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmZ?wbhEHb6krfwIP#z2|Ns9_&+oc>a@(Dg+pZkic;(QBGiT16*|Yl0?lq_PtU0`O z`N7Rgx6JEYH?wu^%+{ro8<tLLnA=l5r>A;KYgu1IQCeDBvY}y|u`vS!!+`?_7%+h1 zPZmZ721y1TkPOI92iA}TwZ0V3qy{5d!H*FQonZ}$7pBczxb6ZA&kQ|hW(KXpv0aOj zIK4H()_*jSTz^buW7CzSj2Y5t9lK_nZGXjaG-m4+r764F!?(%pbFfW*`8&}t%2|;? z@t?nQenDkXW_m`6f{}rNfkINHLU3uGf^TMWQGRh{aY<@!v5tagUb3EoV@{4j5J+LM iLQraPYEfBgiXJbQmyer*dyqm{YLSAWo&hfxgEasbc6Cqy diff --git a/support/tools/BaseSimGUI/images/Paste24.gif b/support/tools/BaseSimGUI/images/Paste24.gif deleted file mode 100644 index 26cc4c58bf99f3b0d1d0c4cc95a26416d757f7cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmZ?wbhEHblwgoxIP#z2|Ns9lF70`7anExQ+I{=P*4rnx+&;eL*6}Up_O3m1=FFjk zhYlV*c;LW+t@As#&g<MVuXEk3wso^w*UfBOH?ws?f9-<4+F4yyGiT0BPEJlXG-P04 zIB?(q0}LqsWMO1rkYUgP34rW$U|pb~-j|X&?+%-a`0NmO6AP(^u2(kf7XvqLmG+y= zm>|~W>b6<%QJBHZWO2@WA$tz3Kf2Y*(v?Bsv+PQf7bUy0cCU*HlwI2!bo5Dc$F=HH zzSYqVCFV)3ZAq!hlHHxEiP9b^sp&}`+!7L|Qhr)7dWAJ=bLW=_FH~Jz7`&``5yL7g z+vO@+K_O9`o6{IpSMJc=<<Dnhr*~kjTGpwIj^0#72E~8=&iMtEMVaXtB??9c1_laA zl?uV7c?!On$wm3amBl5gxy3pPo_Wc73XVBB3PB)+#R@^G#i>PQsVREATwXqI3hqG) PVW~w5hI$6PTnyF#j^&x# diff --git a/support/tools/BaseSimGUI/images/Print16.gif b/support/tools/BaseSimGUI/images/Print16.gif deleted file mode 100644 index 7eb82995443204d47572a2f849620dc8e491084b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmZ?wbhEHb6krfwIP#z2KL{|qc=7-F^Z(DD{eSZ0@BRBfZru2E=FI;yXU?2H{q*S3 zdt0`g*}Ub<=FMj|Zalqq&9Rv?XU>?hapJ^P4GlAm&oD4BFdR5=07PNKia%Kx85qPF zbU>0II~`d4AE@@FSVm>6TC|ka;8KEO9=A%xy6exgW~v`(G;GibV3_1Ror6VdDvLkM zim3GmbS{+6y`{$1#;~)NSAvV{@aes~D%W+?*iBb+-FG#Xn}?A>@t?nQenDkXW_m`6 zf{}rNfkINHLU3uGf^TMWQGRh{aY<@!v5tagUb3EoV@{4j5J+LMLQraPYEfBgiXJbQ Wmyer*dyqm{YLSAWo&hfxgEasg19Y+g diff --git a/support/tools/BaseSimGUI/images/Print24.gif b/support/tools/BaseSimGUI/images/Print24.gif deleted file mode 100644 index e6b4fb177c737f574e63baa93bf34f85ce95a0f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 491 zcmZ?wbhEHblwgoxxcZ;rKL{{9fByXWv**vBJ$v^2`5h3ref##E+qeGTy7m9o&HvZ0 z{k?kS_vK4JE?)e8?%bENXFi=d^Z(45GpA2~JazK@iQ{jN9({B0;M0Q#o*vx)^uU3q z2lhYRzyI03eNXo7eX@7&<Gp(x?b-ck&+do2c0Jg+^Zt$<_qK1pyJgF*&6{s-+O%mS z2yEE6;o61`8`iD6vS!Vt)vGS7SaEjg(ld(}pIWfs_<{usX3aV{bLRe;GiMr~VPIfj zIB?(qhyr89pDc_F3^oipARfq14s2T;<`sD8NcHcLeek6!L+Jda)a5o>#W&WJS+A6u zs($C?wVR#{aVn)}^VY9@_d{yIwD%L@9k{Po8X9n>Wo9u5$OdrAiWw(1JBJHfP82p{ z(_+$MWVEu1E$L^NG<EtCHnYi-`YKkhS=+*}VPnYrHC{<Ix;#x=Dz^FXH#BVC%3vhm z-ykb)s=ms_tKDB#v?uAD*T$Q-ZkC^CSTSYV45nFgEStTAZ@*sn;{M{tTFV|h-{bV= z&AMMUjtq+b{GIa)DvL7HGfEVU3=9kuk}4H~OY;<bGn0$*iz|yuQge%S6g=~i^%NX) oauk9<3X2tjQj1fI%2HGGc)7fM+!Wk{6v9%A6b$tYc)1v?0lQTFO#lD@ diff --git a/support/tools/BaseSimGUI/images/Properties16.gif b/support/tools/BaseSimGUI/images/Properties16.gif deleted file mode 100644 index c0c3d43260a7eacc37e7d22d03919e8261bb7186..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmZ?wbhEHb6krfwxcZ-gfq~)w|NjRL9JqD;&+Qw3PMvsj?#zd?r{AAB_3rk~zc;V{ zK6T>#@uRO!pL}=i%FpXpf9>A&@aT~@$B(@|c;MOoeNXo7eSGBb%fpABpFj8I%H<!I zE`Gap^Y8id|JSX%wrSJNjT>+5-~asJ!54=Qzq)YY+x!Km7A`uoa@Ccs+a7G$dT-O_ zJL@-G-?8)I^qGejEjhbl)#Xp0J{>-Mc-yvZyu7?1ml1&#f3h$#FfcLbfYgHg#K2bU z&{*K1Bh~NT;B#`y(FC`f+6Hr(m<%6JeX6vSVNUj!RIP<p3QxVIGv<aUa=67#S!cKC z)Cvay;q`KYB2v84>_$!u&Ot)Lk{qsH&f(&G?3_#;OeIc1{A|oTvl-`fGO}@ranD>j z*SBk}bI9hI*&c3;E{+U}|NNcv3o45;(=$pGj0_A66p|_xf=lxhd^3}a@{22rOHy-- xbrd}FlJyiEb8-}dKnjZ$f>Mi9i^@_{^mw_veB2b=gA~G2ixdp?40yR1tO0qmyIKGM diff --git a/support/tools/BaseSimGUI/images/Save16.gif b/support/tools/BaseSimGUI/images/Save16.gif deleted file mode 100644 index 954f1accde64db9e98e9a6e528b459f3027b018c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmZ?wbhEHb6krfwSoELa|NsAI&YVe0OJiVQIB?(q0}LqsWMO1rU}4Y!34qixFgtkc zy7Mppgy(GrrWZSJiaJ`bh;!=1d(2YnS{bu?O4QnuN7UcgRP2<z{o4F6LrCMpl`|Z* z8V{*=ImH?+GVKVP$iSfZ&)+$}pt2}4J)=ay$iTorA*oU!xHM0}H#4~?zqqovBsI5K xN5L~MSx><+Cr2R&q_9{aD784Xs4O)_kC)5K$4$XKNFgk>NWoCgfR~HG8UTL*MS%bS diff --git a/support/tools/BaseSimGUI/images/Save24.gif b/support/tools/BaseSimGUI/images/Save24.gif deleted file mode 100644 index bfa98a8df0a1b7634dccb78b9ba0c6bb7e26de5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmZ?wbhEHblwgoxSoELa|NsAI&YYP!b7opv8Uq8vfddB^z(DaQ3nK#qD}xS*2U6?6 zTobYD&OH_u!B;yLw<$WOTwKzd{9RWuHBl;ju9w!C65IU@E^lhyA6_wk!gG(U5n{o7 zR~aqlU+7DhoV>zARpvyOs;2yd4HbVn7+Cy!W<6GM*s<FC^=Xl##-6!<cOAR1I<_%5 zS~#$+o>j9wu&N=W+rPInY{JB5-l=UVv$;7L6#w}<=ND8KWu|A8C>R+S7$_uFDg>A2 zDfnh47v&dM7MG;v7V9W@<|XSXIOgOi1c4M5D+Hw$rxul^rs(l<dHJ|0xCbeOr4}g| L>KX8IF<1itS*BxA diff --git a/support/tools/BaseSimGUI/images/SaveAs16.gif b/support/tools/BaseSimGUI/images/SaveAs16.gif deleted file mode 100644 index 8d3929c8aa7d56483d4d3b218e840ca56506561a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmZ?wbhEHb6krfw*!-V?fq~)w|NjRL9566Qw6)Fq^y$<2^XJc;IdkaHq5b>!=jG)k zCMNRo@`BWXvEok_Mg|5Z1|1L&WCjCEWWWi}*DO4*WwbcF15$hhYeH5kuw7vD@T~0? zOg=jMSsMRo@d-(WGOyHDT}%s}aKW#|v7}2##hd;93eAc-hIW@9R|MyHC~vH=7Mv)Y z7i_xKC3?%pO{w~w3=E3@{GIa)DvL7HGfEVU3=9kuk}4H~OY;<bGn0$*iz|yuQge%S w6g=~i^%NX)auk9<3X2tjQj1fI%2HGGc)7fM+!Wk{6v9%A6b$tYc)1v?0b*HM6951J diff --git a/support/tools/BaseSimGUI/images/SaveAs24.gif b/support/tools/BaseSimGUI/images/SaveAs24.gif deleted file mode 100644 index 97eb6fa30d304cb61883d56f73b1f399b419ab1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmZ?wbhEHblwgox*!-V?fq~)w|NjRL9566Qw6)Fq^y$<2^XJc;IdkaHq5b>!&zm=I z;>3x0d3lM6iM+hL3=9m4KUo+V7?>DzKsrHYFtBV3IN`Z^E#H&1zxAdEvv?br@vNG) zh?S+INy6jQnbO2P(=v2Snze2;Y}HyXac<j{j|Nr`d{VWQ`lc*NJYrgz?%%~PuJU-p z<RwWP^ETh#?VvC9;fAGr=PxUTFaPTrYyIt18Jap8nBA+D;$kP17BRI>;^dpo$v$fi zJ8O@Dk<#oLvzN`8Bs5ij7Q^!O^A(up%dsw*yJMwL>>BoUJC<!!+_rB2dd^)Q{ii2n z2v?MsO%|PawO{<kO(sDG#ee?J`303lnduoN3PuJ71`0`)3c;m$3ci`iMft^*#U-h^ y#X1U}dC7VTjyX9BK_G?23PGvGsYPX}DSEtIUOsLL?m-G+sYMEgdIr2)4AuZsyorVY diff --git a/support/tools/BaseSimGUI/images/Stop16.gif b/support/tools/BaseSimGUI/images/Stop16.gif deleted file mode 100644 index 064202bf39f5f0a44c3088bf3fd599dcb1fece5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmZ?wbhEHb6krfw*!-V?fq~)w|Njda7}oLf?sRiI796}WK7L<L&c(jId$VVM`t*sH zm-oPd10Z!^toW0Kk%57SK?lSGnZdvkG2x_Vb}U17>P;t34lZu@+Rnli#~fzKd5APc z3*>1sYQDXt>)`Oo@=BlH;=Y5~irEJf&-}2~^7XyHQ9$)tTJ#<7MG+3+t7Uou>sIML z?Wy79*Ld@-@177NgW^Ab=lp`oqRjM+5(Ogz0|SMmN`>IkJO$s(<f8oI%HopL++rOC v&%9(k1;?Bmg&>f^Vuhg8;?$zD)D%5lE-xQ91@|C@u+$<2Lp=jtE(U7=urgR% diff --git a/support/tools/BaseSimGUI/images/Stop24.gif b/support/tools/BaseSimGUI/images/Stop24.gif deleted file mode 100644 index 90515c8acf860707391fa4744957e56ead156313..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313 zcmZ?wbhEHblwgox*!-V?fq~)w|Njda7}oLf?sRiI796}WK7L<L&WVzetBsA1mMy!x zY15}qpLltB4;(naz`&sRlZBCifsa84q!VNY1Iy$KCp}m1-OPB_{BUTqO0uV!{ELq6 z!W|zJ7c5vI&^+P2i{Wy`Be~19`KtCmxNySeSB8+-x|=E|7BsXpp2*E(Y}9bNrpvu< z<(p|y|JuTn%|vwrXWwStFhfWEl5AP6TV8c=xmB1a9}h1RYg>*-fKX50gqTSV!c+TG zXG%=fUu4*|pf_!@LXY$snORyqj2ky^(%QC7kU{aEzjJ;;Wl?5&Mu~!vfq{WSQl&z0 zX`X^_W^z$}ab<ByYHqQPf@fZ`o`PdejzSPfVX;C`YH?~&S!#+NFPE2(n}U0gLRe~% Mf}x%PFBgL~08nXntN;K2 diff --git a/support/tools/BaseSimGUI/images/Zoom16.gif b/support/tools/BaseSimGUI/images/Zoom16.gif deleted file mode 100644 index 9e488969a627368b6d64dd45c677ed60a2e08bed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmZ?wbhEHb6krfwIP#x?fq~)w|NjOCiMF<R6DO{mH*fol85@=^-MeGQg)?WK9zA;Z z%$X+-A3nQs<>rSEpSyb&<=OIX?JE5A=@Tz6?|}mcK>G1w#h)yU3=AR+Iv`abI~iCb z6;%6DBK;1ius)k%=3~s6V{OW}$fh~vvDJ~L3&xBRj;#+JjPHtA9a0R`@l@+Sx+y@H zm4#W;^y(rO73L47O<L<~rg*Y2X-sCAP<dDH(D|Qw0@@AArY$Op42u8!o%0JSi!#$Q zN)(I?3=9;KDiwlD^AvnDlZ*0;D~n4~bBlEpJoA$E6dZGM6oNnsixq-Wi&KlrQd9JJ Xxx9Sb6x@Rp!cvPA4D}3nxfrYg9cpJb diff --git a/support/tools/BaseSimGUI/images/Zoom24.gif b/support/tools/BaseSimGUI/images/Zoom24.gif deleted file mode 100644 index 86ae8631b136131f8f6e26ec43ec389e23f6d32a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmZ?wbhEHblwgoxxcZ-gfq~)w|Nl#u>^*wqu7N?Kt!-Xc*P@9NSI(QaZT0FSOPB85 zwCU8wjVE{PxUhf!^?m!UojLRL=+V2EFTcKg`PHRM_s*QTe)Q;thYz1!xpMQvhtH26 zKbtXgeWC$Fo-J=%UfAL7tIr+UwsCshs)>~|tCLPF?OoqlbZC0r{Vj7pefpG_m&eP? zd*HwUkR!;&ia%Kx85pz~bU+4x{KUYv{=n1%4;`ug6DdKg39F_YS9{jDF<{08#RE+z zGxU0#7dxF;7c#N?*ad-n8CH>ytFgvrz2->)4NP)nd3+p#Tr7-UCE}Gm6<h*^UeSp? zE&ZJBogz)r%uE8DLKD4ME1P+z3m0~Hv4}ReE)eFP8Og%BaUm;<rf-_Y?t>bP4Dt&8 zX^e*trz^-Qok(-lQj$}=c*$8yQCa22&2$x2b=e0lTIy;t&s=0>PQ7s{`uHWlkwNjF zzjJ;;Wl?5&Mu~!vfq{WSQl&z0X`X^_W^z$}ab<ByYHqQPf@fZ`o`PdejzSPfVX;C` gYH?~&S!#+NFPE2(n}U0gLRe~%f}x%PFBgL~0IL$TW&i*H diff --git a/support/tools/BaseSimGUI/images/ZoomIn16.gif b/support/tools/BaseSimGUI/images/ZoomIn16.gif deleted file mode 100644 index 2329426e4817c9edf7f8db004d72cc096d0888e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmZ?wbhEHb6krfwIP#x?fq~)w|NjOCiMF<REiH4px)#ltv0>i4ZL3!w*}wn#(W7^7 z-u!g*=!J(5pIy0f^YP<nGiI(&G+;P1y^fcc_rQSzApLl;;!hSv1_luZ9gr%JoeZqu z3aWi6kxaq~(=s0$9N5t1@Y#n&g(ds12!rb*g$Q4nl}i#2SQ~P19XPn*##e>TPR5Pd z)7Y9aO-&cGusmRJXwqW8H>ETsNX}PjQe|w(`S(8s3+mIFRTUYm6&V!&`8($qR2F5X zXOt)y85kHSBvmQ|m*y$>W+oTq7grXSq~;duD0t>2>nS+q<R}Dz6c#H4r52|am8GWW Z@p5_jxGA^?DTJjKDH!S*@NzL&0|41?X)^!- diff --git a/support/tools/BaseSimGUI/images/ZoomIn24.gif b/support/tools/BaseSimGUI/images/ZoomIn24.gif deleted file mode 100644 index dbd44778a3db23e9b0cd4754a3980c57eed59b91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmZ?wbhEHblwgoxxcZ;r|NsB*-+y}Z=JV@)OCLOVcK`m<d-s0ayZ8O>-B-76J->PL z+08Qtu3!In{rZQ?>!x0~@bbd>mnTm?K6&!d$&*(P9lCw!(78hgZyz{t=D_A<`zMy~ z-hE~Ft}DCex9-|~W%JC2b?c6=Zq8c1{NVEC2No>YxnTaznKL&{DT$gidG(}8YbH%v z-QB&UrDbkInr~WKTADF~v2hv$1H*v>2N;M3ia%Kx85j&1bU->lesW-2cVI?=hmKVD z1}Da2IfvYO#2<Lr9<tHl>)~20!qnL0<~noFsw3A`f~p*x+xta)&3DB#th^d2uXa#d z%0NUtM<6}JfFq^VKtP2@k*&CtL4W%6N&^Y*=-N;NJ_TmI`OB7fdP=d1a`?<Q;E&ff z=n<T<K#H+Z%b+z^c}JLNa*M%%iHF?vTXOs-vIkXVOwXG*SzmYk{K~tA2HZMw^Hw++ z$f)r>d1}Bcx%8>a<&Un842u8!o%0JSi!#$QN)(I?3=9;KDiwlD^AvnDlZ*0;D~n4~ zbBlEpJoA$E6dZGM6oNnsixq-Wi&KlrQd9JJxx9Sb6x@Rp!cvPA4D}3nxfrYgjdaLs diff --git a/support/tools/BaseSimGUI/images/b1.gif b/support/tools/BaseSimGUI/images/b1.gif deleted file mode 100644 index cee9d34e6791f7baffe0692a093465f565ed27c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1618 zcmZ?wbhEHbOkqf2Sj52a;K74u&z`+~`}Xta&p&_u{Qv(y0~qLlNRS!^j(-fCA`%`G z8XTHg`P58KY)CxZ%ExXs=Y+vRmnI2gFB6M~0}cIh>>LuBpB8)eYiI|};V69SI*r%5 z$tN>#!Liv)sq;*J7OHs8vk6^i<MHL8TaQ`yH6O`~&(1DqE%9R2a!9$lKwa~c443Hg zqrEYrWk)SUSDajxu|BC+a?;9E8w<F_RHef8yf)jc{}<9NzT)<Fj-%IHt3nE{@04|( zrrWt~{o^D2JNeG75P0~YGy3<ktyyNdkJmUW`>VxNeu_C-SzYw(^o)(?S7|Fs%l^G; zaA%3``(@wW6qmohH^cJWvcE-&AD0GyjjG*yz4YWHzS3Q`dScsO-Z?ql`2E{IZ~Ru~ z>i!GXuakL{bUxiPFHJXSd;G`8r^WARgs!c<KL2W4%Kx~3*SkL%wp_2hr~6&T-S%Vo zq<Wr5OD?CMckPf5Tjj|S)hwas654wHX?jBKO4o?MHXg1S(~D$Y9i5)^>Y=M}=ReNp zcl`wy{SeM#VKbHKS-f$oLQBoZ_6OOuhDVbdbheevpKw!j=hcZ%Xa1O-<)fCC+U>K5 zMKw1_>cp(N`cjw0-Bx*(k-nTo#~%7IZQJ>*e8Iu=XEolcB}y&tdB4txe0VZ5Eumr4 z4W;=}ob9*D+rLHL%KbkxOk?7kzoODv?VmJn_eotmy0p^BZ>4g|&W%s!RZq(k4P3Uc zsPn;Gjajoo3jT*}Q=OYUsqI-%|LVN$i!vH_X=bPO-&M`=neG*J-O;F5q=Dh|JF7=Q z7k^HbTzP5Pm76mjaIz}+?KC>Bmat<cN6?ygnilKw>~weQtevE(syeZ768qY|i-F#+ zI~kuyGcf!ta)04-%k8z2uV0~b`rh556}p>$nZ0@6#-9BB-qOO85)u*JOLuJ8^eXA5 zL_UN2vgnK{j$a?u9BR{eIO&wrsk_JTG4;${s3VwGbkJjMRYu>B+~=y(ZZ&4k^q%3C zX?Wz6>RqD?4%X@=na<a*Wb{m3_cQf^&-!oAd^-Q8&&^fs+mkrKwtkJuk>_1D>f1w^ zBNr^UiGCHBmwn$x@0RASSml}j46fGRSjEM^!*uudM{ml{J$k44c1w{o>$it9yR!4P z+NG&VKk3=$rE`DlHE+RZqT+ijvkzOzWd$$jFWngX-7kH|$(8?YqaWFx)QWnu!s&0w z?9JhCU%lE9Ty|@vRFUnL_xtVT_8ef~mzg>FsF&=XSc_Gh>tBDnwENfVmG9e4kDrMP zeKC(k+T6DG*2~ic`~DnS7JBSf__4nagUoX58U8$rUei<YKlJvTx++fhYvucEx8~QM zlngoXgk6=5>6neu#{2ueOtrt^uuSL0&#<!<PxPYSx-<MaHJ`=v&~9GS)lnkZ3)nli z%5$1&*Zi{NpSLV@3y<j2XmJq{M(Z-CghmdhZU303a(R0!i(LA;^|t5D+W{|D>CR=V z+wA4PE9seYE9Zl7=_d)^t2p*r&wZPx)xGffGw}tNPiD25By;T+ad&<+F(Zh-NY00$ zeZ{}hzMd<IiW1se7M&J79v+ah_;tb)HAybc^hKK|3kip=`TH<1wC`q*%vxrJK;2_e zbDKMOZ(oz*=6!9}>Juqd`Q2fa>Plx<ug6zzlx?|m)2qtkQ%6-!$%cI^^U~HiJ$UOS zBC1(cH2uJ7nKfY&4v#$Yre$lY>F_5Xdm)%>V?O1n&e063*>gQZZdl)4rn7U_4Bz8z z3wPalJEd}SVBkwr+mdH$o@E<dW82D}^W5h?uj;~g?xKZX<^LtkWz+21dNZd-9a(-w zpmTNnUys<opQcOCwYU(vsw*VJamBA+5zbDhR;TnWN@gkN&@a4pcCO*234E4TEArRr z&VQ{F{=?<QMV)zHdIhE|I=mru$!Evn;;@(3ZA?A<X20W`zA5IM-(*kE`S*-wef=28 zGdtr-@=uORe(z|5*}sAvvO;`Ce#wNc{&i)yVt*mS-Bk>tnOetm`<C0r#?57zX*28X z#ro)}@!`71e6y~e>infMbKa3Kjemi9Yd3s86|vsZPRh!ttGjwy@Me$cEC1=vnUbY_ zsL7NernO_najUtLt;AQKOF6npw)9DKfa!$?HEfd?W?tI4?(@O+-Zir{n7y|sb2tQE oOq%5Mwd7T#pM+-rsig}~Jd)3<RKFcI?cLlzi<7o8F)>&J0J`%U{Qv*} diff --git a/support/tools/BaseSimGUI/images/closeAllWindows16.gif b/support/tools/BaseSimGUI/images/closeAllWindows16.gif deleted file mode 100644 index a27c20fbb7712b28078f2b87815a400052f07949..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmZ?wbhEHb6krfwSoEJEIeE^UIp@xu`~Uy{{{sgOFu;J~PZmZ71{MY#kN`-n1GBpa z!<B!0Jch3(m9kXse%}14_i%>RWCb0q+tV(m>RydX3JA76FwLFkjH~OL18GiDK2AGN cYDr5xoxIU7^XNjCmXj97Ef@5sGcZ^K0QNUA6951J diff --git a/support/tools/BaseSimGUI/images/copy16.gif b/support/tools/BaseSimGUI/images/copy16.gif deleted file mode 100644 index fa986813a821559ca5120bf8dfaa3c38cd474190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmZ?wbhEHb6krfwIP#z2|NsBbpZ|aU?Ekap|DQek|Mc1ar%(UgzyI^@-EX&Vf4O?~ z{pHJV&z$*x=FGFro6l_CbY|1$Gn+P@*|_oah7BjztUb1B)sYn|4lP}}Z_%RN^B3%# zIdc;O1H*v>2N+;L@h1x-1A`2M4oCoGrvs~(f_h(yWnM$GR>*=p)m6DAxm^qmyF9Kf zSTgIanp12*uOzb=b3hs2b;gR*k!z2<dFi!RG4R?uGlk@f48EH#KNaE*-lKd=r6#*m zkwNjFzjJ;;Wl?5&Mu~!vfq{WSQl&z0X`X^_W^z$}ab<ByYHqQPf@fZ`o`PdejzSPf kVX;C`YH?~&S!#+NFPE2(n}U0gLRe~%f}x%PFBgL~0JxNcr2qf` diff --git a/support/tools/BaseSimGUI/images/edit.gif b/support/tools/BaseSimGUI/images/edit.gif deleted file mode 100644 index 3d52e037ffb49b15c4e61364e177040095c000aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmZ?wbhEHb6k_0IXy#`4|NsC0GiUyvF+OwV%$YQXGYkwf89?Bl$-kL1XQrhY|2O^* z;={1wPZmZ725tr&kO0UG1{TkPlb)|F7r(0P+L@3c`h;~(dXY+ugUIos1us-(8x4*a xE%;;az_a}E*Nm-q`iz*h{Eny!YlcW!?o0U6wN$oiwsOhw)Hc1DAC#CFtN{y>IRF3v diff --git a/support/tools/BaseSimGUI/images/mpan.gif b/support/tools/BaseSimGUI/images/mpan.gif deleted file mode 100644 index 82fb3824eac2bcf857b2bf282827980c434bc7c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245 zcmZ?wbhEHbRA5kG*vtR|@e%O}842GR7#i9eCQP5Oe*O9lJ2vd!zyHGZ3lAPVc>n(W z|Ns9%>cCj>CkrP712cmThzBx*fnyN^JBN$~gF{0T1BX`3i2?-%22KfvfDI244tH}g z8>~3-py3z;14n`kCqttPtB@p1z=Q%7HwJEtbs?G;pSm)zXK4M1xV-G}G}hotS2(Vy zF|gV8XQd<*Ir`6c%$9TY63q;pAG|zlY1P#iVXF)!B?K6zF1WVd|1_6P^j3%Ko7@i< qh3=lPHgs31{HxmT?d$LFZ(!z@^VzZC;o%Np?YJ{LHa=`%um%7T1YB1D diff --git a/support/tools/BaseSimGUI/images/mzoom.gif b/support/tools/BaseSimGUI/images/mzoom.gif deleted file mode 100644 index 2ac1f91a1a17880d225496a42966048df00d0d21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmZ?wbhEHbRA5kGn8*ME{}~wm|Nqaxz@Ye(g_D7SkwFI}3X*5wC}Lpd;9*#x(9p;s ztQF%S(9qD%#AP&R#RbJ9-RzoKTO=kXyY=!|mL1_Rdg9#7=07baLon5Gs<v=f4d=(? zGmUb#_tsQQeBw9LSoPnUj13FVF4SpN;$2yyd2z8{p;NEd)>T(mM{Lfzdur?I>+2H^ Lcm0(TV6X-NcM3UM diff --git a/support/tools/BaseSimGUI/images/on.gif b/support/tools/BaseSimGUI/images/on.gif deleted file mode 100644 index 1d17b38d0f22e427546b09a7f64d51ee3cddc8ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 997 zcmZ?wbhEHb6l36L_|5<V#taN;3=A_F7|t*-{AXZbFlI0|W=Jz;m}$&##+czhSlT#^ zAuWwzW*WnpG=~3R)y6X!(q=NuoXK!zCc}TQX5%vqX=fN_o?$q1hT%WhEaU$SY5y5! z{%1JzpW#2)Xk!NBGzR0D48~^|jQ@jeGB!3&Gd7-SY<$Mp_&?ZU<22*6G~=0R#%I!u z|AXCOJkvOBrt!>~#%E?4{|7tE_>6Jd8RMB}jL)1g{ttGg@qgpA|Hd=_8=v`a{2%OS zV~~^6W`Z1*_Mah*0c1~F8px!yGa$7fFBzwSz|6F?Giho6!9FyenU*#)ZRX6hGc(iv zgFS3~1|&W6Oxl?<Y5&3gH~tS&J@bFsng413!NFk+3Y(cTLB5~)pJ65g$U`&JKu(@{ z2IMGEU>T=@jGmb`^Gw>z|KPAQo(ZyP=FFLAX3qQ%4oc%QAd6?7nR({S%>Uq!HU1BB z$ISmT&-|bH9~{ueph!3~6BNv6{xh6m0EOI{G*H-_IRo-NC>o4G9s-$l2INLitQdo= zJu?$z@R|SMNHRVH^3u#RAn+d?XU6|QKAidg%$fgZ{)3~?7!=$8XM*DM|9^)644^3b zp9YGA|7SqK42oc5P{@H?c?J|1p!hZh`S1TskPrU<2S>m08Bk!&JOeWNKR7iQ{|ANL z%>N*p{(}<-C@s<*EB<6*WMJ6IpaZfQlqVQC4l%6foKu=R?O@~@0amAy3ki;m0@8M` zm=-8C==IB)_GB15KEljilH*XokbJC}KfO|=n1Nw}vU>xAg+tm|sb1dDTT>z#)y{C~ z<=!h<aXF2TL8h-qqOgUzLB^n6?hHq;TKiIOZJCP7Cu-;VoMgYGR4r*@Hi}&;7V<Mg zy=l5zg9U@q7wv<6x$=JnvKbxuX3NR)&6zdPr=d%((5}Ve#)F$iDMAZXPE<TdaA{|@ c*cH9=vx8X235BeuJGVGUibYQ4<6y7`0N3Y}aR2}S diff --git a/support/tools/BaseSimGUI/images/openfile.gif b/support/tools/BaseSimGUI/images/openfile.gif deleted file mode 100644 index 0e367cba07b93cfe40716144b5d43fa9a743768c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmZ?wbhEHblwgoxSi}GV4Gj$c|1%soaNz&{{~$gXEB<8RWME)s&;jv4Y8g1v7}z;v zJT@#i*vuiU6?0<4!o%$X%3>@Ifr}g%m<^M*R1_*Zb;+rR{n2P>V3?pG&17(LQ_9H+ zoQykiGKHQUpQcgVXQHt=tzo`H<E=9<j597Ql=PRf-8JD+&_bTlXHPt~uDZHfh?$AO F8UVf8HaP$Q diff --git a/support/tools/BaseSimGUI/images/pan.gif b/support/tools/BaseSimGUI/images/pan.gif deleted file mode 100644 index ddef4de1c5e4f3f0b45b41b41e96b7a18b0229f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmZ?wbhEHb6krfw*vtR|_73*(5%CEb2@UNH6Q)m?KY#xE_3Jn6*sy>9{_`i!U$}nZ z!Gj0y-@pI=|33o*gW^vXP6h@}1|5)2kQoddQy7FfWM(ilG&C`AXt6LPG%_>rNXdlE zaA;ue<P(SxVQ4sTh=pI$rbMBk@pvn*!8DbZ51u$Ma6}m0c#*(xXu5J_6c5A4g$@iV zu1z@)Hm5r+;G3lNHFAPRz#{R*MjjC#4qWOGls2$P`23u4g-fTAgTvRQj1xV#Drp3K hTiP^*M`TUzZ=uE}R_-U8mj0N$@O}%25DN=~H2?uhSSJ7g diff --git a/support/tools/BaseSimGUI/images/select.gif b/support/tools/BaseSimGUI/images/select.gif deleted file mode 100644 index cb788e3b8dfbf27724c1676d692174d6c691dfc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmZ?wbhEHb6krf!Si}GV4ebs66Z+S$U%z3;hW-2ZgM=6u6o0aCGBB_*=zzE&wG13S z4BR3N0tpQVnmGiS6fz7J9&TmfwD94W`0z-xC}*6=jKIf7`{d-qcoaT9KG7!3SP-L; hpnR;AHFh0KLy__k29eZ#S1bz_p6fC)W@BNn1^@>xDB1u3 diff --git a/support/tools/BaseSimGUI/images/tb1.jpg b/support/tools/BaseSimGUI/images/tb1.jpg deleted file mode 100644 index 1a791b0f1d71fad80f57933fd43730219ec07df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14595 zcmex=<NpH&0WUXCHwH#VMur521O|rxw;7y4JVr_Y$Ph~OgZ2JDz#z!M<ip6t%&5e` zB*@4t$oT&VgFFKRBP&>*kpT)AnV4Bv+1NQaxw!uyVc06bz{JSR%*4XX%F4pRz`$6` z$i&RRBFHMFXz0i$9GJ+iR48K9IB_9|veU+cqCpows2C>|HF0u@iAzXIsj8`KXlj|5 znweWzS~<J8y19FJdIg7shJ{B&MkS}Drln_OW)+u|mX%jjRyDV@wzYS3c1@Z*W$Lu) zGiJ_Ow0OzVWy@ErT(xQQmaW^i@7THP(BUITj~zd8^3<ivSFT>We&gn?hmRgVdHU@6 zi<hrHe)|07>$mSee*Oaai;;mD;w?~AfPIGMFF^(-MkW>(W)^mkzZjXy85o(E1zA`X z4cUYo1KAS`g_VpNIYgW$F5GyKQ`tD^gJ@FGMJ_QFlZUDwL0$v<j5v=qk>xYE#}NLy z#lXYN$iO7XEXZKb@b90-qAmua@v_Pe>Aa_RUrwC(#y$Vv*3eyhqD#LhPo8HXTR6de zzX@ac@~BVzo%TXo{xh)O@HUxlcr4JL@3nl8c-f=VlXo<%?(?&n=34JE>*G3I6+_|u znacT>8wwbn+wG8eQFZ-!`&;QnKaNNDeY<r`Gqo*u;=kv*8g~^li}y}-xaGmX#xjXR znNx#3@xlIEWyfPaDqK2yE^>)=xxdURr%g;d``iy6?h&#)am-wQ=6Ah`E03;<bS;(U zpX;a~AIdxD`-86s)*s<-j%WRoo&M;?`@9ExxA)kz*L3YZIW3~=<Fhks4rqTmJ%6^! zBxnEM+7IrUeLC&3y)Eg@OD>-Mr=D~?j;rEZ<!Mv)AYlUIZRs7M-^3)(S*^1VJAb{; z`pVO*ZjTNy-<hX<{&{=A@2X831es509Nqn&LGA;4{zHpz%-vE~pMG7tP*8if)}&Q@ zoXTaEDtvBMjX%;w81HCn_pD}<TUBK2w@&)-tllRtca@abJWV+)e0|p>Yrb|{EnnxT zN!&|&R{uG>y<_HqC*@pabt)ycyBNy0gmGuJ>ed{Su&(=P@y6;`QT_6*#m|oxG`Y`} zm;Z8e|FH(^R~m~NxbWf?X)_gK&pF7pRoXvbU(4X@Il*dzz0^wCH^JIdw7hy6=QO!L zu#&0&x_Z*SYieCzm2SP=JJT~n)gi#I_@Z0I>$kTX__n?KWF2~1aNgr}?9c4y|7VC= zQ#Hw7c*YI3HwE?69yh<AA2-)6_3oBkz3U$NYq6j5+HiOGY9<baa+Z>}H*c9uxwg8= zGw^!xOso0tjfD!ozWvFNwDs@zZw)<e|KhmCbzARnFtEO=IQfSCO5x?R8Tq*fC$Q-l zIL2A={8><Ze!FPFjp&&+XBS&<FM0Wfui`%g*DeMI1_O2mE{3xkH;SDQXJ9bg!oz35 z%)<OD)cQXIZ)Q~I-NIbyd3C?og8WxKE&g%suL$Gmhzfhx%Xd6^*C;mf9`UmL`egfm zhShyD*Ub$LU=0xAYjk7y#dqbE29q&Q>UL4d*H`{C=sf<iVx6wi&VWrC7RNXlzI>Ho z4$D};Rd&rFs%hh@2fve<UrzpOZ?)2HGS4MW12#T)i{lDkZaKc}TYRG@Y_AC8T(h|% z6MiNzI2^zJtA4(pw)j868~b<ItNdqp^m;X}SX;K4CFo26!}<RV(H|GE2gW%+mhYNn z-lqB~Z{5Sj!*7y4y<zx#$6Q_JSDo+n;KTL;IX2Erp7~lH>qHhW*5r}kU9PV3e7nj& zg$Bl#e6PA9`$S6ZpRaYA9&mDZa>|Nx7Uw^&;Z3T1w&m=;H*e3gKRv(lc-_AJt;KON zv4P9-w=y_e%ecv_q(40^=g;t5;^p<80Jgrhj|$U^CW>*yHm!QvXx$-SB3Jj}<T1n7 z;d-jG1Gn&tJ+-d;VEIo}zWnto+nw)|J|Dgqb7s>6*(K)IRUfabtABlYZ`<3P$J<(5 z*eVz|U-<H$f$s|A*^IF8K!(kmJsb`jx5oXM!`L^c>iL`}pLd!~=h^ggMjVIjC;qs@ zFORv)w`Q)=O3`XPug)yFJb<O}*hU3c31(S~lV9y0URpv*xwfc_L0dY0$E4dnJ0~gl zG?{Dn?NLsb`(Yn<n4Kl+ioV@(W)HS#mgXA?!gGpW-bsFaX~*l>BH6IW-1zTZ=86iF zn>^3kvKbgzeNne$Y_M0T&)6^gV^h84*0nv;wR1MFvTC2`dCqW)cz|Ek_m|uG5Bv`Q zmT;-myPq#}a#rAp^G|NurSjY;2$)lPjIH?guKx@Ia!=RQ2wyP0{jk0;liS*&Of}hh zLy_Hgg*ge2ZK@~F_xo_Yb&ZW>*0gUEbrMBGLme1H-53~z?DapYFjq;3M7ZP`aUA1M zye`v!X-U^T2~WcnEZ^V%s0#TK!00MMIu2d8F6frgnaYF5x9|MVV82w{Jn*(+nz90O z^JU3b^@sOwc(y5Rny#N(NCF?ngU8Ar?G}Ie!qUKXwvuhddTs&#yRufz=NaT?+B$xh z&D>SrzG&-=6CxTq5fd0xHmXd#^5n^rPnAz5c<5gGVwkCIAYE>3E$6ORRQKVp?OqGn z1c}F&mog|YFt9TeurF9jVx+<<HZAV%8EYrk^!7VWoc#WzgxvB^EFb+Rg>*1Im$YEs zxz78D;GNh*Z?m4H2uQzAc+C8ieO`6?tp?ruZ?7y$X8vTq>&_FN+K0#Eii~eha2I${ z6|=2@Ej@R}X=`!&YRi+he#T#pFJr53)5%ZZ(u-W8EIo62o>7tC#pCKS^5@r8pGjW8 zM4%YPmEjjPaAjMq*E#6;cyj;qKfi*eg-WV0UY^AM^H=FQ`?$TkTErTooY+r^w8|DR zs63W<GXLWfrr7egK0Vitr1Njs7Fqm9nR$+I|K;X6!CySqNts4ZkZ;`0&}zYMTY1di z=Wo^LWRFSSGY-tH{cvX<TamQQlZhwJ*L*eIGjT~Whk@1K48}k~MvjG!&l|7&p7)>O z(p*;&hCniKxbY)?p{NYAO)+;YA}&@YIY`=<@I0P;dz+<&%yr**k-DpP3Rg_l^WCfM zKg+7DE3J^b(^I6L&&ZjtxbeEZz6s-Q`?u`N?q%2C+%{d?=Cnrd!p0*#tM_PHq}^H| zeA43JD~6|ay%*jEM{VvZ_mgz4IjsKf`Mkn;?#2BpOn;Pr5dJ3=FIe$Uvy|V?L1oVN zGjC>QCZ#^EPHrgPEt6hwOXT{y{8nAoW!;%_cPx6%<%6FdpI|(>p}1$xug?zB7Y@pB zZ)K2ME;DOZmj=Tk@-QPOgOCRU&yz2rPv=>FFq`<;x>8p!Fx9hJdv!9irKO~eT&-0> z#d^0ZEb|;ceV$`h_#^ql`S|l&3#W0fsNLnPC>QsYL&P9=0nd}kJ@3vl6kfOdy+B61 zX&>7QJF#8AQ_MEHD<*hyG(0F_&QzDMnYVnOo8$Kti#(De9!m$hF)Zy7=$`Xj((?8E z`l?z6kw91SaLWUsDhB_j-hn4xba>CvWGR2Hd_&kl=G@}79BL7}@)IRw<ot7rCtsQT z!uY_;jR_ZhrB1ADVsooKA7H@n@<*})V}sH1%WK~+=i42z@Q(dGg}xmpEY#)O6Ik=3 zqu1_96ko?yyXyge-u{0JG?>nc1Uj&ii<7dotzBx?e3AJkTWcxvpJASM>g}v)#|r=Y zY0sG*#P-1Hu<EA5o)0a|%{_dJzaC`>xUg_<*x#Qj?~>dt7-u}5!@tY$<U89PZ?*RB z@SQ!CX>!lUH~e2Ee^qmBB;QRUfexa1c}b0hiZWj%U)b&2H@|&@<%Zh_Oa7Il$Ov!w zU>C>v&VQlB7rC2D*WL0jSf^ODw3$_T66ZNS;~Vu~e-)c`rkn24pK<130k@&bLq~?1 zBlDfVs!TktAj_rT%C(o(ioApgOVG@Z_}TtlwsP;>6Rg(Fd&yg+IG5Ry{n^2oCrl2< z__>OYS=TO4ESg?6;f?}hO27@dCFx&T<nH?<?H8<1zu#)7wfRTmx7#<?h22e^u=(7> z?~*D`##?8r<T8|;cpy`Bf9owC-rS|Po&E-y$oyy6ET#YWd)4;^yj^&krg+Lks6LzS zL-!aqTzn@L@zCj6q>B3K+r4ihQo9X*7B|?k8Fzg>z`(%RV9nQjd%M@M%lcstowYtH z1o3ekd&Kbj&i7;drdx4DXK>`jy3ecrGweA~Z=}I^C5VaRghJmDnf^-?XNIKq*)!EU za4ujEj-1LC(JHs(Qf23sZ4bAU+S<?4e(v8BFSg)A+<cRL3C<GI9Xw8}4PvHA+;a0& zU%;%=V||42i&1R!iK9ZHY4V3p*soxoe`-zmGx5XwZ#90sFWk*G(MwWhwaTV_JVA?$ zHrW(TGPq%((6l7EATj@!;ls0avRTI@5A&W|ReaepG$+}%F7HkNySJ-LT953~wps@D z`70z=X22p8on|&W#t~TV-p9uv@qllB!`r`B*QOTll8VvdH<{eG^PJsF_K$a){}okf zVd)G`n84=AJg2C@-abByVQpp6wrQVyZZL|>nPk?$=Bd6x=3jhkP54LqZ<8+XQD0>` zVOOM-rJ2!^kE^$tO+9r|>n)3ULIFqe1c&u2_Eg)RxR^KT%A~Wxt+zij-R3-ata^gI z-~>0<I@Lc3KT02;7yWVZUGnCA5xj>4pH2v9I>o5{Y$a>))Q21V-p?^$VgB0v(Epfp zy;Rgeoubui4=w59)=XHtC09Z0sW;;U|CrAc*tfqD7q*FhDD&WfP)G`cyM@Io<HqB! z>MZ}xtdq)$let*({w;^sdD$(38&a(sV*9*zs!wt&;7+zYdAI9#W$p#H75B|9SSqA1 zkUjXg@n`y4hU6QwI~QuJh0b&<{LJ(C*^|b}FFa&EWj|Vf%lu*6)<?TDA8!;k_MVy= z`J^LZ+uu`6o3=a8pBhncpn2=U-$#`rj)^3H`q#j<zBo0v%+Mz5@!i1vUrZB!1+YI3 zKU9Bn^^slf9n=0jRrQ!U*I<*-ffEm=@@+WcaNzl~H%$FI6#x2t@NduilB=a5`$Sht zexLUQGX@6Riev17w|2j-mG<A7`{DMn-U&s@Jyq%N7JYsH^V$rC5{9w|eDkI-KELe0 z;y*(MYY3apr=vFvEgy4;G}SGi^W4(HHgb1G?$r4TkKfDLe&D~n^84%86}OzCE8{#* zJ}jvJc<0}i>0+mia*r!7c>9-K{@-Q?$!)h*c}sgvIK^nmvO&7|Tv1i>f<Kn)=j~Jb zQ+26E(mLATB0P*?DzD<tO(Ghu$vvx!`*ytIV*kGTxBTWCF&xLw1iXD=x8Uu079oD+ zU)LYIzx8}*FP<HzZlBQiGEg$~nudDngf&OoVihKc-kj(5=G}o4>gO2#djE+07<T-4 z*h<?qt4)gdI8IGfR%lv#;vl=+Viutt>EE^fJp4OpOKtSwS-Lx}E}p28Hglsw&D)75 zS(|lo*oxfT{E9qJr2iG&wyW<cv!dj&!nd#NSG=-o31FQCEj?fzW1}y(PrOrRG~kb8 zXScL?{c?W%hbwDp)s95FaM+X`w|t!E|De|Yi!^G>C%}VQy+LEm+`NZtOMZ7=xAeHv z@AFnA{kDQk`AY}U_j}xz-mqGF^o+-m2kaBW=R8P$FIU`n*>?AJ<JCVFMhTnFG+LF; zDIjF{#^M-X@s$VsG0gp^`fmw8Uf#JyUu>?`xy(Z+i<-@z^sXv<UiacoviehImWf*u zde45#e{+BRy&u;P&#Jw)%=@H{fVJ@xvHP198<^E6UtlP_!!v<@*_X=MVcP`nx|Qwv zw25)|#B+rc4EWfriufE?%zyZwq5bKM7|%@Z6Ve4~ot`pJc$)U|6;3F;z4Cl`dMfX% z++MfZf(rHx=YRg<(|XGgxbgDak{>N$7guTgd)4}v{pagDbMB!v!BZx#SrvFdp~;}~ zbzJ@GKb99wJNLYv9TB^E&NkyO{~3brByX$T@j9;Em7%i#kHWR895-u?Bhd|9Ns5L| z{sF5`oL|1q@w}~X*IYB+OB-JvNIt2Myz=qB;;+Yxtb!O{M_MhN9dpF#SCOsZe80+b zwtF{mFx1Xl%6swFlCtBr)(Ic1KiFEOJb3K4<E_45u8rZu8CuhoZ4EpXnAjOT8LDd* zd@|h1ww7npjL(z!F83{%WO#sGdE(3KpBb(%njqkyJi*QJo5>bfo0hSCQH<n+bAJ!Z z{Fa|CTPY*__4V~xch>j)XGrJo{#4^|Y2gm_%!E^~q^maeOgLihRPkIUT}Ak_@HbVI z29@afAFYq8C3DYRI=6O0rNr&#<B|_Pznpk^(yr^_)4mmMnS5f!Do)i73FbMIzp(uJ z9nM+3_NCOBwp-jQ?#`JattQFZz;5le>GScR>aV{S$ctCJ|5mc~<F;M5rXBnH<lt2o zL8At<6_OP*9yA{F_v16jezm`)o-gr(*~Hvb5hv3oi^q}@DhpyZ9*FZ~UU1x&&8Sw~ z?c(FDp>{E;AsRsrMF$;@>loii`FvmE9J}XK2X-#b0}Ki2FF^Gi8}Ef?Un2#JyXP<b zXRt|Xkav~$|NO817nW|LqvWD4hLz>{&kvp0BO}M~dj98szC~fXe5PFwiV->(IrUs+ z%nIgZRudSGTYguc_h`{9MV-7knh6d$Mf__Siqnq>x*FYn7u=IjdaBP-nWeZtZcoYw zE7si&$5f0MmZUtllu2K}^4I>@p6>x4o=-2kek5_x-OqWc5=nj)KO@rF=Xu(se2iE4 zllOPw;t#xsUcM|~ej>0=&B-&VA>Si~$CJyf=YheoM<<^#)HNN~De5_Puzg$oM20I< zKl#7;`?1Vl{)Xzo<Z1WTE!Y@yEJ7^k)Y>KkKZoNobDHi)gL}v9NB3_QKX`k6`z#Z& z?X0t0!qQc8Z$F!R{OQ-Pb`N-Ju6~<Z5M}zLsl3DKqSlFk1fit`9G1rlo7nj3cAU)n z=;vU!K>kbs(?xhsN%4u`D~`V!%un9mGCv+(C;s8@oooGDANihfo|^o5(FDVZC+>t> z$e!f>eDvqv5B874yGrlNnQlFM_RO^Pg=#`hMm8%I8JkxrvP^pAoba)op?5=Fb4~3B z$B%k*bvNiN-EijRmZt&jT+S;cS(xVsxCbn)EBc}R+y3B^?8BkAE_tL_bE{;rJ$Fx2 z6k)pI_=EAHOI-x}i|OrO)plOam2;k!@mT$1ue7APt)C_Hg$G}D*P9#=YM9*9cp=%Q zw&GXMudA`<o??N{0y2xVKHgvrU@Po1u(Ww>-}Z95TY&T=zT!Xs8P5N>z*f6t(w6ix z$H$E)pRa#7r#i&%^UuTF$5*ObzHRK0k6XT8ZOhY&oQLT-42<dx#`l*yXt(V6c&uOa z{mnBU-=FvW`1$gJ+q?H)Y<z5ag5k~6T?WUD3aXyW;o;l!pW*9yoB2_tOCQXhRK#cC z$S(Pf{qu3Ze^Z~vY5kbG;APmud(TvK7!{xNXs|bV>PeK!@HMl`GR{62XL;H5iQ2V{ zr!jB;-ex-}^Xu~*CQb#p2SU6IRewcWc1>{#YIERol;pi{@g$|zK}NoC;%1p{CAJ_A zg(Ci+|3Vm5v2;KrtB&OBwp=_Wv01xd&%73%1mS}U&$kEh)_K-l+|TsK|FOQno)0dU zoYo7wJaP-}c%pYa|K`%zn+ej*#~yx8`8j`s3X?%4+lEqEe*c}Fci&#Uzv8E|O3Ej< zfC&ZFa#r6K@OS@bNZsG|eILiA2ix|mrpYBHRB6sUE#R#+$w5J8y{ujGXY;#PA5V<F z7x}7D_fg1pt(&)YdlbChQrOtE<bz1U^)->=W-p(mm$Ap~IADKf7Q=Q|kpOn1%aJ$l zBo<C8`*zaS!=|eA+ZUPZ&O9rP*!^b6KY#g8Zq9Z2l^O3%Z+S&F^f@aWcb=MhoOzzK z`u+Lq{g)qpa!6#`;|9YQj7gmD&%M9A^2r5O_`q_Xr<ma+x9XI~pTDiNKmYSTgZ;zE zThm;(tl?lyRw?c);<GM&*?97WbqaIi$I@q$jcm$;T#jy98qMBzhx1n9#49{9^A=Ry z{7|}V){6DHPga}@aS`BT<2V<tp2x}1WZaYfKK)UA?>_bGC3k&}rt7@vxo>u@aJ!MA z%GA^s3^7dRWs>J=XMd}?_SM$!ka49>kK=^8kDUpO2?m}j%?*b03y%lzuiM3E&voi* zsm7Pv>GRyU1U*k`89AI|D=@11CL`n#;Bl#pV`+c>^V^r#zrMV*ru*Z6hDS%_Brm^P z=sEq2$IY&Gt|NL6%6eZFtTF!H?(?)D(!sL6yMBx5w6@JrM+=gZxH?5W*$ZxoSDd)z z&aRTeJYk{4(T~U4KUyELQ@?g(Bj?<>iY_m4*2bxBo`Ne`-TZS8q%#(+K9*^AeZO$& zgm;@xvwRm^t*k8S8W}nxFZI*6)}Zn{r={+vnoNJ2zfeE4zu}+k<)m#ps-p{yG!l3+ z=iYQOa(J=hLFuo=PzF2yA9FJw$9h>iX6bckojEh@)2ZXdZlc@UxEK#UmN=nP*cf;G zgO$BNhE&XTt0m!vYjXF_d|dl9%#=0AXpLv?at5B}$={pveox#dmtpKOaqAwPQ;T<; zn#ZZ=H1XtfmSl^^Jr`>q#G0DC)P1Y_*eUP|D?_^Fb4B+vR!<n`6d&_tsPTU^{}x-U zazx)*^YjA7ltRwO87IOdPn?S`YHXhP>FxO|_c`||^ozdyaC(o}M5UtH-xDlkEnXDg zUS@dw6#L0~f&UEYf4zgRrS9ujH<~OdFwG|Sn8XA}<@Y>-2hX2wwR`=c{Lu7$g4;dx z7FS%l;VeJvNWv-&%TRU&CO(Vr@){Bhzb?ogkV#hFALt!3`Nv_mZ7EIOEA||22syQI z_w$}omV}<3a?5p-uD#<v5tbnvE0NyBXRpPu8OsnTo7}Puw~k$Y!`gp#UV(wb%gL8* zwdY^5asRe@dJB_FUQ()7_{8Qrd`ARoUvJv8)q6*j`8y8w*SD|F;d&bEv*psV%=-yC zw{I`M_aNoNo(DX0zWutup0>Pz$4Y?Xk6UI|>(oEu*&QbyFtE8R@UMJQoAs9=DeLn| zk@N)i#)*B^{~2`Zzy6RodEx!L^!$6unx{2+_^l<H&l#2HKKTB}z-soA)`i7pOe@q2 zk4rq?&u-V=_3>}|qxiNzrj_3!^Ah`<9+quhG_i?MN7mw;<KtzH7AyhmTLNRwx7+w8 zKax(gU9;*ZL(>ugX9hRJgC~?(s-6^NFI&LWrLll*r=q8<!=nxBQYvMRIBGrIRCrlN zsG#ymPjTP89c!;CF!}p`sy|=z<=N)#E|&xw=f{-2ygsjRV*iRa28<8(S^mgg{@Td) z?WKl4aw?w=9zQ!_VVlRfhz27|Yqw{y^V?^YwJ%WEynT|$jlu~>`<^B5*ep<d(o*F^ z@eLtUJFTp<%QDK19PTVJGL+PE6Mw4MwDa|0fhAuK+BAPy-n>sWYg5G`ZD*TBYP(Vl zw=`a8l0CqDnuYa*!aG@p*weia<d;h=d1TG`H0;2q8}DV?_-*R_YK=VBAAf&qa_p?v zk(2oE*%a(r-7!<bppsMideydTLEH(#$K?(9?ynZ~H~rq`z4Fed=u{7jlPLwZ?krUX z66g2~<0t)R*kU{N==9F~c|T=?GL7XvHgDiv&^&oUWW-k$;ihOw1)1{0^&P*|TejRd zGvQQTXW6Mg`yz`xSi~3_Jbo{E(BOD#wfqtr)!$ynCav1~c9Y9)kIpEUss2e%Hhuf| zTENe1;$i;t*(VfJbcK^|+a$~Us{YGf82Kw>*N#ci+1725SByIj%bXBMJrMKf%qqzS z$sElC>MPja%D3#Ze|hWZldwy%dY|rVo18dtfK}BYERE&eD|ee7=DGWWGOf05Tbnca z(5r`6{TR;&aM&_F5$um!w14hg<|FeIKYZJqt+V;u#?^26)`j$Jnj>18Q+v-sy>BjS z-QIua=2_JXW{Mrkp8F|r!lZ-UZw@_~sywOc0fV2%mj(Rm;?CW2a6Z&K=Xvw}%k%gz z?K%I5r`h@9x^-)vR&&f)A+Pa7aFSc)2}z6dr;q#DhX46pS9+}CvWL{MskW;X5>;~c zBrD5uJ*j=*=N|Lrc^AVU_mA6;?-!4*_`2nH_39OqxH~HxqRb4>oj#ahwd%tGgJT?$ z%1{30{SaOsmpxB<%Z}YTaUK(ATRxf5{e0e>ugtB=%sq@B>pT84q-96X7cyI3uwLP} zw?{FHx{{lbfsTR>=N(6dk9~Y~@9+L+;3|pE<#%torqH=jG&!I;=N3B`!|Mja0|#DD zV6d&~(g5cGP%ePuo%%wVm+u~_*_I$7I91i-1T#Y$ONmPHmFv;Ii4z<pzy0B}kN1B% zi{Vj?d7^2T(jAY8MJrT0Ri+&Cw0W*<>%X+@;gkkP31#JZ$M#&0zmlK3PQY2(Xl8QQ z?Fmjh8RjHB&vR7n)4G)<UM;NT^EUqBH~F{xPaS0WJC{|MbnjF?_qFrXgLD?2cVDeN zWcXv|u&V9ns?WGD_G7D^f<(@fozt%BaoL}e3_kPeT;Ws0lgC-+Pq*$r*<fF_eyz~A zdmi!@r3!-Y42r*sewyA_pZ1pf$gb{JMG?^_jlG}QwB3xH($^ZHXz`%%#=OT248{95 zrLC>4eweHO+sRWZZTq&n`+JvvPfk=}K5+7wUCe_?9_zQQe*V6FA8S5G?$+(SN=>Sr zO1%Or1DaWqmld&b$jsZ5EccVsE~?2>p~&;(>!1H-d|$wsv8aooFXUbe|N0m1U;i`M zYOCgY%q~=6Vt6tqvAB=@b<dZ_vu>(0%y;mAqOFv@Xp;uRpEKdhYx17-HE*jezAUkT zPy6^jk;zA-QogP7Fgo^vt05wvcVZihOq2V9=a#Hf{)j))Z!fOUj`q!RR1l02w?2~L zk#K@jQ$j`A{`92C{*~oI|K>P7@;I5mcY*&5BTMm*vOjh+L_g~vpDUN^?zJnrI^o=_ z5Yd+1O#bW~Gmo(`KA+Rasp}vq&ugc5<G$N2m&y7wRxqtzcfje-8b$@??+p?*U(UUm z^<n?5euu4B7e;^S;I!Fxq+{)thjTainSJtOkWimzA@OtHrO)vn%r;#wI$CzoEynm~ z5Nl|;gSn)j(M^dHmd_>aE6Q*6AN#9+M5<(0-Lj2S45o&b^POU!E-k~F^XJThZ+94_ z>jE6?l=rqhl3dcse>cgX_{L+o#kXcYT+Kbx#(R0k;Vr#Z41ryuNe*{7*jY-0oD-Wi zh8@#h`7!ogyXceN<)@WTnk*NrS-P)y>aAv-qPl>>lW$M1&-}sp;n;tMBfsu$TUwa) zNaJZx=a#u^q;)RItdMrN<0x@}(eKX+hMPZnKkRe+@V0NI=sxv|{nc6w?C(w<p2Dyp zJ!toI6>$s43v!RYMPDuTRS)g<op`cE+%j?NCKX9#o{**#6~>+(0qFwcTKkXYhYd6D zNqMArTuf}TI6hM%;h@OmI|35hF4=d;%;7y%BmZFT)&(Ekl6Q3ZZknLf^7X!wSQ7Wn zTl^Bt4BPlTC!ApX)xX^5^3B7_wa*;<Enlsw`u_U*e}-#0ek)EmCp?hRd_V6<$#dBs ze+olOj&dh6NdE4sd}Xlu;PDNAtFKIVJn^%*cQ4~Xo6r4clK(TTKf$iJ=7nJ#TgK!5 zXHTZ~nlm@-JP|X=jX~uXV^fjVi?RtXGFF!s2_`W*Oj$H{VPl-%RrUq%ZxqjZIr&_l zWNgPN_9TZB2Q1my6&_Z7Q*NA87(cguEBkTV=mX#7Li=ZkKAFg^c4)~$2X6IQEt8}f zm<lH_s5b0m_^Y<{imtx><9nfX#to+`zTG+^w{L6Ne#`pQ^*yuB_em`M(>hZv;-F*@ z^KqHR2uW4R!v)R)juN`_&GIi++^#9y{(WNf{bvDH|4bNup$$-RX)J0m)?c%B30tN} zYT-QgxZ?|L3onFQ<i8b}da7o5e%+n$RGp-VoBWLJ@lJfMMe85F*(_6<RBz<VP<kcM zl_5Qjb$jnpm(xZ5!9Po%JZ~y~dCs@!o7I_1_dLaJGPrY3b7JISE-3t5dhqp&;``es znNIbxIAOnhZ^HS^{KQ=~JP$V7?l`Wl%=~&D<2yzZ#(ljzLpS#HJhuFsdG+aad!a44 zR$*<~D>n5$72IRVV`)>_5#IOq{hSAnH(ac7U;a9C*R_y5MhWFPzw`2+PpD7`V0XT@ z;yg>j`y2+Vy4sH~=ljk4#eJ3M<4l3Z>+_E_XgQb4y`8&>@$vQL&OefOJX-zA%5>S1 z9kWae4$C~2u#tb5Ge^#d<A6fnlIwkEC#6qTf2Q#1PD<$snO`6Kvu^aINH|r>$W_(4 z|2+QOL0-Sc|A%_|x=25r2Odu+q_^JVJm<-vmGZH{`a!}M=7;t||IWxMdg`fcc1uxw z%&~Ds<DG{)v?LyLH}|YiXKoVnziHm9B2mg?`)bLo)G7Px?ipYI;rROcdnU{G4)UG% zr2bB=@hGi$zOy?=Q!)M2X~o#zjxif0EgmE`FxwV!|C{+o_D9A(!OIJ}JRC}6HrJfK zQgZ7|1;gXX7m9nB?tPY<xcpGjv={svnCCpV*I>8%+g8PtB^&k9<h5jKfPhYV<DB_Z zcd)OQV7IVgKB&ON_*wofOI)nhBZ=tj4Iw_30TP?|A0}QXWuDx-;8WqJ;|FcoLz<5o z`h2wPjr^=NE%lK{L1o!Nh2*r0Z$Evqm3|a|Bz|jl+Hp>;HJ8}j^(0z~+8LfQ%4;)u zo_qTA+}-~SZZ+y3p0@0&G5;6zv}xzh0DIrVQ<LY-b<b;`vw?kgW~8qj?|~;u>B@87 zI8^-l_Q%*~(uc}@k+zODUk}X@{vuQU^@U;3%!>>yHLEZ1Sujifb$DU%$8m|+sdq9A z1%+?Vt6ygLc&uJ<9)sFco7a_0e6b#nn<p9h=k0uM`KtE7pVxmE|Ksw1tbJHdaH99L zNacwq^a?yQwRn=1rK>kQkmT9F_{BoDi!t*%Of<HNB%GY6kg6gkUom+eAETs#{J(t< z_<R2|q|I+O`k`fTW_huPihYd+*8;}hCsmSeuuSrEtDbaT{ocfNM_m5B()!PEUxEK+ zgp}O0X@a~RB8+`Y<}|nmdA|Q!^{Gk<%j^eYd7QR#bdTA5Yni8k8=D(@gwL;II3M_W z;+5>H)hk$!=nGoh;b6bhWWSc7&b;n&o%yvr#%oS~^OR9Gn0m|Jlxx1><2!MZizT>r z7nD6tl-F8mw(sn3r5fKWUw=m|+CR_J%jP1ZO3%|!m4pTF)9M%w+_@>!!(gVqy(akY z+>-wcGO;$F-HzUQtEg7taLZfs*1E-+>V1wZJc*$-d+S@`8MgdqU@*w8E@{v6Ola9H zGfm}G@tkib56EjUFmy0}jj|}=vl5*6`hwj2{=IfPbc<th^>Y%;u2>fdE|Ez|f6CH$ zJZ|2;Q}+zFY}jCKK1oYyW$v58KJMiCsp|8ZCm&E@D7&nfda7~a<oB1?|9rM7sV&hk z>BvfDhR4k8bL5uW|1Iv}`g~UU(Y4mq_h)P5Eh@VwI>jVqg}USeCO1c!&j-&jB<))@ zIeM2)*I_;*4wkR72jrJuUdo_9N11E+cDX(MHT|Ejvn>nfG5-0VVgBj9s_!S%r(XLy zn^(`+_RNcJ`E&j=x5!0&IrW@*qs`aH>=IS({abQFd(6HY?&iJ0ebC|r!_(RG464fC zUSQs{d;j*$Jts}NR<U^|Z{g#Q`S$j!@+%wb<NGYP?%Xo(+O@<z+FGlGqE)8;6Dr>G zfVs)|#slq2_2cI|rKYuJ+LWF9IPKICCB7$r?g+Lj6jU-VV>n@P{PceAJ;9IcMJpz< zKA1c4p3_U?&6<o?lqN9BJSllBQ&29%cq^{P;=1YHocj{qm7A^e_0AsYc_W?K`-vfm z@g#e(%*MOV|DOMF>r|}1ch|Kbw=1D4A8)L%cB|^U^LP^Xr{jx0Ja2z<Y$mfO)6caM zCpFq7T`f+=d?=oLW!_Ge$ro>Db~68&*dl3p;Fi6d<@0%#w#E+p)efI@8Y|xvcuMbj z@PyCb&#JmOYNFcFV?`BbZQU-gFF2~pAUbtrjERSXq+CPF9ERfl<MRJ@U0r8>%<6An z^K$R<k`s$e)m0k&0}78h$e!QE%8;E|o^Q1>RYO8k>o7~6@^;6b&-Z8DSwDG?_Q&fk zS8W`Ah3<Kg7U>akBhYI#Yl1|NnQiA|3*7_uA(401-rZBY-aVk=JHvm5D6IW!^kqkE za*G!`Ryc3!d%8Q_QswWZ!uyl2_sIQckgU60HE-d9A88*=_FMRDWR~bGPg&EDE^+YG zdYc}GN@?b!-#woQzK)B0e7`-az9%>C)+dhVy$7vh%^&Vg<~UNqez~El!GZlT|C_gu z_$BVwIQ?hv?R%zb9K+agH>6R;&HiVy)coBiERR`oKW%OPmZ#n8l38|??c1m8h2<F= zXH2&E$!Tx+vZ3Ct=J`SU&G*~?Xo4ouqHY}IS=y*Kfkm;LO(9M7-;49=7R+;aYNbqG z7cx1B<c8kj6JKU{q4{N><#W3&j6cu*4y^dk5PRW^=Dy=9D-Kt6T&|Gc)8}OH;)SCQ zbBbV3x&p(;nv=iPetbT9>pw%+y9HO4&+{&urzSXa`2?OlE9$RX8*Pv=V_;c%f-zL- zuhEaCAF@s#+pr~AQOj9IWtr}g9tMxnlk$fOk1@VkQf$vvpFUUn!1ZOHIG9en;kLG) z;j~gkYun?-FUK95TLTuz&3=^M`m4Nqjl%B`PrVnP+d~y2CeP^+syycS<ng*n$$5f5 zR2Tk8d;M1I+Jxh3j`t?EzPvtZ@nvSY<CpXI9F^!Y>8;XWsGq;`*Oe)Zyn8tFg^o%b zT5&x81*<P~csu-L{FW0}(>@&iQ^u(*)_ApMYkER?I%9zFB%`X5(<x=YuI)L0%<S9t zmrw2-l9gTTwBv+QSb%YZ$H9c+E2XlV7=L{Iz<%(bv44klVYTdIr%h*~JSU~Z*sMBL ztdb?7C*At`N_pV#{D&{@>1th7`F+TQy(gvPaZmxnafR!w591j#rtyE9k((qWyuX0i zUNeqUV-L@hgsS8Prmt3XORZ9B4P{_pV_<5K#WL!Ho+@$inT%OkI}b3c{MDYbGunFR zA=w4*4!)e&WH_%Xh55V_r^S<NPp{;v=&Zgz|1WF%XN7;FN1T`4?R8wL_cS`G)t1pM z$v<wn@`hv9^&ITExp~t*wmKO1`F~k$D&rMo8hnL${*lT3hfPuEkVsmjBgAm>0hiXa z#p;vOZT8=By7Rl<etGbPq73H#kM4b2=JRWcn+q=H`4A!G!0_%ChqYVb^~rP6C6`wO zAN`fyaltcFB`BX;X{wFDaV|Gc%Rj&5iY)$Y_`AAJ>Gid$^EXRwK2KC;c%-Z}HQsc3 zVaC(o16&Iof9`wnME2gx-}2d2`<5?t`PDM%WZMk=Sx-;3mfdg`%j3Ivtn!!}!xQE& zQP?`##ENbDs@nJLo(D7U5u*?8EInnGkJY!Ycpbiun`6eh;=a3uSN=8pe!SfDpw0E? z0bC*-4VLQm6&r3bygYDs9{bByhM%(^vA_Aw-ecOncc;_uxlS#`LK8SG5A8@x({X%r zAbJ1!xAVE}#3C!CPHAT-MO-tS_vXyG$eA-wTK84h{7Oiebnk4|{#`+bpM6!H*C703 z&U5)wYXfj45rX2rWjA_moMS8Wofh%X>66u>22UM_m)BQ{p1M=9+2^<8R_~4*lQ&C0 zR@uIu&qF?N;{Cl0j-~62;&j+8i|()_F*v_s<i5h-FKJUM`C@HiTWRDehT|-KmNo{z z1n<lKDq-8a`10HLvU$RCdn=yrc<?J(@~irs=L@<_JDD^NFwZakR~5k0z+k|}@PP3G zzZaJN1*nff5L=b5+FtINDeUolf)N}4e)ZcwuiNLYKU((5c}F_WUWbF0%**X(zCO!P zk$$|sYhs1I=kAIpImd;IrPmdCIIUW9iqG;K`<aTE`IF+C_euWAzG{>DxMFQo_`Eyk zE-k#hVYS<fos8<!mHDa~_<8n*oc?P6mixo}$d6lmWtU7^HT}-Vx9MFj><dFvlZp)7 zDp{J0r{;_OkpFG+s!sSL)2nia`7_>z_NB1w={OU8X6gy{eAk02ljk1&^ML=-e+C{l zE8jJJMdyXm_c6NG?X<u5?fB9X)45BdW?M@rBsO&|Xg=>6`qlpKTKo+_4Yav$Fn^V~ zRqxydXFe;HJ)Ke)J+rvy+xg{jnu=F)^A=_5E{!y>kbHl9zisise=`~OL^>W!;9sa9 ze`;rKb+lC0let~|DwB*a^tCG#+0RXj&ARScGm&M=>S?MC(rlO5RVH5fVECenZ`S9R zovR$yy)qXt;$->6c+B&-tUcen2FYvX&9R#qgq#;B^gQOVuvD4<=(*gSD^~t(taDGF z5>YHqFJtK6bLOrG!#scg<q9cZcBM^~ZA##u-NR5Jaoncx%YO!`>kGI(MIF>&^0@lJ zfSa%ItHhGNbGMXtSp@nOPn>+>MWy=ktj)wN7c7($`?zi9ql`VLBQH4=gif8(WR<SK z*yQ;3S9r|z0_`_?#&b$z>eleTjGtw{v2N)j?YC^oD=UBZ&nugIgTXqPWfhOy0tO4~ z?=tW5_og=o{H~f>pu~GZ<7mI_><Z?O@~0d4URBRn;CtpU`*MrNpX^V~%&!zZpc=tb z{akroJM*89F@OKgy|Qgb(5s^bT%Yd#V&XV&!^FRQtGVmtcZorptvAXaRgm62uS=x- z%lYS%7}wgZ<uT&;WNGno&b+zhdUiYP{ak&`7K;@8>~ixszu}L+{N)eNcJ6g{om9Pa z!sb6c9JdvF<lH~3WZW-MHE;2{-I=LxT~a%(3qtx9Gp~>NWPd)2p>*0t+0&vb^X?y> zQ2#(7CHeaG8`s=B{<zHw-7{%($D!2>kzFZolNc2GJemJ|*|{tuGwn$$2j|IKON-|x zvDNK=;`~USf8Ek-ovhv4HCYNLA7obT`t^@}`3Cl9>BsNiGLE?L)iE(yc}>5<?TZs0 zG&i`catJ8mWSR3t=gihG@^4N*ew%-+Dn~r3U8zvGrsrv_e8x%M?|#wG80Pu2t9E{x z-xa?(_j+gPvE3nVVG|wh^Q<`-&dfR~H1@#c6B0JblbmXUKbSw9^+Vi!>sG<32Ch<K z$_!I(pO8Eu$-+>@Uv$vH_QuNzyVtB?NML;7$7d<)@O;k4moFGDxr79)GGMhrbdtb% z0$V;o68lu&Ue8mqp81yQ-YJ|+ZU(ERw3sLFc*3wZVp?*~w4Z&RD!&%C8I_AZw>+Uz z{JNoV{-Gs{8Uz~LI9RF#IR32QT79U2eE~zgRup_eF4N{)(I?7n9Q#-5{%K_HU+UK} zv3JEn_XW!-SVoFv_LuA>sUz4dMg^XE46E9{33!}$a)0_GWV%k+y);=TL&;y^?Xh?7 Y)UJE|eeHh+dEu)1^KRc3@c+LF0I{(<`Tzg` diff --git a/support/tools/BaseSimGUI/images/zoom.gif b/support/tools/BaseSimGUI/images/zoom.gif deleted file mode 100644 index 7cfe0407c2567151754d42a301559f2f61d696d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmZ?wbhEHb6l4%$*vtR|{2cuH2KosZ2@UNH{S*2pOrJ1+{`~dp*KgRdVgLU9=TDr! zaQ(uA2M^xAfB*mgf5o3HoD2+H3_2j4ATt;^<}rwJxG*eGXkca+;E1u<@PL_}Pfo<= zM1VpAyM(Mx!G(r{j;-9BSx0^-9AxU}aMaq7VYJANi8Ejo%L4|-CN?QS5rqp69y>Ac z^4y47F!?~kJP}<p3kQaSjdPhRe#uBQFfuVkEVdH}a9HZf#xw7o4(Ebw*CqzBIXMao r7ToOOx*!%~c~Se${L=S_Oe+$W#<j6M|94co!r<<qdS+%04hCxg;%r%C diff --git a/support/tools/BaseSimGUI/jarpath.include b/support/tools/BaseSimGUI/jarpath.include deleted file mode 100644 index d82607c49e4..00000000000 --- a/support/tools/BaseSimGUI/jarpath.include +++ /dev/null @@ -1,2 +0,0 @@ -SAXJAR=../../../../IMPORT/libraries/sax/xerces.jar -KIWIJAR=../../../../IMPORT/libraries/kiwi/kiwi-1.3.1/kiwi.jar diff --git a/support/tools/BaseSimGUI/lib.xml b/support/tools/BaseSimGUI/lib.xml deleted file mode 100644 index 370749ca928..00000000000 --- a/support/tools/BaseSimGUI/lib.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE basesim SYSTEM "basesim.dtd"> -<basesim> - <simul name="mySimul"> - - <!-- WorkHolder definition; only one WH per Simul --> - <workholder name="wh1"> - <dataholder name = "dh1" type="in"/> - <dataholder name = "dh2" type="in"/> - <dataholder name = "dh3" type="in"/> - <dataholder name = "dh4" type="out"/> - <dataholder name = "dh5" type="out"/> - <dataholder name = "dh6" type="out"/> - </workholder> - - - <exstep name="myExStep1" exname="mySimul" src="demo1.xml" node="1"/> - <exstep name="myExStep2" exname="mySimul" src="demo1.xml" node="1"/> - <exstep name="myExStep3" exname="mySimul" src="demo1.xml" node="1"/> - <exstep name="myExStep4" exname="mySimul" src="demo1.xml" node="2"/> - <exstep name="myExStep5" exname="mySimul" src="demo1.xml" node="2"/> - <exstep name="myExStep6" exname="mySimul" src="demo1.xml" node="2"/> - - <connect src="myExStep1" dest="myExStep4"/> - <connect src="myExStep2" dest="myExStep5"/> - <connect src="myExStep3" dest="myExStep6"/> - - <connect src=".dh1" dest="myExStep1.dh1"/> - <connect src=".dh2" dest="myExStep2.dh1"/> - <connect src=".dh3" dest="myExStep3.dh1"/> - <connect src="myExStep4.dh2" dest=".dh4"/> - <connect src="myExStep5.dh2" dest=".dh5"/> - <connect src="myExStep6.dh2" dest=".dh6"/> - - </simul> -</basesim> diff --git a/support/tools/BaseSimGUI/out.xml b/support/tools/BaseSimGUI/out.xml deleted file mode 100644 index c35073f03e2..00000000000 --- a/support/tools/BaseSimGUI/out.xml +++ /dev/null @@ -1,5331 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE basesim SYSTEM "basesim.dtd"> -<basesim> - <simul name="LofarSim0" node="node 0"> - <workholder class="WH_Empty"> - <dataholder name="dh1" class="DH_Empty" type="input"/> - <dataholder name="dh2" class="DH_Empty" type="output"/> - </workholder> - <simul name="Lofar_Station_03" node="node 1"> - <workholder class="WH_Station"> - <dataholder name="dh4" class="DH_Antenna" type="input"/> - <dataholder name="dh5" class="DH_Antenna" type="input"/> - <dataholder name="dh6" class="DH_Antenna" type="input"/> - <dataholder name="dh7" class="DH_Antenna" type="input"/> - <dataholder name="dh8" class="DH_beam" connect="dh2712" type="output"/> - </workholder> - <step name="Antenna_09" node="node 1"> - <workholder class="WH_Antenna"> - <dataholder name="dh10" class="DH_Antenna" type="input"/> - <dataholder name="dh11" class="DH_Antenna" connect="dh22" type="output"/> - </workholder> - </step> - <step name="Antenna_112" node="node 1"> - <workholder class="WH_Antenna"> - <dataholder name="dh13" class="DH_Antenna" type="input"/> - <dataholder name="dh14" class="DH_Antenna" connect="dh25" type="output"/> - </workholder> - </step> - <step name="Antenna_215" node="node 1"> - <workholder class="WH_Antenna"> - <dataholder name="dh16" class="DH_Antenna" type="input"/> - <dataholder name="dh17" class="DH_Antenna" connect="dh28" type="output"/> - </workholder> - </step> - <step name="Antenna_318" node="node 1"> - <workholder class="WH_Antenna"> - <dataholder name="dh19" class="DH_Antenna" type="input"/> - <dataholder name="dh20" class="DH_Antenna" connect="dh31" type="output"/> - </workholder> - </step> - <step name="FFT_021" node="node 1"> - <workholder class="WH_FFT"> - <dataholder name="dh22" class="DH_Antenna" type="input"/> - <dataholder name="dh23" class="DH_freq" connect="dh34" type="output"/> - </workholder> - </step> - <step name="FFT_124" node="node 1"> - <workholder class="WH_FFT"> - <dataholder name="dh25" class="DH_Antenna" type="input"/> - <dataholder name="dh26" class="DH_freq" connect="dh35" type="output"/> - </workholder> - </step> - <step name="FFT_227" node="node 1"> - <workholder class="WH_FFT"> - <dataholder name="dh28" class="DH_Antenna" type="input"/> - <dataholder name="dh29" class="DH_freq" connect="dh36" type="output"/> - </workholder> - </step> - <step name="FFT_330" node="node 1"> - <workholder class="WH_FFT"> - <dataholder name="dh31" class="DH_Antenna" type="input"/> - <dataholder name="dh32" class="DH_freq" connect="dh37" type="output"/> - </workholder> - </step> - <step name="TransposeF_0_833" node="node 1"> - <workholder class="WH_TransF"> - <dataholder name="dh34" class="DH_freq" type="input"/> - <dataholder name="dh35" class="DH_freq" type="input"/> - <dataholder name="dh36" class="DH_freq" type="input"/> - <dataholder name="dh37" class="DH_freq" type="input"/> - <dataholder name="dh38" class="DH_freqT" connect="dh167" type="output"/> - <dataholder name="dh39" class="DH_freqT" connect="dh170" type="output"/> - <dataholder name="dh40" class="DH_freqT" connect="dh173" type="output"/> - <dataholder name="dh41" class="DH_freqT" connect="dh176" type="output"/> - <dataholder name="dh42" class="DH_freqT" connect="dh179" type="output"/> - <dataholder name="dh43" class="DH_freqT" connect="dh182" type="output"/> - <dataholder name="dh44" class="DH_freqT" connect="dh185" type="output"/> - <dataholder name="dh45" class="DH_freqT" connect="dh188" type="output"/> - <dataholder name="dh46" class="DH_freqT" connect="dh191" type="output"/> - <dataholder name="dh47" class="DH_freqT" connect="dh194" type="output"/> - <dataholder name="dh48" class="DH_freqT" connect="dh197" type="output"/> - <dataholder name="dh49" class="DH_freqT" connect="dh200" type="output"/> - <dataholder name="dh50" class="DH_freqT" connect="dh203" type="output"/> - <dataholder name="dh51" class="DH_freqT" connect="dh206" type="output"/> - <dataholder name="dh52" class="DH_freqT" connect="dh209" type="output"/> - <dataholder name="dh53" class="DH_freqT" connect="dh212" type="output"/> - <dataholder name="dh54" class="DH_freqT" connect="dh215" type="output"/> - <dataholder name="dh55" class="DH_freqT" connect="dh218" type="output"/> - <dataholder name="dh56" class="DH_freqT" connect="dh221" type="output"/> - <dataholder name="dh57" class="DH_freqT" connect="dh224" type="output"/> - <dataholder name="dh58" class="DH_freqT" connect="dh227" type="output"/> - <dataholder name="dh59" class="DH_freqT" connect="dh230" type="output"/> - <dataholder name="dh60" class="DH_freqT" connect="dh233" type="output"/> - <dataholder name="dh61" class="DH_freqT" connect="dh236" type="output"/> - <dataholder name="dh62" class="DH_freqT" connect="dh239" type="output"/> - <dataholder name="dh63" class="DH_freqT" connect="dh242" type="output"/> - <dataholder name="dh64" class="DH_freqT" connect="dh245" type="output"/> - <dataholder name="dh65" class="DH_freqT" connect="dh248" type="output"/> - <dataholder name="dh66" class="DH_freqT" connect="dh251" type="output"/> - <dataholder name="dh67" class="DH_freqT" connect="dh254" type="output"/> - <dataholder name="dh68" class="DH_freqT" connect="dh257" type="output"/> - <dataholder name="dh69" class="DH_freqT" connect="dh260" type="output"/> - <dataholder name="dh70" class="DH_freqT" connect="dh263" type="output"/> - <dataholder name="dh71" class="DH_freqT" connect="dh266" type="output"/> - <dataholder name="dh72" class="DH_freqT" connect="dh269" type="output"/> - <dataholder name="dh73" class="DH_freqT" connect="dh272" type="output"/> - <dataholder name="dh74" class="DH_freqT" connect="dh275" type="output"/> - <dataholder name="dh75" class="DH_freqT" connect="dh278" type="output"/> - <dataholder name="dh76" class="DH_freqT" connect="dh281" type="output"/> - <dataholder name="dh77" class="DH_freqT" connect="dh284" type="output"/> - <dataholder name="dh78" class="DH_freqT" connect="dh287" type="output"/> - <dataholder name="dh79" class="DH_freqT" connect="dh290" type="output"/> - <dataholder name="dh80" class="DH_freqT" connect="dh293" type="output"/> - <dataholder name="dh81" class="DH_freqT" connect="dh296" type="output"/> - <dataholder name="dh82" class="DH_freqT" connect="dh299" type="output"/> - <dataholder name="dh83" class="DH_freqT" connect="dh302" type="output"/> - <dataholder name="dh84" class="DH_freqT" connect="dh305" type="output"/> - <dataholder name="dh85" class="DH_freqT" connect="dh308" type="output"/> - <dataholder name="dh86" class="DH_freqT" connect="dh311" type="output"/> - <dataholder name="dh87" class="DH_freqT" connect="dh314" type="output"/> - <dataholder name="dh88" class="DH_freqT" connect="dh317" type="output"/> - <dataholder name="dh89" class="DH_freqT" connect="dh320" type="output"/> - <dataholder name="dh90" class="DH_freqT" connect="dh323" type="output"/> - <dataholder name="dh91" class="DH_freqT" connect="dh326" type="output"/> - <dataholder name="dh92" class="DH_freqT" connect="dh329" type="output"/> - <dataholder name="dh93" class="DH_freqT" connect="dh332" type="output"/> - <dataholder name="dh94" class="DH_freqT" connect="dh335" type="output"/> - <dataholder name="dh95" class="DH_freqT" connect="dh338" type="output"/> - <dataholder name="dh96" class="DH_freqT" connect="dh341" type="output"/> - <dataholder name="dh97" class="DH_freqT" connect="dh344" type="output"/> - <dataholder name="dh98" class="DH_freqT" connect="dh347" type="output"/> - <dataholder name="dh99" class="DH_freqT" connect="dh350" type="output"/> - <dataholder name="dh100" class="DH_freqT" connect="dh353" type="output"/> - <dataholder name="dh101" class="DH_freqT" connect="dh356" type="output"/> - <dataholder name="dh102" class="DH_freqT" connect="dh359" type="output"/> - <dataholder name="dh103" class="DH_freqT" connect="dh362" type="output"/> - <dataholder name="dh104" class="DH_freqT" connect="dh365" type="output"/> - <dataholder name="dh105" class="DH_freqT" connect="dh368" type="output"/> - <dataholder name="dh106" class="DH_freqT" connect="dh371" type="output"/> - <dataholder name="dh107" class="DH_freqT" connect="dh374" type="output"/> - <dataholder name="dh108" class="DH_freqT" connect="dh377" type="output"/> - <dataholder name="dh109" class="DH_freqT" connect="dh380" type="output"/> - <dataholder name="dh110" class="DH_freqT" connect="dh383" type="output"/> - <dataholder name="dh111" class="DH_freqT" connect="dh386" type="output"/> - <dataholder name="dh112" class="DH_freqT" connect="dh389" type="output"/> - <dataholder name="dh113" class="DH_freqT" connect="dh392" type="output"/> - <dataholder name="dh114" class="DH_freqT" connect="dh395" type="output"/> - <dataholder name="dh115" class="DH_freqT" connect="dh398" type="output"/> - <dataholder name="dh116" class="DH_freqT" connect="dh401" type="output"/> - <dataholder name="dh117" class="DH_freqT" connect="dh404" type="output"/> - <dataholder name="dh118" class="DH_freqT" connect="dh407" type="output"/> - <dataholder name="dh119" class="DH_freqT" connect="dh410" type="output"/> - <dataholder name="dh120" class="DH_freqT" connect="dh413" type="output"/> - <dataholder name="dh121" class="DH_freqT" connect="dh416" type="output"/> - <dataholder name="dh122" class="DH_freqT" connect="dh419" type="output"/> - <dataholder name="dh123" class="DH_freqT" connect="dh422" type="output"/> - <dataholder name="dh124" class="DH_freqT" connect="dh425" type="output"/> - <dataholder name="dh125" class="DH_freqT" connect="dh428" type="output"/> - <dataholder name="dh126" class="DH_freqT" connect="dh431" type="output"/> - <dataholder name="dh127" class="DH_freqT" connect="dh434" type="output"/> - <dataholder name="dh128" class="DH_freqT" connect="dh437" type="output"/> - <dataholder name="dh129" class="DH_freqT" connect="dh440" type="output"/> - <dataholder name="dh130" class="DH_freqT" connect="dh443" type="output"/> - <dataholder name="dh131" class="DH_freqT" connect="dh446" type="output"/> - <dataholder name="dh132" class="DH_freqT" connect="dh449" type="output"/> - <dataholder name="dh133" class="DH_freqT" connect="dh452" type="output"/> - <dataholder name="dh134" class="DH_freqT" connect="dh455" type="output"/> - <dataholder name="dh135" class="DH_freqT" connect="dh458" type="output"/> - <dataholder name="dh136" class="DH_freqT" connect="dh461" type="output"/> - <dataholder name="dh137" class="DH_freqT" connect="dh464" type="output"/> - <dataholder name="dh138" class="DH_freqT" connect="dh467" type="output"/> - <dataholder name="dh139" class="DH_freqT" connect="dh470" type="output"/> - <dataholder name="dh140" class="DH_freqT" connect="dh473" type="output"/> - <dataholder name="dh141" class="DH_freqT" connect="dh476" type="output"/> - <dataholder name="dh142" class="DH_freqT" connect="dh479" type="output"/> - <dataholder name="dh143" class="DH_freqT" connect="dh482" type="output"/> - <dataholder name="dh144" class="DH_freqT" connect="dh485" type="output"/> - <dataholder name="dh145" class="DH_freqT" connect="dh488" type="output"/> - <dataholder name="dh146" class="DH_freqT" connect="dh491" type="output"/> - <dataholder name="dh147" class="DH_freqT" connect="dh494" type="output"/> - <dataholder name="dh148" class="DH_freqT" connect="dh497" type="output"/> - <dataholder name="dh149" class="DH_freqT" connect="dh500" type="output"/> - <dataholder name="dh150" class="DH_freqT" connect="dh503" type="output"/> - <dataholder name="dh151" class="DH_freqT" connect="dh506" type="output"/> - <dataholder name="dh152" class="DH_freqT" connect="dh509" type="output"/> - <dataholder name="dh153" class="DH_freqT" connect="dh512" type="output"/> - <dataholder name="dh154" class="DH_freqT" connect="dh515" type="output"/> - <dataholder name="dh155" class="DH_freqT" connect="dh518" type="output"/> - <dataholder name="dh156" class="DH_freqT" connect="dh521" type="output"/> - <dataholder name="dh157" class="DH_freqT" connect="dh524" type="output"/> - <dataholder name="dh158" class="DH_freqT" connect="dh527" type="output"/> - <dataholder name="dh159" class="DH_freqT" connect="dh530" type="output"/> - <dataholder name="dh160" class="DH_freqT" connect="dh533" type="output"/> - <dataholder name="dh161" class="DH_freqT" connect="dh536" type="output"/> - <dataholder name="dh162" class="DH_freqT" connect="dh539" type="output"/> - <dataholder name="dh163" class="DH_freqT" connect="dh542" type="output"/> - <dataholder name="dh164" class="DH_freqT" connect="dh545" type="output"/> - <dataholder name="dh165" class="DH_freqT" connect="dh548" type="output"/> - </workholder> - </step> - <step name="BeamFormer_0166" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh167" class="DH_freqT" type="input"/> - <dataholder name="dh168" class="DH_beamT" connect="dh551" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1169" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh170" class="DH_freqT" type="input"/> - <dataholder name="dh171" class="DH_beamT" connect="dh552" type="output"/> - </workholder> - </step> - <step name="BeamFormer_2172" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh173" class="DH_freqT" type="input"/> - <dataholder name="dh174" class="DH_beamT" connect="dh553" type="output"/> - </workholder> - </step> - <step name="BeamFormer_3175" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh176" class="DH_freqT" type="input"/> - <dataholder name="dh177" class="DH_beamT" connect="dh554" type="output"/> - </workholder> - </step> - <step name="BeamFormer_4178" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh179" class="DH_freqT" type="input"/> - <dataholder name="dh180" class="DH_beamT" connect="dh555" type="output"/> - </workholder> - </step> - <step name="BeamFormer_5181" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh182" class="DH_freqT" type="input"/> - <dataholder name="dh183" class="DH_beamT" connect="dh556" type="output"/> - </workholder> - </step> - <step name="BeamFormer_6184" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh185" class="DH_freqT" type="input"/> - <dataholder name="dh186" class="DH_beamT" connect="dh557" type="output"/> - </workholder> - </step> - <step name="BeamFormer_7187" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh188" class="DH_freqT" type="input"/> - <dataholder name="dh189" class="DH_beamT" connect="dh558" type="output"/> - </workholder> - </step> - <step name="BeamFormer_8190" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh191" class="DH_freqT" type="input"/> - <dataholder name="dh192" class="DH_beamT" connect="dh559" type="output"/> - </workholder> - </step> - <step name="BeamFormer_9193" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh194" class="DH_freqT" type="input"/> - <dataholder name="dh195" class="DH_beamT" connect="dh560" type="output"/> - </workholder> - </step> - <step name="BeamFormer_10196" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh197" class="DH_freqT" type="input"/> - <dataholder name="dh198" class="DH_beamT" connect="dh561" type="output"/> - </workholder> - </step> - <step name="BeamFormer_11199" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh200" class="DH_freqT" type="input"/> - <dataholder name="dh201" class="DH_beamT" connect="dh562" type="output"/> - </workholder> - </step> - <step name="BeamFormer_12202" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh203" class="DH_freqT" type="input"/> - <dataholder name="dh204" class="DH_beamT" connect="dh563" type="output"/> - </workholder> - </step> - <step name="BeamFormer_13205" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh206" class="DH_freqT" type="input"/> - <dataholder name="dh207" class="DH_beamT" connect="dh564" type="output"/> - </workholder> - </step> - <step name="BeamFormer_14208" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh209" class="DH_freqT" type="input"/> - <dataholder name="dh210" class="DH_beamT" connect="dh565" type="output"/> - </workholder> - </step> - <step name="BeamFormer_15211" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh212" class="DH_freqT" type="input"/> - <dataholder name="dh213" class="DH_beamT" connect="dh566" type="output"/> - </workholder> - </step> - <step name="BeamFormer_16214" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh215" class="DH_freqT" type="input"/> - <dataholder name="dh216" class="DH_beamT" connect="dh567" type="output"/> - </workholder> - </step> - <step name="BeamFormer_17217" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh218" class="DH_freqT" type="input"/> - <dataholder name="dh219" class="DH_beamT" connect="dh568" type="output"/> - </workholder> - </step> - <step name="BeamFormer_18220" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh221" class="DH_freqT" type="input"/> - <dataholder name="dh222" class="DH_beamT" connect="dh569" type="output"/> - </workholder> - </step> - <step name="BeamFormer_19223" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh224" class="DH_freqT" type="input"/> - <dataholder name="dh225" class="DH_beamT" connect="dh570" type="output"/> - </workholder> - </step> - <step name="BeamFormer_20226" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh227" class="DH_freqT" type="input"/> - <dataholder name="dh228" class="DH_beamT" connect="dh571" type="output"/> - </workholder> - </step> - <step name="BeamFormer_21229" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh230" class="DH_freqT" type="input"/> - <dataholder name="dh231" class="DH_beamT" connect="dh572" type="output"/> - </workholder> - </step> - <step name="BeamFormer_22232" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh233" class="DH_freqT" type="input"/> - <dataholder name="dh234" class="DH_beamT" connect="dh573" type="output"/> - </workholder> - </step> - <step name="BeamFormer_23235" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh236" class="DH_freqT" type="input"/> - <dataholder name="dh237" class="DH_beamT" connect="dh574" type="output"/> - </workholder> - </step> - <step name="BeamFormer_24238" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh239" class="DH_freqT" type="input"/> - <dataholder name="dh240" class="DH_beamT" connect="dh575" type="output"/> - </workholder> - </step> - <step name="BeamFormer_25241" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh242" class="DH_freqT" type="input"/> - <dataholder name="dh243" class="DH_beamT" connect="dh576" type="output"/> - </workholder> - </step> - <step name="BeamFormer_26244" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh245" class="DH_freqT" type="input"/> - <dataholder name="dh246" class="DH_beamT" connect="dh577" type="output"/> - </workholder> - </step> - <step name="BeamFormer_27247" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh248" class="DH_freqT" type="input"/> - <dataholder name="dh249" class="DH_beamT" connect="dh578" type="output"/> - </workholder> - </step> - <step name="BeamFormer_28250" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh251" class="DH_freqT" type="input"/> - <dataholder name="dh252" class="DH_beamT" connect="dh579" type="output"/> - </workholder> - </step> - <step name="BeamFormer_29253" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh254" class="DH_freqT" type="input"/> - <dataholder name="dh255" class="DH_beamT" connect="dh580" type="output"/> - </workholder> - </step> - <step name="BeamFormer_30256" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh257" class="DH_freqT" type="input"/> - <dataholder name="dh258" class="DH_beamT" connect="dh581" type="output"/> - </workholder> - </step> - <step name="BeamFormer_31259" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh260" class="DH_freqT" type="input"/> - <dataholder name="dh261" class="DH_beamT" connect="dh582" type="output"/> - </workholder> - </step> - <step name="BeamFormer_32262" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh263" class="DH_freqT" type="input"/> - <dataholder name="dh264" class="DH_beamT" connect="dh583" type="output"/> - </workholder> - </step> - <step name="BeamFormer_33265" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh266" class="DH_freqT" type="input"/> - <dataholder name="dh267" class="DH_beamT" connect="dh584" type="output"/> - </workholder> - </step> - <step name="BeamFormer_34268" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh269" class="DH_freqT" type="input"/> - <dataholder name="dh270" class="DH_beamT" connect="dh585" type="output"/> - </workholder> - </step> - <step name="BeamFormer_35271" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh272" class="DH_freqT" type="input"/> - <dataholder name="dh273" class="DH_beamT" connect="dh586" type="output"/> - </workholder> - </step> - <step name="BeamFormer_36274" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh275" class="DH_freqT" type="input"/> - <dataholder name="dh276" class="DH_beamT" connect="dh587" type="output"/> - </workholder> - </step> - <step name="BeamFormer_37277" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh278" class="DH_freqT" type="input"/> - <dataholder name="dh279" class="DH_beamT" connect="dh588" type="output"/> - </workholder> - </step> - <step name="BeamFormer_38280" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh281" class="DH_freqT" type="input"/> - <dataholder name="dh282" class="DH_beamT" connect="dh589" type="output"/> - </workholder> - </step> - <step name="BeamFormer_39283" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh284" class="DH_freqT" type="input"/> - <dataholder name="dh285" class="DH_beamT" connect="dh590" type="output"/> - </workholder> - </step> - <step name="BeamFormer_40286" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh287" class="DH_freqT" type="input"/> - <dataholder name="dh288" class="DH_beamT" connect="dh591" type="output"/> - </workholder> - </step> - <step name="BeamFormer_41289" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh290" class="DH_freqT" type="input"/> - <dataholder name="dh291" class="DH_beamT" connect="dh592" type="output"/> - </workholder> - </step> - <step name="BeamFormer_42292" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh293" class="DH_freqT" type="input"/> - <dataholder name="dh294" class="DH_beamT" connect="dh593" type="output"/> - </workholder> - </step> - <step name="BeamFormer_43295" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh296" class="DH_freqT" type="input"/> - <dataholder name="dh297" class="DH_beamT" connect="dh594" type="output"/> - </workholder> - </step> - <step name="BeamFormer_44298" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh299" class="DH_freqT" type="input"/> - <dataholder name="dh300" class="DH_beamT" connect="dh595" type="output"/> - </workholder> - </step> - <step name="BeamFormer_45301" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh302" class="DH_freqT" type="input"/> - <dataholder name="dh303" class="DH_beamT" connect="dh596" type="output"/> - </workholder> - </step> - <step name="BeamFormer_46304" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh305" class="DH_freqT" type="input"/> - <dataholder name="dh306" class="DH_beamT" connect="dh597" type="output"/> - </workholder> - </step> - <step name="BeamFormer_47307" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh308" class="DH_freqT" type="input"/> - <dataholder name="dh309" class="DH_beamT" connect="dh598" type="output"/> - </workholder> - </step> - <step name="BeamFormer_48310" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh311" class="DH_freqT" type="input"/> - <dataholder name="dh312" class="DH_beamT" connect="dh599" type="output"/> - </workholder> - </step> - <step name="BeamFormer_49313" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh314" class="DH_freqT" type="input"/> - <dataholder name="dh315" class="DH_beamT" connect="dh600" type="output"/> - </workholder> - </step> - <step name="BeamFormer_50316" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh317" class="DH_freqT" type="input"/> - <dataholder name="dh318" class="DH_beamT" connect="dh601" type="output"/> - </workholder> - </step> - <step name="BeamFormer_51319" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh320" class="DH_freqT" type="input"/> - <dataholder name="dh321" class="DH_beamT" connect="dh602" type="output"/> - </workholder> - </step> - <step name="BeamFormer_52322" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh323" class="DH_freqT" type="input"/> - <dataholder name="dh324" class="DH_beamT" connect="dh603" type="output"/> - </workholder> - </step> - <step name="BeamFormer_53325" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh326" class="DH_freqT" type="input"/> - <dataholder name="dh327" class="DH_beamT" connect="dh604" type="output"/> - </workholder> - </step> - <step name="BeamFormer_54328" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh329" class="DH_freqT" type="input"/> - <dataholder name="dh330" class="DH_beamT" connect="dh605" type="output"/> - </workholder> - </step> - <step name="BeamFormer_55331" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh332" class="DH_freqT" type="input"/> - <dataholder name="dh333" class="DH_beamT" connect="dh606" type="output"/> - </workholder> - </step> - <step name="BeamFormer_56334" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh335" class="DH_freqT" type="input"/> - <dataholder name="dh336" class="DH_beamT" connect="dh607" type="output"/> - </workholder> - </step> - <step name="BeamFormer_57337" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh338" class="DH_freqT" type="input"/> - <dataholder name="dh339" class="DH_beamT" connect="dh608" type="output"/> - </workholder> - </step> - <step name="BeamFormer_58340" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh341" class="DH_freqT" type="input"/> - <dataholder name="dh342" class="DH_beamT" connect="dh609" type="output"/> - </workholder> - </step> - <step name="BeamFormer_59343" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh344" class="DH_freqT" type="input"/> - <dataholder name="dh345" class="DH_beamT" connect="dh610" type="output"/> - </workholder> - </step> - <step name="BeamFormer_60346" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh347" class="DH_freqT" type="input"/> - <dataholder name="dh348" class="DH_beamT" connect="dh611" type="output"/> - </workholder> - </step> - <step name="BeamFormer_61349" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh350" class="DH_freqT" type="input"/> - <dataholder name="dh351" class="DH_beamT" connect="dh612" type="output"/> - </workholder> - </step> - <step name="BeamFormer_62352" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh353" class="DH_freqT" type="input"/> - <dataholder name="dh354" class="DH_beamT" connect="dh613" type="output"/> - </workholder> - </step> - <step name="BeamFormer_63355" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh356" class="DH_freqT" type="input"/> - <dataholder name="dh357" class="DH_beamT" connect="dh614" type="output"/> - </workholder> - </step> - <step name="BeamFormer_64358" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh359" class="DH_freqT" type="input"/> - <dataholder name="dh360" class="DH_beamT" connect="dh615" type="output"/> - </workholder> - </step> - <step name="BeamFormer_65361" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh362" class="DH_freqT" type="input"/> - <dataholder name="dh363" class="DH_beamT" connect="dh616" type="output"/> - </workholder> - </step> - <step name="BeamFormer_66364" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh365" class="DH_freqT" type="input"/> - <dataholder name="dh366" class="DH_beamT" connect="dh617" type="output"/> - </workholder> - </step> - <step name="BeamFormer_67367" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh368" class="DH_freqT" type="input"/> - <dataholder name="dh369" class="DH_beamT" connect="dh618" type="output"/> - </workholder> - </step> - <step name="BeamFormer_68370" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh371" class="DH_freqT" type="input"/> - <dataholder name="dh372" class="DH_beamT" connect="dh619" type="output"/> - </workholder> - </step> - <step name="BeamFormer_69373" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh374" class="DH_freqT" type="input"/> - <dataholder name="dh375" class="DH_beamT" connect="dh620" type="output"/> - </workholder> - </step> - <step name="BeamFormer_70376" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh377" class="DH_freqT" type="input"/> - <dataholder name="dh378" class="DH_beamT" connect="dh621" type="output"/> - </workholder> - </step> - <step name="BeamFormer_71379" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh380" class="DH_freqT" type="input"/> - <dataholder name="dh381" class="DH_beamT" connect="dh622" type="output"/> - </workholder> - </step> - <step name="BeamFormer_72382" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh383" class="DH_freqT" type="input"/> - <dataholder name="dh384" class="DH_beamT" connect="dh623" type="output"/> - </workholder> - </step> - <step name="BeamFormer_73385" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh386" class="DH_freqT" type="input"/> - <dataholder name="dh387" class="DH_beamT" connect="dh624" type="output"/> - </workholder> - </step> - <step name="BeamFormer_74388" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh389" class="DH_freqT" type="input"/> - <dataholder name="dh390" class="DH_beamT" connect="dh625" type="output"/> - </workholder> - </step> - <step name="BeamFormer_75391" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh392" class="DH_freqT" type="input"/> - <dataholder name="dh393" class="DH_beamT" connect="dh626" type="output"/> - </workholder> - </step> - <step name="BeamFormer_76394" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh395" class="DH_freqT" type="input"/> - <dataholder name="dh396" class="DH_beamT" connect="dh627" type="output"/> - </workholder> - </step> - <step name="BeamFormer_77397" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh398" class="DH_freqT" type="input"/> - <dataholder name="dh399" class="DH_beamT" connect="dh628" type="output"/> - </workholder> - </step> - <step name="BeamFormer_78400" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh401" class="DH_freqT" type="input"/> - <dataholder name="dh402" class="DH_beamT" connect="dh629" type="output"/> - </workholder> - </step> - <step name="BeamFormer_79403" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh404" class="DH_freqT" type="input"/> - <dataholder name="dh405" class="DH_beamT" connect="dh630" type="output"/> - </workholder> - </step> - <step name="BeamFormer_80406" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh407" class="DH_freqT" type="input"/> - <dataholder name="dh408" class="DH_beamT" connect="dh631" type="output"/> - </workholder> - </step> - <step name="BeamFormer_81409" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh410" class="DH_freqT" type="input"/> - <dataholder name="dh411" class="DH_beamT" connect="dh632" type="output"/> - </workholder> - </step> - <step name="BeamFormer_82412" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh413" class="DH_freqT" type="input"/> - <dataholder name="dh414" class="DH_beamT" connect="dh633" type="output"/> - </workholder> - </step> - <step name="BeamFormer_83415" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh416" class="DH_freqT" type="input"/> - <dataholder name="dh417" class="DH_beamT" connect="dh634" type="output"/> - </workholder> - </step> - <step name="BeamFormer_84418" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh419" class="DH_freqT" type="input"/> - <dataholder name="dh420" class="DH_beamT" connect="dh635" type="output"/> - </workholder> - </step> - <step name="BeamFormer_85421" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh422" class="DH_freqT" type="input"/> - <dataholder name="dh423" class="DH_beamT" connect="dh636" type="output"/> - </workholder> - </step> - <step name="BeamFormer_86424" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh425" class="DH_freqT" type="input"/> - <dataholder name="dh426" class="DH_beamT" connect="dh637" type="output"/> - </workholder> - </step> - <step name="BeamFormer_87427" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh428" class="DH_freqT" type="input"/> - <dataholder name="dh429" class="DH_beamT" connect="dh638" type="output"/> - </workholder> - </step> - <step name="BeamFormer_88430" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh431" class="DH_freqT" type="input"/> - <dataholder name="dh432" class="DH_beamT" connect="dh639" type="output"/> - </workholder> - </step> - <step name="BeamFormer_89433" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh434" class="DH_freqT" type="input"/> - <dataholder name="dh435" class="DH_beamT" connect="dh640" type="output"/> - </workholder> - </step> - <step name="BeamFormer_90436" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh437" class="DH_freqT" type="input"/> - <dataholder name="dh438" class="DH_beamT" connect="dh641" type="output"/> - </workholder> - </step> - <step name="BeamFormer_91439" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh440" class="DH_freqT" type="input"/> - <dataholder name="dh441" class="DH_beamT" connect="dh642" type="output"/> - </workholder> - </step> - <step name="BeamFormer_92442" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh443" class="DH_freqT" type="input"/> - <dataholder name="dh444" class="DH_beamT" connect="dh643" type="output"/> - </workholder> - </step> - <step name="BeamFormer_93445" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh446" class="DH_freqT" type="input"/> - <dataholder name="dh447" class="DH_beamT" connect="dh644" type="output"/> - </workholder> - </step> - <step name="BeamFormer_94448" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh449" class="DH_freqT" type="input"/> - <dataholder name="dh450" class="DH_beamT" connect="dh645" type="output"/> - </workholder> - </step> - <step name="BeamFormer_95451" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh452" class="DH_freqT" type="input"/> - <dataholder name="dh453" class="DH_beamT" connect="dh646" type="output"/> - </workholder> - </step> - <step name="BeamFormer_96454" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh455" class="DH_freqT" type="input"/> - <dataholder name="dh456" class="DH_beamT" connect="dh647" type="output"/> - </workholder> - </step> - <step name="BeamFormer_97457" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh458" class="DH_freqT" type="input"/> - <dataholder name="dh459" class="DH_beamT" connect="dh648" type="output"/> - </workholder> - </step> - <step name="BeamFormer_98460" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh461" class="DH_freqT" type="input"/> - <dataholder name="dh462" class="DH_beamT" connect="dh649" type="output"/> - </workholder> - </step> - <step name="BeamFormer_99463" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh464" class="DH_freqT" type="input"/> - <dataholder name="dh465" class="DH_beamT" connect="dh650" type="output"/> - </workholder> - </step> - <step name="BeamFormer_100466" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh467" class="DH_freqT" type="input"/> - <dataholder name="dh468" class="DH_beamT" connect="dh651" type="output"/> - </workholder> - </step> - <step name="BeamFormer_101469" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh470" class="DH_freqT" type="input"/> - <dataholder name="dh471" class="DH_beamT" connect="dh652" type="output"/> - </workholder> - </step> - <step name="BeamFormer_102472" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh473" class="DH_freqT" type="input"/> - <dataholder name="dh474" class="DH_beamT" connect="dh653" type="output"/> - </workholder> - </step> - <step name="BeamFormer_103475" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh476" class="DH_freqT" type="input"/> - <dataholder name="dh477" class="DH_beamT" connect="dh654" type="output"/> - </workholder> - </step> - <step name="BeamFormer_104478" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh479" class="DH_freqT" type="input"/> - <dataholder name="dh480" class="DH_beamT" connect="dh655" type="output"/> - </workholder> - </step> - <step name="BeamFormer_105481" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh482" class="DH_freqT" type="input"/> - <dataholder name="dh483" class="DH_beamT" connect="dh656" type="output"/> - </workholder> - </step> - <step name="BeamFormer_106484" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh485" class="DH_freqT" type="input"/> - <dataholder name="dh486" class="DH_beamT" connect="dh657" type="output"/> - </workholder> - </step> - <step name="BeamFormer_107487" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh488" class="DH_freqT" type="input"/> - <dataholder name="dh489" class="DH_beamT" connect="dh658" type="output"/> - </workholder> - </step> - <step name="BeamFormer_108490" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh491" class="DH_freqT" type="input"/> - <dataholder name="dh492" class="DH_beamT" connect="dh659" type="output"/> - </workholder> - </step> - <step name="BeamFormer_109493" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh494" class="DH_freqT" type="input"/> - <dataholder name="dh495" class="DH_beamT" connect="dh660" type="output"/> - </workholder> - </step> - <step name="BeamFormer_110496" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh497" class="DH_freqT" type="input"/> - <dataholder name="dh498" class="DH_beamT" connect="dh661" type="output"/> - </workholder> - </step> - <step name="BeamFormer_111499" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh500" class="DH_freqT" type="input"/> - <dataholder name="dh501" class="DH_beamT" connect="dh662" type="output"/> - </workholder> - </step> - <step name="BeamFormer_112502" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh503" class="DH_freqT" type="input"/> - <dataholder name="dh504" class="DH_beamT" connect="dh663" type="output"/> - </workholder> - </step> - <step name="BeamFormer_113505" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh506" class="DH_freqT" type="input"/> - <dataholder name="dh507" class="DH_beamT" connect="dh664" type="output"/> - </workholder> - </step> - <step name="BeamFormer_114508" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh509" class="DH_freqT" type="input"/> - <dataholder name="dh510" class="DH_beamT" connect="dh665" type="output"/> - </workholder> - </step> - <step name="BeamFormer_115511" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh512" class="DH_freqT" type="input"/> - <dataholder name="dh513" class="DH_beamT" connect="dh666" type="output"/> - </workholder> - </step> - <step name="BeamFormer_116514" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh515" class="DH_freqT" type="input"/> - <dataholder name="dh516" class="DH_beamT" connect="dh667" type="output"/> - </workholder> - </step> - <step name="BeamFormer_117517" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh518" class="DH_freqT" type="input"/> - <dataholder name="dh519" class="DH_beamT" connect="dh668" type="output"/> - </workholder> - </step> - <step name="BeamFormer_118520" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh521" class="DH_freqT" type="input"/> - <dataholder name="dh522" class="DH_beamT" connect="dh669" type="output"/> - </workholder> - </step> - <step name="BeamFormer_119523" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh524" class="DH_freqT" type="input"/> - <dataholder name="dh525" class="DH_beamT" connect="dh670" type="output"/> - </workholder> - </step> - <step name="BeamFormer_120526" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh527" class="DH_freqT" type="input"/> - <dataholder name="dh528" class="DH_beamT" connect="dh671" type="output"/> - </workholder> - </step> - <step name="BeamFormer_121529" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh530" class="DH_freqT" type="input"/> - <dataholder name="dh531" class="DH_beamT" connect="dh672" type="output"/> - </workholder> - </step> - <step name="BeamFormer_122532" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh533" class="DH_freqT" type="input"/> - <dataholder name="dh534" class="DH_beamT" connect="dh673" type="output"/> - </workholder> - </step> - <step name="BeamFormer_123535" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh536" class="DH_freqT" type="input"/> - <dataholder name="dh537" class="DH_beamT" connect="dh674" type="output"/> - </workholder> - </step> - <step name="BeamFormer_124538" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh539" class="DH_freqT" type="input"/> - <dataholder name="dh540" class="DH_beamT" connect="dh675" type="output"/> - </workholder> - </step> - <step name="BeamFormer_125541" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh542" class="DH_freqT" type="input"/> - <dataholder name="dh543" class="DH_beamT" connect="dh676" type="output"/> - </workholder> - </step> - <step name="BeamFormer_126544" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh545" class="DH_freqT" type="input"/> - <dataholder name="dh546" class="DH_beamT" connect="dh677" type="output"/> - </workholder> - </step> - <step name="BeamFormer_127547" node="node 1"> - <workholder class="WH_Beam"> - <dataholder name="dh548" class="DH_freqT" type="input"/> - <dataholder name="dh549" class="DH_beamT" connect="dh678" type="output"/> - </workholder> - </step> - <step name="TransposeB_137550" node="node 1"> - <workholder class="WH_TransB"> - <dataholder name="dh551" class="DH_beamT" type="input"/> - <dataholder name="dh552" class="DH_beamT" type="input"/> - <dataholder name="dh553" class="DH_beamT" type="input"/> - <dataholder name="dh554" class="DH_beamT" type="input"/> - <dataholder name="dh555" class="DH_beamT" type="input"/> - <dataholder name="dh556" class="DH_beamT" type="input"/> - <dataholder name="dh557" class="DH_beamT" type="input"/> - <dataholder name="dh558" class="DH_beamT" type="input"/> - <dataholder name="dh559" class="DH_beamT" type="input"/> - <dataholder name="dh560" class="DH_beamT" type="input"/> - <dataholder name="dh561" class="DH_beamT" type="input"/> - <dataholder name="dh562" class="DH_beamT" type="input"/> - <dataholder name="dh563" class="DH_beamT" type="input"/> - <dataholder name="dh564" class="DH_beamT" type="input"/> - <dataholder name="dh565" class="DH_beamT" type="input"/> - <dataholder name="dh566" class="DH_beamT" type="input"/> - <dataholder name="dh567" class="DH_beamT" type="input"/> - <dataholder name="dh568" class="DH_beamT" type="input"/> - <dataholder name="dh569" class="DH_beamT" type="input"/> - <dataholder name="dh570" class="DH_beamT" type="input"/> - <dataholder name="dh571" class="DH_beamT" type="input"/> - <dataholder name="dh572" class="DH_beamT" type="input"/> - <dataholder name="dh573" class="DH_beamT" type="input"/> - <dataholder name="dh574" class="DH_beamT" type="input"/> - <dataholder name="dh575" class="DH_beamT" type="input"/> - <dataholder name="dh576" class="DH_beamT" type="input"/> - <dataholder name="dh577" class="DH_beamT" type="input"/> - <dataholder name="dh578" class="DH_beamT" type="input"/> - <dataholder name="dh579" class="DH_beamT" type="input"/> - <dataholder name="dh580" class="DH_beamT" type="input"/> - <dataholder name="dh581" class="DH_beamT" type="input"/> - <dataholder name="dh582" class="DH_beamT" type="input"/> - <dataholder name="dh583" class="DH_beamT" type="input"/> - <dataholder name="dh584" class="DH_beamT" type="input"/> - <dataholder name="dh585" class="DH_beamT" type="input"/> - <dataholder name="dh586" class="DH_beamT" type="input"/> - <dataholder name="dh587" class="DH_beamT" type="input"/> - <dataholder name="dh588" class="DH_beamT" type="input"/> - <dataholder name="dh589" class="DH_beamT" type="input"/> - <dataholder name="dh590" class="DH_beamT" type="input"/> - <dataholder name="dh591" class="DH_beamT" type="input"/> - <dataholder name="dh592" class="DH_beamT" type="input"/> - <dataholder name="dh593" class="DH_beamT" type="input"/> - <dataholder name="dh594" class="DH_beamT" type="input"/> - <dataholder name="dh595" class="DH_beamT" type="input"/> - <dataholder name="dh596" class="DH_beamT" type="input"/> - <dataholder name="dh597" class="DH_beamT" type="input"/> - <dataholder name="dh598" class="DH_beamT" type="input"/> - <dataholder name="dh599" class="DH_beamT" type="input"/> - <dataholder name="dh600" class="DH_beamT" type="input"/> - <dataholder name="dh601" class="DH_beamT" type="input"/> - <dataholder name="dh602" class="DH_beamT" type="input"/> - <dataholder name="dh603" class="DH_beamT" type="input"/> - <dataholder name="dh604" class="DH_beamT" type="input"/> - <dataholder name="dh605" class="DH_beamT" type="input"/> - <dataholder name="dh606" class="DH_beamT" type="input"/> - <dataholder name="dh607" class="DH_beamT" type="input"/> - <dataholder name="dh608" class="DH_beamT" type="input"/> - <dataholder name="dh609" class="DH_beamT" type="input"/> - <dataholder name="dh610" class="DH_beamT" type="input"/> - <dataholder name="dh611" class="DH_beamT" type="input"/> - <dataholder name="dh612" class="DH_beamT" type="input"/> - <dataholder name="dh613" class="DH_beamT" type="input"/> - <dataholder name="dh614" class="DH_beamT" type="input"/> - <dataholder name="dh615" class="DH_beamT" type="input"/> - <dataholder name="dh616" class="DH_beamT" type="input"/> - <dataholder name="dh617" class="DH_beamT" type="input"/> - <dataholder name="dh618" class="DH_beamT" type="input"/> - <dataholder name="dh619" class="DH_beamT" type="input"/> - <dataholder name="dh620" class="DH_beamT" type="input"/> - <dataholder name="dh621" class="DH_beamT" type="input"/> - <dataholder name="dh622" class="DH_beamT" type="input"/> - <dataholder name="dh623" class="DH_beamT" type="input"/> - <dataholder name="dh624" class="DH_beamT" type="input"/> - <dataholder name="dh625" class="DH_beamT" type="input"/> - <dataholder name="dh626" class="DH_beamT" type="input"/> - <dataholder name="dh627" class="DH_beamT" type="input"/> - <dataholder name="dh628" class="DH_beamT" type="input"/> - <dataholder name="dh629" class="DH_beamT" type="input"/> - <dataholder name="dh630" class="DH_beamT" type="input"/> - <dataholder name="dh631" class="DH_beamT" type="input"/> - <dataholder name="dh632" class="DH_beamT" type="input"/> - <dataholder name="dh633" class="DH_beamT" type="input"/> - <dataholder name="dh634" class="DH_beamT" type="input"/> - <dataholder name="dh635" class="DH_beamT" type="input"/> - <dataholder name="dh636" class="DH_beamT" type="input"/> - <dataholder name="dh637" class="DH_beamT" type="input"/> - <dataholder name="dh638" class="DH_beamT" type="input"/> - <dataholder name="dh639" class="DH_beamT" type="input"/> - <dataholder name="dh640" class="DH_beamT" type="input"/> - <dataholder name="dh641" class="DH_beamT" type="input"/> - <dataholder name="dh642" class="DH_beamT" type="input"/> - <dataholder name="dh643" class="DH_beamT" type="input"/> - <dataholder name="dh644" class="DH_beamT" type="input"/> - <dataholder name="dh645" class="DH_beamT" type="input"/> - <dataholder name="dh646" class="DH_beamT" type="input"/> - <dataholder name="dh647" class="DH_beamT" type="input"/> - <dataholder name="dh648" class="DH_beamT" type="input"/> - <dataholder name="dh649" class="DH_beamT" type="input"/> - <dataholder name="dh650" class="DH_beamT" type="input"/> - <dataholder name="dh651" class="DH_beamT" type="input"/> - <dataholder name="dh652" class="DH_beamT" type="input"/> - <dataholder name="dh653" class="DH_beamT" type="input"/> - <dataholder name="dh654" class="DH_beamT" type="input"/> - <dataholder name="dh655" class="DH_beamT" type="input"/> - <dataholder name="dh656" class="DH_beamT" type="input"/> - <dataholder name="dh657" class="DH_beamT" type="input"/> - <dataholder name="dh658" class="DH_beamT" type="input"/> - <dataholder name="dh659" class="DH_beamT" type="input"/> - <dataholder name="dh660" class="DH_beamT" type="input"/> - <dataholder name="dh661" class="DH_beamT" type="input"/> - <dataholder name="dh662" class="DH_beamT" type="input"/> - <dataholder name="dh663" class="DH_beamT" type="input"/> - <dataholder name="dh664" class="DH_beamT" type="input"/> - <dataholder name="dh665" class="DH_beamT" type="input"/> - <dataholder name="dh666" class="DH_beamT" type="input"/> - <dataholder name="dh667" class="DH_beamT" type="input"/> - <dataholder name="dh668" class="DH_beamT" type="input"/> - <dataholder name="dh669" class="DH_beamT" type="input"/> - <dataholder name="dh670" class="DH_beamT" type="input"/> - <dataholder name="dh671" class="DH_beamT" type="input"/> - <dataholder name="dh672" class="DH_beamT" type="input"/> - <dataholder name="dh673" class="DH_beamT" type="input"/> - <dataholder name="dh674" class="DH_beamT" type="input"/> - <dataholder name="dh675" class="DH_beamT" type="input"/> - <dataholder name="dh676" class="DH_beamT" type="input"/> - <dataholder name="dh677" class="DH_beamT" type="input"/> - <dataholder name="dh678" class="DH_beamT" type="input"/> - <dataholder name="dh679" class="DH_beam" connect="dh8" type="output"/> - </workholder> - </step> - </simul> - <simul name="Lofar_Station_1680" node="node 2"> - <workholder class="WH_Station"> - <dataholder name="dh681" class="DH_Antenna" type="input"/> - <dataholder name="dh682" class="DH_Antenna" type="input"/> - <dataholder name="dh683" class="DH_Antenna" type="input"/> - <dataholder name="dh684" class="DH_Antenna" type="input"/> - <dataholder name="dh685" class="DH_beam" connect="dh2713" type="output"/> - </workholder> - <step name="Antenna_0686" node="node 2"> - <workholder class="WH_Antenna"> - <dataholder name="dh687" class="DH_Antenna" type="input"/> - <dataholder name="dh688" class="DH_Antenna" connect="dh699" type="output"/> - </workholder> - </step> - <step name="Antenna_1689" node="node 2"> - <workholder class="WH_Antenna"> - <dataholder name="dh690" class="DH_Antenna" type="input"/> - <dataholder name="dh691" class="DH_Antenna" connect="dh702" type="output"/> - </workholder> - </step> - <step name="Antenna_2692" node="node 2"> - <workholder class="WH_Antenna"> - <dataholder name="dh693" class="DH_Antenna" type="input"/> - <dataholder name="dh694" class="DH_Antenna" connect="dh705" type="output"/> - </workholder> - </step> - <step name="Antenna_3695" node="node 2"> - <workholder class="WH_Antenna"> - <dataholder name="dh696" class="DH_Antenna" type="input"/> - <dataholder name="dh697" class="DH_Antenna" connect="dh708" type="output"/> - </workholder> - </step> - <step name="FFT_0698" node="node 2"> - <workholder class="WH_FFT"> - <dataholder name="dh699" class="DH_Antenna" type="input"/> - <dataholder name="dh700" class="DH_freq" connect="dh711" type="output"/> - </workholder> - </step> - <step name="FFT_1701" node="node 2"> - <workholder class="WH_FFT"> - <dataholder name="dh702" class="DH_Antenna" type="input"/> - <dataholder name="dh703" class="DH_freq" connect="dh712" type="output"/> - </workholder> - </step> - <step name="FFT_2704" node="node 2"> - <workholder class="WH_FFT"> - <dataholder name="dh705" class="DH_Antenna" type="input"/> - <dataholder name="dh706" class="DH_freq" connect="dh713" type="output"/> - </workholder> - </step> - <step name="FFT_3707" node="node 2"> - <workholder class="WH_FFT"> - <dataholder name="dh708" class="DH_Antenna" type="input"/> - <dataholder name="dh709" class="DH_freq" connect="dh714" type="output"/> - </workholder> - </step> - <step name="TransposeF_1_8710" node="node 2"> - <workholder class="WH_TransF"> - <dataholder name="dh711" class="DH_freq" type="input"/> - <dataholder name="dh712" class="DH_freq" type="input"/> - <dataholder name="dh713" class="DH_freq" type="input"/> - <dataholder name="dh714" class="DH_freq" type="input"/> - <dataholder name="dh715" class="DH_freqT" connect="dh844" type="output"/> - <dataholder name="dh716" class="DH_freqT" connect="dh847" type="output"/> - <dataholder name="dh717" class="DH_freqT" connect="dh850" type="output"/> - <dataholder name="dh718" class="DH_freqT" connect="dh853" type="output"/> - <dataholder name="dh719" class="DH_freqT" connect="dh856" type="output"/> - <dataholder name="dh720" class="DH_freqT" connect="dh859" type="output"/> - <dataholder name="dh721" class="DH_freqT" connect="dh862" type="output"/> - <dataholder name="dh722" class="DH_freqT" connect="dh865" type="output"/> - <dataholder name="dh723" class="DH_freqT" connect="dh868" type="output"/> - <dataholder name="dh724" class="DH_freqT" connect="dh871" type="output"/> - <dataholder name="dh725" class="DH_freqT" connect="dh874" type="output"/> - <dataholder name="dh726" class="DH_freqT" connect="dh877" type="output"/> - <dataholder name="dh727" class="DH_freqT" connect="dh880" type="output"/> - <dataholder name="dh728" class="DH_freqT" connect="dh883" type="output"/> - <dataholder name="dh729" class="DH_freqT" connect="dh886" type="output"/> - <dataholder name="dh730" class="DH_freqT" connect="dh889" type="output"/> - <dataholder name="dh731" class="DH_freqT" connect="dh892" type="output"/> - <dataholder name="dh732" class="DH_freqT" connect="dh895" type="output"/> - <dataholder name="dh733" class="DH_freqT" connect="dh898" type="output"/> - <dataholder name="dh734" class="DH_freqT" connect="dh901" type="output"/> - <dataholder name="dh735" class="DH_freqT" connect="dh904" type="output"/> - <dataholder name="dh736" class="DH_freqT" connect="dh907" type="output"/> - <dataholder name="dh737" class="DH_freqT" connect="dh910" type="output"/> - <dataholder name="dh738" class="DH_freqT" connect="dh913" type="output"/> - <dataholder name="dh739" class="DH_freqT" connect="dh916" type="output"/> - <dataholder name="dh740" class="DH_freqT" connect="dh919" type="output"/> - <dataholder name="dh741" class="DH_freqT" connect="dh922" type="output"/> - <dataholder name="dh742" class="DH_freqT" connect="dh925" type="output"/> - <dataholder name="dh743" class="DH_freqT" connect="dh928" type="output"/> - <dataholder name="dh744" class="DH_freqT" connect="dh931" type="output"/> - <dataholder name="dh745" class="DH_freqT" connect="dh934" type="output"/> - <dataholder name="dh746" class="DH_freqT" connect="dh937" type="output"/> - <dataholder name="dh747" class="DH_freqT" connect="dh940" type="output"/> - <dataholder name="dh748" class="DH_freqT" connect="dh943" type="output"/> - <dataholder name="dh749" class="DH_freqT" connect="dh946" type="output"/> - <dataholder name="dh750" class="DH_freqT" connect="dh949" type="output"/> - <dataholder name="dh751" class="DH_freqT" connect="dh952" type="output"/> - <dataholder name="dh752" class="DH_freqT" connect="dh955" type="output"/> - <dataholder name="dh753" class="DH_freqT" connect="dh958" type="output"/> - <dataholder name="dh754" class="DH_freqT" connect="dh961" type="output"/> - <dataholder name="dh755" class="DH_freqT" connect="dh964" type="output"/> - <dataholder name="dh756" class="DH_freqT" connect="dh967" type="output"/> - <dataholder name="dh757" class="DH_freqT" connect="dh970" type="output"/> - <dataholder name="dh758" class="DH_freqT" connect="dh973" type="output"/> - <dataholder name="dh759" class="DH_freqT" connect="dh976" type="output"/> - <dataholder name="dh760" class="DH_freqT" connect="dh979" type="output"/> - <dataholder name="dh761" class="DH_freqT" connect="dh982" type="output"/> - <dataholder name="dh762" class="DH_freqT" connect="dh985" type="output"/> - <dataholder name="dh763" class="DH_freqT" connect="dh988" type="output"/> - <dataholder name="dh764" class="DH_freqT" connect="dh991" type="output"/> - <dataholder name="dh765" class="DH_freqT" connect="dh994" type="output"/> - <dataholder name="dh766" class="DH_freqT" connect="dh997" type="output"/> - <dataholder name="dh767" class="DH_freqT" connect="dh1000" type="output"/> - <dataholder name="dh768" class="DH_freqT" connect="dh1003" type="output"/> - <dataholder name="dh769" class="DH_freqT" connect="dh1006" type="output"/> - <dataholder name="dh770" class="DH_freqT" connect="dh1009" type="output"/> - <dataholder name="dh771" class="DH_freqT" connect="dh1012" type="output"/> - <dataholder name="dh772" class="DH_freqT" connect="dh1015" type="output"/> - <dataholder name="dh773" class="DH_freqT" connect="dh1018" type="output"/> - <dataholder name="dh774" class="DH_freqT" connect="dh1021" type="output"/> - <dataholder name="dh775" class="DH_freqT" connect="dh1024" type="output"/> - <dataholder name="dh776" class="DH_freqT" connect="dh1027" type="output"/> - <dataholder name="dh777" class="DH_freqT" connect="dh1030" type="output"/> - <dataholder name="dh778" class="DH_freqT" connect="dh1033" type="output"/> - <dataholder name="dh779" class="DH_freqT" connect="dh1036" type="output"/> - <dataholder name="dh780" class="DH_freqT" connect="dh1039" type="output"/> - <dataholder name="dh781" class="DH_freqT" connect="dh1042" type="output"/> - <dataholder name="dh782" class="DH_freqT" connect="dh1045" type="output"/> - <dataholder name="dh783" class="DH_freqT" connect="dh1048" type="output"/> - <dataholder name="dh784" class="DH_freqT" connect="dh1051" type="output"/> - <dataholder name="dh785" class="DH_freqT" connect="dh1054" type="output"/> - <dataholder name="dh786" class="DH_freqT" connect="dh1057" type="output"/> - <dataholder name="dh787" class="DH_freqT" connect="dh1060" type="output"/> - <dataholder name="dh788" class="DH_freqT" connect="dh1063" type="output"/> - <dataholder name="dh789" class="DH_freqT" connect="dh1066" type="output"/> - <dataholder name="dh790" class="DH_freqT" connect="dh1069" type="output"/> - <dataholder name="dh791" class="DH_freqT" connect="dh1072" type="output"/> - <dataholder name="dh792" class="DH_freqT" connect="dh1075" type="output"/> - <dataholder name="dh793" class="DH_freqT" connect="dh1078" type="output"/> - <dataholder name="dh794" class="DH_freqT" connect="dh1081" type="output"/> - <dataholder name="dh795" class="DH_freqT" connect="dh1084" type="output"/> - <dataholder name="dh796" class="DH_freqT" connect="dh1087" type="output"/> - <dataholder name="dh797" class="DH_freqT" connect="dh1090" type="output"/> - <dataholder name="dh798" class="DH_freqT" connect="dh1093" type="output"/> - <dataholder name="dh799" class="DH_freqT" connect="dh1096" type="output"/> - <dataholder name="dh800" class="DH_freqT" connect="dh1099" type="output"/> - <dataholder name="dh801" class="DH_freqT" connect="dh1102" type="output"/> - <dataholder name="dh802" class="DH_freqT" connect="dh1105" type="output"/> - <dataholder name="dh803" class="DH_freqT" connect="dh1108" type="output"/> - <dataholder name="dh804" class="DH_freqT" connect="dh1111" type="output"/> - <dataholder name="dh805" class="DH_freqT" connect="dh1114" type="output"/> - <dataholder name="dh806" class="DH_freqT" connect="dh1117" type="output"/> - <dataholder name="dh807" class="DH_freqT" connect="dh1120" type="output"/> - <dataholder name="dh808" class="DH_freqT" connect="dh1123" type="output"/> - <dataholder name="dh809" class="DH_freqT" connect="dh1126" type="output"/> - <dataholder name="dh810" class="DH_freqT" connect="dh1129" type="output"/> - <dataholder name="dh811" class="DH_freqT" connect="dh1132" type="output"/> - <dataholder name="dh812" class="DH_freqT" connect="dh1135" type="output"/> - <dataholder name="dh813" class="DH_freqT" connect="dh1138" type="output"/> - <dataholder name="dh814" class="DH_freqT" connect="dh1141" type="output"/> - <dataholder name="dh815" class="DH_freqT" connect="dh1144" type="output"/> - <dataholder name="dh816" class="DH_freqT" connect="dh1147" type="output"/> - <dataholder name="dh817" class="DH_freqT" connect="dh1150" type="output"/> - <dataholder name="dh818" class="DH_freqT" connect="dh1153" type="output"/> - <dataholder name="dh819" class="DH_freqT" connect="dh1156" type="output"/> - <dataholder name="dh820" class="DH_freqT" connect="dh1159" type="output"/> - <dataholder name="dh821" class="DH_freqT" connect="dh1162" type="output"/> - <dataholder name="dh822" class="DH_freqT" connect="dh1165" type="output"/> - <dataholder name="dh823" class="DH_freqT" connect="dh1168" type="output"/> - <dataholder name="dh824" class="DH_freqT" connect="dh1171" type="output"/> - <dataholder name="dh825" class="DH_freqT" connect="dh1174" type="output"/> - <dataholder name="dh826" class="DH_freqT" connect="dh1177" type="output"/> - <dataholder name="dh827" class="DH_freqT" connect="dh1180" type="output"/> - <dataholder name="dh828" class="DH_freqT" connect="dh1183" type="output"/> - <dataholder name="dh829" class="DH_freqT" connect="dh1186" type="output"/> - <dataholder name="dh830" class="DH_freqT" connect="dh1189" type="output"/> - <dataholder name="dh831" class="DH_freqT" connect="dh1192" type="output"/> - <dataholder name="dh832" class="DH_freqT" connect="dh1195" type="output"/> - <dataholder name="dh833" class="DH_freqT" connect="dh1198" type="output"/> - <dataholder name="dh834" class="DH_freqT" connect="dh1201" type="output"/> - <dataholder name="dh835" class="DH_freqT" connect="dh1204" type="output"/> - <dataholder name="dh836" class="DH_freqT" connect="dh1207" type="output"/> - <dataholder name="dh837" class="DH_freqT" connect="dh1210" type="output"/> - <dataholder name="dh838" class="DH_freqT" connect="dh1213" type="output"/> - <dataholder name="dh839" class="DH_freqT" connect="dh1216" type="output"/> - <dataholder name="dh840" class="DH_freqT" connect="dh1219" type="output"/> - <dataholder name="dh841" class="DH_freqT" connect="dh1222" type="output"/> - <dataholder name="dh842" class="DH_freqT" connect="dh1225" type="output"/> - </workholder> - </step> - <step name="BeamFormer_0843" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh844" class="DH_freqT" type="input"/> - <dataholder name="dh845" class="DH_beamT" connect="dh1228" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1846" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh847" class="DH_freqT" type="input"/> - <dataholder name="dh848" class="DH_beamT" connect="dh1229" type="output"/> - </workholder> - </step> - <step name="BeamFormer_2849" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh850" class="DH_freqT" type="input"/> - <dataholder name="dh851" class="DH_beamT" connect="dh1230" type="output"/> - </workholder> - </step> - <step name="BeamFormer_3852" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh853" class="DH_freqT" type="input"/> - <dataholder name="dh854" class="DH_beamT" connect="dh1231" type="output"/> - </workholder> - </step> - <step name="BeamFormer_4855" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh856" class="DH_freqT" type="input"/> - <dataholder name="dh857" class="DH_beamT" connect="dh1232" type="output"/> - </workholder> - </step> - <step name="BeamFormer_5858" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh859" class="DH_freqT" type="input"/> - <dataholder name="dh860" class="DH_beamT" connect="dh1233" type="output"/> - </workholder> - </step> - <step name="BeamFormer_6861" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh862" class="DH_freqT" type="input"/> - <dataholder name="dh863" class="DH_beamT" connect="dh1234" type="output"/> - </workholder> - </step> - <step name="BeamFormer_7864" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh865" class="DH_freqT" type="input"/> - <dataholder name="dh866" class="DH_beamT" connect="dh1235" type="output"/> - </workholder> - </step> - <step name="BeamFormer_8867" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh868" class="DH_freqT" type="input"/> - <dataholder name="dh869" class="DH_beamT" connect="dh1236" type="output"/> - </workholder> - </step> - <step name="BeamFormer_9870" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh871" class="DH_freqT" type="input"/> - <dataholder name="dh872" class="DH_beamT" connect="dh1237" type="output"/> - </workholder> - </step> - <step name="BeamFormer_10873" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh874" class="DH_freqT" type="input"/> - <dataholder name="dh875" class="DH_beamT" connect="dh1238" type="output"/> - </workholder> - </step> - <step name="BeamFormer_11876" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh877" class="DH_freqT" type="input"/> - <dataholder name="dh878" class="DH_beamT" connect="dh1239" type="output"/> - </workholder> - </step> - <step name="BeamFormer_12879" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh880" class="DH_freqT" type="input"/> - <dataholder name="dh881" class="DH_beamT" connect="dh1240" type="output"/> - </workholder> - </step> - <step name="BeamFormer_13882" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh883" class="DH_freqT" type="input"/> - <dataholder name="dh884" class="DH_beamT" connect="dh1241" type="output"/> - </workholder> - </step> - <step name="BeamFormer_14885" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh886" class="DH_freqT" type="input"/> - <dataholder name="dh887" class="DH_beamT" connect="dh1242" type="output"/> - </workholder> - </step> - <step name="BeamFormer_15888" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh889" class="DH_freqT" type="input"/> - <dataholder name="dh890" class="DH_beamT" connect="dh1243" type="output"/> - </workholder> - </step> - <step name="BeamFormer_16891" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh892" class="DH_freqT" type="input"/> - <dataholder name="dh893" class="DH_beamT" connect="dh1244" type="output"/> - </workholder> - </step> - <step name="BeamFormer_17894" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh895" class="DH_freqT" type="input"/> - <dataholder name="dh896" class="DH_beamT" connect="dh1245" type="output"/> - </workholder> - </step> - <step name="BeamFormer_18897" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh898" class="DH_freqT" type="input"/> - <dataholder name="dh899" class="DH_beamT" connect="dh1246" type="output"/> - </workholder> - </step> - <step name="BeamFormer_19900" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh901" class="DH_freqT" type="input"/> - <dataholder name="dh902" class="DH_beamT" connect="dh1247" type="output"/> - </workholder> - </step> - <step name="BeamFormer_20903" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh904" class="DH_freqT" type="input"/> - <dataholder name="dh905" class="DH_beamT" connect="dh1248" type="output"/> - </workholder> - </step> - <step name="BeamFormer_21906" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh907" class="DH_freqT" type="input"/> - <dataholder name="dh908" class="DH_beamT" connect="dh1249" type="output"/> - </workholder> - </step> - <step name="BeamFormer_22909" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh910" class="DH_freqT" type="input"/> - <dataholder name="dh911" class="DH_beamT" connect="dh1250" type="output"/> - </workholder> - </step> - <step name="BeamFormer_23912" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh913" class="DH_freqT" type="input"/> - <dataholder name="dh914" class="DH_beamT" connect="dh1251" type="output"/> - </workholder> - </step> - <step name="BeamFormer_24915" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh916" class="DH_freqT" type="input"/> - <dataholder name="dh917" class="DH_beamT" connect="dh1252" type="output"/> - </workholder> - </step> - <step name="BeamFormer_25918" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh919" class="DH_freqT" type="input"/> - <dataholder name="dh920" class="DH_beamT" connect="dh1253" type="output"/> - </workholder> - </step> - <step name="BeamFormer_26921" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh922" class="DH_freqT" type="input"/> - <dataholder name="dh923" class="DH_beamT" connect="dh1254" type="output"/> - </workholder> - </step> - <step name="BeamFormer_27924" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh925" class="DH_freqT" type="input"/> - <dataholder name="dh926" class="DH_beamT" connect="dh1255" type="output"/> - </workholder> - </step> - <step name="BeamFormer_28927" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh928" class="DH_freqT" type="input"/> - <dataholder name="dh929" class="DH_beamT" connect="dh1256" type="output"/> - </workholder> - </step> - <step name="BeamFormer_29930" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh931" class="DH_freqT" type="input"/> - <dataholder name="dh932" class="DH_beamT" connect="dh1257" type="output"/> - </workholder> - </step> - <step name="BeamFormer_30933" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh934" class="DH_freqT" type="input"/> - <dataholder name="dh935" class="DH_beamT" connect="dh1258" type="output"/> - </workholder> - </step> - <step name="BeamFormer_31936" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh937" class="DH_freqT" type="input"/> - <dataholder name="dh938" class="DH_beamT" connect="dh1259" type="output"/> - </workholder> - </step> - <step name="BeamFormer_32939" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh940" class="DH_freqT" type="input"/> - <dataholder name="dh941" class="DH_beamT" connect="dh1260" type="output"/> - </workholder> - </step> - <step name="BeamFormer_33942" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh943" class="DH_freqT" type="input"/> - <dataholder name="dh944" class="DH_beamT" connect="dh1261" type="output"/> - </workholder> - </step> - <step name="BeamFormer_34945" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh946" class="DH_freqT" type="input"/> - <dataholder name="dh947" class="DH_beamT" connect="dh1262" type="output"/> - </workholder> - </step> - <step name="BeamFormer_35948" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh949" class="DH_freqT" type="input"/> - <dataholder name="dh950" class="DH_beamT" connect="dh1263" type="output"/> - </workholder> - </step> - <step name="BeamFormer_36951" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh952" class="DH_freqT" type="input"/> - <dataholder name="dh953" class="DH_beamT" connect="dh1264" type="output"/> - </workholder> - </step> - <step name="BeamFormer_37954" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh955" class="DH_freqT" type="input"/> - <dataholder name="dh956" class="DH_beamT" connect="dh1265" type="output"/> - </workholder> - </step> - <step name="BeamFormer_38957" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh958" class="DH_freqT" type="input"/> - <dataholder name="dh959" class="DH_beamT" connect="dh1266" type="output"/> - </workholder> - </step> - <step name="BeamFormer_39960" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh961" class="DH_freqT" type="input"/> - <dataholder name="dh962" class="DH_beamT" connect="dh1267" type="output"/> - </workholder> - </step> - <step name="BeamFormer_40963" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh964" class="DH_freqT" type="input"/> - <dataholder name="dh965" class="DH_beamT" connect="dh1268" type="output"/> - </workholder> - </step> - <step name="BeamFormer_41966" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh967" class="DH_freqT" type="input"/> - <dataholder name="dh968" class="DH_beamT" connect="dh1269" type="output"/> - </workholder> - </step> - <step name="BeamFormer_42969" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh970" class="DH_freqT" type="input"/> - <dataholder name="dh971" class="DH_beamT" connect="dh1270" type="output"/> - </workholder> - </step> - <step name="BeamFormer_43972" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh973" class="DH_freqT" type="input"/> - <dataholder name="dh974" class="DH_beamT" connect="dh1271" type="output"/> - </workholder> - </step> - <step name="BeamFormer_44975" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh976" class="DH_freqT" type="input"/> - <dataholder name="dh977" class="DH_beamT" connect="dh1272" type="output"/> - </workholder> - </step> - <step name="BeamFormer_45978" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh979" class="DH_freqT" type="input"/> - <dataholder name="dh980" class="DH_beamT" connect="dh1273" type="output"/> - </workholder> - </step> - <step name="BeamFormer_46981" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh982" class="DH_freqT" type="input"/> - <dataholder name="dh983" class="DH_beamT" connect="dh1274" type="output"/> - </workholder> - </step> - <step name="BeamFormer_47984" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh985" class="DH_freqT" type="input"/> - <dataholder name="dh986" class="DH_beamT" connect="dh1275" type="output"/> - </workholder> - </step> - <step name="BeamFormer_48987" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh988" class="DH_freqT" type="input"/> - <dataholder name="dh989" class="DH_beamT" connect="dh1276" type="output"/> - </workholder> - </step> - <step name="BeamFormer_49990" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh991" class="DH_freqT" type="input"/> - <dataholder name="dh992" class="DH_beamT" connect="dh1277" type="output"/> - </workholder> - </step> - <step name="BeamFormer_50993" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh994" class="DH_freqT" type="input"/> - <dataholder name="dh995" class="DH_beamT" connect="dh1278" type="output"/> - </workholder> - </step> - <step name="BeamFormer_51996" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh997" class="DH_freqT" type="input"/> - <dataholder name="dh998" class="DH_beamT" connect="dh1279" type="output"/> - </workholder> - </step> - <step name="BeamFormer_52999" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1000" class="DH_freqT" type="input"/> - <dataholder name="dh1001" class="DH_beamT" connect="dh1280" type="output"/> - </workholder> - </step> - <step name="BeamFormer_531002" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1003" class="DH_freqT" type="input"/> - <dataholder name="dh1004" class="DH_beamT" connect="dh1281" type="output"/> - </workholder> - </step> - <step name="BeamFormer_541005" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1006" class="DH_freqT" type="input"/> - <dataholder name="dh1007" class="DH_beamT" connect="dh1282" type="output"/> - </workholder> - </step> - <step name="BeamFormer_551008" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1009" class="DH_freqT" type="input"/> - <dataholder name="dh1010" class="DH_beamT" connect="dh1283" type="output"/> - </workholder> - </step> - <step name="BeamFormer_561011" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1012" class="DH_freqT" type="input"/> - <dataholder name="dh1013" class="DH_beamT" connect="dh1284" type="output"/> - </workholder> - </step> - <step name="BeamFormer_571014" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1015" class="DH_freqT" type="input"/> - <dataholder name="dh1016" class="DH_beamT" connect="dh1285" type="output"/> - </workholder> - </step> - <step name="BeamFormer_581017" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1018" class="DH_freqT" type="input"/> - <dataholder name="dh1019" class="DH_beamT" connect="dh1286" type="output"/> - </workholder> - </step> - <step name="BeamFormer_591020" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1021" class="DH_freqT" type="input"/> - <dataholder name="dh1022" class="DH_beamT" connect="dh1287" type="output"/> - </workholder> - </step> - <step name="BeamFormer_601023" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1024" class="DH_freqT" type="input"/> - <dataholder name="dh1025" class="DH_beamT" connect="dh1288" type="output"/> - </workholder> - </step> - <step name="BeamFormer_611026" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1027" class="DH_freqT" type="input"/> - <dataholder name="dh1028" class="DH_beamT" connect="dh1289" type="output"/> - </workholder> - </step> - <step name="BeamFormer_621029" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1030" class="DH_freqT" type="input"/> - <dataholder name="dh1031" class="DH_beamT" connect="dh1290" type="output"/> - </workholder> - </step> - <step name="BeamFormer_631032" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1033" class="DH_freqT" type="input"/> - <dataholder name="dh1034" class="DH_beamT" connect="dh1291" type="output"/> - </workholder> - </step> - <step name="BeamFormer_641035" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1036" class="DH_freqT" type="input"/> - <dataholder name="dh1037" class="DH_beamT" connect="dh1292" type="output"/> - </workholder> - </step> - <step name="BeamFormer_651038" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1039" class="DH_freqT" type="input"/> - <dataholder name="dh1040" class="DH_beamT" connect="dh1293" type="output"/> - </workholder> - </step> - <step name="BeamFormer_661041" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1042" class="DH_freqT" type="input"/> - <dataholder name="dh1043" class="DH_beamT" connect="dh1294" type="output"/> - </workholder> - </step> - <step name="BeamFormer_671044" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1045" class="DH_freqT" type="input"/> - <dataholder name="dh1046" class="DH_beamT" connect="dh1295" type="output"/> - </workholder> - </step> - <step name="BeamFormer_681047" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1048" class="DH_freqT" type="input"/> - <dataholder name="dh1049" class="DH_beamT" connect="dh1296" type="output"/> - </workholder> - </step> - <step name="BeamFormer_691050" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1051" class="DH_freqT" type="input"/> - <dataholder name="dh1052" class="DH_beamT" connect="dh1297" type="output"/> - </workholder> - </step> - <step name="BeamFormer_701053" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1054" class="DH_freqT" type="input"/> - <dataholder name="dh1055" class="DH_beamT" connect="dh1298" type="output"/> - </workholder> - </step> - <step name="BeamFormer_711056" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1057" class="DH_freqT" type="input"/> - <dataholder name="dh1058" class="DH_beamT" connect="dh1299" type="output"/> - </workholder> - </step> - <step name="BeamFormer_721059" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1060" class="DH_freqT" type="input"/> - <dataholder name="dh1061" class="DH_beamT" connect="dh1300" type="output"/> - </workholder> - </step> - <step name="BeamFormer_731062" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1063" class="DH_freqT" type="input"/> - <dataholder name="dh1064" class="DH_beamT" connect="dh1301" type="output"/> - </workholder> - </step> - <step name="BeamFormer_741065" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1066" class="DH_freqT" type="input"/> - <dataholder name="dh1067" class="DH_beamT" connect="dh1302" type="output"/> - </workholder> - </step> - <step name="BeamFormer_751068" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1069" class="DH_freqT" type="input"/> - <dataholder name="dh1070" class="DH_beamT" connect="dh1303" type="output"/> - </workholder> - </step> - <step name="BeamFormer_761071" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1072" class="DH_freqT" type="input"/> - <dataholder name="dh1073" class="DH_beamT" connect="dh1304" type="output"/> - </workholder> - </step> - <step name="BeamFormer_771074" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1075" class="DH_freqT" type="input"/> - <dataholder name="dh1076" class="DH_beamT" connect="dh1305" type="output"/> - </workholder> - </step> - <step name="BeamFormer_781077" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1078" class="DH_freqT" type="input"/> - <dataholder name="dh1079" class="DH_beamT" connect="dh1306" type="output"/> - </workholder> - </step> - <step name="BeamFormer_791080" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1081" class="DH_freqT" type="input"/> - <dataholder name="dh1082" class="DH_beamT" connect="dh1307" type="output"/> - </workholder> - </step> - <step name="BeamFormer_801083" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1084" class="DH_freqT" type="input"/> - <dataholder name="dh1085" class="DH_beamT" connect="dh1308" type="output"/> - </workholder> - </step> - <step name="BeamFormer_811086" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1087" class="DH_freqT" type="input"/> - <dataholder name="dh1088" class="DH_beamT" connect="dh1309" type="output"/> - </workholder> - </step> - <step name="BeamFormer_821089" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1090" class="DH_freqT" type="input"/> - <dataholder name="dh1091" class="DH_beamT" connect="dh1310" type="output"/> - </workholder> - </step> - <step name="BeamFormer_831092" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1093" class="DH_freqT" type="input"/> - <dataholder name="dh1094" class="DH_beamT" connect="dh1311" type="output"/> - </workholder> - </step> - <step name="BeamFormer_841095" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1096" class="DH_freqT" type="input"/> - <dataholder name="dh1097" class="DH_beamT" connect="dh1312" type="output"/> - </workholder> - </step> - <step name="BeamFormer_851098" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1099" class="DH_freqT" type="input"/> - <dataholder name="dh1100" class="DH_beamT" connect="dh1313" type="output"/> - </workholder> - </step> - <step name="BeamFormer_861101" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1102" class="DH_freqT" type="input"/> - <dataholder name="dh1103" class="DH_beamT" connect="dh1314" type="output"/> - </workholder> - </step> - <step name="BeamFormer_871104" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1105" class="DH_freqT" type="input"/> - <dataholder name="dh1106" class="DH_beamT" connect="dh1315" type="output"/> - </workholder> - </step> - <step name="BeamFormer_881107" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1108" class="DH_freqT" type="input"/> - <dataholder name="dh1109" class="DH_beamT" connect="dh1316" type="output"/> - </workholder> - </step> - <step name="BeamFormer_891110" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1111" class="DH_freqT" type="input"/> - <dataholder name="dh1112" class="DH_beamT" connect="dh1317" type="output"/> - </workholder> - </step> - <step name="BeamFormer_901113" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1114" class="DH_freqT" type="input"/> - <dataholder name="dh1115" class="DH_beamT" connect="dh1318" type="output"/> - </workholder> - </step> - <step name="BeamFormer_911116" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1117" class="DH_freqT" type="input"/> - <dataholder name="dh1118" class="DH_beamT" connect="dh1319" type="output"/> - </workholder> - </step> - <step name="BeamFormer_921119" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1120" class="DH_freqT" type="input"/> - <dataholder name="dh1121" class="DH_beamT" connect="dh1320" type="output"/> - </workholder> - </step> - <step name="BeamFormer_931122" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1123" class="DH_freqT" type="input"/> - <dataholder name="dh1124" class="DH_beamT" connect="dh1321" type="output"/> - </workholder> - </step> - <step name="BeamFormer_941125" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1126" class="DH_freqT" type="input"/> - <dataholder name="dh1127" class="DH_beamT" connect="dh1322" type="output"/> - </workholder> - </step> - <step name="BeamFormer_951128" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1129" class="DH_freqT" type="input"/> - <dataholder name="dh1130" class="DH_beamT" connect="dh1323" type="output"/> - </workholder> - </step> - <step name="BeamFormer_961131" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1132" class="DH_freqT" type="input"/> - <dataholder name="dh1133" class="DH_beamT" connect="dh1324" type="output"/> - </workholder> - </step> - <step name="BeamFormer_971134" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1135" class="DH_freqT" type="input"/> - <dataholder name="dh1136" class="DH_beamT" connect="dh1325" type="output"/> - </workholder> - </step> - <step name="BeamFormer_981137" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1138" class="DH_freqT" type="input"/> - <dataholder name="dh1139" class="DH_beamT" connect="dh1326" type="output"/> - </workholder> - </step> - <step name="BeamFormer_991140" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1141" class="DH_freqT" type="input"/> - <dataholder name="dh1142" class="DH_beamT" connect="dh1327" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1001143" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1144" class="DH_freqT" type="input"/> - <dataholder name="dh1145" class="DH_beamT" connect="dh1328" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1011146" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1147" class="DH_freqT" type="input"/> - <dataholder name="dh1148" class="DH_beamT" connect="dh1329" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1021149" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1150" class="DH_freqT" type="input"/> - <dataholder name="dh1151" class="DH_beamT" connect="dh1330" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1031152" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1153" class="DH_freqT" type="input"/> - <dataholder name="dh1154" class="DH_beamT" connect="dh1331" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1041155" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1156" class="DH_freqT" type="input"/> - <dataholder name="dh1157" class="DH_beamT" connect="dh1332" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1051158" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1159" class="DH_freqT" type="input"/> - <dataholder name="dh1160" class="DH_beamT" connect="dh1333" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1061161" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1162" class="DH_freqT" type="input"/> - <dataholder name="dh1163" class="DH_beamT" connect="dh1334" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1071164" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1165" class="DH_freqT" type="input"/> - <dataholder name="dh1166" class="DH_beamT" connect="dh1335" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1081167" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1168" class="DH_freqT" type="input"/> - <dataholder name="dh1169" class="DH_beamT" connect="dh1336" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1091170" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1171" class="DH_freqT" type="input"/> - <dataholder name="dh1172" class="DH_beamT" connect="dh1337" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1101173" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1174" class="DH_freqT" type="input"/> - <dataholder name="dh1175" class="DH_beamT" connect="dh1338" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1111176" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1177" class="DH_freqT" type="input"/> - <dataholder name="dh1178" class="DH_beamT" connect="dh1339" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1121179" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1180" class="DH_freqT" type="input"/> - <dataholder name="dh1181" class="DH_beamT" connect="dh1340" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1131182" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1183" class="DH_freqT" type="input"/> - <dataholder name="dh1184" class="DH_beamT" connect="dh1341" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1141185" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1186" class="DH_freqT" type="input"/> - <dataholder name="dh1187" class="DH_beamT" connect="dh1342" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1151188" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1189" class="DH_freqT" type="input"/> - <dataholder name="dh1190" class="DH_beamT" connect="dh1343" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1161191" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1192" class="DH_freqT" type="input"/> - <dataholder name="dh1193" class="DH_beamT" connect="dh1344" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1171194" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1195" class="DH_freqT" type="input"/> - <dataholder name="dh1196" class="DH_beamT" connect="dh1345" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1181197" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1198" class="DH_freqT" type="input"/> - <dataholder name="dh1199" class="DH_beamT" connect="dh1346" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1191200" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1201" class="DH_freqT" type="input"/> - <dataholder name="dh1202" class="DH_beamT" connect="dh1347" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1201203" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1204" class="DH_freqT" type="input"/> - <dataholder name="dh1205" class="DH_beamT" connect="dh1348" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1211206" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1207" class="DH_freqT" type="input"/> - <dataholder name="dh1208" class="DH_beamT" connect="dh1349" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1221209" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1210" class="DH_freqT" type="input"/> - <dataholder name="dh1211" class="DH_beamT" connect="dh1350" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1231212" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1213" class="DH_freqT" type="input"/> - <dataholder name="dh1214" class="DH_beamT" connect="dh1351" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1241215" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1216" class="DH_freqT" type="input"/> - <dataholder name="dh1217" class="DH_beamT" connect="dh1352" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1251218" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1219" class="DH_freqT" type="input"/> - <dataholder name="dh1220" class="DH_beamT" connect="dh1353" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1261221" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1222" class="DH_freqT" type="input"/> - <dataholder name="dh1223" class="DH_beamT" connect="dh1354" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1271224" node="node 2"> - <workholder class="WH_Beam"> - <dataholder name="dh1225" class="DH_freqT" type="input"/> - <dataholder name="dh1226" class="DH_beamT" connect="dh1355" type="output"/> - </workholder> - </step> - <step name="TransposeB_1371227" node="node 2"> - <workholder class="WH_TransB"> - <dataholder name="dh1228" class="DH_beamT" type="input"/> - <dataholder name="dh1229" class="DH_beamT" type="input"/> - <dataholder name="dh1230" class="DH_beamT" type="input"/> - <dataholder name="dh1231" class="DH_beamT" type="input"/> - <dataholder name="dh1232" class="DH_beamT" type="input"/> - <dataholder name="dh1233" class="DH_beamT" type="input"/> - <dataholder name="dh1234" class="DH_beamT" type="input"/> - <dataholder name="dh1235" class="DH_beamT" type="input"/> - <dataholder name="dh1236" class="DH_beamT" type="input"/> - <dataholder name="dh1237" class="DH_beamT" type="input"/> - <dataholder name="dh1238" class="DH_beamT" type="input"/> - <dataholder name="dh1239" class="DH_beamT" type="input"/> - <dataholder name="dh1240" class="DH_beamT" type="input"/> - <dataholder name="dh1241" class="DH_beamT" type="input"/> - <dataholder name="dh1242" class="DH_beamT" type="input"/> - <dataholder name="dh1243" class="DH_beamT" type="input"/> - <dataholder name="dh1244" class="DH_beamT" type="input"/> - <dataholder name="dh1245" class="DH_beamT" type="input"/> - <dataholder name="dh1246" class="DH_beamT" type="input"/> - <dataholder name="dh1247" class="DH_beamT" type="input"/> - <dataholder name="dh1248" class="DH_beamT" type="input"/> - <dataholder name="dh1249" class="DH_beamT" type="input"/> - <dataholder name="dh1250" class="DH_beamT" type="input"/> - <dataholder name="dh1251" class="DH_beamT" type="input"/> - <dataholder name="dh1252" class="DH_beamT" type="input"/> - <dataholder name="dh1253" class="DH_beamT" type="input"/> - <dataholder name="dh1254" class="DH_beamT" type="input"/> - <dataholder name="dh1255" class="DH_beamT" type="input"/> - <dataholder name="dh1256" class="DH_beamT" type="input"/> - <dataholder name="dh1257" class="DH_beamT" type="input"/> - <dataholder name="dh1258" class="DH_beamT" type="input"/> - <dataholder name="dh1259" class="DH_beamT" type="input"/> - <dataholder name="dh1260" class="DH_beamT" type="input"/> - <dataholder name="dh1261" class="DH_beamT" type="input"/> - <dataholder name="dh1262" class="DH_beamT" type="input"/> - <dataholder name="dh1263" class="DH_beamT" type="input"/> - <dataholder name="dh1264" class="DH_beamT" type="input"/> - <dataholder name="dh1265" class="DH_beamT" type="input"/> - <dataholder name="dh1266" class="DH_beamT" type="input"/> - <dataholder name="dh1267" class="DH_beamT" type="input"/> - <dataholder name="dh1268" class="DH_beamT" type="input"/> - <dataholder name="dh1269" class="DH_beamT" type="input"/> - <dataholder name="dh1270" class="DH_beamT" type="input"/> - <dataholder name="dh1271" class="DH_beamT" type="input"/> - <dataholder name="dh1272" class="DH_beamT" type="input"/> - <dataholder name="dh1273" class="DH_beamT" type="input"/> - <dataholder name="dh1274" class="DH_beamT" type="input"/> - <dataholder name="dh1275" class="DH_beamT" type="input"/> - <dataholder name="dh1276" class="DH_beamT" type="input"/> - <dataholder name="dh1277" class="DH_beamT" type="input"/> - <dataholder name="dh1278" class="DH_beamT" type="input"/> - <dataholder name="dh1279" class="DH_beamT" type="input"/> - <dataholder name="dh1280" class="DH_beamT" type="input"/> - <dataholder name="dh1281" class="DH_beamT" type="input"/> - <dataholder name="dh1282" class="DH_beamT" type="input"/> - <dataholder name="dh1283" class="DH_beamT" type="input"/> - <dataholder name="dh1284" class="DH_beamT" type="input"/> - <dataholder name="dh1285" class="DH_beamT" type="input"/> - <dataholder name="dh1286" class="DH_beamT" type="input"/> - <dataholder name="dh1287" class="DH_beamT" type="input"/> - <dataholder name="dh1288" class="DH_beamT" type="input"/> - <dataholder name="dh1289" class="DH_beamT" type="input"/> - <dataholder name="dh1290" class="DH_beamT" type="input"/> - <dataholder name="dh1291" class="DH_beamT" type="input"/> - <dataholder name="dh1292" class="DH_beamT" type="input"/> - <dataholder name="dh1293" class="DH_beamT" type="input"/> - <dataholder name="dh1294" class="DH_beamT" type="input"/> - <dataholder name="dh1295" class="DH_beamT" type="input"/> - <dataholder name="dh1296" class="DH_beamT" type="input"/> - <dataholder name="dh1297" class="DH_beamT" type="input"/> - <dataholder name="dh1298" class="DH_beamT" type="input"/> - <dataholder name="dh1299" class="DH_beamT" type="input"/> - <dataholder name="dh1300" class="DH_beamT" type="input"/> - <dataholder name="dh1301" class="DH_beamT" type="input"/> - <dataholder name="dh1302" class="DH_beamT" type="input"/> - <dataholder name="dh1303" class="DH_beamT" type="input"/> - <dataholder name="dh1304" class="DH_beamT" type="input"/> - <dataholder name="dh1305" class="DH_beamT" type="input"/> - <dataholder name="dh1306" class="DH_beamT" type="input"/> - <dataholder name="dh1307" class="DH_beamT" type="input"/> - <dataholder name="dh1308" class="DH_beamT" type="input"/> - <dataholder name="dh1309" class="DH_beamT" type="input"/> - <dataholder name="dh1310" class="DH_beamT" type="input"/> - <dataholder name="dh1311" class="DH_beamT" type="input"/> - <dataholder name="dh1312" class="DH_beamT" type="input"/> - <dataholder name="dh1313" class="DH_beamT" type="input"/> - <dataholder name="dh1314" class="DH_beamT" type="input"/> - <dataholder name="dh1315" class="DH_beamT" type="input"/> - <dataholder name="dh1316" class="DH_beamT" type="input"/> - <dataholder name="dh1317" class="DH_beamT" type="input"/> - <dataholder name="dh1318" class="DH_beamT" type="input"/> - <dataholder name="dh1319" class="DH_beamT" type="input"/> - <dataholder name="dh1320" class="DH_beamT" type="input"/> - <dataholder name="dh1321" class="DH_beamT" type="input"/> - <dataholder name="dh1322" class="DH_beamT" type="input"/> - <dataholder name="dh1323" class="DH_beamT" type="input"/> - <dataholder name="dh1324" class="DH_beamT" type="input"/> - <dataholder name="dh1325" class="DH_beamT" type="input"/> - <dataholder name="dh1326" class="DH_beamT" type="input"/> - <dataholder name="dh1327" class="DH_beamT" type="input"/> - <dataholder name="dh1328" class="DH_beamT" type="input"/> - <dataholder name="dh1329" class="DH_beamT" type="input"/> - <dataholder name="dh1330" class="DH_beamT" type="input"/> - <dataholder name="dh1331" class="DH_beamT" type="input"/> - <dataholder name="dh1332" class="DH_beamT" type="input"/> - <dataholder name="dh1333" class="DH_beamT" type="input"/> - <dataholder name="dh1334" class="DH_beamT" type="input"/> - <dataholder name="dh1335" class="DH_beamT" type="input"/> - <dataholder name="dh1336" class="DH_beamT" type="input"/> - <dataholder name="dh1337" class="DH_beamT" type="input"/> - <dataholder name="dh1338" class="DH_beamT" type="input"/> - <dataholder name="dh1339" class="DH_beamT" type="input"/> - <dataholder name="dh1340" class="DH_beamT" type="input"/> - <dataholder name="dh1341" class="DH_beamT" type="input"/> - <dataholder name="dh1342" class="DH_beamT" type="input"/> - <dataholder name="dh1343" class="DH_beamT" type="input"/> - <dataholder name="dh1344" class="DH_beamT" type="input"/> - <dataholder name="dh1345" class="DH_beamT" type="input"/> - <dataholder name="dh1346" class="DH_beamT" type="input"/> - <dataholder name="dh1347" class="DH_beamT" type="input"/> - <dataholder name="dh1348" class="DH_beamT" type="input"/> - <dataholder name="dh1349" class="DH_beamT" type="input"/> - <dataholder name="dh1350" class="DH_beamT" type="input"/> - <dataholder name="dh1351" class="DH_beamT" type="input"/> - <dataholder name="dh1352" class="DH_beamT" type="input"/> - <dataholder name="dh1353" class="DH_beamT" type="input"/> - <dataholder name="dh1354" class="DH_beamT" type="input"/> - <dataholder name="dh1355" class="DH_beamT" type="input"/> - <dataholder name="dh1356" class="DH_beam" connect="dh685" type="output"/> - </workholder> - </step> - </simul> - <simul name="Lofar_Station_21357" node="node 3"> - <workholder class="WH_Station"> - <dataholder name="dh1358" class="DH_Antenna" type="input"/> - <dataholder name="dh1359" class="DH_Antenna" type="input"/> - <dataholder name="dh1360" class="DH_Antenna" type="input"/> - <dataholder name="dh1361" class="DH_Antenna" type="input"/> - <dataholder name="dh1362" class="DH_beam" connect="dh2714" type="output"/> - </workholder> - <step name="Antenna_01363" node="node 3"> - <workholder class="WH_Antenna"> - <dataholder name="dh1364" class="DH_Antenna" type="input"/> - <dataholder name="dh1365" class="DH_Antenna" connect="dh1376" type="output"/> - </workholder> - </step> - <step name="Antenna_11366" node="node 3"> - <workholder class="WH_Antenna"> - <dataholder name="dh1367" class="DH_Antenna" type="input"/> - <dataholder name="dh1368" class="DH_Antenna" connect="dh1379" type="output"/> - </workholder> - </step> - <step name="Antenna_21369" node="node 3"> - <workholder class="WH_Antenna"> - <dataholder name="dh1370" class="DH_Antenna" type="input"/> - <dataholder name="dh1371" class="DH_Antenna" connect="dh1382" type="output"/> - </workholder> - </step> - <step name="Antenna_31372" node="node 3"> - <workholder class="WH_Antenna"> - <dataholder name="dh1373" class="DH_Antenna" type="input"/> - <dataholder name="dh1374" class="DH_Antenna" connect="dh1385" type="output"/> - </workholder> - </step> - <step name="FFT_01375" node="node 3"> - <workholder class="WH_FFT"> - <dataholder name="dh1376" class="DH_Antenna" type="input"/> - <dataholder name="dh1377" class="DH_freq" connect="dh1388" type="output"/> - </workholder> - </step> - <step name="FFT_11378" node="node 3"> - <workholder class="WH_FFT"> - <dataholder name="dh1379" class="DH_Antenna" type="input"/> - <dataholder name="dh1380" class="DH_freq" connect="dh1389" type="output"/> - </workholder> - </step> - <step name="FFT_21381" node="node 3"> - <workholder class="WH_FFT"> - <dataholder name="dh1382" class="DH_Antenna" type="input"/> - <dataholder name="dh1383" class="DH_freq" connect="dh1390" type="output"/> - </workholder> - </step> - <step name="FFT_31384" node="node 3"> - <workholder class="WH_FFT"> - <dataholder name="dh1385" class="DH_Antenna" type="input"/> - <dataholder name="dh1386" class="DH_freq" connect="dh1391" type="output"/> - </workholder> - </step> - <step name="TransposeF_2_81387" node="node 3"> - <workholder class="WH_TransF"> - <dataholder name="dh1388" class="DH_freq" type="input"/> - <dataholder name="dh1389" class="DH_freq" type="input"/> - <dataholder name="dh1390" class="DH_freq" type="input"/> - <dataholder name="dh1391" class="DH_freq" type="input"/> - <dataholder name="dh1392" class="DH_freqT" connect="dh1521" type="output"/> - <dataholder name="dh1393" class="DH_freqT" connect="dh1524" type="output"/> - <dataholder name="dh1394" class="DH_freqT" connect="dh1527" type="output"/> - <dataholder name="dh1395" class="DH_freqT" connect="dh1530" type="output"/> - <dataholder name="dh1396" class="DH_freqT" connect="dh1533" type="output"/> - <dataholder name="dh1397" class="DH_freqT" connect="dh1536" type="output"/> - <dataholder name="dh1398" class="DH_freqT" connect="dh1539" type="output"/> - <dataholder name="dh1399" class="DH_freqT" connect="dh1542" type="output"/> - <dataholder name="dh1400" class="DH_freqT" connect="dh1545" type="output"/> - <dataholder name="dh1401" class="DH_freqT" connect="dh1548" type="output"/> - <dataholder name="dh1402" class="DH_freqT" connect="dh1551" type="output"/> - <dataholder name="dh1403" class="DH_freqT" connect="dh1554" type="output"/> - <dataholder name="dh1404" class="DH_freqT" connect="dh1557" type="output"/> - <dataholder name="dh1405" class="DH_freqT" connect="dh1560" type="output"/> - <dataholder name="dh1406" class="DH_freqT" connect="dh1563" type="output"/> - <dataholder name="dh1407" class="DH_freqT" connect="dh1566" type="output"/> - <dataholder name="dh1408" class="DH_freqT" connect="dh1569" type="output"/> - <dataholder name="dh1409" class="DH_freqT" connect="dh1572" type="output"/> - <dataholder name="dh1410" class="DH_freqT" connect="dh1575" type="output"/> - <dataholder name="dh1411" class="DH_freqT" connect="dh1578" type="output"/> - <dataholder name="dh1412" class="DH_freqT" connect="dh1581" type="output"/> - <dataholder name="dh1413" class="DH_freqT" connect="dh1584" type="output"/> - <dataholder name="dh1414" class="DH_freqT" connect="dh1587" type="output"/> - <dataholder name="dh1415" class="DH_freqT" connect="dh1590" type="output"/> - <dataholder name="dh1416" class="DH_freqT" connect="dh1593" type="output"/> - <dataholder name="dh1417" class="DH_freqT" connect="dh1596" type="output"/> - <dataholder name="dh1418" class="DH_freqT" connect="dh1599" type="output"/> - <dataholder name="dh1419" class="DH_freqT" connect="dh1602" type="output"/> - <dataholder name="dh1420" class="DH_freqT" connect="dh1605" type="output"/> - <dataholder name="dh1421" class="DH_freqT" connect="dh1608" type="output"/> - <dataholder name="dh1422" class="DH_freqT" connect="dh1611" type="output"/> - <dataholder name="dh1423" class="DH_freqT" connect="dh1614" type="output"/> - <dataholder name="dh1424" class="DH_freqT" connect="dh1617" type="output"/> - <dataholder name="dh1425" class="DH_freqT" connect="dh1620" type="output"/> - <dataholder name="dh1426" class="DH_freqT" connect="dh1623" type="output"/> - <dataholder name="dh1427" class="DH_freqT" connect="dh1626" type="output"/> - <dataholder name="dh1428" class="DH_freqT" connect="dh1629" type="output"/> - <dataholder name="dh1429" class="DH_freqT" connect="dh1632" type="output"/> - <dataholder name="dh1430" class="DH_freqT" connect="dh1635" type="output"/> - <dataholder name="dh1431" class="DH_freqT" connect="dh1638" type="output"/> - <dataholder name="dh1432" class="DH_freqT" connect="dh1641" type="output"/> - <dataholder name="dh1433" class="DH_freqT" connect="dh1644" type="output"/> - <dataholder name="dh1434" class="DH_freqT" connect="dh1647" type="output"/> - <dataholder name="dh1435" class="DH_freqT" connect="dh1650" type="output"/> - <dataholder name="dh1436" class="DH_freqT" connect="dh1653" type="output"/> - <dataholder name="dh1437" class="DH_freqT" connect="dh1656" type="output"/> - <dataholder name="dh1438" class="DH_freqT" connect="dh1659" type="output"/> - <dataholder name="dh1439" class="DH_freqT" connect="dh1662" type="output"/> - <dataholder name="dh1440" class="DH_freqT" connect="dh1665" type="output"/> - <dataholder name="dh1441" class="DH_freqT" connect="dh1668" type="output"/> - <dataholder name="dh1442" class="DH_freqT" connect="dh1671" type="output"/> - <dataholder name="dh1443" class="DH_freqT" connect="dh1674" type="output"/> - <dataholder name="dh1444" class="DH_freqT" connect="dh1677" type="output"/> - <dataholder name="dh1445" class="DH_freqT" connect="dh1680" type="output"/> - <dataholder name="dh1446" class="DH_freqT" connect="dh1683" type="output"/> - <dataholder name="dh1447" class="DH_freqT" connect="dh1686" type="output"/> - <dataholder name="dh1448" class="DH_freqT" connect="dh1689" type="output"/> - <dataholder name="dh1449" class="DH_freqT" connect="dh1692" type="output"/> - <dataholder name="dh1450" class="DH_freqT" connect="dh1695" type="output"/> - <dataholder name="dh1451" class="DH_freqT" connect="dh1698" type="output"/> - <dataholder name="dh1452" class="DH_freqT" connect="dh1701" type="output"/> - <dataholder name="dh1453" class="DH_freqT" connect="dh1704" type="output"/> - <dataholder name="dh1454" class="DH_freqT" connect="dh1707" type="output"/> - <dataholder name="dh1455" class="DH_freqT" connect="dh1710" type="output"/> - <dataholder name="dh1456" class="DH_freqT" connect="dh1713" type="output"/> - <dataholder name="dh1457" class="DH_freqT" connect="dh1716" type="output"/> - <dataholder name="dh1458" class="DH_freqT" connect="dh1719" type="output"/> - <dataholder name="dh1459" class="DH_freqT" connect="dh1722" type="output"/> - <dataholder name="dh1460" class="DH_freqT" connect="dh1725" type="output"/> - <dataholder name="dh1461" class="DH_freqT" connect="dh1728" type="output"/> - <dataholder name="dh1462" class="DH_freqT" connect="dh1731" type="output"/> - <dataholder name="dh1463" class="DH_freqT" connect="dh1734" type="output"/> - <dataholder name="dh1464" class="DH_freqT" connect="dh1737" type="output"/> - <dataholder name="dh1465" class="DH_freqT" connect="dh1740" type="output"/> - <dataholder name="dh1466" class="DH_freqT" connect="dh1743" type="output"/> - <dataholder name="dh1467" class="DH_freqT" connect="dh1746" type="output"/> - <dataholder name="dh1468" class="DH_freqT" connect="dh1749" type="output"/> - <dataholder name="dh1469" class="DH_freqT" connect="dh1752" type="output"/> - <dataholder name="dh1470" class="DH_freqT" connect="dh1755" type="output"/> - <dataholder name="dh1471" class="DH_freqT" connect="dh1758" type="output"/> - <dataholder name="dh1472" class="DH_freqT" connect="dh1761" type="output"/> - <dataholder name="dh1473" class="DH_freqT" connect="dh1764" type="output"/> - <dataholder name="dh1474" class="DH_freqT" connect="dh1767" type="output"/> - <dataholder name="dh1475" class="DH_freqT" connect="dh1770" type="output"/> - <dataholder name="dh1476" class="DH_freqT" connect="dh1773" type="output"/> - <dataholder name="dh1477" class="DH_freqT" connect="dh1776" type="output"/> - <dataholder name="dh1478" class="DH_freqT" connect="dh1779" type="output"/> - <dataholder name="dh1479" class="DH_freqT" connect="dh1782" type="output"/> - <dataholder name="dh1480" class="DH_freqT" connect="dh1785" type="output"/> - <dataholder name="dh1481" class="DH_freqT" connect="dh1788" type="output"/> - <dataholder name="dh1482" class="DH_freqT" connect="dh1791" type="output"/> - <dataholder name="dh1483" class="DH_freqT" connect="dh1794" type="output"/> - <dataholder name="dh1484" class="DH_freqT" connect="dh1797" type="output"/> - <dataholder name="dh1485" class="DH_freqT" connect="dh1800" type="output"/> - <dataholder name="dh1486" class="DH_freqT" connect="dh1803" type="output"/> - <dataholder name="dh1487" class="DH_freqT" connect="dh1806" type="output"/> - <dataholder name="dh1488" class="DH_freqT" connect="dh1809" type="output"/> - <dataholder name="dh1489" class="DH_freqT" connect="dh1812" type="output"/> - <dataholder name="dh1490" class="DH_freqT" connect="dh1815" type="output"/> - <dataholder name="dh1491" class="DH_freqT" connect="dh1818" type="output"/> - <dataholder name="dh1492" class="DH_freqT" connect="dh1821" type="output"/> - <dataholder name="dh1493" class="DH_freqT" connect="dh1824" type="output"/> - <dataholder name="dh1494" class="DH_freqT" connect="dh1827" type="output"/> - <dataholder name="dh1495" class="DH_freqT" connect="dh1830" type="output"/> - <dataholder name="dh1496" class="DH_freqT" connect="dh1833" type="output"/> - <dataholder name="dh1497" class="DH_freqT" connect="dh1836" type="output"/> - <dataholder name="dh1498" class="DH_freqT" connect="dh1839" type="output"/> - <dataholder name="dh1499" class="DH_freqT" connect="dh1842" type="output"/> - <dataholder name="dh1500" class="DH_freqT" connect="dh1845" type="output"/> - <dataholder name="dh1501" class="DH_freqT" connect="dh1848" type="output"/> - <dataholder name="dh1502" class="DH_freqT" connect="dh1851" type="output"/> - <dataholder name="dh1503" class="DH_freqT" connect="dh1854" type="output"/> - <dataholder name="dh1504" class="DH_freqT" connect="dh1857" type="output"/> - <dataholder name="dh1505" class="DH_freqT" connect="dh1860" type="output"/> - <dataholder name="dh1506" class="DH_freqT" connect="dh1863" type="output"/> - <dataholder name="dh1507" class="DH_freqT" connect="dh1866" type="output"/> - <dataholder name="dh1508" class="DH_freqT" connect="dh1869" type="output"/> - <dataholder name="dh1509" class="DH_freqT" connect="dh1872" type="output"/> - <dataholder name="dh1510" class="DH_freqT" connect="dh1875" type="output"/> - <dataholder name="dh1511" class="DH_freqT" connect="dh1878" type="output"/> - <dataholder name="dh1512" class="DH_freqT" connect="dh1881" type="output"/> - <dataholder name="dh1513" class="DH_freqT" connect="dh1884" type="output"/> - <dataholder name="dh1514" class="DH_freqT" connect="dh1887" type="output"/> - <dataholder name="dh1515" class="DH_freqT" connect="dh1890" type="output"/> - <dataholder name="dh1516" class="DH_freqT" connect="dh1893" type="output"/> - <dataholder name="dh1517" class="DH_freqT" connect="dh1896" type="output"/> - <dataholder name="dh1518" class="DH_freqT" connect="dh1899" type="output"/> - <dataholder name="dh1519" class="DH_freqT" connect="dh1902" type="output"/> - </workholder> - </step> - <step name="BeamFormer_01520" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1521" class="DH_freqT" type="input"/> - <dataholder name="dh1522" class="DH_beamT" connect="dh1905" type="output"/> - </workholder> - </step> - <step name="BeamFormer_11523" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1524" class="DH_freqT" type="input"/> - <dataholder name="dh1525" class="DH_beamT" connect="dh1906" type="output"/> - </workholder> - </step> - <step name="BeamFormer_21526" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1527" class="DH_freqT" type="input"/> - <dataholder name="dh1528" class="DH_beamT" connect="dh1907" type="output"/> - </workholder> - </step> - <step name="BeamFormer_31529" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1530" class="DH_freqT" type="input"/> - <dataholder name="dh1531" class="DH_beamT" connect="dh1908" type="output"/> - </workholder> - </step> - <step name="BeamFormer_41532" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1533" class="DH_freqT" type="input"/> - <dataholder name="dh1534" class="DH_beamT" connect="dh1909" type="output"/> - </workholder> - </step> - <step name="BeamFormer_51535" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1536" class="DH_freqT" type="input"/> - <dataholder name="dh1537" class="DH_beamT" connect="dh1910" type="output"/> - </workholder> - </step> - <step name="BeamFormer_61538" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1539" class="DH_freqT" type="input"/> - <dataholder name="dh1540" class="DH_beamT" connect="dh1911" type="output"/> - </workholder> - </step> - <step name="BeamFormer_71541" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1542" class="DH_freqT" type="input"/> - <dataholder name="dh1543" class="DH_beamT" connect="dh1912" type="output"/> - </workholder> - </step> - <step name="BeamFormer_81544" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1545" class="DH_freqT" type="input"/> - <dataholder name="dh1546" class="DH_beamT" connect="dh1913" type="output"/> - </workholder> - </step> - <step name="BeamFormer_91547" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1548" class="DH_freqT" type="input"/> - <dataholder name="dh1549" class="DH_beamT" connect="dh1914" type="output"/> - </workholder> - </step> - <step name="BeamFormer_101550" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1551" class="DH_freqT" type="input"/> - <dataholder name="dh1552" class="DH_beamT" connect="dh1915" type="output"/> - </workholder> - </step> - <step name="BeamFormer_111553" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1554" class="DH_freqT" type="input"/> - <dataholder name="dh1555" class="DH_beamT" connect="dh1916" type="output"/> - </workholder> - </step> - <step name="BeamFormer_121556" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1557" class="DH_freqT" type="input"/> - <dataholder name="dh1558" class="DH_beamT" connect="dh1917" type="output"/> - </workholder> - </step> - <step name="BeamFormer_131559" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1560" class="DH_freqT" type="input"/> - <dataholder name="dh1561" class="DH_beamT" connect="dh1918" type="output"/> - </workholder> - </step> - <step name="BeamFormer_141562" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1563" class="DH_freqT" type="input"/> - <dataholder name="dh1564" class="DH_beamT" connect="dh1919" type="output"/> - </workholder> - </step> - <step name="BeamFormer_151565" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1566" class="DH_freqT" type="input"/> - <dataholder name="dh1567" class="DH_beamT" connect="dh1920" type="output"/> - </workholder> - </step> - <step name="BeamFormer_161568" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1569" class="DH_freqT" type="input"/> - <dataholder name="dh1570" class="DH_beamT" connect="dh1921" type="output"/> - </workholder> - </step> - <step name="BeamFormer_171571" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1572" class="DH_freqT" type="input"/> - <dataholder name="dh1573" class="DH_beamT" connect="dh1922" type="output"/> - </workholder> - </step> - <step name="BeamFormer_181574" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1575" class="DH_freqT" type="input"/> - <dataholder name="dh1576" class="DH_beamT" connect="dh1923" type="output"/> - </workholder> - </step> - <step name="BeamFormer_191577" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1578" class="DH_freqT" type="input"/> - <dataholder name="dh1579" class="DH_beamT" connect="dh1924" type="output"/> - </workholder> - </step> - <step name="BeamFormer_201580" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1581" class="DH_freqT" type="input"/> - <dataholder name="dh1582" class="DH_beamT" connect="dh1925" type="output"/> - </workholder> - </step> - <step name="BeamFormer_211583" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1584" class="DH_freqT" type="input"/> - <dataholder name="dh1585" class="DH_beamT" connect="dh1926" type="output"/> - </workholder> - </step> - <step name="BeamFormer_221586" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1587" class="DH_freqT" type="input"/> - <dataholder name="dh1588" class="DH_beamT" connect="dh1927" type="output"/> - </workholder> - </step> - <step name="BeamFormer_231589" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1590" class="DH_freqT" type="input"/> - <dataholder name="dh1591" class="DH_beamT" connect="dh1928" type="output"/> - </workholder> - </step> - <step name="BeamFormer_241592" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1593" class="DH_freqT" type="input"/> - <dataholder name="dh1594" class="DH_beamT" connect="dh1929" type="output"/> - </workholder> - </step> - <step name="BeamFormer_251595" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1596" class="DH_freqT" type="input"/> - <dataholder name="dh1597" class="DH_beamT" connect="dh1930" type="output"/> - </workholder> - </step> - <step name="BeamFormer_261598" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1599" class="DH_freqT" type="input"/> - <dataholder name="dh1600" class="DH_beamT" connect="dh1931" type="output"/> - </workholder> - </step> - <step name="BeamFormer_271601" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1602" class="DH_freqT" type="input"/> - <dataholder name="dh1603" class="DH_beamT" connect="dh1932" type="output"/> - </workholder> - </step> - <step name="BeamFormer_281604" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1605" class="DH_freqT" type="input"/> - <dataholder name="dh1606" class="DH_beamT" connect="dh1933" type="output"/> - </workholder> - </step> - <step name="BeamFormer_291607" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1608" class="DH_freqT" type="input"/> - <dataholder name="dh1609" class="DH_beamT" connect="dh1934" type="output"/> - </workholder> - </step> - <step name="BeamFormer_301610" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1611" class="DH_freqT" type="input"/> - <dataholder name="dh1612" class="DH_beamT" connect="dh1935" type="output"/> - </workholder> - </step> - <step name="BeamFormer_311613" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1614" class="DH_freqT" type="input"/> - <dataholder name="dh1615" class="DH_beamT" connect="dh1936" type="output"/> - </workholder> - </step> - <step name="BeamFormer_321616" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1617" class="DH_freqT" type="input"/> - <dataholder name="dh1618" class="DH_beamT" connect="dh1937" type="output"/> - </workholder> - </step> - <step name="BeamFormer_331619" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1620" class="DH_freqT" type="input"/> - <dataholder name="dh1621" class="DH_beamT" connect="dh1938" type="output"/> - </workholder> - </step> - <step name="BeamFormer_341622" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1623" class="DH_freqT" type="input"/> - <dataholder name="dh1624" class="DH_beamT" connect="dh1939" type="output"/> - </workholder> - </step> - <step name="BeamFormer_351625" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1626" class="DH_freqT" type="input"/> - <dataholder name="dh1627" class="DH_beamT" connect="dh1940" type="output"/> - </workholder> - </step> - <step name="BeamFormer_361628" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1629" class="DH_freqT" type="input"/> - <dataholder name="dh1630" class="DH_beamT" connect="dh1941" type="output"/> - </workholder> - </step> - <step name="BeamFormer_371631" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1632" class="DH_freqT" type="input"/> - <dataholder name="dh1633" class="DH_beamT" connect="dh1942" type="output"/> - </workholder> - </step> - <step name="BeamFormer_381634" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1635" class="DH_freqT" type="input"/> - <dataholder name="dh1636" class="DH_beamT" connect="dh1943" type="output"/> - </workholder> - </step> - <step name="BeamFormer_391637" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1638" class="DH_freqT" type="input"/> - <dataholder name="dh1639" class="DH_beamT" connect="dh1944" type="output"/> - </workholder> - </step> - <step name="BeamFormer_401640" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1641" class="DH_freqT" type="input"/> - <dataholder name="dh1642" class="DH_beamT" connect="dh1945" type="output"/> - </workholder> - </step> - <step name="BeamFormer_411643" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1644" class="DH_freqT" type="input"/> - <dataholder name="dh1645" class="DH_beamT" connect="dh1946" type="output"/> - </workholder> - </step> - <step name="BeamFormer_421646" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1647" class="DH_freqT" type="input"/> - <dataholder name="dh1648" class="DH_beamT" connect="dh1947" type="output"/> - </workholder> - </step> - <step name="BeamFormer_431649" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1650" class="DH_freqT" type="input"/> - <dataholder name="dh1651" class="DH_beamT" connect="dh1948" type="output"/> - </workholder> - </step> - <step name="BeamFormer_441652" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1653" class="DH_freqT" type="input"/> - <dataholder name="dh1654" class="DH_beamT" connect="dh1949" type="output"/> - </workholder> - </step> - <step name="BeamFormer_451655" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1656" class="DH_freqT" type="input"/> - <dataholder name="dh1657" class="DH_beamT" connect="dh1950" type="output"/> - </workholder> - </step> - <step name="BeamFormer_461658" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1659" class="DH_freqT" type="input"/> - <dataholder name="dh1660" class="DH_beamT" connect="dh1951" type="output"/> - </workholder> - </step> - <step name="BeamFormer_471661" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1662" class="DH_freqT" type="input"/> - <dataholder name="dh1663" class="DH_beamT" connect="dh1952" type="output"/> - </workholder> - </step> - <step name="BeamFormer_481664" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1665" class="DH_freqT" type="input"/> - <dataholder name="dh1666" class="DH_beamT" connect="dh1953" type="output"/> - </workholder> - </step> - <step name="BeamFormer_491667" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1668" class="DH_freqT" type="input"/> - <dataholder name="dh1669" class="DH_beamT" connect="dh1954" type="output"/> - </workholder> - </step> - <step name="BeamFormer_501670" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1671" class="DH_freqT" type="input"/> - <dataholder name="dh1672" class="DH_beamT" connect="dh1955" type="output"/> - </workholder> - </step> - <step name="BeamFormer_511673" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1674" class="DH_freqT" type="input"/> - <dataholder name="dh1675" class="DH_beamT" connect="dh1956" type="output"/> - </workholder> - </step> - <step name="BeamFormer_521676" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1677" class="DH_freqT" type="input"/> - <dataholder name="dh1678" class="DH_beamT" connect="dh1957" type="output"/> - </workholder> - </step> - <step name="BeamFormer_531679" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1680" class="DH_freqT" type="input"/> - <dataholder name="dh1681" class="DH_beamT" connect="dh1958" type="output"/> - </workholder> - </step> - <step name="BeamFormer_541682" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1683" class="DH_freqT" type="input"/> - <dataholder name="dh1684" class="DH_beamT" connect="dh1959" type="output"/> - </workholder> - </step> - <step name="BeamFormer_551685" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1686" class="DH_freqT" type="input"/> - <dataholder name="dh1687" class="DH_beamT" connect="dh1960" type="output"/> - </workholder> - </step> - <step name="BeamFormer_561688" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1689" class="DH_freqT" type="input"/> - <dataholder name="dh1690" class="DH_beamT" connect="dh1961" type="output"/> - </workholder> - </step> - <step name="BeamFormer_571691" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1692" class="DH_freqT" type="input"/> - <dataholder name="dh1693" class="DH_beamT" connect="dh1962" type="output"/> - </workholder> - </step> - <step name="BeamFormer_581694" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1695" class="DH_freqT" type="input"/> - <dataholder name="dh1696" class="DH_beamT" connect="dh1963" type="output"/> - </workholder> - </step> - <step name="BeamFormer_591697" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1698" class="DH_freqT" type="input"/> - <dataholder name="dh1699" class="DH_beamT" connect="dh1964" type="output"/> - </workholder> - </step> - <step name="BeamFormer_601700" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1701" class="DH_freqT" type="input"/> - <dataholder name="dh1702" class="DH_beamT" connect="dh1965" type="output"/> - </workholder> - </step> - <step name="BeamFormer_611703" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1704" class="DH_freqT" type="input"/> - <dataholder name="dh1705" class="DH_beamT" connect="dh1966" type="output"/> - </workholder> - </step> - <step name="BeamFormer_621706" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1707" class="DH_freqT" type="input"/> - <dataholder name="dh1708" class="DH_beamT" connect="dh1967" type="output"/> - </workholder> - </step> - <step name="BeamFormer_631709" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1710" class="DH_freqT" type="input"/> - <dataholder name="dh1711" class="DH_beamT" connect="dh1968" type="output"/> - </workholder> - </step> - <step name="BeamFormer_641712" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1713" class="DH_freqT" type="input"/> - <dataholder name="dh1714" class="DH_beamT" connect="dh1969" type="output"/> - </workholder> - </step> - <step name="BeamFormer_651715" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1716" class="DH_freqT" type="input"/> - <dataholder name="dh1717" class="DH_beamT" connect="dh1970" type="output"/> - </workholder> - </step> - <step name="BeamFormer_661718" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1719" class="DH_freqT" type="input"/> - <dataholder name="dh1720" class="DH_beamT" connect="dh1971" type="output"/> - </workholder> - </step> - <step name="BeamFormer_671721" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1722" class="DH_freqT" type="input"/> - <dataholder name="dh1723" class="DH_beamT" connect="dh1972" type="output"/> - </workholder> - </step> - <step name="BeamFormer_681724" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1725" class="DH_freqT" type="input"/> - <dataholder name="dh1726" class="DH_beamT" connect="dh1973" type="output"/> - </workholder> - </step> - <step name="BeamFormer_691727" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1728" class="DH_freqT" type="input"/> - <dataholder name="dh1729" class="DH_beamT" connect="dh1974" type="output"/> - </workholder> - </step> - <step name="BeamFormer_701730" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1731" class="DH_freqT" type="input"/> - <dataholder name="dh1732" class="DH_beamT" connect="dh1975" type="output"/> - </workholder> - </step> - <step name="BeamFormer_711733" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1734" class="DH_freqT" type="input"/> - <dataholder name="dh1735" class="DH_beamT" connect="dh1976" type="output"/> - </workholder> - </step> - <step name="BeamFormer_721736" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1737" class="DH_freqT" type="input"/> - <dataholder name="dh1738" class="DH_beamT" connect="dh1977" type="output"/> - </workholder> - </step> - <step name="BeamFormer_731739" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1740" class="DH_freqT" type="input"/> - <dataholder name="dh1741" class="DH_beamT" connect="dh1978" type="output"/> - </workholder> - </step> - <step name="BeamFormer_741742" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1743" class="DH_freqT" type="input"/> - <dataholder name="dh1744" class="DH_beamT" connect="dh1979" type="output"/> - </workholder> - </step> - <step name="BeamFormer_751745" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1746" class="DH_freqT" type="input"/> - <dataholder name="dh1747" class="DH_beamT" connect="dh1980" type="output"/> - </workholder> - </step> - <step name="BeamFormer_761748" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1749" class="DH_freqT" type="input"/> - <dataholder name="dh1750" class="DH_beamT" connect="dh1981" type="output"/> - </workholder> - </step> - <step name="BeamFormer_771751" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1752" class="DH_freqT" type="input"/> - <dataholder name="dh1753" class="DH_beamT" connect="dh1982" type="output"/> - </workholder> - </step> - <step name="BeamFormer_781754" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1755" class="DH_freqT" type="input"/> - <dataholder name="dh1756" class="DH_beamT" connect="dh1983" type="output"/> - </workholder> - </step> - <step name="BeamFormer_791757" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1758" class="DH_freqT" type="input"/> - <dataholder name="dh1759" class="DH_beamT" connect="dh1984" type="output"/> - </workholder> - </step> - <step name="BeamFormer_801760" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1761" class="DH_freqT" type="input"/> - <dataholder name="dh1762" class="DH_beamT" connect="dh1985" type="output"/> - </workholder> - </step> - <step name="BeamFormer_811763" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1764" class="DH_freqT" type="input"/> - <dataholder name="dh1765" class="DH_beamT" connect="dh1986" type="output"/> - </workholder> - </step> - <step name="BeamFormer_821766" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1767" class="DH_freqT" type="input"/> - <dataholder name="dh1768" class="DH_beamT" connect="dh1987" type="output"/> - </workholder> - </step> - <step name="BeamFormer_831769" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1770" class="DH_freqT" type="input"/> - <dataholder name="dh1771" class="DH_beamT" connect="dh1988" type="output"/> - </workholder> - </step> - <step name="BeamFormer_841772" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1773" class="DH_freqT" type="input"/> - <dataholder name="dh1774" class="DH_beamT" connect="dh1989" type="output"/> - </workholder> - </step> - <step name="BeamFormer_851775" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1776" class="DH_freqT" type="input"/> - <dataholder name="dh1777" class="DH_beamT" connect="dh1990" type="output"/> - </workholder> - </step> - <step name="BeamFormer_861778" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1779" class="DH_freqT" type="input"/> - <dataholder name="dh1780" class="DH_beamT" connect="dh1991" type="output"/> - </workholder> - </step> - <step name="BeamFormer_871781" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1782" class="DH_freqT" type="input"/> - <dataholder name="dh1783" class="DH_beamT" connect="dh1992" type="output"/> - </workholder> - </step> - <step name="BeamFormer_881784" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1785" class="DH_freqT" type="input"/> - <dataholder name="dh1786" class="DH_beamT" connect="dh1993" type="output"/> - </workholder> - </step> - <step name="BeamFormer_891787" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1788" class="DH_freqT" type="input"/> - <dataholder name="dh1789" class="DH_beamT" connect="dh1994" type="output"/> - </workholder> - </step> - <step name="BeamFormer_901790" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1791" class="DH_freqT" type="input"/> - <dataholder name="dh1792" class="DH_beamT" connect="dh1995" type="output"/> - </workholder> - </step> - <step name="BeamFormer_911793" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1794" class="DH_freqT" type="input"/> - <dataholder name="dh1795" class="DH_beamT" connect="dh1996" type="output"/> - </workholder> - </step> - <step name="BeamFormer_921796" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1797" class="DH_freqT" type="input"/> - <dataholder name="dh1798" class="DH_beamT" connect="dh1997" type="output"/> - </workholder> - </step> - <step name="BeamFormer_931799" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1800" class="DH_freqT" type="input"/> - <dataholder name="dh1801" class="DH_beamT" connect="dh1998" type="output"/> - </workholder> - </step> - <step name="BeamFormer_941802" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1803" class="DH_freqT" type="input"/> - <dataholder name="dh1804" class="DH_beamT" connect="dh1999" type="output"/> - </workholder> - </step> - <step name="BeamFormer_951805" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1806" class="DH_freqT" type="input"/> - <dataholder name="dh1807" class="DH_beamT" connect="dh2000" type="output"/> - </workholder> - </step> - <step name="BeamFormer_961808" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1809" class="DH_freqT" type="input"/> - <dataholder name="dh1810" class="DH_beamT" connect="dh2001" type="output"/> - </workholder> - </step> - <step name="BeamFormer_971811" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1812" class="DH_freqT" type="input"/> - <dataholder name="dh1813" class="DH_beamT" connect="dh2002" type="output"/> - </workholder> - </step> - <step name="BeamFormer_981814" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1815" class="DH_freqT" type="input"/> - <dataholder name="dh1816" class="DH_beamT" connect="dh2003" type="output"/> - </workholder> - </step> - <step name="BeamFormer_991817" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1818" class="DH_freqT" type="input"/> - <dataholder name="dh1819" class="DH_beamT" connect="dh2004" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1001820" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1821" class="DH_freqT" type="input"/> - <dataholder name="dh1822" class="DH_beamT" connect="dh2005" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1011823" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1824" class="DH_freqT" type="input"/> - <dataholder name="dh1825" class="DH_beamT" connect="dh2006" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1021826" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1827" class="DH_freqT" type="input"/> - <dataholder name="dh1828" class="DH_beamT" connect="dh2007" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1031829" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1830" class="DH_freqT" type="input"/> - <dataholder name="dh1831" class="DH_beamT" connect="dh2008" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1041832" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1833" class="DH_freqT" type="input"/> - <dataholder name="dh1834" class="DH_beamT" connect="dh2009" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1051835" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1836" class="DH_freqT" type="input"/> - <dataholder name="dh1837" class="DH_beamT" connect="dh2010" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1061838" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1839" class="DH_freqT" type="input"/> - <dataholder name="dh1840" class="DH_beamT" connect="dh2011" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1071841" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1842" class="DH_freqT" type="input"/> - <dataholder name="dh1843" class="DH_beamT" connect="dh2012" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1081844" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1845" class="DH_freqT" type="input"/> - <dataholder name="dh1846" class="DH_beamT" connect="dh2013" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1091847" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1848" class="DH_freqT" type="input"/> - <dataholder name="dh1849" class="DH_beamT" connect="dh2014" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1101850" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1851" class="DH_freqT" type="input"/> - <dataholder name="dh1852" class="DH_beamT" connect="dh2015" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1111853" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1854" class="DH_freqT" type="input"/> - <dataholder name="dh1855" class="DH_beamT" connect="dh2016" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1121856" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1857" class="DH_freqT" type="input"/> - <dataholder name="dh1858" class="DH_beamT" connect="dh2017" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1131859" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1860" class="DH_freqT" type="input"/> - <dataholder name="dh1861" class="DH_beamT" connect="dh2018" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1141862" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1863" class="DH_freqT" type="input"/> - <dataholder name="dh1864" class="DH_beamT" connect="dh2019" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1151865" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1866" class="DH_freqT" type="input"/> - <dataholder name="dh1867" class="DH_beamT" connect="dh2020" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1161868" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1869" class="DH_freqT" type="input"/> - <dataholder name="dh1870" class="DH_beamT" connect="dh2021" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1171871" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1872" class="DH_freqT" type="input"/> - <dataholder name="dh1873" class="DH_beamT" connect="dh2022" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1181874" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1875" class="DH_freqT" type="input"/> - <dataholder name="dh1876" class="DH_beamT" connect="dh2023" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1191877" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1878" class="DH_freqT" type="input"/> - <dataholder name="dh1879" class="DH_beamT" connect="dh2024" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1201880" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1881" class="DH_freqT" type="input"/> - <dataholder name="dh1882" class="DH_beamT" connect="dh2025" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1211883" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1884" class="DH_freqT" type="input"/> - <dataholder name="dh1885" class="DH_beamT" connect="dh2026" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1221886" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1887" class="DH_freqT" type="input"/> - <dataholder name="dh1888" class="DH_beamT" connect="dh2027" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1231889" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1890" class="DH_freqT" type="input"/> - <dataholder name="dh1891" class="DH_beamT" connect="dh2028" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1241892" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1893" class="DH_freqT" type="input"/> - <dataholder name="dh1894" class="DH_beamT" connect="dh2029" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1251895" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1896" class="DH_freqT" type="input"/> - <dataholder name="dh1897" class="DH_beamT" connect="dh2030" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1261898" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1899" class="DH_freqT" type="input"/> - <dataholder name="dh1900" class="DH_beamT" connect="dh2031" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1271901" node="node 3"> - <workholder class="WH_Beam"> - <dataholder name="dh1902" class="DH_freqT" type="input"/> - <dataholder name="dh1903" class="DH_beamT" connect="dh2032" type="output"/> - </workholder> - </step> - <step name="TransposeB_1371904" node="node 3"> - <workholder class="WH_TransB"> - <dataholder name="dh1905" class="DH_beamT" type="input"/> - <dataholder name="dh1906" class="DH_beamT" type="input"/> - <dataholder name="dh1907" class="DH_beamT" type="input"/> - <dataholder name="dh1908" class="DH_beamT" type="input"/> - <dataholder name="dh1909" class="DH_beamT" type="input"/> - <dataholder name="dh1910" class="DH_beamT" type="input"/> - <dataholder name="dh1911" class="DH_beamT" type="input"/> - <dataholder name="dh1912" class="DH_beamT" type="input"/> - <dataholder name="dh1913" class="DH_beamT" type="input"/> - <dataholder name="dh1914" class="DH_beamT" type="input"/> - <dataholder name="dh1915" class="DH_beamT" type="input"/> - <dataholder name="dh1916" class="DH_beamT" type="input"/> - <dataholder name="dh1917" class="DH_beamT" type="input"/> - <dataholder name="dh1918" class="DH_beamT" type="input"/> - <dataholder name="dh1919" class="DH_beamT" type="input"/> - <dataholder name="dh1920" class="DH_beamT" type="input"/> - <dataholder name="dh1921" class="DH_beamT" type="input"/> - <dataholder name="dh1922" class="DH_beamT" type="input"/> - <dataholder name="dh1923" class="DH_beamT" type="input"/> - <dataholder name="dh1924" class="DH_beamT" type="input"/> - <dataholder name="dh1925" class="DH_beamT" type="input"/> - <dataholder name="dh1926" class="DH_beamT" type="input"/> - <dataholder name="dh1927" class="DH_beamT" type="input"/> - <dataholder name="dh1928" class="DH_beamT" type="input"/> - <dataholder name="dh1929" class="DH_beamT" type="input"/> - <dataholder name="dh1930" class="DH_beamT" type="input"/> - <dataholder name="dh1931" class="DH_beamT" type="input"/> - <dataholder name="dh1932" class="DH_beamT" type="input"/> - <dataholder name="dh1933" class="DH_beamT" type="input"/> - <dataholder name="dh1934" class="DH_beamT" type="input"/> - <dataholder name="dh1935" class="DH_beamT" type="input"/> - <dataholder name="dh1936" class="DH_beamT" type="input"/> - <dataholder name="dh1937" class="DH_beamT" type="input"/> - <dataholder name="dh1938" class="DH_beamT" type="input"/> - <dataholder name="dh1939" class="DH_beamT" type="input"/> - <dataholder name="dh1940" class="DH_beamT" type="input"/> - <dataholder name="dh1941" class="DH_beamT" type="input"/> - <dataholder name="dh1942" class="DH_beamT" type="input"/> - <dataholder name="dh1943" class="DH_beamT" type="input"/> - <dataholder name="dh1944" class="DH_beamT" type="input"/> - <dataholder name="dh1945" class="DH_beamT" type="input"/> - <dataholder name="dh1946" class="DH_beamT" type="input"/> - <dataholder name="dh1947" class="DH_beamT" type="input"/> - <dataholder name="dh1948" class="DH_beamT" type="input"/> - <dataholder name="dh1949" class="DH_beamT" type="input"/> - <dataholder name="dh1950" class="DH_beamT" type="input"/> - <dataholder name="dh1951" class="DH_beamT" type="input"/> - <dataholder name="dh1952" class="DH_beamT" type="input"/> - <dataholder name="dh1953" class="DH_beamT" type="input"/> - <dataholder name="dh1954" class="DH_beamT" type="input"/> - <dataholder name="dh1955" class="DH_beamT" type="input"/> - <dataholder name="dh1956" class="DH_beamT" type="input"/> - <dataholder name="dh1957" class="DH_beamT" type="input"/> - <dataholder name="dh1958" class="DH_beamT" type="input"/> - <dataholder name="dh1959" class="DH_beamT" type="input"/> - <dataholder name="dh1960" class="DH_beamT" type="input"/> - <dataholder name="dh1961" class="DH_beamT" type="input"/> - <dataholder name="dh1962" class="DH_beamT" type="input"/> - <dataholder name="dh1963" class="DH_beamT" type="input"/> - <dataholder name="dh1964" class="DH_beamT" type="input"/> - <dataholder name="dh1965" class="DH_beamT" type="input"/> - <dataholder name="dh1966" class="DH_beamT" type="input"/> - <dataholder name="dh1967" class="DH_beamT" type="input"/> - <dataholder name="dh1968" class="DH_beamT" type="input"/> - <dataholder name="dh1969" class="DH_beamT" type="input"/> - <dataholder name="dh1970" class="DH_beamT" type="input"/> - <dataholder name="dh1971" class="DH_beamT" type="input"/> - <dataholder name="dh1972" class="DH_beamT" type="input"/> - <dataholder name="dh1973" class="DH_beamT" type="input"/> - <dataholder name="dh1974" class="DH_beamT" type="input"/> - <dataholder name="dh1975" class="DH_beamT" type="input"/> - <dataholder name="dh1976" class="DH_beamT" type="input"/> - <dataholder name="dh1977" class="DH_beamT" type="input"/> - <dataholder name="dh1978" class="DH_beamT" type="input"/> - <dataholder name="dh1979" class="DH_beamT" type="input"/> - <dataholder name="dh1980" class="DH_beamT" type="input"/> - <dataholder name="dh1981" class="DH_beamT" type="input"/> - <dataholder name="dh1982" class="DH_beamT" type="input"/> - <dataholder name="dh1983" class="DH_beamT" type="input"/> - <dataholder name="dh1984" class="DH_beamT" type="input"/> - <dataholder name="dh1985" class="DH_beamT" type="input"/> - <dataholder name="dh1986" class="DH_beamT" type="input"/> - <dataholder name="dh1987" class="DH_beamT" type="input"/> - <dataholder name="dh1988" class="DH_beamT" type="input"/> - <dataholder name="dh1989" class="DH_beamT" type="input"/> - <dataholder name="dh1990" class="DH_beamT" type="input"/> - <dataholder name="dh1991" class="DH_beamT" type="input"/> - <dataholder name="dh1992" class="DH_beamT" type="input"/> - <dataholder name="dh1993" class="DH_beamT" type="input"/> - <dataholder name="dh1994" class="DH_beamT" type="input"/> - <dataholder name="dh1995" class="DH_beamT" type="input"/> - <dataholder name="dh1996" class="DH_beamT" type="input"/> - <dataholder name="dh1997" class="DH_beamT" type="input"/> - <dataholder name="dh1998" class="DH_beamT" type="input"/> - <dataholder name="dh1999" class="DH_beamT" type="input"/> - <dataholder name="dh2000" class="DH_beamT" type="input"/> - <dataholder name="dh2001" class="DH_beamT" type="input"/> - <dataholder name="dh2002" class="DH_beamT" type="input"/> - <dataholder name="dh2003" class="DH_beamT" type="input"/> - <dataholder name="dh2004" class="DH_beamT" type="input"/> - <dataholder name="dh2005" class="DH_beamT" type="input"/> - <dataholder name="dh2006" class="DH_beamT" type="input"/> - <dataholder name="dh2007" class="DH_beamT" type="input"/> - <dataholder name="dh2008" class="DH_beamT" type="input"/> - <dataholder name="dh2009" class="DH_beamT" type="input"/> - <dataholder name="dh2010" class="DH_beamT" type="input"/> - <dataholder name="dh2011" class="DH_beamT" type="input"/> - <dataholder name="dh2012" class="DH_beamT" type="input"/> - <dataholder name="dh2013" class="DH_beamT" type="input"/> - <dataholder name="dh2014" class="DH_beamT" type="input"/> - <dataholder name="dh2015" class="DH_beamT" type="input"/> - <dataholder name="dh2016" class="DH_beamT" type="input"/> - <dataholder name="dh2017" class="DH_beamT" type="input"/> - <dataholder name="dh2018" class="DH_beamT" type="input"/> - <dataholder name="dh2019" class="DH_beamT" type="input"/> - <dataholder name="dh2020" class="DH_beamT" type="input"/> - <dataholder name="dh2021" class="DH_beamT" type="input"/> - <dataholder name="dh2022" class="DH_beamT" type="input"/> - <dataholder name="dh2023" class="DH_beamT" type="input"/> - <dataholder name="dh2024" class="DH_beamT" type="input"/> - <dataholder name="dh2025" class="DH_beamT" type="input"/> - <dataholder name="dh2026" class="DH_beamT" type="input"/> - <dataholder name="dh2027" class="DH_beamT" type="input"/> - <dataholder name="dh2028" class="DH_beamT" type="input"/> - <dataholder name="dh2029" class="DH_beamT" type="input"/> - <dataholder name="dh2030" class="DH_beamT" type="input"/> - <dataholder name="dh2031" class="DH_beamT" type="input"/> - <dataholder name="dh2032" class="DH_beamT" type="input"/> - <dataholder name="dh2033" class="DH_beam" connect="dh1362" type="output"/> - </workholder> - </step> - </simul> - <simul name="Lofar_Station_32034" node="node 4"> - <workholder class="WH_Station"> - <dataholder name="dh2035" class="DH_Antenna" type="input"/> - <dataholder name="dh2036" class="DH_Antenna" type="input"/> - <dataholder name="dh2037" class="DH_Antenna" type="input"/> - <dataholder name="dh2038" class="DH_Antenna" type="input"/> - <dataholder name="dh2039" class="DH_beam" connect="dh2715" type="output"/> - </workholder> - <step name="Antenna_02040" node="node 4"> - <workholder class="WH_Antenna"> - <dataholder name="dh2041" class="DH_Antenna" type="input"/> - <dataholder name="dh2042" class="DH_Antenna" connect="dh2053" type="output"/> - </workholder> - </step> - <step name="Antenna_12043" node="node 4"> - <workholder class="WH_Antenna"> - <dataholder name="dh2044" class="DH_Antenna" type="input"/> - <dataholder name="dh2045" class="DH_Antenna" connect="dh2056" type="output"/> - </workholder> - </step> - <step name="Antenna_22046" node="node 4"> - <workholder class="WH_Antenna"> - <dataholder name="dh2047" class="DH_Antenna" type="input"/> - <dataholder name="dh2048" class="DH_Antenna" connect="dh2059" type="output"/> - </workholder> - </step> - <step name="Antenna_32049" node="node 4"> - <workholder class="WH_Antenna"> - <dataholder name="dh2050" class="DH_Antenna" type="input"/> - <dataholder name="dh2051" class="DH_Antenna" connect="dh2062" type="output"/> - </workholder> - </step> - <step name="FFT_02052" node="node 4"> - <workholder class="WH_FFT"> - <dataholder name="dh2053" class="DH_Antenna" type="input"/> - <dataholder name="dh2054" class="DH_freq" connect="dh2065" type="output"/> - </workholder> - </step> - <step name="FFT_12055" node="node 4"> - <workholder class="WH_FFT"> - <dataholder name="dh2056" class="DH_Antenna" type="input"/> - <dataholder name="dh2057" class="DH_freq" connect="dh2066" type="output"/> - </workholder> - </step> - <step name="FFT_22058" node="node 4"> - <workholder class="WH_FFT"> - <dataholder name="dh2059" class="DH_Antenna" type="input"/> - <dataholder name="dh2060" class="DH_freq" connect="dh2067" type="output"/> - </workholder> - </step> - <step name="FFT_32061" node="node 4"> - <workholder class="WH_FFT"> - <dataholder name="dh2062" class="DH_Antenna" type="input"/> - <dataholder name="dh2063" class="DH_freq" connect="dh2068" type="output"/> - </workholder> - </step> - <step name="TransposeF_3_82064" node="node 4"> - <workholder class="WH_TransF"> - <dataholder name="dh2065" class="DH_freq" type="input"/> - <dataholder name="dh2066" class="DH_freq" type="input"/> - <dataholder name="dh2067" class="DH_freq" type="input"/> - <dataholder name="dh2068" class="DH_freq" type="input"/> - <dataholder name="dh2069" class="DH_freqT" connect="dh2198" type="output"/> - <dataholder name="dh2070" class="DH_freqT" connect="dh2201" type="output"/> - <dataholder name="dh2071" class="DH_freqT" connect="dh2204" type="output"/> - <dataholder name="dh2072" class="DH_freqT" connect="dh2207" type="output"/> - <dataholder name="dh2073" class="DH_freqT" connect="dh2210" type="output"/> - <dataholder name="dh2074" class="DH_freqT" connect="dh2213" type="output"/> - <dataholder name="dh2075" class="DH_freqT" connect="dh2216" type="output"/> - <dataholder name="dh2076" class="DH_freqT" connect="dh2219" type="output"/> - <dataholder name="dh2077" class="DH_freqT" connect="dh2222" type="output"/> - <dataholder name="dh2078" class="DH_freqT" connect="dh2225" type="output"/> - <dataholder name="dh2079" class="DH_freqT" connect="dh2228" type="output"/> - <dataholder name="dh2080" class="DH_freqT" connect="dh2231" type="output"/> - <dataholder name="dh2081" class="DH_freqT" connect="dh2234" type="output"/> - <dataholder name="dh2082" class="DH_freqT" connect="dh2237" type="output"/> - <dataholder name="dh2083" class="DH_freqT" connect="dh2240" type="output"/> - <dataholder name="dh2084" class="DH_freqT" connect="dh2243" type="output"/> - <dataholder name="dh2085" class="DH_freqT" connect="dh2246" type="output"/> - <dataholder name="dh2086" class="DH_freqT" connect="dh2249" type="output"/> - <dataholder name="dh2087" class="DH_freqT" connect="dh2252" type="output"/> - <dataholder name="dh2088" class="DH_freqT" connect="dh2255" type="output"/> - <dataholder name="dh2089" class="DH_freqT" connect="dh2258" type="output"/> - <dataholder name="dh2090" class="DH_freqT" connect="dh2261" type="output"/> - <dataholder name="dh2091" class="DH_freqT" connect="dh2264" type="output"/> - <dataholder name="dh2092" class="DH_freqT" connect="dh2267" type="output"/> - <dataholder name="dh2093" class="DH_freqT" connect="dh2270" type="output"/> - <dataholder name="dh2094" class="DH_freqT" connect="dh2273" type="output"/> - <dataholder name="dh2095" class="DH_freqT" connect="dh2276" type="output"/> - <dataholder name="dh2096" class="DH_freqT" connect="dh2279" type="output"/> - <dataholder name="dh2097" class="DH_freqT" connect="dh2282" type="output"/> - <dataholder name="dh2098" class="DH_freqT" connect="dh2285" type="output"/> - <dataholder name="dh2099" class="DH_freqT" connect="dh2288" type="output"/> - <dataholder name="dh2100" class="DH_freqT" connect="dh2291" type="output"/> - <dataholder name="dh2101" class="DH_freqT" connect="dh2294" type="output"/> - <dataholder name="dh2102" class="DH_freqT" connect="dh2297" type="output"/> - <dataholder name="dh2103" class="DH_freqT" connect="dh2300" type="output"/> - <dataholder name="dh2104" class="DH_freqT" connect="dh2303" type="output"/> - <dataholder name="dh2105" class="DH_freqT" connect="dh2306" type="output"/> - <dataholder name="dh2106" class="DH_freqT" connect="dh2309" type="output"/> - <dataholder name="dh2107" class="DH_freqT" connect="dh2312" type="output"/> - <dataholder name="dh2108" class="DH_freqT" connect="dh2315" type="output"/> - <dataholder name="dh2109" class="DH_freqT" connect="dh2318" type="output"/> - <dataholder name="dh2110" class="DH_freqT" connect="dh2321" type="output"/> - <dataholder name="dh2111" class="DH_freqT" connect="dh2324" type="output"/> - <dataholder name="dh2112" class="DH_freqT" connect="dh2327" type="output"/> - <dataholder name="dh2113" class="DH_freqT" connect="dh2330" type="output"/> - <dataholder name="dh2114" class="DH_freqT" connect="dh2333" type="output"/> - <dataholder name="dh2115" class="DH_freqT" connect="dh2336" type="output"/> - <dataholder name="dh2116" class="DH_freqT" connect="dh2339" type="output"/> - <dataholder name="dh2117" class="DH_freqT" connect="dh2342" type="output"/> - <dataholder name="dh2118" class="DH_freqT" connect="dh2345" type="output"/> - <dataholder name="dh2119" class="DH_freqT" connect="dh2348" type="output"/> - <dataholder name="dh2120" class="DH_freqT" connect="dh2351" type="output"/> - <dataholder name="dh2121" class="DH_freqT" connect="dh2354" type="output"/> - <dataholder name="dh2122" class="DH_freqT" connect="dh2357" type="output"/> - <dataholder name="dh2123" class="DH_freqT" connect="dh2360" type="output"/> - <dataholder name="dh2124" class="DH_freqT" connect="dh2363" type="output"/> - <dataholder name="dh2125" class="DH_freqT" connect="dh2366" type="output"/> - <dataholder name="dh2126" class="DH_freqT" connect="dh2369" type="output"/> - <dataholder name="dh2127" class="DH_freqT" connect="dh2372" type="output"/> - <dataholder name="dh2128" class="DH_freqT" connect="dh2375" type="output"/> - <dataholder name="dh2129" class="DH_freqT" connect="dh2378" type="output"/> - <dataholder name="dh2130" class="DH_freqT" connect="dh2381" type="output"/> - <dataholder name="dh2131" class="DH_freqT" connect="dh2384" type="output"/> - <dataholder name="dh2132" class="DH_freqT" connect="dh2387" type="output"/> - <dataholder name="dh2133" class="DH_freqT" connect="dh2390" type="output"/> - <dataholder name="dh2134" class="DH_freqT" connect="dh2393" type="output"/> - <dataholder name="dh2135" class="DH_freqT" connect="dh2396" type="output"/> - <dataholder name="dh2136" class="DH_freqT" connect="dh2399" type="output"/> - <dataholder name="dh2137" class="DH_freqT" connect="dh2402" type="output"/> - <dataholder name="dh2138" class="DH_freqT" connect="dh2405" type="output"/> - <dataholder name="dh2139" class="DH_freqT" connect="dh2408" type="output"/> - <dataholder name="dh2140" class="DH_freqT" connect="dh2411" type="output"/> - <dataholder name="dh2141" class="DH_freqT" connect="dh2414" type="output"/> - <dataholder name="dh2142" class="DH_freqT" connect="dh2417" type="output"/> - <dataholder name="dh2143" class="DH_freqT" connect="dh2420" type="output"/> - <dataholder name="dh2144" class="DH_freqT" connect="dh2423" type="output"/> - <dataholder name="dh2145" class="DH_freqT" connect="dh2426" type="output"/> - <dataholder name="dh2146" class="DH_freqT" connect="dh2429" type="output"/> - <dataholder name="dh2147" class="DH_freqT" connect="dh2432" type="output"/> - <dataholder name="dh2148" class="DH_freqT" connect="dh2435" type="output"/> - <dataholder name="dh2149" class="DH_freqT" connect="dh2438" type="output"/> - <dataholder name="dh2150" class="DH_freqT" connect="dh2441" type="output"/> - <dataholder name="dh2151" class="DH_freqT" connect="dh2444" type="output"/> - <dataholder name="dh2152" class="DH_freqT" connect="dh2447" type="output"/> - <dataholder name="dh2153" class="DH_freqT" connect="dh2450" type="output"/> - <dataholder name="dh2154" class="DH_freqT" connect="dh2453" type="output"/> - <dataholder name="dh2155" class="DH_freqT" connect="dh2456" type="output"/> - <dataholder name="dh2156" class="DH_freqT" connect="dh2459" type="output"/> - <dataholder name="dh2157" class="DH_freqT" connect="dh2462" type="output"/> - <dataholder name="dh2158" class="DH_freqT" connect="dh2465" type="output"/> - <dataholder name="dh2159" class="DH_freqT" connect="dh2468" type="output"/> - <dataholder name="dh2160" class="DH_freqT" connect="dh2471" type="output"/> - <dataholder name="dh2161" class="DH_freqT" connect="dh2474" type="output"/> - <dataholder name="dh2162" class="DH_freqT" connect="dh2477" type="output"/> - <dataholder name="dh2163" class="DH_freqT" connect="dh2480" type="output"/> - <dataholder name="dh2164" class="DH_freqT" connect="dh2483" type="output"/> - <dataholder name="dh2165" class="DH_freqT" connect="dh2486" type="output"/> - <dataholder name="dh2166" class="DH_freqT" connect="dh2489" type="output"/> - <dataholder name="dh2167" class="DH_freqT" connect="dh2492" type="output"/> - <dataholder name="dh2168" class="DH_freqT" connect="dh2495" type="output"/> - <dataholder name="dh2169" class="DH_freqT" connect="dh2498" type="output"/> - <dataholder name="dh2170" class="DH_freqT" connect="dh2501" type="output"/> - <dataholder name="dh2171" class="DH_freqT" connect="dh2504" type="output"/> - <dataholder name="dh2172" class="DH_freqT" connect="dh2507" type="output"/> - <dataholder name="dh2173" class="DH_freqT" connect="dh2510" type="output"/> - <dataholder name="dh2174" class="DH_freqT" connect="dh2513" type="output"/> - <dataholder name="dh2175" class="DH_freqT" connect="dh2516" type="output"/> - <dataholder name="dh2176" class="DH_freqT" connect="dh2519" type="output"/> - <dataholder name="dh2177" class="DH_freqT" connect="dh2522" type="output"/> - <dataholder name="dh2178" class="DH_freqT" connect="dh2525" type="output"/> - <dataholder name="dh2179" class="DH_freqT" connect="dh2528" type="output"/> - <dataholder name="dh2180" class="DH_freqT" connect="dh2531" type="output"/> - <dataholder name="dh2181" class="DH_freqT" connect="dh2534" type="output"/> - <dataholder name="dh2182" class="DH_freqT" connect="dh2537" type="output"/> - <dataholder name="dh2183" class="DH_freqT" connect="dh2540" type="output"/> - <dataholder name="dh2184" class="DH_freqT" connect="dh2543" type="output"/> - <dataholder name="dh2185" class="DH_freqT" connect="dh2546" type="output"/> - <dataholder name="dh2186" class="DH_freqT" connect="dh2549" type="output"/> - <dataholder name="dh2187" class="DH_freqT" connect="dh2552" type="output"/> - <dataholder name="dh2188" class="DH_freqT" connect="dh2555" type="output"/> - <dataholder name="dh2189" class="DH_freqT" connect="dh2558" type="output"/> - <dataholder name="dh2190" class="DH_freqT" connect="dh2561" type="output"/> - <dataholder name="dh2191" class="DH_freqT" connect="dh2564" type="output"/> - <dataholder name="dh2192" class="DH_freqT" connect="dh2567" type="output"/> - <dataholder name="dh2193" class="DH_freqT" connect="dh2570" type="output"/> - <dataholder name="dh2194" class="DH_freqT" connect="dh2573" type="output"/> - <dataholder name="dh2195" class="DH_freqT" connect="dh2576" type="output"/> - <dataholder name="dh2196" class="DH_freqT" connect="dh2579" type="output"/> - </workholder> - </step> - <step name="BeamFormer_02197" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2198" class="DH_freqT" type="input"/> - <dataholder name="dh2199" class="DH_beamT" connect="dh2582" type="output"/> - </workholder> - </step> - <step name="BeamFormer_12200" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2201" class="DH_freqT" type="input"/> - <dataholder name="dh2202" class="DH_beamT" connect="dh2583" type="output"/> - </workholder> - </step> - <step name="BeamFormer_22203" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2204" class="DH_freqT" type="input"/> - <dataholder name="dh2205" class="DH_beamT" connect="dh2584" type="output"/> - </workholder> - </step> - <step name="BeamFormer_32206" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2207" class="DH_freqT" type="input"/> - <dataholder name="dh2208" class="DH_beamT" connect="dh2585" type="output"/> - </workholder> - </step> - <step name="BeamFormer_42209" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2210" class="DH_freqT" type="input"/> - <dataholder name="dh2211" class="DH_beamT" connect="dh2586" type="output"/> - </workholder> - </step> - <step name="BeamFormer_52212" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2213" class="DH_freqT" type="input"/> - <dataholder name="dh2214" class="DH_beamT" connect="dh2587" type="output"/> - </workholder> - </step> - <step name="BeamFormer_62215" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2216" class="DH_freqT" type="input"/> - <dataholder name="dh2217" class="DH_beamT" connect="dh2588" type="output"/> - </workholder> - </step> - <step name="BeamFormer_72218" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2219" class="DH_freqT" type="input"/> - <dataholder name="dh2220" class="DH_beamT" connect="dh2589" type="output"/> - </workholder> - </step> - <step name="BeamFormer_82221" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2222" class="DH_freqT" type="input"/> - <dataholder name="dh2223" class="DH_beamT" connect="dh2590" type="output"/> - </workholder> - </step> - <step name="BeamFormer_92224" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2225" class="DH_freqT" type="input"/> - <dataholder name="dh2226" class="DH_beamT" connect="dh2591" type="output"/> - </workholder> - </step> - <step name="BeamFormer_102227" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2228" class="DH_freqT" type="input"/> - <dataholder name="dh2229" class="DH_beamT" connect="dh2592" type="output"/> - </workholder> - </step> - <step name="BeamFormer_112230" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2231" class="DH_freqT" type="input"/> - <dataholder name="dh2232" class="DH_beamT" connect="dh2593" type="output"/> - </workholder> - </step> - <step name="BeamFormer_122233" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2234" class="DH_freqT" type="input"/> - <dataholder name="dh2235" class="DH_beamT" connect="dh2594" type="output"/> - </workholder> - </step> - <step name="BeamFormer_132236" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2237" class="DH_freqT" type="input"/> - <dataholder name="dh2238" class="DH_beamT" connect="dh2595" type="output"/> - </workholder> - </step> - <step name="BeamFormer_142239" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2240" class="DH_freqT" type="input"/> - <dataholder name="dh2241" class="DH_beamT" connect="dh2596" type="output"/> - </workholder> - </step> - <step name="BeamFormer_152242" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2243" class="DH_freqT" type="input"/> - <dataholder name="dh2244" class="DH_beamT" connect="dh2597" type="output"/> - </workholder> - </step> - <step name="BeamFormer_162245" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2246" class="DH_freqT" type="input"/> - <dataholder name="dh2247" class="DH_beamT" connect="dh2598" type="output"/> - </workholder> - </step> - <step name="BeamFormer_172248" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2249" class="DH_freqT" type="input"/> - <dataholder name="dh2250" class="DH_beamT" connect="dh2599" type="output"/> - </workholder> - </step> - <step name="BeamFormer_182251" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2252" class="DH_freqT" type="input"/> - <dataholder name="dh2253" class="DH_beamT" connect="dh2600" type="output"/> - </workholder> - </step> - <step name="BeamFormer_192254" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2255" class="DH_freqT" type="input"/> - <dataholder name="dh2256" class="DH_beamT" connect="dh2601" type="output"/> - </workholder> - </step> - <step name="BeamFormer_202257" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2258" class="DH_freqT" type="input"/> - <dataholder name="dh2259" class="DH_beamT" connect="dh2602" type="output"/> - </workholder> - </step> - <step name="BeamFormer_212260" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2261" class="DH_freqT" type="input"/> - <dataholder name="dh2262" class="DH_beamT" connect="dh2603" type="output"/> - </workholder> - </step> - <step name="BeamFormer_222263" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2264" class="DH_freqT" type="input"/> - <dataholder name="dh2265" class="DH_beamT" connect="dh2604" type="output"/> - </workholder> - </step> - <step name="BeamFormer_232266" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2267" class="DH_freqT" type="input"/> - <dataholder name="dh2268" class="DH_beamT" connect="dh2605" type="output"/> - </workholder> - </step> - <step name="BeamFormer_242269" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2270" class="DH_freqT" type="input"/> - <dataholder name="dh2271" class="DH_beamT" connect="dh2606" type="output"/> - </workholder> - </step> - <step name="BeamFormer_252272" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2273" class="DH_freqT" type="input"/> - <dataholder name="dh2274" class="DH_beamT" connect="dh2607" type="output"/> - </workholder> - </step> - <step name="BeamFormer_262275" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2276" class="DH_freqT" type="input"/> - <dataholder name="dh2277" class="DH_beamT" connect="dh2608" type="output"/> - </workholder> - </step> - <step name="BeamFormer_272278" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2279" class="DH_freqT" type="input"/> - <dataholder name="dh2280" class="DH_beamT" connect="dh2609" type="output"/> - </workholder> - </step> - <step name="BeamFormer_282281" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2282" class="DH_freqT" type="input"/> - <dataholder name="dh2283" class="DH_beamT" connect="dh2610" type="output"/> - </workholder> - </step> - <step name="BeamFormer_292284" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2285" class="DH_freqT" type="input"/> - <dataholder name="dh2286" class="DH_beamT" connect="dh2611" type="output"/> - </workholder> - </step> - <step name="BeamFormer_302287" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2288" class="DH_freqT" type="input"/> - <dataholder name="dh2289" class="DH_beamT" connect="dh2612" type="output"/> - </workholder> - </step> - <step name="BeamFormer_312290" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2291" class="DH_freqT" type="input"/> - <dataholder name="dh2292" class="DH_beamT" connect="dh2613" type="output"/> - </workholder> - </step> - <step name="BeamFormer_322293" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2294" class="DH_freqT" type="input"/> - <dataholder name="dh2295" class="DH_beamT" connect="dh2614" type="output"/> - </workholder> - </step> - <step name="BeamFormer_332296" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2297" class="DH_freqT" type="input"/> - <dataholder name="dh2298" class="DH_beamT" connect="dh2615" type="output"/> - </workholder> - </step> - <step name="BeamFormer_342299" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2300" class="DH_freqT" type="input"/> - <dataholder name="dh2301" class="DH_beamT" connect="dh2616" type="output"/> - </workholder> - </step> - <step name="BeamFormer_352302" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2303" class="DH_freqT" type="input"/> - <dataholder name="dh2304" class="DH_beamT" connect="dh2617" type="output"/> - </workholder> - </step> - <step name="BeamFormer_362305" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2306" class="DH_freqT" type="input"/> - <dataholder name="dh2307" class="DH_beamT" connect="dh2618" type="output"/> - </workholder> - </step> - <step name="BeamFormer_372308" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2309" class="DH_freqT" type="input"/> - <dataholder name="dh2310" class="DH_beamT" connect="dh2619" type="output"/> - </workholder> - </step> - <step name="BeamFormer_382311" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2312" class="DH_freqT" type="input"/> - <dataholder name="dh2313" class="DH_beamT" connect="dh2620" type="output"/> - </workholder> - </step> - <step name="BeamFormer_392314" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2315" class="DH_freqT" type="input"/> - <dataholder name="dh2316" class="DH_beamT" connect="dh2621" type="output"/> - </workholder> - </step> - <step name="BeamFormer_402317" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2318" class="DH_freqT" type="input"/> - <dataholder name="dh2319" class="DH_beamT" connect="dh2622" type="output"/> - </workholder> - </step> - <step name="BeamFormer_412320" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2321" class="DH_freqT" type="input"/> - <dataholder name="dh2322" class="DH_beamT" connect="dh2623" type="output"/> - </workholder> - </step> - <step name="BeamFormer_422323" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2324" class="DH_freqT" type="input"/> - <dataholder name="dh2325" class="DH_beamT" connect="dh2624" type="output"/> - </workholder> - </step> - <step name="BeamFormer_432326" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2327" class="DH_freqT" type="input"/> - <dataholder name="dh2328" class="DH_beamT" connect="dh2625" type="output"/> - </workholder> - </step> - <step name="BeamFormer_442329" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2330" class="DH_freqT" type="input"/> - <dataholder name="dh2331" class="DH_beamT" connect="dh2626" type="output"/> - </workholder> - </step> - <step name="BeamFormer_452332" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2333" class="DH_freqT" type="input"/> - <dataholder name="dh2334" class="DH_beamT" connect="dh2627" type="output"/> - </workholder> - </step> - <step name="BeamFormer_462335" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2336" class="DH_freqT" type="input"/> - <dataholder name="dh2337" class="DH_beamT" connect="dh2628" type="output"/> - </workholder> - </step> - <step name="BeamFormer_472338" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2339" class="DH_freqT" type="input"/> - <dataholder name="dh2340" class="DH_beamT" connect="dh2629" type="output"/> - </workholder> - </step> - <step name="BeamFormer_482341" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2342" class="DH_freqT" type="input"/> - <dataholder name="dh2343" class="DH_beamT" connect="dh2630" type="output"/> - </workholder> - </step> - <step name="BeamFormer_492344" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2345" class="DH_freqT" type="input"/> - <dataholder name="dh2346" class="DH_beamT" connect="dh2631" type="output"/> - </workholder> - </step> - <step name="BeamFormer_502347" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2348" class="DH_freqT" type="input"/> - <dataholder name="dh2349" class="DH_beamT" connect="dh2632" type="output"/> - </workholder> - </step> - <step name="BeamFormer_512350" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2351" class="DH_freqT" type="input"/> - <dataholder name="dh2352" class="DH_beamT" connect="dh2633" type="output"/> - </workholder> - </step> - <step name="BeamFormer_522353" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2354" class="DH_freqT" type="input"/> - <dataholder name="dh2355" class="DH_beamT" connect="dh2634" type="output"/> - </workholder> - </step> - <step name="BeamFormer_532356" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2357" class="DH_freqT" type="input"/> - <dataholder name="dh2358" class="DH_beamT" connect="dh2635" type="output"/> - </workholder> - </step> - <step name="BeamFormer_542359" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2360" class="DH_freqT" type="input"/> - <dataholder name="dh2361" class="DH_beamT" connect="dh2636" type="output"/> - </workholder> - </step> - <step name="BeamFormer_552362" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2363" class="DH_freqT" type="input"/> - <dataholder name="dh2364" class="DH_beamT" connect="dh2637" type="output"/> - </workholder> - </step> - <step name="BeamFormer_562365" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2366" class="DH_freqT" type="input"/> - <dataholder name="dh2367" class="DH_beamT" connect="dh2638" type="output"/> - </workholder> - </step> - <step name="BeamFormer_572368" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2369" class="DH_freqT" type="input"/> - <dataholder name="dh2370" class="DH_beamT" connect="dh2639" type="output"/> - </workholder> - </step> - <step name="BeamFormer_582371" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2372" class="DH_freqT" type="input"/> - <dataholder name="dh2373" class="DH_beamT" connect="dh2640" type="output"/> - </workholder> - </step> - <step name="BeamFormer_592374" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2375" class="DH_freqT" type="input"/> - <dataholder name="dh2376" class="DH_beamT" connect="dh2641" type="output"/> - </workholder> - </step> - <step name="BeamFormer_602377" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2378" class="DH_freqT" type="input"/> - <dataholder name="dh2379" class="DH_beamT" connect="dh2642" type="output"/> - </workholder> - </step> - <step name="BeamFormer_612380" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2381" class="DH_freqT" type="input"/> - <dataholder name="dh2382" class="DH_beamT" connect="dh2643" type="output"/> - </workholder> - </step> - <step name="BeamFormer_622383" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2384" class="DH_freqT" type="input"/> - <dataholder name="dh2385" class="DH_beamT" connect="dh2644" type="output"/> - </workholder> - </step> - <step name="BeamFormer_632386" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2387" class="DH_freqT" type="input"/> - <dataholder name="dh2388" class="DH_beamT" connect="dh2645" type="output"/> - </workholder> - </step> - <step name="BeamFormer_642389" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2390" class="DH_freqT" type="input"/> - <dataholder name="dh2391" class="DH_beamT" connect="dh2646" type="output"/> - </workholder> - </step> - <step name="BeamFormer_652392" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2393" class="DH_freqT" type="input"/> - <dataholder name="dh2394" class="DH_beamT" connect="dh2647" type="output"/> - </workholder> - </step> - <step name="BeamFormer_662395" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2396" class="DH_freqT" type="input"/> - <dataholder name="dh2397" class="DH_beamT" connect="dh2648" type="output"/> - </workholder> - </step> - <step name="BeamFormer_672398" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2399" class="DH_freqT" type="input"/> - <dataholder name="dh2400" class="DH_beamT" connect="dh2649" type="output"/> - </workholder> - </step> - <step name="BeamFormer_682401" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2402" class="DH_freqT" type="input"/> - <dataholder name="dh2403" class="DH_beamT" connect="dh2650" type="output"/> - </workholder> - </step> - <step name="BeamFormer_692404" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2405" class="DH_freqT" type="input"/> - <dataholder name="dh2406" class="DH_beamT" connect="dh2651" type="output"/> - </workholder> - </step> - <step name="BeamFormer_702407" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2408" class="DH_freqT" type="input"/> - <dataholder name="dh2409" class="DH_beamT" connect="dh2652" type="output"/> - </workholder> - </step> - <step name="BeamFormer_712410" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2411" class="DH_freqT" type="input"/> - <dataholder name="dh2412" class="DH_beamT" connect="dh2653" type="output"/> - </workholder> - </step> - <step name="BeamFormer_722413" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2414" class="DH_freqT" type="input"/> - <dataholder name="dh2415" class="DH_beamT" connect="dh2654" type="output"/> - </workholder> - </step> - <step name="BeamFormer_732416" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2417" class="DH_freqT" type="input"/> - <dataholder name="dh2418" class="DH_beamT" connect="dh2655" type="output"/> - </workholder> - </step> - <step name="BeamFormer_742419" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2420" class="DH_freqT" type="input"/> - <dataholder name="dh2421" class="DH_beamT" connect="dh2656" type="output"/> - </workholder> - </step> - <step name="BeamFormer_752422" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2423" class="DH_freqT" type="input"/> - <dataholder name="dh2424" class="DH_beamT" connect="dh2657" type="output"/> - </workholder> - </step> - <step name="BeamFormer_762425" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2426" class="DH_freqT" type="input"/> - <dataholder name="dh2427" class="DH_beamT" connect="dh2658" type="output"/> - </workholder> - </step> - <step name="BeamFormer_772428" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2429" class="DH_freqT" type="input"/> - <dataholder name="dh2430" class="DH_beamT" connect="dh2659" type="output"/> - </workholder> - </step> - <step name="BeamFormer_782431" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2432" class="DH_freqT" type="input"/> - <dataholder name="dh2433" class="DH_beamT" connect="dh2660" type="output"/> - </workholder> - </step> - <step name="BeamFormer_792434" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2435" class="DH_freqT" type="input"/> - <dataholder name="dh2436" class="DH_beamT" connect="dh2661" type="output"/> - </workholder> - </step> - <step name="BeamFormer_802437" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2438" class="DH_freqT" type="input"/> - <dataholder name="dh2439" class="DH_beamT" connect="dh2662" type="output"/> - </workholder> - </step> - <step name="BeamFormer_812440" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2441" class="DH_freqT" type="input"/> - <dataholder name="dh2442" class="DH_beamT" connect="dh2663" type="output"/> - </workholder> - </step> - <step name="BeamFormer_822443" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2444" class="DH_freqT" type="input"/> - <dataholder name="dh2445" class="DH_beamT" connect="dh2664" type="output"/> - </workholder> - </step> - <step name="BeamFormer_832446" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2447" class="DH_freqT" type="input"/> - <dataholder name="dh2448" class="DH_beamT" connect="dh2665" type="output"/> - </workholder> - </step> - <step name="BeamFormer_842449" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2450" class="DH_freqT" type="input"/> - <dataholder name="dh2451" class="DH_beamT" connect="dh2666" type="output"/> - </workholder> - </step> - <step name="BeamFormer_852452" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2453" class="DH_freqT" type="input"/> - <dataholder name="dh2454" class="DH_beamT" connect="dh2667" type="output"/> - </workholder> - </step> - <step name="BeamFormer_862455" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2456" class="DH_freqT" type="input"/> - <dataholder name="dh2457" class="DH_beamT" connect="dh2668" type="output"/> - </workholder> - </step> - <step name="BeamFormer_872458" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2459" class="DH_freqT" type="input"/> - <dataholder name="dh2460" class="DH_beamT" connect="dh2669" type="output"/> - </workholder> - </step> - <step name="BeamFormer_882461" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2462" class="DH_freqT" type="input"/> - <dataholder name="dh2463" class="DH_beamT" connect="dh2670" type="output"/> - </workholder> - </step> - <step name="BeamFormer_892464" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2465" class="DH_freqT" type="input"/> - <dataholder name="dh2466" class="DH_beamT" connect="dh2671" type="output"/> - </workholder> - </step> - <step name="BeamFormer_902467" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2468" class="DH_freqT" type="input"/> - <dataholder name="dh2469" class="DH_beamT" connect="dh2672" type="output"/> - </workholder> - </step> - <step name="BeamFormer_912470" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2471" class="DH_freqT" type="input"/> - <dataholder name="dh2472" class="DH_beamT" connect="dh2673" type="output"/> - </workholder> - </step> - <step name="BeamFormer_922473" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2474" class="DH_freqT" type="input"/> - <dataholder name="dh2475" class="DH_beamT" connect="dh2674" type="output"/> - </workholder> - </step> - <step name="BeamFormer_932476" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2477" class="DH_freqT" type="input"/> - <dataholder name="dh2478" class="DH_beamT" connect="dh2675" type="output"/> - </workholder> - </step> - <step name="BeamFormer_942479" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2480" class="DH_freqT" type="input"/> - <dataholder name="dh2481" class="DH_beamT" connect="dh2676" type="output"/> - </workholder> - </step> - <step name="BeamFormer_952482" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2483" class="DH_freqT" type="input"/> - <dataholder name="dh2484" class="DH_beamT" connect="dh2677" type="output"/> - </workholder> - </step> - <step name="BeamFormer_962485" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2486" class="DH_freqT" type="input"/> - <dataholder name="dh2487" class="DH_beamT" connect="dh2678" type="output"/> - </workholder> - </step> - <step name="BeamFormer_972488" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2489" class="DH_freqT" type="input"/> - <dataholder name="dh2490" class="DH_beamT" connect="dh2679" type="output"/> - </workholder> - </step> - <step name="BeamFormer_982491" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2492" class="DH_freqT" type="input"/> - <dataholder name="dh2493" class="DH_beamT" connect="dh2680" type="output"/> - </workholder> - </step> - <step name="BeamFormer_992494" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2495" class="DH_freqT" type="input"/> - <dataholder name="dh2496" class="DH_beamT" connect="dh2681" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1002497" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2498" class="DH_freqT" type="input"/> - <dataholder name="dh2499" class="DH_beamT" connect="dh2682" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1012500" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2501" class="DH_freqT" type="input"/> - <dataholder name="dh2502" class="DH_beamT" connect="dh2683" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1022503" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2504" class="DH_freqT" type="input"/> - <dataholder name="dh2505" class="DH_beamT" connect="dh2684" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1032506" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2507" class="DH_freqT" type="input"/> - <dataholder name="dh2508" class="DH_beamT" connect="dh2685" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1042509" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2510" class="DH_freqT" type="input"/> - <dataholder name="dh2511" class="DH_beamT" connect="dh2686" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1052512" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2513" class="DH_freqT" type="input"/> - <dataholder name="dh2514" class="DH_beamT" connect="dh2687" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1062515" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2516" class="DH_freqT" type="input"/> - <dataholder name="dh2517" class="DH_beamT" connect="dh2688" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1072518" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2519" class="DH_freqT" type="input"/> - <dataholder name="dh2520" class="DH_beamT" connect="dh2689" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1082521" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2522" class="DH_freqT" type="input"/> - <dataholder name="dh2523" class="DH_beamT" connect="dh2690" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1092524" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2525" class="DH_freqT" type="input"/> - <dataholder name="dh2526" class="DH_beamT" connect="dh2691" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1102527" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2528" class="DH_freqT" type="input"/> - <dataholder name="dh2529" class="DH_beamT" connect="dh2692" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1112530" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2531" class="DH_freqT" type="input"/> - <dataholder name="dh2532" class="DH_beamT" connect="dh2693" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1122533" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2534" class="DH_freqT" type="input"/> - <dataholder name="dh2535" class="DH_beamT" connect="dh2694" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1132536" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2537" class="DH_freqT" type="input"/> - <dataholder name="dh2538" class="DH_beamT" connect="dh2695" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1142539" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2540" class="DH_freqT" type="input"/> - <dataholder name="dh2541" class="DH_beamT" connect="dh2696" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1152542" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2543" class="DH_freqT" type="input"/> - <dataholder name="dh2544" class="DH_beamT" connect="dh2697" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1162545" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2546" class="DH_freqT" type="input"/> - <dataholder name="dh2547" class="DH_beamT" connect="dh2698" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1172548" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2549" class="DH_freqT" type="input"/> - <dataholder name="dh2550" class="DH_beamT" connect="dh2699" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1182551" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2552" class="DH_freqT" type="input"/> - <dataholder name="dh2553" class="DH_beamT" connect="dh2700" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1192554" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2555" class="DH_freqT" type="input"/> - <dataholder name="dh2556" class="DH_beamT" connect="dh2701" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1202557" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2558" class="DH_freqT" type="input"/> - <dataholder name="dh2559" class="DH_beamT" connect="dh2702" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1212560" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2561" class="DH_freqT" type="input"/> - <dataholder name="dh2562" class="DH_beamT" connect="dh2703" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1222563" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2564" class="DH_freqT" type="input"/> - <dataholder name="dh2565" class="DH_beamT" connect="dh2704" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1232566" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2567" class="DH_freqT" type="input"/> - <dataholder name="dh2568" class="DH_beamT" connect="dh2705" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1242569" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2570" class="DH_freqT" type="input"/> - <dataholder name="dh2571" class="DH_beamT" connect="dh2706" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1252572" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2573" class="DH_freqT" type="input"/> - <dataholder name="dh2574" class="DH_beamT" connect="dh2707" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1262575" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2576" class="DH_freqT" type="input"/> - <dataholder name="dh2577" class="DH_beamT" connect="dh2708" type="output"/> - </workholder> - </step> - <step name="BeamFormer_1272578" node="node 4"> - <workholder class="WH_Beam"> - <dataholder name="dh2579" class="DH_freqT" type="input"/> - <dataholder name="dh2580" class="DH_beamT" connect="dh2709" type="output"/> - </workholder> - </step> - <step name="TransposeB_1372581" node="node 4"> - <workholder class="WH_TransB"> - <dataholder name="dh2582" class="DH_beamT" type="input"/> - <dataholder name="dh2583" class="DH_beamT" type="input"/> - <dataholder name="dh2584" class="DH_beamT" type="input"/> - <dataholder name="dh2585" class="DH_beamT" type="input"/> - <dataholder name="dh2586" class="DH_beamT" type="input"/> - <dataholder name="dh2587" class="DH_beamT" type="input"/> - <dataholder name="dh2588" class="DH_beamT" type="input"/> - <dataholder name="dh2589" class="DH_beamT" type="input"/> - <dataholder name="dh2590" class="DH_beamT" type="input"/> - <dataholder name="dh2591" class="DH_beamT" type="input"/> - <dataholder name="dh2592" class="DH_beamT" type="input"/> - <dataholder name="dh2593" class="DH_beamT" type="input"/> - <dataholder name="dh2594" class="DH_beamT" type="input"/> - <dataholder name="dh2595" class="DH_beamT" type="input"/> - <dataholder name="dh2596" class="DH_beamT" type="input"/> - <dataholder name="dh2597" class="DH_beamT" type="input"/> - <dataholder name="dh2598" class="DH_beamT" type="input"/> - <dataholder name="dh2599" class="DH_beamT" type="input"/> - <dataholder name="dh2600" class="DH_beamT" type="input"/> - <dataholder name="dh2601" class="DH_beamT" type="input"/> - <dataholder name="dh2602" class="DH_beamT" type="input"/> - <dataholder name="dh2603" class="DH_beamT" type="input"/> - <dataholder name="dh2604" class="DH_beamT" type="input"/> - <dataholder name="dh2605" class="DH_beamT" type="input"/> - <dataholder name="dh2606" class="DH_beamT" type="input"/> - <dataholder name="dh2607" class="DH_beamT" type="input"/> - <dataholder name="dh2608" class="DH_beamT" type="input"/> - <dataholder name="dh2609" class="DH_beamT" type="input"/> - <dataholder name="dh2610" class="DH_beamT" type="input"/> - <dataholder name="dh2611" class="DH_beamT" type="input"/> - <dataholder name="dh2612" class="DH_beamT" type="input"/> - <dataholder name="dh2613" class="DH_beamT" type="input"/> - <dataholder name="dh2614" class="DH_beamT" type="input"/> - <dataholder name="dh2615" class="DH_beamT" type="input"/> - <dataholder name="dh2616" class="DH_beamT" type="input"/> - <dataholder name="dh2617" class="DH_beamT" type="input"/> - <dataholder name="dh2618" class="DH_beamT" type="input"/> - <dataholder name="dh2619" class="DH_beamT" type="input"/> - <dataholder name="dh2620" class="DH_beamT" type="input"/> - <dataholder name="dh2621" class="DH_beamT" type="input"/> - <dataholder name="dh2622" class="DH_beamT" type="input"/> - <dataholder name="dh2623" class="DH_beamT" type="input"/> - <dataholder name="dh2624" class="DH_beamT" type="input"/> - <dataholder name="dh2625" class="DH_beamT" type="input"/> - <dataholder name="dh2626" class="DH_beamT" type="input"/> - <dataholder name="dh2627" class="DH_beamT" type="input"/> - <dataholder name="dh2628" class="DH_beamT" type="input"/> - <dataholder name="dh2629" class="DH_beamT" type="input"/> - <dataholder name="dh2630" class="DH_beamT" type="input"/> - <dataholder name="dh2631" class="DH_beamT" type="input"/> - <dataholder name="dh2632" class="DH_beamT" type="input"/> - <dataholder name="dh2633" class="DH_beamT" type="input"/> - <dataholder name="dh2634" class="DH_beamT" type="input"/> - <dataholder name="dh2635" class="DH_beamT" type="input"/> - <dataholder name="dh2636" class="DH_beamT" type="input"/> - <dataholder name="dh2637" class="DH_beamT" type="input"/> - <dataholder name="dh2638" class="DH_beamT" type="input"/> - <dataholder name="dh2639" class="DH_beamT" type="input"/> - <dataholder name="dh2640" class="DH_beamT" type="input"/> - <dataholder name="dh2641" class="DH_beamT" type="input"/> - <dataholder name="dh2642" class="DH_beamT" type="input"/> - <dataholder name="dh2643" class="DH_beamT" type="input"/> - <dataholder name="dh2644" class="DH_beamT" type="input"/> - <dataholder name="dh2645" class="DH_beamT" type="input"/> - <dataholder name="dh2646" class="DH_beamT" type="input"/> - <dataholder name="dh2647" class="DH_beamT" type="input"/> - <dataholder name="dh2648" class="DH_beamT" type="input"/> - <dataholder name="dh2649" class="DH_beamT" type="input"/> - <dataholder name="dh2650" class="DH_beamT" type="input"/> - <dataholder name="dh2651" class="DH_beamT" type="input"/> - <dataholder name="dh2652" class="DH_beamT" type="input"/> - <dataholder name="dh2653" class="DH_beamT" type="input"/> - <dataholder name="dh2654" class="DH_beamT" type="input"/> - <dataholder name="dh2655" class="DH_beamT" type="input"/> - <dataholder name="dh2656" class="DH_beamT" type="input"/> - <dataholder name="dh2657" class="DH_beamT" type="input"/> - <dataholder name="dh2658" class="DH_beamT" type="input"/> - <dataholder name="dh2659" class="DH_beamT" type="input"/> - <dataholder name="dh2660" class="DH_beamT" type="input"/> - <dataholder name="dh2661" class="DH_beamT" type="input"/> - <dataholder name="dh2662" class="DH_beamT" type="input"/> - <dataholder name="dh2663" class="DH_beamT" type="input"/> - <dataholder name="dh2664" class="DH_beamT" type="input"/> - <dataholder name="dh2665" class="DH_beamT" type="input"/> - <dataholder name="dh2666" class="DH_beamT" type="input"/> - <dataholder name="dh2667" class="DH_beamT" type="input"/> - <dataholder name="dh2668" class="DH_beamT" type="input"/> - <dataholder name="dh2669" class="DH_beamT" type="input"/> - <dataholder name="dh2670" class="DH_beamT" type="input"/> - <dataholder name="dh2671" class="DH_beamT" type="input"/> - <dataholder name="dh2672" class="DH_beamT" type="input"/> - <dataholder name="dh2673" class="DH_beamT" type="input"/> - <dataholder name="dh2674" class="DH_beamT" type="input"/> - <dataholder name="dh2675" class="DH_beamT" type="input"/> - <dataholder name="dh2676" class="DH_beamT" type="input"/> - <dataholder name="dh2677" class="DH_beamT" type="input"/> - <dataholder name="dh2678" class="DH_beamT" type="input"/> - <dataholder name="dh2679" class="DH_beamT" type="input"/> - <dataholder name="dh2680" class="DH_beamT" type="input"/> - <dataholder name="dh2681" class="DH_beamT" type="input"/> - <dataholder name="dh2682" class="DH_beamT" type="input"/> - <dataholder name="dh2683" class="DH_beamT" type="input"/> - <dataholder name="dh2684" class="DH_beamT" type="input"/> - <dataholder name="dh2685" class="DH_beamT" type="input"/> - <dataholder name="dh2686" class="DH_beamT" type="input"/> - <dataholder name="dh2687" class="DH_beamT" type="input"/> - <dataholder name="dh2688" class="DH_beamT" type="input"/> - <dataholder name="dh2689" class="DH_beamT" type="input"/> - <dataholder name="dh2690" class="DH_beamT" type="input"/> - <dataholder name="dh2691" class="DH_beamT" type="input"/> - <dataholder name="dh2692" class="DH_beamT" type="input"/> - <dataholder name="dh2693" class="DH_beamT" type="input"/> - <dataholder name="dh2694" class="DH_beamT" type="input"/> - <dataholder name="dh2695" class="DH_beamT" type="input"/> - <dataholder name="dh2696" class="DH_beamT" type="input"/> - <dataholder name="dh2697" class="DH_beamT" type="input"/> - <dataholder name="dh2698" class="DH_beamT" type="input"/> - <dataholder name="dh2699" class="DH_beamT" type="input"/> - <dataholder name="dh2700" class="DH_beamT" type="input"/> - <dataholder name="dh2701" class="DH_beamT" type="input"/> - <dataholder name="dh2702" class="DH_beamT" type="input"/> - <dataholder name="dh2703" class="DH_beamT" type="input"/> - <dataholder name="dh2704" class="DH_beamT" type="input"/> - <dataholder name="dh2705" class="DH_beamT" type="input"/> - <dataholder name="dh2706" class="DH_beamT" type="input"/> - <dataholder name="dh2707" class="DH_beamT" type="input"/> - <dataholder name="dh2708" class="DH_beamT" type="input"/> - <dataholder name="dh2709" class="DH_beamT" type="input"/> - <dataholder name="dh2710" class="DH_beam" connect="dh2039" type="output"/> - </workholder> - </step> - </simul> - <simul name="Data Processor_4_42711" node="node 0"> - <workholder class="WH_DataProc"> - <dataholder name="dh2712" class="DH_beam" connect="dh2733" type="input"/> - <dataholder name="dh2713" class="DH_beam" connect="dh2799" type="input"/> - <dataholder name="dh2714" class="DH_beam" connect="dh2865" type="input"/> - <dataholder name="dh2715" class="DH_beam" connect="dh2931" type="input"/> - <dataholder name="dh2716" class="DH_Corr" type="output"/> - <dataholder name="dh2717" class="DH_Corr" type="output"/> - <dataholder name="dh2718" class="DH_Corr" type="output"/> - <dataholder name="dh2719" class="DH_Corr" type="output"/> - <dataholder name="dh2720" class="DH_Corr" type="output"/> - <dataholder name="dh2721" class="DH_Corr" type="output"/> - <dataholder name="dh2722" class="DH_Corr" type="output"/> - <dataholder name="dh2723" class="DH_Corr" type="output"/> - <dataholder name="dh2724" class="DH_Corr" type="output"/> - <dataholder name="dh2725" class="DH_Corr" type="output"/> - <dataholder name="dh2726" class="DH_Corr" type="output"/> - <dataholder name="dh2727" class="DH_Corr" type="output"/> - <dataholder name="dh2728" class="DH_Corr" type="output"/> - <dataholder name="dh2729" class="DH_Corr" type="output"/> - <dataholder name="dh2730" class="DH_Corr" type="output"/> - <dataholder name="dh2731" class="DH_Corr" type="output"/> - </workholder> - <step name="CPInput_02732" node="node 0"> - <workholder class="WH_CPInput"> - <dataholder name="dh2733" class="DH_beam" type="input"/> - <dataholder name="dh2734" class="DH_BeamBand" connect="dh2997" type="output"/> - <dataholder name="dh2735" class="DH_BeamBand" connect="dh3003" type="output"/> - <dataholder name="dh2736" class="DH_BeamBand" connect="dh3009" type="output"/> - <dataholder name="dh2737" class="DH_BeamBand" connect="dh3015" type="output"/> - <dataholder name="dh2738" class="DH_BeamBand" connect="dh3021" type="output"/> - <dataholder name="dh2739" class="DH_BeamBand" connect="dh3027" type="output"/> - <dataholder name="dh2740" class="DH_BeamBand" connect="dh3033" type="output"/> - <dataholder name="dh2741" class="DH_BeamBand" connect="dh3039" type="output"/> - <dataholder name="dh2742" class="DH_BeamBand" connect="dh3045" type="output"/> - <dataholder name="dh2743" class="DH_BeamBand" connect="dh3051" type="output"/> - <dataholder name="dh2744" class="DH_BeamBand" connect="dh3057" type="output"/> - <dataholder name="dh2745" class="DH_BeamBand" connect="dh3063" type="output"/> - <dataholder name="dh2746" class="DH_BeamBand" connect="dh3069" type="output"/> - <dataholder name="dh2747" class="DH_BeamBand" connect="dh3075" type="output"/> - <dataholder name="dh2748" class="DH_BeamBand" connect="dh3081" type="output"/> - <dataholder name="dh2749" class="DH_BeamBand" connect="dh3087" type="output"/> - <dataholder name="dh2750" class="DH_BeamBand" connect="dh3093" type="output"/> - <dataholder name="dh2751" class="DH_BeamBand" connect="dh3099" type="output"/> - <dataholder name="dh2752" class="DH_BeamBand" connect="dh3105" type="output"/> - <dataholder name="dh2753" class="DH_BeamBand" connect="dh3111" type="output"/> - <dataholder name="dh2754" class="DH_BeamBand" connect="dh3117" type="output"/> - <dataholder name="dh2755" class="DH_BeamBand" connect="dh3123" type="output"/> - <dataholder name="dh2756" class="DH_BeamBand" connect="dh3129" type="output"/> - <dataholder name="dh2757" class="DH_BeamBand" connect="dh3135" type="output"/> - <dataholder name="dh2758" class="DH_BeamBand" connect="dh3141" type="output"/> - <dataholder name="dh2759" class="DH_BeamBand" connect="dh3147" type="output"/> - <dataholder name="dh2760" class="DH_BeamBand" connect="dh3153" type="output"/> - <dataholder name="dh2761" class="DH_BeamBand" connect="dh3159" type="output"/> - <dataholder name="dh2762" class="DH_BeamBand" connect="dh3165" type="output"/> - <dataholder name="dh2763" class="DH_BeamBand" connect="dh3171" type="output"/> - <dataholder name="dh2764" class="DH_BeamBand" connect="dh3177" type="output"/> - <dataholder name="dh2765" class="DH_BeamBand" connect="dh3183" type="output"/> - <dataholder name="dh2766" class="DH_BeamBand" connect="dh3189" type="output"/> - <dataholder name="dh2767" class="DH_BeamBand" connect="dh3195" type="output"/> - <dataholder name="dh2768" class="DH_BeamBand" connect="dh3201" type="output"/> - <dataholder name="dh2769" class="DH_BeamBand" connect="dh3207" type="output"/> - <dataholder name="dh2770" class="DH_BeamBand" connect="dh3213" type="output"/> - <dataholder name="dh2771" class="DH_BeamBand" connect="dh3219" type="output"/> - <dataholder name="dh2772" class="DH_BeamBand" connect="dh3225" type="output"/> - <dataholder name="dh2773" class="DH_BeamBand" connect="dh3231" type="output"/> - <dataholder name="dh2774" class="DH_BeamBand" connect="dh3237" type="output"/> - <dataholder name="dh2775" class="DH_BeamBand" connect="dh3243" type="output"/> - <dataholder name="dh2776" class="DH_BeamBand" connect="dh3249" type="output"/> - <dataholder name="dh2777" class="DH_BeamBand" connect="dh3255" type="output"/> - <dataholder name="dh2778" class="DH_BeamBand" connect="dh3261" type="output"/> - <dataholder name="dh2779" class="DH_BeamBand" connect="dh3267" type="output"/> - <dataholder name="dh2780" class="DH_BeamBand" connect="dh3273" type="output"/> - <dataholder name="dh2781" class="DH_BeamBand" connect="dh3279" type="output"/> - <dataholder name="dh2782" class="DH_BeamBand" connect="dh3285" type="output"/> - <dataholder name="dh2783" class="DH_BeamBand" connect="dh3291" type="output"/> - <dataholder name="dh2784" class="DH_BeamBand" connect="dh3297" type="output"/> - <dataholder name="dh2785" class="DH_BeamBand" connect="dh3303" type="output"/> - <dataholder name="dh2786" class="DH_BeamBand" connect="dh3309" type="output"/> - <dataholder name="dh2787" class="DH_BeamBand" connect="dh3315" type="output"/> - <dataholder name="dh2788" class="DH_BeamBand" connect="dh3321" type="output"/> - <dataholder name="dh2789" class="DH_BeamBand" connect="dh3327" type="output"/> - <dataholder name="dh2790" class="DH_BeamBand" connect="dh3333" type="output"/> - <dataholder name="dh2791" class="DH_BeamBand" connect="dh3339" type="output"/> - <dataholder name="dh2792" class="DH_BeamBand" connect="dh3345" type="output"/> - <dataholder name="dh2793" class="DH_BeamBand" connect="dh3351" type="output"/> - <dataholder name="dh2794" class="DH_BeamBand" connect="dh3357" type="output"/> - <dataholder name="dh2795" class="DH_BeamBand" connect="dh3363" type="output"/> - <dataholder name="dh2796" class="DH_BeamBand" connect="dh3369" type="output"/> - <dataholder name="dh2797" class="DH_BeamBand" connect="dh3375" type="output"/> - </workholder> - </step> - <step name="CPInput_12798" node="node 0"> - <workholder class="WH_CPInput"> - <dataholder name="dh2799" class="DH_beam" type="input"/> - <dataholder name="dh2800" class="DH_BeamBand" connect="dh2998" type="output"/> - <dataholder name="dh2801" class="DH_BeamBand" connect="dh3004" type="output"/> - <dataholder name="dh2802" class="DH_BeamBand" connect="dh3010" type="output"/> - <dataholder name="dh2803" class="DH_BeamBand" connect="dh3016" type="output"/> - <dataholder name="dh2804" class="DH_BeamBand" connect="dh3022" type="output"/> - <dataholder name="dh2805" class="DH_BeamBand" connect="dh3028" type="output"/> - <dataholder name="dh2806" class="DH_BeamBand" connect="dh3034" type="output"/> - <dataholder name="dh2807" class="DH_BeamBand" connect="dh3040" type="output"/> - <dataholder name="dh2808" class="DH_BeamBand" connect="dh3046" type="output"/> - <dataholder name="dh2809" class="DH_BeamBand" connect="dh3052" type="output"/> - <dataholder name="dh2810" class="DH_BeamBand" connect="dh3058" type="output"/> - <dataholder name="dh2811" class="DH_BeamBand" connect="dh3064" type="output"/> - <dataholder name="dh2812" class="DH_BeamBand" connect="dh3070" type="output"/> - <dataholder name="dh2813" class="DH_BeamBand" connect="dh3076" type="output"/> - <dataholder name="dh2814" class="DH_BeamBand" connect="dh3082" type="output"/> - <dataholder name="dh2815" class="DH_BeamBand" connect="dh3088" type="output"/> - <dataholder name="dh2816" class="DH_BeamBand" connect="dh3094" type="output"/> - <dataholder name="dh2817" class="DH_BeamBand" connect="dh3100" type="output"/> - <dataholder name="dh2818" class="DH_BeamBand" connect="dh3106" type="output"/> - <dataholder name="dh2819" class="DH_BeamBand" connect="dh3112" type="output"/> - <dataholder name="dh2820" class="DH_BeamBand" connect="dh3118" type="output"/> - <dataholder name="dh2821" class="DH_BeamBand" connect="dh3124" type="output"/> - <dataholder name="dh2822" class="DH_BeamBand" connect="dh3130" type="output"/> - <dataholder name="dh2823" class="DH_BeamBand" connect="dh3136" type="output"/> - <dataholder name="dh2824" class="DH_BeamBand" connect="dh3142" type="output"/> - <dataholder name="dh2825" class="DH_BeamBand" connect="dh3148" type="output"/> - <dataholder name="dh2826" class="DH_BeamBand" connect="dh3154" type="output"/> - <dataholder name="dh2827" class="DH_BeamBand" connect="dh3160" type="output"/> - <dataholder name="dh2828" class="DH_BeamBand" connect="dh3166" type="output"/> - <dataholder name="dh2829" class="DH_BeamBand" connect="dh3172" type="output"/> - <dataholder name="dh2830" class="DH_BeamBand" connect="dh3178" type="output"/> - <dataholder name="dh2831" class="DH_BeamBand" connect="dh3184" type="output"/> - <dataholder name="dh2832" class="DH_BeamBand" connect="dh3190" type="output"/> - <dataholder name="dh2833" class="DH_BeamBand" connect="dh3196" type="output"/> - <dataholder name="dh2834" class="DH_BeamBand" connect="dh3202" type="output"/> - <dataholder name="dh2835" class="DH_BeamBand" connect="dh3208" type="output"/> - <dataholder name="dh2836" class="DH_BeamBand" connect="dh3214" type="output"/> - <dataholder name="dh2837" class="DH_BeamBand" connect="dh3220" type="output"/> - <dataholder name="dh2838" class="DH_BeamBand" connect="dh3226" type="output"/> - <dataholder name="dh2839" class="DH_BeamBand" connect="dh3232" type="output"/> - <dataholder name="dh2840" class="DH_BeamBand" connect="dh3238" type="output"/> - <dataholder name="dh2841" class="DH_BeamBand" connect="dh3244" type="output"/> - <dataholder name="dh2842" class="DH_BeamBand" connect="dh3250" type="output"/> - <dataholder name="dh2843" class="DH_BeamBand" connect="dh3256" type="output"/> - <dataholder name="dh2844" class="DH_BeamBand" connect="dh3262" type="output"/> - <dataholder name="dh2845" class="DH_BeamBand" connect="dh3268" type="output"/> - <dataholder name="dh2846" class="DH_BeamBand" connect="dh3274" type="output"/> - <dataholder name="dh2847" class="DH_BeamBand" connect="dh3280" type="output"/> - <dataholder name="dh2848" class="DH_BeamBand" connect="dh3286" type="output"/> - <dataholder name="dh2849" class="DH_BeamBand" connect="dh3292" type="output"/> - <dataholder name="dh2850" class="DH_BeamBand" connect="dh3298" type="output"/> - <dataholder name="dh2851" class="DH_BeamBand" connect="dh3304" type="output"/> - <dataholder name="dh2852" class="DH_BeamBand" connect="dh3310" type="output"/> - <dataholder name="dh2853" class="DH_BeamBand" connect="dh3316" type="output"/> - <dataholder name="dh2854" class="DH_BeamBand" connect="dh3322" type="output"/> - <dataholder name="dh2855" class="DH_BeamBand" connect="dh3328" type="output"/> - <dataholder name="dh2856" class="DH_BeamBand" connect="dh3334" type="output"/> - <dataholder name="dh2857" class="DH_BeamBand" connect="dh3340" type="output"/> - <dataholder name="dh2858" class="DH_BeamBand" connect="dh3346" type="output"/> - <dataholder name="dh2859" class="DH_BeamBand" connect="dh3352" type="output"/> - <dataholder name="dh2860" class="DH_BeamBand" connect="dh3358" type="output"/> - <dataholder name="dh2861" class="DH_BeamBand" connect="dh3364" type="output"/> - <dataholder name="dh2862" class="DH_BeamBand" connect="dh3370" type="output"/> - <dataholder name="dh2863" class="DH_BeamBand" connect="dh3376" type="output"/> - </workholder> - </step> - <step name="CPInput_22864" node="node 0"> - <workholder class="WH_CPInput"> - <dataholder name="dh2865" class="DH_beam" type="input"/> - <dataholder name="dh2866" class="DH_BeamBand" connect="dh2999" type="output"/> - <dataholder name="dh2867" class="DH_BeamBand" connect="dh3005" type="output"/> - <dataholder name="dh2868" class="DH_BeamBand" connect="dh3011" type="output"/> - <dataholder name="dh2869" class="DH_BeamBand" connect="dh3017" type="output"/> - <dataholder name="dh2870" class="DH_BeamBand" connect="dh3023" type="output"/> - <dataholder name="dh2871" class="DH_BeamBand" connect="dh3029" type="output"/> - <dataholder name="dh2872" class="DH_BeamBand" connect="dh3035" type="output"/> - <dataholder name="dh2873" class="DH_BeamBand" connect="dh3041" type="output"/> - <dataholder name="dh2874" class="DH_BeamBand" connect="dh3047" type="output"/> - <dataholder name="dh2875" class="DH_BeamBand" connect="dh3053" type="output"/> - <dataholder name="dh2876" class="DH_BeamBand" connect="dh3059" type="output"/> - <dataholder name="dh2877" class="DH_BeamBand" connect="dh3065" type="output"/> - <dataholder name="dh2878" class="DH_BeamBand" connect="dh3071" type="output"/> - <dataholder name="dh2879" class="DH_BeamBand" connect="dh3077" type="output"/> - <dataholder name="dh2880" class="DH_BeamBand" connect="dh3083" type="output"/> - <dataholder name="dh2881" class="DH_BeamBand" connect="dh3089" type="output"/> - <dataholder name="dh2882" class="DH_BeamBand" connect="dh3095" type="output"/> - <dataholder name="dh2883" class="DH_BeamBand" connect="dh3101" type="output"/> - <dataholder name="dh2884" class="DH_BeamBand" connect="dh3107" type="output"/> - <dataholder name="dh2885" class="DH_BeamBand" connect="dh3113" type="output"/> - <dataholder name="dh2886" class="DH_BeamBand" connect="dh3119" type="output"/> - <dataholder name="dh2887" class="DH_BeamBand" connect="dh3125" type="output"/> - <dataholder name="dh2888" class="DH_BeamBand" connect="dh3131" type="output"/> - <dataholder name="dh2889" class="DH_BeamBand" connect="dh3137" type="output"/> - <dataholder name="dh2890" class="DH_BeamBand" connect="dh3143" type="output"/> - <dataholder name="dh2891" class="DH_BeamBand" connect="dh3149" type="output"/> - <dataholder name="dh2892" class="DH_BeamBand" connect="dh3155" type="output"/> - <dataholder name="dh2893" class="DH_BeamBand" connect="dh3161" type="output"/> - <dataholder name="dh2894" class="DH_BeamBand" connect="dh3167" type="output"/> - <dataholder name="dh2895" class="DH_BeamBand" connect="dh3173" type="output"/> - <dataholder name="dh2896" class="DH_BeamBand" connect="dh3179" type="output"/> - <dataholder name="dh2897" class="DH_BeamBand" connect="dh3185" type="output"/> - <dataholder name="dh2898" class="DH_BeamBand" connect="dh3191" type="output"/> - <dataholder name="dh2899" class="DH_BeamBand" connect="dh3197" type="output"/> - <dataholder name="dh2900" class="DH_BeamBand" connect="dh3203" type="output"/> - <dataholder name="dh2901" class="DH_BeamBand" connect="dh3209" type="output"/> - <dataholder name="dh2902" class="DH_BeamBand" connect="dh3215" type="output"/> - <dataholder name="dh2903" class="DH_BeamBand" connect="dh3221" type="output"/> - <dataholder name="dh2904" class="DH_BeamBand" connect="dh3227" type="output"/> - <dataholder name="dh2905" class="DH_BeamBand" connect="dh3233" type="output"/> - <dataholder name="dh2906" class="DH_BeamBand" connect="dh3239" type="output"/> - <dataholder name="dh2907" class="DH_BeamBand" connect="dh3245" type="output"/> - <dataholder name="dh2908" class="DH_BeamBand" connect="dh3251" type="output"/> - <dataholder name="dh2909" class="DH_BeamBand" connect="dh3257" type="output"/> - <dataholder name="dh2910" class="DH_BeamBand" connect="dh3263" type="output"/> - <dataholder name="dh2911" class="DH_BeamBand" connect="dh3269" type="output"/> - <dataholder name="dh2912" class="DH_BeamBand" connect="dh3275" type="output"/> - <dataholder name="dh2913" class="DH_BeamBand" connect="dh3281" type="output"/> - <dataholder name="dh2914" class="DH_BeamBand" connect="dh3287" type="output"/> - <dataholder name="dh2915" class="DH_BeamBand" connect="dh3293" type="output"/> - <dataholder name="dh2916" class="DH_BeamBand" connect="dh3299" type="output"/> - <dataholder name="dh2917" class="DH_BeamBand" connect="dh3305" type="output"/> - <dataholder name="dh2918" class="DH_BeamBand" connect="dh3311" type="output"/> - <dataholder name="dh2919" class="DH_BeamBand" connect="dh3317" type="output"/> - <dataholder name="dh2920" class="DH_BeamBand" connect="dh3323" type="output"/> - <dataholder name="dh2921" class="DH_BeamBand" connect="dh3329" type="output"/> - <dataholder name="dh2922" class="DH_BeamBand" connect="dh3335" type="output"/> - <dataholder name="dh2923" class="DH_BeamBand" connect="dh3341" type="output"/> - <dataholder name="dh2924" class="DH_BeamBand" connect="dh3347" type="output"/> - <dataholder name="dh2925" class="DH_BeamBand" connect="dh3353" type="output"/> - <dataholder name="dh2926" class="DH_BeamBand" connect="dh3359" type="output"/> - <dataholder name="dh2927" class="DH_BeamBand" connect="dh3365" type="output"/> - <dataholder name="dh2928" class="DH_BeamBand" connect="dh3371" type="output"/> - <dataholder name="dh2929" class="DH_BeamBand" connect="dh3377" type="output"/> - </workholder> - </step> - <step name="CPInput_32930" node="node 0"> - <workholder class="WH_CPInput"> - <dataholder name="dh2931" class="DH_beam" type="input"/> - <dataholder name="dh2932" class="DH_BeamBand" connect="dh3000" type="output"/> - <dataholder name="dh2933" class="DH_BeamBand" connect="dh3006" type="output"/> - <dataholder name="dh2934" class="DH_BeamBand" connect="dh3012" type="output"/> - <dataholder name="dh2935" class="DH_BeamBand" connect="dh3018" type="output"/> - <dataholder name="dh2936" class="DH_BeamBand" connect="dh3024" type="output"/> - <dataholder name="dh2937" class="DH_BeamBand" connect="dh3030" type="output"/> - <dataholder name="dh2938" class="DH_BeamBand" connect="dh3036" type="output"/> - <dataholder name="dh2939" class="DH_BeamBand" connect="dh3042" type="output"/> - <dataholder name="dh2940" class="DH_BeamBand" connect="dh3048" type="output"/> - <dataholder name="dh2941" class="DH_BeamBand" connect="dh3054" type="output"/> - <dataholder name="dh2942" class="DH_BeamBand" connect="dh3060" type="output"/> - <dataholder name="dh2943" class="DH_BeamBand" connect="dh3066" type="output"/> - <dataholder name="dh2944" class="DH_BeamBand" connect="dh3072" type="output"/> - <dataholder name="dh2945" class="DH_BeamBand" connect="dh3078" type="output"/> - <dataholder name="dh2946" class="DH_BeamBand" connect="dh3084" type="output"/> - <dataholder name="dh2947" class="DH_BeamBand" connect="dh3090" type="output"/> - <dataholder name="dh2948" class="DH_BeamBand" connect="dh3096" type="output"/> - <dataholder name="dh2949" class="DH_BeamBand" connect="dh3102" type="output"/> - <dataholder name="dh2950" class="DH_BeamBand" connect="dh3108" type="output"/> - <dataholder name="dh2951" class="DH_BeamBand" connect="dh3114" type="output"/> - <dataholder name="dh2952" class="DH_BeamBand" connect="dh3120" type="output"/> - <dataholder name="dh2953" class="DH_BeamBand" connect="dh3126" type="output"/> - <dataholder name="dh2954" class="DH_BeamBand" connect="dh3132" type="output"/> - <dataholder name="dh2955" class="DH_BeamBand" connect="dh3138" type="output"/> - <dataholder name="dh2956" class="DH_BeamBand" connect="dh3144" type="output"/> - <dataholder name="dh2957" class="DH_BeamBand" connect="dh3150" type="output"/> - <dataholder name="dh2958" class="DH_BeamBand" connect="dh3156" type="output"/> - <dataholder name="dh2959" class="DH_BeamBand" connect="dh3162" type="output"/> - <dataholder name="dh2960" class="DH_BeamBand" connect="dh3168" type="output"/> - <dataholder name="dh2961" class="DH_BeamBand" connect="dh3174" type="output"/> - <dataholder name="dh2962" class="DH_BeamBand" connect="dh3180" type="output"/> - <dataholder name="dh2963" class="DH_BeamBand" connect="dh3186" type="output"/> - <dataholder name="dh2964" class="DH_BeamBand" connect="dh3192" type="output"/> - <dataholder name="dh2965" class="DH_BeamBand" connect="dh3198" type="output"/> - <dataholder name="dh2966" class="DH_BeamBand" connect="dh3204" type="output"/> - <dataholder name="dh2967" class="DH_BeamBand" connect="dh3210" type="output"/> - <dataholder name="dh2968" class="DH_BeamBand" connect="dh3216" type="output"/> - <dataholder name="dh2969" class="DH_BeamBand" connect="dh3222" type="output"/> - <dataholder name="dh2970" class="DH_BeamBand" connect="dh3228" type="output"/> - <dataholder name="dh2971" class="DH_BeamBand" connect="dh3234" type="output"/> - <dataholder name="dh2972" class="DH_BeamBand" connect="dh3240" type="output"/> - <dataholder name="dh2973" class="DH_BeamBand" connect="dh3246" type="output"/> - <dataholder name="dh2974" class="DH_BeamBand" connect="dh3252" type="output"/> - <dataholder name="dh2975" class="DH_BeamBand" connect="dh3258" type="output"/> - <dataholder name="dh2976" class="DH_BeamBand" connect="dh3264" type="output"/> - <dataholder name="dh2977" class="DH_BeamBand" connect="dh3270" type="output"/> - <dataholder name="dh2978" class="DH_BeamBand" connect="dh3276" type="output"/> - <dataholder name="dh2979" class="DH_BeamBand" connect="dh3282" type="output"/> - <dataholder name="dh2980" class="DH_BeamBand" connect="dh3288" type="output"/> - <dataholder name="dh2981" class="DH_BeamBand" connect="dh3294" type="output"/> - <dataholder name="dh2982" class="DH_BeamBand" connect="dh3300" type="output"/> - <dataholder name="dh2983" class="DH_BeamBand" connect="dh3306" type="output"/> - <dataholder name="dh2984" class="DH_BeamBand" connect="dh3312" type="output"/> - <dataholder name="dh2985" class="DH_BeamBand" connect="dh3318" type="output"/> - <dataholder name="dh2986" class="DH_BeamBand" connect="dh3324" type="output"/> - <dataholder name="dh2987" class="DH_BeamBand" connect="dh3330" type="output"/> - <dataholder name="dh2988" class="DH_BeamBand" connect="dh3336" type="output"/> - <dataholder name="dh2989" class="DH_BeamBand" connect="dh3342" type="output"/> - <dataholder name="dh2990" class="DH_BeamBand" connect="dh3348" type="output"/> - <dataholder name="dh2991" class="DH_BeamBand" connect="dh3354" type="output"/> - <dataholder name="dh2992" class="DH_BeamBand" connect="dh3360" type="output"/> - <dataholder name="dh2993" class="DH_BeamBand" connect="dh3366" type="output"/> - <dataholder name="dh2994" class="DH_BeamBand" connect="dh3372" type="output"/> - <dataholder name="dh2995" class="DH_BeamBand" connect="dh3378" type="output"/> - </workholder> - </step> - <step name="Correlator_0_42996" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh2997" class="DH_BeamBand" type="input"/> - <dataholder name="dh2998" class="DH_BeamBand" type="input"/> - <dataholder name="dh2999" class="DH_BeamBand" type="input"/> - <dataholder name="dh3000" class="DH_BeamBand" type="input"/> - <dataholder name="dh3001" class="DH_Corr" connect="dh3381" type="output"/> - </workholder> - </step> - <step name="Correlator_1_53002" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3003" class="DH_BeamBand" type="input"/> - <dataholder name="dh3004" class="DH_BeamBand" type="input"/> - <dataholder name="dh3005" class="DH_BeamBand" type="input"/> - <dataholder name="dh3006" class="DH_BeamBand" type="input"/> - <dataholder name="dh3007" class="DH_Corr" connect="dh3382" type="output"/> - </workholder> - </step> - <step name="Correlator_2_63008" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3009" class="DH_BeamBand" type="input"/> - <dataholder name="dh3010" class="DH_BeamBand" type="input"/> - <dataholder name="dh3011" class="DH_BeamBand" type="input"/> - <dataholder name="dh3012" class="DH_BeamBand" type="input"/> - <dataholder name="dh3013" class="DH_Corr" connect="dh3383" type="output"/> - </workholder> - </step> - <step name="Correlator_3_73014" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3015" class="DH_BeamBand" type="input"/> - <dataholder name="dh3016" class="DH_BeamBand" type="input"/> - <dataholder name="dh3017" class="DH_BeamBand" type="input"/> - <dataholder name="dh3018" class="DH_BeamBand" type="input"/> - <dataholder name="dh3019" class="DH_Corr" connect="dh3384" type="output"/> - </workholder> - </step> - <step name="Correlator_0_83020" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3021" class="DH_BeamBand" type="input"/> - <dataholder name="dh3022" class="DH_BeamBand" type="input"/> - <dataholder name="dh3023" class="DH_BeamBand" type="input"/> - <dataholder name="dh3024" class="DH_BeamBand" type="input"/> - <dataholder name="dh3025" class="DH_Corr" connect="dh3385" type="output"/> - </workholder> - </step> - <step name="Correlator_1_93026" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3027" class="DH_BeamBand" type="input"/> - <dataholder name="dh3028" class="DH_BeamBand" type="input"/> - <dataholder name="dh3029" class="DH_BeamBand" type="input"/> - <dataholder name="dh3030" class="DH_BeamBand" type="input"/> - <dataholder name="dh3031" class="DH_Corr" connect="dh3386" type="output"/> - </workholder> - </step> - <step name="Correlator_2_103032" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3033" class="DH_BeamBand" type="input"/> - <dataholder name="dh3034" class="DH_BeamBand" type="input"/> - <dataholder name="dh3035" class="DH_BeamBand" type="input"/> - <dataholder name="dh3036" class="DH_BeamBand" type="input"/> - <dataholder name="dh3037" class="DH_Corr" connect="dh3387" type="output"/> - </workholder> - </step> - <step name="Correlator_3_113038" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3039" class="DH_BeamBand" type="input"/> - <dataholder name="dh3040" class="DH_BeamBand" type="input"/> - <dataholder name="dh3041" class="DH_BeamBand" type="input"/> - <dataholder name="dh3042" class="DH_BeamBand" type="input"/> - <dataholder name="dh3043" class="DH_Corr" connect="dh3388" type="output"/> - </workholder> - </step> - <step name="Correlator_0_123044" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3045" class="DH_BeamBand" type="input"/> - <dataholder name="dh3046" class="DH_BeamBand" type="input"/> - <dataholder name="dh3047" class="DH_BeamBand" type="input"/> - <dataholder name="dh3048" class="DH_BeamBand" type="input"/> - <dataholder name="dh3049" class="DH_Corr" connect="dh3389" type="output"/> - </workholder> - </step> - <step name="Correlator_1_133050" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3051" class="DH_BeamBand" type="input"/> - <dataholder name="dh3052" class="DH_BeamBand" type="input"/> - <dataholder name="dh3053" class="DH_BeamBand" type="input"/> - <dataholder name="dh3054" class="DH_BeamBand" type="input"/> - <dataholder name="dh3055" class="DH_Corr" connect="dh3390" type="output"/> - </workholder> - </step> - <step name="Correlator_2_143056" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3057" class="DH_BeamBand" type="input"/> - <dataholder name="dh3058" class="DH_BeamBand" type="input"/> - <dataholder name="dh3059" class="DH_BeamBand" type="input"/> - <dataholder name="dh3060" class="DH_BeamBand" type="input"/> - <dataholder name="dh3061" class="DH_Corr" connect="dh3391" type="output"/> - </workholder> - </step> - <step name="Correlator_3_153062" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3063" class="DH_BeamBand" type="input"/> - <dataholder name="dh3064" class="DH_BeamBand" type="input"/> - <dataholder name="dh3065" class="DH_BeamBand" type="input"/> - <dataholder name="dh3066" class="DH_BeamBand" type="input"/> - <dataholder name="dh3067" class="DH_Corr" connect="dh3392" type="output"/> - </workholder> - </step> - <step name="Correlator_0_163068" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3069" class="DH_BeamBand" type="input"/> - <dataholder name="dh3070" class="DH_BeamBand" type="input"/> - <dataholder name="dh3071" class="DH_BeamBand" type="input"/> - <dataholder name="dh3072" class="DH_BeamBand" type="input"/> - <dataholder name="dh3073" class="DH_Corr" connect="dh3393" type="output"/> - </workholder> - </step> - <step name="Correlator_1_173074" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3075" class="DH_BeamBand" type="input"/> - <dataholder name="dh3076" class="DH_BeamBand" type="input"/> - <dataholder name="dh3077" class="DH_BeamBand" type="input"/> - <dataholder name="dh3078" class="DH_BeamBand" type="input"/> - <dataholder name="dh3079" class="DH_Corr" connect="dh3394" type="output"/> - </workholder> - </step> - <step name="Correlator_2_183080" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3081" class="DH_BeamBand" type="input"/> - <dataholder name="dh3082" class="DH_BeamBand" type="input"/> - <dataholder name="dh3083" class="DH_BeamBand" type="input"/> - <dataholder name="dh3084" class="DH_BeamBand" type="input"/> - <dataholder name="dh3085" class="DH_Corr" connect="dh3395" type="output"/> - </workholder> - </step> - <step name="Correlator_3_193086" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3087" class="DH_BeamBand" type="input"/> - <dataholder name="dh3088" class="DH_BeamBand" type="input"/> - <dataholder name="dh3089" class="DH_BeamBand" type="input"/> - <dataholder name="dh3090" class="DH_BeamBand" type="input"/> - <dataholder name="dh3091" class="DH_Corr" connect="dh3396" type="output"/> - </workholder> - </step> - <step name="Correlator_0_203092" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3093" class="DH_BeamBand" type="input"/> - <dataholder name="dh3094" class="DH_BeamBand" type="input"/> - <dataholder name="dh3095" class="DH_BeamBand" type="input"/> - <dataholder name="dh3096" class="DH_BeamBand" type="input"/> - <dataholder name="dh3097" class="DH_Corr" connect="dh3397" type="output"/> - </workholder> - </step> - <step name="Correlator_1_213098" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3099" class="DH_BeamBand" type="input"/> - <dataholder name="dh3100" class="DH_BeamBand" type="input"/> - <dataholder name="dh3101" class="DH_BeamBand" type="input"/> - <dataholder name="dh3102" class="DH_BeamBand" type="input"/> - <dataholder name="dh3103" class="DH_Corr" connect="dh3398" type="output"/> - </workholder> - </step> - <step name="Correlator_2_223104" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3105" class="DH_BeamBand" type="input"/> - <dataholder name="dh3106" class="DH_BeamBand" type="input"/> - <dataholder name="dh3107" class="DH_BeamBand" type="input"/> - <dataholder name="dh3108" class="DH_BeamBand" type="input"/> - <dataholder name="dh3109" class="DH_Corr" connect="dh3399" type="output"/> - </workholder> - </step> - <step name="Correlator_3_233110" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3111" class="DH_BeamBand" type="input"/> - <dataholder name="dh3112" class="DH_BeamBand" type="input"/> - <dataholder name="dh3113" class="DH_BeamBand" type="input"/> - <dataholder name="dh3114" class="DH_BeamBand" type="input"/> - <dataholder name="dh3115" class="DH_Corr" connect="dh3400" type="output"/> - </workholder> - </step> - <step name="Correlator_0_243116" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3117" class="DH_BeamBand" type="input"/> - <dataholder name="dh3118" class="DH_BeamBand" type="input"/> - <dataholder name="dh3119" class="DH_BeamBand" type="input"/> - <dataholder name="dh3120" class="DH_BeamBand" type="input"/> - <dataholder name="dh3121" class="DH_Corr" connect="dh3401" type="output"/> - </workholder> - </step> - <step name="Correlator_1_253122" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3123" class="DH_BeamBand" type="input"/> - <dataholder name="dh3124" class="DH_BeamBand" type="input"/> - <dataholder name="dh3125" class="DH_BeamBand" type="input"/> - <dataholder name="dh3126" class="DH_BeamBand" type="input"/> - <dataholder name="dh3127" class="DH_Corr" connect="dh3402" type="output"/> - </workholder> - </step> - <step name="Correlator_2_263128" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3129" class="DH_BeamBand" type="input"/> - <dataholder name="dh3130" class="DH_BeamBand" type="input"/> - <dataholder name="dh3131" class="DH_BeamBand" type="input"/> - <dataholder name="dh3132" class="DH_BeamBand" type="input"/> - <dataholder name="dh3133" class="DH_Corr" connect="dh3403" type="output"/> - </workholder> - </step> - <step name="Correlator_3_273134" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3135" class="DH_BeamBand" type="input"/> - <dataholder name="dh3136" class="DH_BeamBand" type="input"/> - <dataholder name="dh3137" class="DH_BeamBand" type="input"/> - <dataholder name="dh3138" class="DH_BeamBand" type="input"/> - <dataholder name="dh3139" class="DH_Corr" connect="dh3404" type="output"/> - </workholder> - </step> - <step name="Correlator_0_283140" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3141" class="DH_BeamBand" type="input"/> - <dataholder name="dh3142" class="DH_BeamBand" type="input"/> - <dataholder name="dh3143" class="DH_BeamBand" type="input"/> - <dataholder name="dh3144" class="DH_BeamBand" type="input"/> - <dataholder name="dh3145" class="DH_Corr" connect="dh3405" type="output"/> - </workholder> - </step> - <step name="Correlator_1_293146" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3147" class="DH_BeamBand" type="input"/> - <dataholder name="dh3148" class="DH_BeamBand" type="input"/> - <dataholder name="dh3149" class="DH_BeamBand" type="input"/> - <dataholder name="dh3150" class="DH_BeamBand" type="input"/> - <dataholder name="dh3151" class="DH_Corr" connect="dh3406" type="output"/> - </workholder> - </step> - <step name="Correlator_2_303152" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3153" class="DH_BeamBand" type="input"/> - <dataholder name="dh3154" class="DH_BeamBand" type="input"/> - <dataholder name="dh3155" class="DH_BeamBand" type="input"/> - <dataholder name="dh3156" class="DH_BeamBand" type="input"/> - <dataholder name="dh3157" class="DH_Corr" connect="dh3407" type="output"/> - </workholder> - </step> - <step name="Correlator_3_313158" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3159" class="DH_BeamBand" type="input"/> - <dataholder name="dh3160" class="DH_BeamBand" type="input"/> - <dataholder name="dh3161" class="DH_BeamBand" type="input"/> - <dataholder name="dh3162" class="DH_BeamBand" type="input"/> - <dataholder name="dh3163" class="DH_Corr" connect="dh3408" type="output"/> - </workholder> - </step> - <step name="Correlator_0_323164" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3165" class="DH_BeamBand" type="input"/> - <dataholder name="dh3166" class="DH_BeamBand" type="input"/> - <dataholder name="dh3167" class="DH_BeamBand" type="input"/> - <dataholder name="dh3168" class="DH_BeamBand" type="input"/> - <dataholder name="dh3169" class="DH_Corr" connect="dh3409" type="output"/> - </workholder> - </step> - <step name="Correlator_1_333170" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3171" class="DH_BeamBand" type="input"/> - <dataholder name="dh3172" class="DH_BeamBand" type="input"/> - <dataholder name="dh3173" class="DH_BeamBand" type="input"/> - <dataholder name="dh3174" class="DH_BeamBand" type="input"/> - <dataholder name="dh3175" class="DH_Corr" connect="dh3410" type="output"/> - </workholder> - </step> - <step name="Correlator_2_343176" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3177" class="DH_BeamBand" type="input"/> - <dataholder name="dh3178" class="DH_BeamBand" type="input"/> - <dataholder name="dh3179" class="DH_BeamBand" type="input"/> - <dataholder name="dh3180" class="DH_BeamBand" type="input"/> - <dataholder name="dh3181" class="DH_Corr" connect="dh3411" type="output"/> - </workholder> - </step> - <step name="Correlator_3_353182" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3183" class="DH_BeamBand" type="input"/> - <dataholder name="dh3184" class="DH_BeamBand" type="input"/> - <dataholder name="dh3185" class="DH_BeamBand" type="input"/> - <dataholder name="dh3186" class="DH_BeamBand" type="input"/> - <dataholder name="dh3187" class="DH_Corr" connect="dh3412" type="output"/> - </workholder> - </step> - <step name="Correlator_0_363188" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3189" class="DH_BeamBand" type="input"/> - <dataholder name="dh3190" class="DH_BeamBand" type="input"/> - <dataholder name="dh3191" class="DH_BeamBand" type="input"/> - <dataholder name="dh3192" class="DH_BeamBand" type="input"/> - <dataholder name="dh3193" class="DH_Corr" connect="dh3413" type="output"/> - </workholder> - </step> - <step name="Correlator_1_373194" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3195" class="DH_BeamBand" type="input"/> - <dataholder name="dh3196" class="DH_BeamBand" type="input"/> - <dataholder name="dh3197" class="DH_BeamBand" type="input"/> - <dataholder name="dh3198" class="DH_BeamBand" type="input"/> - <dataholder name="dh3199" class="DH_Corr" connect="dh3414" type="output"/> - </workholder> - </step> - <step name="Correlator_2_383200" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3201" class="DH_BeamBand" type="input"/> - <dataholder name="dh3202" class="DH_BeamBand" type="input"/> - <dataholder name="dh3203" class="DH_BeamBand" type="input"/> - <dataholder name="dh3204" class="DH_BeamBand" type="input"/> - <dataholder name="dh3205" class="DH_Corr" connect="dh3415" type="output"/> - </workholder> - </step> - <step name="Correlator_3_393206" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3207" class="DH_BeamBand" type="input"/> - <dataholder name="dh3208" class="DH_BeamBand" type="input"/> - <dataholder name="dh3209" class="DH_BeamBand" type="input"/> - <dataholder name="dh3210" class="DH_BeamBand" type="input"/> - <dataholder name="dh3211" class="DH_Corr" connect="dh3416" type="output"/> - </workholder> - </step> - <step name="Correlator_0_403212" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3213" class="DH_BeamBand" type="input"/> - <dataholder name="dh3214" class="DH_BeamBand" type="input"/> - <dataholder name="dh3215" class="DH_BeamBand" type="input"/> - <dataholder name="dh3216" class="DH_BeamBand" type="input"/> - <dataholder name="dh3217" class="DH_Corr" connect="dh3417" type="output"/> - </workholder> - </step> - <step name="Correlator_1_413218" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3219" class="DH_BeamBand" type="input"/> - <dataholder name="dh3220" class="DH_BeamBand" type="input"/> - <dataholder name="dh3221" class="DH_BeamBand" type="input"/> - <dataholder name="dh3222" class="DH_BeamBand" type="input"/> - <dataholder name="dh3223" class="DH_Corr" connect="dh3418" type="output"/> - </workholder> - </step> - <step name="Correlator_2_423224" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3225" class="DH_BeamBand" type="input"/> - <dataholder name="dh3226" class="DH_BeamBand" type="input"/> - <dataholder name="dh3227" class="DH_BeamBand" type="input"/> - <dataholder name="dh3228" class="DH_BeamBand" type="input"/> - <dataholder name="dh3229" class="DH_Corr" connect="dh3419" type="output"/> - </workholder> - </step> - <step name="Correlator_3_433230" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3231" class="DH_BeamBand" type="input"/> - <dataholder name="dh3232" class="DH_BeamBand" type="input"/> - <dataholder name="dh3233" class="DH_BeamBand" type="input"/> - <dataholder name="dh3234" class="DH_BeamBand" type="input"/> - <dataholder name="dh3235" class="DH_Corr" connect="dh3420" type="output"/> - </workholder> - </step> - <step name="Correlator_0_443236" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3237" class="DH_BeamBand" type="input"/> - <dataholder name="dh3238" class="DH_BeamBand" type="input"/> - <dataholder name="dh3239" class="DH_BeamBand" type="input"/> - <dataholder name="dh3240" class="DH_BeamBand" type="input"/> - <dataholder name="dh3241" class="DH_Corr" connect="dh3421" type="output"/> - </workholder> - </step> - <step name="Correlator_1_453242" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3243" class="DH_BeamBand" type="input"/> - <dataholder name="dh3244" class="DH_BeamBand" type="input"/> - <dataholder name="dh3245" class="DH_BeamBand" type="input"/> - <dataholder name="dh3246" class="DH_BeamBand" type="input"/> - <dataholder name="dh3247" class="DH_Corr" connect="dh3422" type="output"/> - </workholder> - </step> - <step name="Correlator_2_463248" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3249" class="DH_BeamBand" type="input"/> - <dataholder name="dh3250" class="DH_BeamBand" type="input"/> - <dataholder name="dh3251" class="DH_BeamBand" type="input"/> - <dataholder name="dh3252" class="DH_BeamBand" type="input"/> - <dataholder name="dh3253" class="DH_Corr" connect="dh3423" type="output"/> - </workholder> - </step> - <step name="Correlator_3_473254" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3255" class="DH_BeamBand" type="input"/> - <dataholder name="dh3256" class="DH_BeamBand" type="input"/> - <dataholder name="dh3257" class="DH_BeamBand" type="input"/> - <dataholder name="dh3258" class="DH_BeamBand" type="input"/> - <dataholder name="dh3259" class="DH_Corr" connect="dh3424" type="output"/> - </workholder> - </step> - <step name="Correlator_0_483260" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3261" class="DH_BeamBand" type="input"/> - <dataholder name="dh3262" class="DH_BeamBand" type="input"/> - <dataholder name="dh3263" class="DH_BeamBand" type="input"/> - <dataholder name="dh3264" class="DH_BeamBand" type="input"/> - <dataholder name="dh3265" class="DH_Corr" connect="dh3425" type="output"/> - </workholder> - </step> - <step name="Correlator_1_493266" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3267" class="DH_BeamBand" type="input"/> - <dataholder name="dh3268" class="DH_BeamBand" type="input"/> - <dataholder name="dh3269" class="DH_BeamBand" type="input"/> - <dataholder name="dh3270" class="DH_BeamBand" type="input"/> - <dataholder name="dh3271" class="DH_Corr" connect="dh3426" type="output"/> - </workholder> - </step> - <step name="Correlator_2_503272" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3273" class="DH_BeamBand" type="input"/> - <dataholder name="dh3274" class="DH_BeamBand" type="input"/> - <dataholder name="dh3275" class="DH_BeamBand" type="input"/> - <dataholder name="dh3276" class="DH_BeamBand" type="input"/> - <dataholder name="dh3277" class="DH_Corr" connect="dh3427" type="output"/> - </workholder> - </step> - <step name="Correlator_3_513278" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3279" class="DH_BeamBand" type="input"/> - <dataholder name="dh3280" class="DH_BeamBand" type="input"/> - <dataholder name="dh3281" class="DH_BeamBand" type="input"/> - <dataholder name="dh3282" class="DH_BeamBand" type="input"/> - <dataholder name="dh3283" class="DH_Corr" connect="dh3428" type="output"/> - </workholder> - </step> - <step name="Correlator_0_523284" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3285" class="DH_BeamBand" type="input"/> - <dataholder name="dh3286" class="DH_BeamBand" type="input"/> - <dataholder name="dh3287" class="DH_BeamBand" type="input"/> - <dataholder name="dh3288" class="DH_BeamBand" type="input"/> - <dataholder name="dh3289" class="DH_Corr" connect="dh3429" type="output"/> - </workholder> - </step> - <step name="Correlator_1_533290" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3291" class="DH_BeamBand" type="input"/> - <dataholder name="dh3292" class="DH_BeamBand" type="input"/> - <dataholder name="dh3293" class="DH_BeamBand" type="input"/> - <dataholder name="dh3294" class="DH_BeamBand" type="input"/> - <dataholder name="dh3295" class="DH_Corr" connect="dh3430" type="output"/> - </workholder> - </step> - <step name="Correlator_2_543296" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3297" class="DH_BeamBand" type="input"/> - <dataholder name="dh3298" class="DH_BeamBand" type="input"/> - <dataholder name="dh3299" class="DH_BeamBand" type="input"/> - <dataholder name="dh3300" class="DH_BeamBand" type="input"/> - <dataholder name="dh3301" class="DH_Corr" connect="dh3431" type="output"/> - </workholder> - </step> - <step name="Correlator_3_553302" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3303" class="DH_BeamBand" type="input"/> - <dataholder name="dh3304" class="DH_BeamBand" type="input"/> - <dataholder name="dh3305" class="DH_BeamBand" type="input"/> - <dataholder name="dh3306" class="DH_BeamBand" type="input"/> - <dataholder name="dh3307" class="DH_Corr" connect="dh3432" type="output"/> - </workholder> - </step> - <step name="Correlator_0_563308" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3309" class="DH_BeamBand" type="input"/> - <dataholder name="dh3310" class="DH_BeamBand" type="input"/> - <dataholder name="dh3311" class="DH_BeamBand" type="input"/> - <dataholder name="dh3312" class="DH_BeamBand" type="input"/> - <dataholder name="dh3313" class="DH_Corr" connect="dh3433" type="output"/> - </workholder> - </step> - <step name="Correlator_1_573314" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3315" class="DH_BeamBand" type="input"/> - <dataholder name="dh3316" class="DH_BeamBand" type="input"/> - <dataholder name="dh3317" class="DH_BeamBand" type="input"/> - <dataholder name="dh3318" class="DH_BeamBand" type="input"/> - <dataholder name="dh3319" class="DH_Corr" connect="dh3434" type="output"/> - </workholder> - </step> - <step name="Correlator_2_583320" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3321" class="DH_BeamBand" type="input"/> - <dataholder name="dh3322" class="DH_BeamBand" type="input"/> - <dataholder name="dh3323" class="DH_BeamBand" type="input"/> - <dataholder name="dh3324" class="DH_BeamBand" type="input"/> - <dataholder name="dh3325" class="DH_Corr" connect="dh3435" type="output"/> - </workholder> - </step> - <step name="Correlator_3_593326" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3327" class="DH_BeamBand" type="input"/> - <dataholder name="dh3328" class="DH_BeamBand" type="input"/> - <dataholder name="dh3329" class="DH_BeamBand" type="input"/> - <dataholder name="dh3330" class="DH_BeamBand" type="input"/> - <dataholder name="dh3331" class="DH_Corr" connect="dh3436" type="output"/> - </workholder> - </step> - <step name="Correlator_0_603332" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3333" class="DH_BeamBand" type="input"/> - <dataholder name="dh3334" class="DH_BeamBand" type="input"/> - <dataholder name="dh3335" class="DH_BeamBand" type="input"/> - <dataholder name="dh3336" class="DH_BeamBand" type="input"/> - <dataholder name="dh3337" class="DH_Corr" connect="dh3437" type="output"/> - </workholder> - </step> - <step name="Correlator_1_613338" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3339" class="DH_BeamBand" type="input"/> - <dataholder name="dh3340" class="DH_BeamBand" type="input"/> - <dataholder name="dh3341" class="DH_BeamBand" type="input"/> - <dataholder name="dh3342" class="DH_BeamBand" type="input"/> - <dataholder name="dh3343" class="DH_Corr" connect="dh3438" type="output"/> - </workholder> - </step> - <step name="Correlator_2_623344" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3345" class="DH_BeamBand" type="input"/> - <dataholder name="dh3346" class="DH_BeamBand" type="input"/> - <dataholder name="dh3347" class="DH_BeamBand" type="input"/> - <dataholder name="dh3348" class="DH_BeamBand" type="input"/> - <dataholder name="dh3349" class="DH_Corr" connect="dh3439" type="output"/> - </workholder> - </step> - <step name="Correlator_3_633350" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3351" class="DH_BeamBand" type="input"/> - <dataholder name="dh3352" class="DH_BeamBand" type="input"/> - <dataholder name="dh3353" class="DH_BeamBand" type="input"/> - <dataholder name="dh3354" class="DH_BeamBand" type="input"/> - <dataholder name="dh3355" class="DH_Corr" connect="dh3440" type="output"/> - </workholder> - </step> - <step name="Correlator_0_643356" node="node 1"> - <workholder class="WH_Corr"> - <dataholder name="dh3357" class="DH_BeamBand" type="input"/> - <dataholder name="dh3358" class="DH_BeamBand" type="input"/> - <dataholder name="dh3359" class="DH_BeamBand" type="input"/> - <dataholder name="dh3360" class="DH_BeamBand" type="input"/> - <dataholder name="dh3361" class="DH_Corr" connect="dh3441" type="output"/> - </workholder> - </step> - <step name="Correlator_1_653362" node="node 2"> - <workholder class="WH_Corr"> - <dataholder name="dh3363" class="DH_BeamBand" type="input"/> - <dataholder name="dh3364" class="DH_BeamBand" type="input"/> - <dataholder name="dh3365" class="DH_BeamBand" type="input"/> - <dataholder name="dh3366" class="DH_BeamBand" type="input"/> - <dataholder name="dh3367" class="DH_Corr" connect="dh3442" type="output"/> - </workholder> - </step> - <step name="Correlator_2_663368" node="node 3"> - <workholder class="WH_Corr"> - <dataholder name="dh3369" class="DH_BeamBand" type="input"/> - <dataholder name="dh3370" class="DH_BeamBand" type="input"/> - <dataholder name="dh3371" class="DH_BeamBand" type="input"/> - <dataholder name="dh3372" class="DH_BeamBand" type="input"/> - <dataholder name="dh3373" class="DH_Corr" connect="dh3443" type="output"/> - </workholder> - </step> - <step name="Correlator_3_673374" node="node 4"> - <workholder class="WH_Corr"> - <dataholder name="dh3375" class="DH_BeamBand" type="input"/> - <dataholder name="dh3376" class="DH_BeamBand" type="input"/> - <dataholder name="dh3377" class="DH_BeamBand" type="input"/> - <dataholder name="dh3378" class="DH_BeamBand" type="input"/> - <dataholder name="dh3379" class="DH_Corr" connect="dh3444" type="output"/> - </workholder> - </step> - <step name="MakeMS_683380" node="node 0"> - <workholder class="WH_MakeMS"> - <dataholder name="dh3381" class="DH_Corr" type="input"/> - <dataholder name="dh3382" class="DH_Corr" type="input"/> - <dataholder name="dh3383" class="DH_Corr" type="input"/> - <dataholder name="dh3384" class="DH_Corr" type="input"/> - <dataholder name="dh3385" class="DH_Corr" type="input"/> - <dataholder name="dh3386" class="DH_Corr" type="input"/> - <dataholder name="dh3387" class="DH_Corr" type="input"/> - <dataholder name="dh3388" class="DH_Corr" type="input"/> - <dataholder name="dh3389" class="DH_Corr" type="input"/> - <dataholder name="dh3390" class="DH_Corr" type="input"/> - <dataholder name="dh3391" class="DH_Corr" type="input"/> - <dataholder name="dh3392" class="DH_Corr" type="input"/> - <dataholder name="dh3393" class="DH_Corr" type="input"/> - <dataholder name="dh3394" class="DH_Corr" type="input"/> - <dataholder name="dh3395" class="DH_Corr" type="input"/> - <dataholder name="dh3396" class="DH_Corr" type="input"/> - <dataholder name="dh3397" class="DH_Corr" type="input"/> - <dataholder name="dh3398" class="DH_Corr" type="input"/> - <dataholder name="dh3399" class="DH_Corr" type="input"/> - <dataholder name="dh3400" class="DH_Corr" type="input"/> - <dataholder name="dh3401" class="DH_Corr" type="input"/> - <dataholder name="dh3402" class="DH_Corr" type="input"/> - <dataholder name="dh3403" class="DH_Corr" type="input"/> - <dataholder name="dh3404" class="DH_Corr" type="input"/> - <dataholder name="dh3405" class="DH_Corr" type="input"/> - <dataholder name="dh3406" class="DH_Corr" type="input"/> - <dataholder name="dh3407" class="DH_Corr" type="input"/> - <dataholder name="dh3408" class="DH_Corr" type="input"/> - <dataholder name="dh3409" class="DH_Corr" type="input"/> - <dataholder name="dh3410" class="DH_Corr" type="input"/> - <dataholder name="dh3411" class="DH_Corr" type="input"/> - <dataholder name="dh3412" class="DH_Corr" type="input"/> - <dataholder name="dh3413" class="DH_Corr" type="input"/> - <dataholder name="dh3414" class="DH_Corr" type="input"/> - <dataholder name="dh3415" class="DH_Corr" type="input"/> - <dataholder name="dh3416" class="DH_Corr" type="input"/> - <dataholder name="dh3417" class="DH_Corr" type="input"/> - <dataholder name="dh3418" class="DH_Corr" type="input"/> - <dataholder name="dh3419" class="DH_Corr" type="input"/> - <dataholder name="dh3420" class="DH_Corr" type="input"/> - <dataholder name="dh3421" class="DH_Corr" type="input"/> - <dataholder name="dh3422" class="DH_Corr" type="input"/> - <dataholder name="dh3423" class="DH_Corr" type="input"/> - <dataholder name="dh3424" class="DH_Corr" type="input"/> - <dataholder name="dh3425" class="DH_Corr" type="input"/> - <dataholder name="dh3426" class="DH_Corr" type="input"/> - <dataholder name="dh3427" class="DH_Corr" type="input"/> - <dataholder name="dh3428" class="DH_Corr" type="input"/> - <dataholder name="dh3429" class="DH_Corr" type="input"/> - <dataholder name="dh3430" class="DH_Corr" type="input"/> - <dataholder name="dh3431" class="DH_Corr" type="input"/> - <dataholder name="dh3432" class="DH_Corr" type="input"/> - <dataholder name="dh3433" class="DH_Corr" type="input"/> - <dataholder name="dh3434" class="DH_Corr" type="input"/> - <dataholder name="dh3435" class="DH_Corr" type="input"/> - <dataholder name="dh3436" class="DH_Corr" type="input"/> - <dataholder name="dh3437" class="DH_Corr" type="input"/> - <dataholder name="dh3438" class="DH_Corr" type="input"/> - <dataholder name="dh3439" class="DH_Corr" type="input"/> - <dataholder name="dh3440" class="DH_Corr" type="input"/> - <dataholder name="dh3441" class="DH_Corr" type="input"/> - <dataholder name="dh3442" class="DH_Corr" type="input"/> - <dataholder name="dh3443" class="DH_Corr" type="input"/> - <dataholder name="dh3444" class="DH_Corr" type="input"/> - <dataholder name="dh3445" class="DH_Empty" type="output"/> - </workholder> - </step> - </simul> - </simul> -</basesim> diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/BaseSimTreeModel.java b/support/tools/BaseSimGUI/src/org/astron/basesim/BaseSimTreeModel.java deleted file mode 100644 index cf524da06a1..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/BaseSimTreeModel.java +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Class BaseSimTreeModel - * Description: TreeModel that maps a Graph composite tree to a BaseSim tree. - * Copyright: Copyright (c) - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.util.Vector; -import javax.swing.tree.*; -import javax.swing.event.*; - - -/** - * Model that a JTree calls on to draw its nodes. This model can also be - * used to translate a Graph hierarchy to a LofarSim hierarchy. The difference - * between these two is the composition of a Step. - */ -public class BaseSimTreeModel implements TreeModel { - String altRoot = new String ("No diagram loaded"); - GraphDiagram _diagram; - private Vector treeModelListeners = new Vector(); - - public BaseSimTreeModel(GraphDiagram diagram) { - _diagram = diagram; - } - public void setGraphDiagram(GraphDiagram diagram) { - GraphDiagram oldDiagram = _diagram; - _diagram = diagram; - if (oldDiagram == null) fireTreeStructureChanged(altRoot); - else fireTreeStructureChanged(oldDiagram); - } - public GraphDiagram getGraphDiagram() { return _diagram; } - public Object getRoot() { - if (_diagram != null) return _diagram; - else return altRoot; - } - public Object getChild(Object parent, int index) { - if (parent instanceof GraphSimul) { - GraphSimul gSimul = (GraphSimul)parent; - if ((index == 0) && gSimul.hasWorkHolder()) { - // return WorkHolder (if it has one) - return gSimul.getWorkHolder(); - } - GraphComposite gComp = (GraphComposite)gSimul.getGraph(1); - if (gSimul.hasWorkHolder()) return gComp.getGraph(index-1); - else return gComp.getGraph(index); - } - if (parent instanceof GraphStep) { - // a Step has 0 or 1 WorkHolder(s) - GraphStep gStep = (GraphStep)parent; - return gStep.getWorkHolder(); - } - if (parent instanceof GraphWorkHolder) { - // pretend that the Workholder contains the DataHolders - GraphWorkHolder gWorkHolder = (GraphWorkHolder)parent; - GraphStep gStepParent = (GraphStep)gWorkHolder.getOwner().getOwner(); - GraphComposite inDhComp = - (GraphComposite)gStepParent.getGraph(0); // input GraphDataHolders - GraphComposite outDhComp = - (GraphComposite)gStepParent.getGraph(2); // output GraphDataHolders - if (inDhComp.numberOfGraphs() > index) { - return inDhComp.getGraph(index); - } else return outDhComp.getGraph(index-inDhComp.numberOfGraphs()); - } - System.err.println("Cannot resolve child (" + parent - + ", index "+index+") in BaseSimTreeModel.getChild()"); - return null; - } - - public int getChildCount(Object parent) { - int count=0; - if (parent instanceof GraphSimul) { - GraphSimul gSimul = (GraphSimul)parent; - count += gSimul.numberOfSteps(); - count += (gSimul.hasWorkHolder()) ? 1 : 0; - return count; - } - if (parent instanceof GraphStep) { - GraphStep gStep = (GraphStep)parent; - return (gStep.hasWorkHolder()) ? 1 : 0; - } - if (parent instanceof GraphWorkHolder) { - GraphWorkHolder gWorkHolder = (GraphWorkHolder)parent; - GraphStep gStepParent = (GraphStep)gWorkHolder.getOwner().getOwner(); - count += gStepParent.nrInputDataHolders(); - count += gStepParent.nrOutputDataHolders(); - return count; - } - return 0; - } - - public boolean isLeaf(Object node) { - if (node instanceof GraphWorkHolder) return false; - if (node instanceof GraphComposite) return false; - return true; - } - - public void valueForPathChanged(TreePath path, Object newValue) { - /**@todo: Implement this javax.swing.tree.TreeModel method*/ - throw new java.lang.UnsupportedOperationException("Method valueForPathChanged() not yet implemented."); - } - - public int getIndexOfChild(Object parent, Object child) { - if (parent instanceof GraphSimul) { - GraphSimul gSimul = (GraphSimul)parent; - if (child instanceof GraphWorkHolder) return 0; - for (int i=0; i<gSimul.numberOfSteps(); i++) { - if (child == gSimul.getStep(i)) { - return (gSimul.hasWorkHolder()) ? i+1 : i; - } - } - } - if (parent instanceof GraphStep) return 0; - if (parent instanceof GraphWorkHolder) { - GraphWorkHolder gWorkHolder = (GraphWorkHolder)parent; - GraphStep gStepParent = (GraphStep)gWorkHolder.getOwner().getOwner(); - GraphDataHolder gInDH[] = gStepParent.getInputDataHolders(); - for (int i=0; i<gInDH.length; i++) { - if (gInDH[i] == child) return i; - } - GraphDataHolder gOutDH[] = gStepParent.getOutputDataHolders(); - for (int i=0; i<gOutDH.length; i++) { - if (gOutDH[i] == child) return i+gInDH.length; - } - } - System.err.println("Child not found in BaseSimTreeModel.getIndexOfChild()"); - return -1; - } - - public void addTreeModelListener(TreeModelListener l) { - treeModelListeners.add(l); - } - - public void removeTreeModelListener(TreeModelListener l) { - treeModelListeners.remove(l); - } - - protected void fireTreeStructureChanged(Object oldRoot) { - int len = treeModelListeners.size(); - TreeModelEvent e = new TreeModelEvent(this,new Object[] {oldRoot}); - for (int i = 0; i < len; i++) { - ((TreeModelListener)treeModelListeners.elementAt(i)). - treeStructureChanged(e); - } - } - -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/Configuration.java b/support/tools/BaseSimGUI/src/org/astron/basesim/Configuration.java deleted file mode 100644 index 6eef6d3ce3d..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/Configuration.java +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -import kiwi.io.ConfigFile; -import java.awt.*; - -/** - * Title: Class Config - * Description: Main configuration class - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -import java.util.*; -import java.io.*; - -public class Configuration extends ConfigFile { - - private Font propFont, titleFont; - - public Configuration(File configFile) { - super(configFile); - titleFont = new Font("times",Font.BOLD,(int)(11)); - propFont = new Font("arial",Font.PLAIN,(int)(10)); - } - - public Font getGraphTitleFont() { - return titleFont; - } - - public Font getGraphPropFont() { - return propFont; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/Connection.java b/support/tools/BaseSimGUI/src/org/astron/basesim/Connection.java deleted file mode 100644 index 20fa3df5755..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/Connection.java +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Visual LofarSim - * Description: - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.awt.*; -import java.awt.geom.*; - -/** - * This class represents the visual representation of a connection between two - * Graph objects. - * - * Graph are connected as shown below - * <code>graphOut->graphIn</code> - * - * Other types of Connections should inherit from this class. - */ -public class Connection extends java.lang.Object { - - static float dash1[] = {6.0f}; - static float dash2[] = {3.0f}; - - private final static int CURVE_X_CONSTANT = 250; - private final static int CURVE_Y_CONSTANT = 100; - private final static int LINE_CONSTANT = 10; - protected final static Stroke SIMPLE_STROKE = new BasicStroke(1); - protected final static Stroke THICK_STROKE = new BasicStroke(2); - protected final static Stroke SIMPLE_DASH_STROKE = - new BasicStroke(1,BasicStroke.CAP_SQUARE, - BasicStroke.JOIN_MITER, - 1,dash1,0.0f); - protected final static Stroke THICK_DASH_STROKE = - new BasicStroke(2,BasicStroke.CAP_SQUARE, - BasicStroke.JOIN_MITER, - 1,dash1,0.0f); - protected final static Stroke SIMPLE_DOTTED_STROKE = - new BasicStroke(1,BasicStroke.CAP_SQUARE, - BasicStroke.JOIN_MITER, - 1,dash2,1.0f); - protected final static Stroke THICK_DOTTED_STROKE = - new BasicStroke(2,BasicStroke.CAP_SQUARE, - BasicStroke.JOIN_MITER, - 1,dash2,5.0f); - - /** Graph with outgoing connection (unidirectional stream) */ - public Graph graphOut; - /** Graph with incoming connection */ - public Graph graphIn; - private boolean visible; - /** Only valid when _coordinateSet = true. */ - private int linLength; - protected Color color, selColor; - protected Stroke stroke, selStroke; - private boolean selected; - - /** Create a connection. */ - public Connection() { - graphOut = null; - graphIn = null; - init(); - } - - /** Create a connection between the two specified graphs. The connection - * is unidirectional: graphOutput->graphInput */ - public Connection(Graph graphOutput, Graph graphInput) { - graphIn = graphInput; - graphOut = graphOutput; - init(); - } - - private void init() { - visible = true; - selected = false; - - // set color for this basic connection - color = Color.black; - selColor = Color.red; - - // set stroke shapes for this basic connection - stroke = SIMPLE_STROKE; - selStroke = THICK_STROKE; - } - - /** Set the visibility of this connection. */ - public void setVisible (boolean visible) { this.visible = visible; } - /** Set if this connection is selected */ - public void setSelected(boolean selected) { this.selected = selected; } - /** Set the basic drawing color */ - public void setColor (Color color) { this.color = color; } - /** Get the basic drawing color */ - public Color getColor () { return color; } - /** Set the color of this connection when selected */ - public void setColorSelected (Color color) { this.selColor = color; } - /** Get the color of this line when selected */ - public Color getColorSelected () { return selColor; } - /** Set the stroke used to draw this line */ - public void setStroke (Stroke stroke) { this.stroke = stroke; } - /** Get the stroke used to draw this line */ - public Stroke getStroke () { return stroke; } - /** Set the stroke used to draw a selected line */ - public void setStrokeSelected (Stroke stroke) { this.selStroke = stroke; } - /** Get the stroke used to select this line */ - public Stroke getStrokeSelected () { return selStroke; } - /** Paint this connection */ - public void paint (Graphics g) - { - Graphics2D g2 = (Graphics2D)g; - Color color = null; - Stroke stroke = null; - if (selected) { - color = selColor; - stroke = selStroke; - } else { - color = this.color; - stroke = this.stroke; - } - Point inP, outP; - if (!visible) return; - g2.setPaint(color); - inP = graphIn.getConnectionPoint(true,this); - outP = graphOut.getConnectionPoint(false,this); - if ( (inP == null) || (outP == null) ) return; - if (inP.x >= outP.x) { - double square = square(inP,outP); - int minLength = (int)(graphIn.getZoomLevel()*LINE_CONSTANT); - int maxLength = (int)((inP.x-outP.x)/2)-minLength; - linLength = (int)((((0.5*Math.PI-square)/Math.PI)*maxLength+minLength)); - ((Graphics2D)g).setStroke(stroke); - g.drawLine(outP.x,outP.y,outP.x+linLength,outP.y); - g.drawLine(outP.x+linLength,outP.y,inP.x-linLength,inP.y); - g.drawLine(inP.x-linLength,inP.y,inP.x,inP.y); - } else { - // loopback - Point ctrlPIn = new Point(inP); - Point ctrlPOut = new Point(outP); - if (ctrlPIn.y < (ctrlPOut.y-graphIn.getHeight())) { - ctrlPIn.y += (int)(graphIn.getZoomLevel()*CURVE_Y_CONSTANT); - ctrlPOut.y -= (int)(graphIn.getZoomLevel()*CURVE_Y_CONSTANT); - } else if (ctrlPIn.y > (ctrlPOut.y+graphIn.getHeight())) { - ctrlPIn.y -= (int)(graphIn.getZoomLevel()*CURVE_Y_CONSTANT); - ctrlPOut.y += (int)(graphIn.getZoomLevel()*CURVE_Y_CONSTANT); - } else { - ctrlPIn.y -= (int)(graphIn.getZoomLevel()*CURVE_Y_CONSTANT); - ctrlPOut.y -= (int)(graphIn.getZoomLevel()*CURVE_Y_CONSTANT); - } - ctrlPIn.x -= (int)(graphIn.getZoomLevel()*CURVE_X_CONSTANT); - ctrlPOut.x += (int)(graphIn.getZoomLevel()*CURVE_X_CONSTANT); - CubicCurve2D.Float curve = - new CubicCurve2D.Float(inP.x,inP.y,ctrlPIn.x,ctrlPIn.y, - ctrlPOut.x,ctrlPOut.y,outP.x,outP.y); - ((Graphics2D)g).draw(curve); - } - } - - /** Helper function used by paint() */ - private double square(Point p1, Point p2) { - int dx=p1.x-p2.x; - int dy=p1.y-p2.y; - if (dx<0) dx*=-1; - if (dy<0) dy*=-1; - if (dx == 0) { - return 0.5*Math.PI; - } else { - return Math.atan(dy/dx); - } - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/ConnectionStep.java b/support/tools/BaseSimGUI/src/org/astron/basesim/ConnectionStep.java deleted file mode 100644 index 2d5c4c934a9..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/ConnectionStep.java +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: <p> - * Description: <p> - * Copyright: Copyright (c) <p> - * Company: <p> - * @author - * @version 1.0 - */ - -/** - * This class represents the high-level connection between simulation blocks. - * It does not represent a physical data stream, it will be used for layout - * of the step/simul blocks. - */ -public class ConnectionStep extends Connection { - - public ConnectionStep(GraphStep graphOutput, GraphStep graphInput) { - super (graphOutput,graphInput); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/ContHandlerSim.java b/support/tools/BaseSimGUI/src/org/astron/basesim/ContHandlerSim.java deleted file mode 100644 index a3ce7a7e697..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/ContHandlerSim.java +++ /dev/null @@ -1,888 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Class ContHandlerSim<p> - * Description: SAX parser object<p> - * Copyright: Copyright (c) <p> - * Company: <p> - * @author Robbert Dam - * @version 1.0 - */ - -import java.util.*; -import java.awt.*; -import org.xml.sax.*; -import org.astron.util.*; -import org.astron.util.gui.*; -import kiwi.io.*; -import java.io.*; - -/** - * ContentHandler (SAX) implementation for parsing a BaseSim diagram - */ -public class ContHandlerSim implements ContentHandler { - - /** List of MessageListeners */ - private ArrayList _mlisteners = new ArrayList(); - - final static String classMapFileName = "classMap.cfg"; - final static char DELIMITER = '.'; - /** The parent of the subtree that will be parsed */ - private GraphComposite owner = null; - /** The Graph we are currently working on */ - private Graph cGraph; - /** The path to cGraph */ - private String cPath; - /** List of MessageListeners */ - private ArrayList mlisteners = new ArrayList(); - /** The root composite*/ - private GraphComposite root; - /** Table that maps nodes to colors */ - private Vector nodeColorMap = new Vector(30); - /** Min. color intensity */ - private final int MIN_C_INT = 180; - /** Max. color intensity */ - private final int MAX_C_INT = 240; - /** Difference factor between colors of parent and child that run on - * same node */ - private final double CHILD_COLOR_ADJUST = 0.85; - /** Base color table */ - private Color distColor[]; - /** Make sure loopback warning appears only once */ - private boolean noLoopWarning = true; - /** A table of names with Graph objects for relative fast lookup of names */ - private Hashtable graphtable; - /** A list of connection pairs. First column contains instance of source - * Graph, the second column contains a (still unresolved) name of a Graph. */ - private LinkedList conList; - /** Properties for mapping BaseSim classes to BaseSimGUI classes. */ - private ConfigFile classMap = new ConfigFile(new File(classMapFileName)); - private Vector nodeToColor = new Vector(20); // [node,color][20] - private static int colorFollowup = 0; - private GraphStep exStep = null; - private String exStepName = null; - private GraphWorkHolder currentWorker = null; - private ArrayList exDHList = new ArrayList(); - - /** Constructs a new parser handler. */ - public ContHandlerSim() - { - cGraph = null; - cPath = new String(); - conList = new LinkedList(); - graphtable = new Hashtable(); - initDistColors(); - try { - classMap.load(); - } catch(IOException e) { - fireMessage(new MessageApp(e,"Cannot open " + classMapFileName)); - } - } - /** Construct a new (partial) parser handler. - * @param owner The parent Graph to which the parsed step will be attached. - * @param step The name of the Step or Simul that should be parsed from the file. - */ - public ContHandlerSim(GraphComposite owner, String step) - { - this.owner = owner; - exStepName = step; - cGraph = null; - cPath = new String(); - conList = new LinkedList(); - graphtable = new Hashtable(); - initDistColors(); - try { - classMap.load(); - } catch(IOException e) { - fireMessage(new MessageApp(e,"Cannot open " + classMapFileName)); - } - } - - public GraphComposite getRoot() { return root; } - - public void setDocumentLocator(Locator locator) - { - //TODO: Implement this org.xml.sax.ContentHandler method - } - - public void startDocument() throws SAXException - { - } - - public void endDocument() throws SAXException - { - createConnections(); - } - - public void startPrefixMapping(String prefix, String uri) throws SAXException - { - //TODO: Implement this org.xml.sax.ContentHandler method - } - - public void endPrefixMapping(String prefix) throws SAXException - { - //TODO: Implement this org.xml.sax.ContentHandler method - } - - public void startElement(String namespaceURI, String localName, String qName, - Attributes atts) throws SAXException - { - Graph graph; - String className = null; - int index; - if ("basesim".equals(qName)) { - - // ------------------------------------------- - // Begin of <basesim> element - // ------------------------------------------- - - if (owner != null) { - cGraph = owner; - } else { - GraphManager manager = new GraphManager(); - cGraph = new GraphDiagram(manager,"Base simulation"); - root = (GraphComposite)cGraph; - MessageListener ml [] = getMessageListeners(); - for (int i=0; i<ml.length; i++) { - root.getGraphManager().addMessageListener(ml[i]); - } - } - } else if ("step".equals(qName)) { - - // ------------------------------------------- - // Begin of <step> element - // ------------------------------------------- - - if (!(cGraph instanceof GraphSimul)) return; - - // load attributes - String node = atts.getValue("node"); - String name = atts.getValue("name"); - - graph = instGraphFromName(atts,GraphStep.class); - - if ( (owner != null) && (exStep == null) ) { - // partial parsing mode - if (name.equals(exStepName)) { - exStep = (GraphStep)graph; - root = exStep; - } else { - return; // skip - } - } - - ((GraphSimul)cGraph).addStep((GraphStep)graph); - if (node != null) { - Color color = genColorFromNode(node); - ((GraphStep)graph).setNode(node); - String parentNode = ((GraphStep)cGraph).getNode(); - if (parentNode != null && node.equals(parentNode)) { - // child is slightly darker - graph.setBackground(darker((Color)cGraph.getBackground())); - } else { - graph.setBackground(color); - } - } - - cGraph = graph; - graphtable.put(new Reference(cGraph.getName(),cPath),cGraph); - addToPath(cGraph); - } else if ("simul".equals(qName)) { - - // ------------------------------------------- - // Begin of <simul> element - // ------------------------------------------- - - // load attributes - String node = atts.getValue("node"); - String name = atts.getValue("name"); - - graph = instGraphFromName(atts,GraphSimul.class); - ((GraphSimul)graph).setState(GraphSimul.STATE_INDEPENDENT); - - if ( (owner != null) && (exStep == null) ) { - // partial parsing mode - if (name.equals(exStepName)) { - exStep = (GraphStep)graph; - root = exStep; - } else { - return; // skip - } - } - - if (node != null) { - Color color = genColorFromNode(node); - ((GraphStep)graph).setNode(node); - String parentNode = ((GraphStep)cGraph).getNode(); - if (parentNode != null && node.equals(parentNode)) { - // child is slightly darker - graph.setBackground(darker((Color)cGraph.getBackground())); - } else { - graph.setBackground(color); - } - } - - ((GraphSimul)cGraph).addStep((GraphStep)graph); - - cGraph = graph; - graphtable.put(new Reference(cGraph.getName(),cPath),cGraph); - addToPath(cGraph); - - } else if ("workholder".equals(qName)) { - - // ------------------------------------------- - // Begin of <workholder> element - // ------------------------------------------- - - if ( (owner != null) && (exStep == null) ) return; // skip - - if (cGraph instanceof GraphSimul) { - graph = instGraphFromName(atts,GraphWorkHolderImage.class); - } else { - graph = instGraphFromName(atts,GraphWorkHolder.class); - } - ((GraphWorkHolder)graph).setClassName(atts.getValue("class")); - ((GraphStep)cGraph).setWorkHolder((GraphWorkHolder)graph); - currentWorker = (GraphWorkHolder)graph; - graphtable.put(new Reference(graph.getName(),cPath),graph); - - } else if ("dataholder".equals(qName)) { - - // ------------------------------------------- - // Begin of <dataholder> element - // ------------------------------------------- - - if ( (owner != null) && (exStep == null) ) return; // skip - boolean inputDH = "in".equals(atts.getValue("type")); - - graph = currentWorker.buildDataHolder(inputDH); - graph.setGraphManager(cGraph.getGraphManager()); - if ((index = atts.getIndex("name")) != -1) { - graph.setName(atts.getValue(index)); - } - ((GraphDataHolder)graph).setInput(inputDH); - ((GraphStep)cGraph).addDataHolder((GraphDataHolder)graph); - graphtable.put(new Reference(graph.getName(),cPath),graph); - if (cGraph == root) { - exDHList.add(new RefGraph(graph,new Reference(graph.getName(),cPath))); - } - - } else if ("connect".equals(qName)) { - - // ------------------------------------------- - // Begin of <connect> element - // ------------------------------------------- - - if ( (owner != null) && (exStep == null) ) return; // skip - - // load attributes - String src = atts.getValue("src"); - String dest = atts.getValue("dest"); - String rate = atts.getValue("rate"); - String itsClass = atts.getValue("class"); - - if ( (src != null) && (dest != null) ) { - NameConnection n = new NameConnection(src,dest,cPath); - if (rate != null) { - n.setRate(Integer.parseInt(rate)); - } - if (itsClass != null) { - n.setItsClass(itsClass); - } - conList.add(n); - } - } else if ("exstep".equals(qName)) { - - // ------------------------------------------- - // Begin of <exstep> element - // ------------------------------------------- - - if ( (owner != null) && (exStep == null) ) return; // skip - - // load attributes - String src = atts.getValue("src"); - String name = atts.getValue("name"); - String exName = atts.getValue("exname"); - String node = atts.getValue("node"); - - if ( (src != null) && (name != null) - && (cGraph instanceof GraphComposite) - && (exName != null) ) { - - // start a new parser - File file; - FileInputStream input; - try { - file = new File(src); - input = new FileInputStream(file); - } catch (FileNotFoundException e) { - fireMessage(new MessageXML(this,"Can't load step. File not found: " + src, - MessageEvent.ERROR)); - return; - } catch (SecurityException e) { - fireMessage(new MessageXML(this,"Cannot access file " + src, - MessageEvent.ERROR)); - return; - } - - ContHandlerSim contentHandler = - new ContHandlerSim((GraphComposite)cGraph,exName); - ErrorHandlerSim errorHandler = new ErrorHandlerSim(); - errorHandler.changeDocumentName(src); - MessageListener ml [] = cGraph.getGraphManager().getMessageListeners(); - for (int i=0; i<ml.length; i++) errorHandler.addMessageListener(ml[i]); - try { - XMLReader parser = - (XMLReader)Class.forName(Main.SETTINGS.getString("xmlParser")) - .newInstance(); - parser.setContentHandler(contentHandler); - parser.setErrorHandler(errorHandler); - parser.setFeature( "http://xml.org/sax/features/validation",true); - parser.setFeature( "http://xml.org/sax/features/namespaces",true); - parser.setFeature( "http://apache.org/xml/features/validation/schema",true); - parser.parse(new InputSource(input)); - } catch (Exception e) { e.printStackTrace(); } - - graph = contentHandler.getRoot(); - - if (graph == null) { - fireMessage(new MessageXML(this,"External step not found: " + exName, - MessageEvent.ERROR)); - return; - } - - if (node != null) { - Color color = genColorFromNode(node); - ((GraphStep)graph).setNode(node); - String parentNode = ((GraphStep)cGraph).getNode(); - if (parentNode != null && node.equals(parentNode)) { - // child is slightly darker - graph.setBackground(darker((Color)cGraph.getBackground())); - } else { - graph.setBackground(color); - } - } - - graph.setName(name); - graphtable.put(new Reference(name,cPath),graph); - - ArrayList list = contentHandler.getEdgeDH(); - for (int i=0; i<list.size(); i++) { - RefGraph rg = (RefGraph)list.get(i); - Reference r = new Reference(rg.ref.getName(),cPath+"."+name); - graphtable.put(r,rg.graph); - } - } - } - } - - public void endElement(String namespaceURI, String localName, String qName) - throws SAXException - { - if (cGraph == null) { - System.out.println("cGraph == null"); - return; - } - if ("step".equals(qName)) { - if ( (owner != null) && (exStep == null) ) return; // skip - if (cGraph == exStep) exStep = null; - removeFromPath(cGraph); - cGraph = cGraph.getOwner().getOwner(); - } else if ("simul".equals(qName)) { - if ( (owner != null) && (exStep == null) ) return; // skip - removeFromPath(cGraph); - cGraph = cGraph.getOwner().getOwner(); - if (cGraph == exStep) exStep = null; - } - } - - public void characters(char[] ch, int start, int length) throws SAXException - { - //TODO: Implement this org.xml.sax.ContentHandler method - } - - public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException - { - //TODO: Implement this org.xml.sax.ContentHandler method - } - - public void processingInstruction(String target, String data) throws SAXException - { - //TODO: Implement this org.xml.sax.ContentHandler method - } - - public void skippedEntity(String name) throws SAXException - { - //TODO: Implement this org.xml.sax.ContentHandler method - } - - /** This returns a lists of dataholders that are on the edges of a parsed - * Step in partial parsing mode. Call only after parsing completed. */ - public ArrayList getEdgeDH() { return exDHList; } - - /** Helper function that instantiates a connection object using the specified - * class name and base class. */ - private Connection instConnectionFromName(String name, - Class baseClass) { - Connection conn; - String className = null; - if (name != null) className = classMap.getProperty(name); - if (className == null) { - // nope; instantiate base class - try { - conn = (Connection)baseClass.newInstance(); - } catch (Exception e) { e.printStackTrace(); return null; } - } else { - // yes; try to instantiate specified class. - Object object = null; - try { - object = Class.forName(className).newInstance(); - // check if this object is an instance of baseClass - if (baseClass.isInstance(object)) { - conn = (Connection)object; - } else { - try { conn = (Connection)baseClass.newInstance(); } - catch (Exception e) { e.printStackTrace(); return null; } - fireMessage(new MessageEvent(this,"Cannot instantiate object " - + className + ". It's not a " + baseClass.getName() + ".")); - } - } catch(Exception e) { - try { conn = (Connection)baseClass.newInstance(); } - catch (Exception x) { x.printStackTrace(); return null; } - fireMessage(new MessageEvent(this,"Cannot instantiate object." - + ". A " + e + " was raised. Base class is used.", - MessageEvent.WARNING)); - } - } - return conn; - } - - /** Helper function that instantiates a graphical object using a specified class - * and the 'class' attribute. In addition it will also set 'name' and - * GraphManager properties. */ - private Graph instGraphFromName(Attributes atts, Class baseClass) { - Graph graph; - String className; - String classAtt = atts.getValue("class"); - if (classAtt != null) { - className = classMap.getProperty(classAtt); - } else { - className = null; - } - if (className == null) { - // nope; instantiate base class - try { - graph = (Graph)baseClass.newInstance(); - } catch (Exception e) { e.printStackTrace(); return null; } - } else { - // yes; try to instantiate specified class. - Object object = null; - try { - object = Class.forName(className).newInstance(); - // check if this object is an instance of baseClass - if (baseClass.isInstance(object)) { - graph = (Graph)object; - } else { - try { graph = (Graph)baseClass.newInstance(); } - catch (Exception e) { e.printStackTrace(); return null; } - fireMessage(new MessageGraph(graph,"Cannot instantiate object " - + className + ". It's not a " + baseClass.getName() + ".")); - } - } catch(Exception e) { - try { graph = (Graph)baseClass.newInstance(); } - catch (Exception x) { x.printStackTrace(); return null; } - fireMessage(new MessageGraph(graph,"Cannot instantiate object." - + ". A " + e + " was raised. Base class is used.", - MessageEvent.WARNING)); - } - } - graph.setGraphManager(cGraph.getGraphManager()); - int index; - if ((index = atts.getIndex("name")) != -1) { - graph.setName(atts.getValue(index)); - } - return graph; - } - - /** Create physical connections between Graph objects using the - * NameConnection array. */ - private void createConnections () - { - String srcName; - String destName; - Object sourceGraph; - Object destGraph; - NameConnection nameCon; - Enumeration keys; - for (int i=0; i<conList.size(); i++) - { - nameCon = (NameConnection)conList.get(i); - - sourceGraph = null; - destGraph = null; - - keys = graphtable.keys(); - - int destHitCount = 0; - int srcHitCount = 0; - while (keys.hasMoreElements()) { - Reference r = (Reference)keys.nextElement(); - if (r.equals(nameCon.source)) { - sourceGraph = graphtable.get(r); - srcHitCount++; - } - if (r.equals(nameCon.dest)) { - destGraph = graphtable.get(r); - destHitCount++; - } - } - - if (srcHitCount > 1) { - fireMessage(new MessageGraph(sourceGraph, - "Cannot connect " + nameCon.source + " with " + nameCon.dest - + " (reference to " + nameCon.source + " is ambiguous).", - MessageEvent.WARNING)); - if (destHitCount <= 1) continue; - } - if (destHitCount > 1) { - fireMessage(new MessageGraph(destGraph, - "Cannot connect " + nameCon.source + " with " + nameCon.dest - + " (reference to " + nameCon.dest + " is ambiguous).", - MessageEvent.WARNING)); - continue; - } - - if (sourceGraph == null) { - if (destGraph != null) { - fireMessage(new MessageGraph(destGraph, - "Cannot connect "+nameCon.source+" with " + nameCon.dest - + " (the referenced object does not exist, or is not in scope).", - MessageEvent.WARNING)); - } else { - fireMessage(new MessageEvent(this, - "Cannot connect "+nameCon.source+" with " + nameCon.dest - + " (the referenced objects do not exist, or is not in scope).", - MessageEvent.WARNING)); - } - continue; - } - - if (destGraph == null) { - if (sourceGraph != null) { - fireMessage(new MessageGraph(sourceGraph, - "Cannot connect "+sourceGraph+" with " + nameCon.dest - + " (the referenced object does not exist).", - MessageEvent.WARNING)); - } else { - fireMessage(new MessageEvent(this, - "Cannot connect "+nameCon.source+" with " + nameCon.dest - + " (the referenced objects do not exist).", - MessageEvent.WARNING)); - } - continue; - } - - if (sourceGraph.toString() == destGraph.toString()) { - - fireMessage(new MessageGraph(sourceGraph,"Cannot connect "+sourceGraph - + " with itself.",MessageEvent.WARNING)); - continue; - } - - if (sourceGraph instanceof GraphStep) { - if (!(destGraph instanceof GraphStep)) { - fireMessage(new MessageGraph(sourceGraph,destGraph, - "Cannot connect "+sourceGraph+" with " + destGraph - + " (the elements are incompatible).", - MessageEvent.WARNING)); - continue; - } - GraphStep sStep = (GraphStep)sourceGraph; - GraphStep dStep = (GraphStep)destGraph; - if ( (sStep.getOwner().getOwner() != dStep) && - (dStep.getOwner().getOwner() != sStep) && - (sStep.getOwner() != dStep.getOwner())) { - fireMessage(new MessageGraph(sStep,dStep,"Cannot connect " - + sourceGraph + " with " - + destGraph + " (they have different parents).", - MessageEvent.WARNING)); - continue; - } - - Connection c = instConnectionFromName(nameCon.getItsClass(), - Connection.class); - sStep.connectTo(dStep); - continue; - } - - if (sourceGraph instanceof GraphDataHolder) { - if (!(destGraph instanceof GraphDataHolder)) { - fireMessage(new MessageGraph(sourceGraph,destGraph,"Cannot connect " - + sourceGraph + " with " + destGraph - + " (the elements are incompatible).", - MessageEvent.WARNING)); - continue; - } - GraphDataHolder sDH = (GraphDataHolder)sourceGraph; - GraphDataHolder dDH = (GraphDataHolder)destGraph; - boolean sgin = sDH.isInput(); - boolean dgin = dDH.isInput(); - - if ( (sDH.getOwnerStep() != - (GraphStep)dDH.getOwnerStep().getOwnerSimul()) && - (dDH.getOwnerStep() != - (GraphStep)sDH.getOwnerStep().getOwnerSimul())) { - - // this is not a child->parent connection - - if (sgin) { - fireMessage(new MessageGraph(sourceGraph,destGraph,"Cannot connect " - + sourceGraph + " with " + destGraph - + " (Source should be of type input).", - MessageEvent.WARNING)); - continue; - } - - if (!dgin) { - fireMessage(new MessageGraph(sourceGraph,destGraph,"Cannot connect " - + sourceGraph + " with " + destGraph - + " (Destination should be of type output).", - MessageEvent.WARNING)); - continue; - } - - if (sgin == dgin) { - fireMessage(new MessageGraph(sourceGraph,destGraph,"Cannot connect " - + sourceGraph + " with " + destGraph - + " (DataHolders are of same type).", - MessageEvent.WARNING)); - continue; - } - - } else { - - // this is a child->parent connection - if (sgin != dgin) { - fireMessage(new MessageGraph(sourceGraph,destGraph,"Cannot connect " - + sourceGraph + " with " + destGraph - + " (Invalid child-parent connection).", - MessageEvent.WARNING)); - continue; - } - - if (sgin) { - if ( (sDH.getOwnerStep() != - (GraphStep)dDH.getOwnerStep().getOwnerSimul()) ) { - - fireMessage(new MessageGraph(sourceGraph,destGraph,"Cannot connect " - + sourceGraph + " with " + destGraph - + " (Invalid child-parent connection, reverse?).", - MessageEvent.WARNING)); - continue; - } - } else { - if ( (dDH.getOwnerStep() != - (GraphStep)sDH.getOwnerStep().getOwnerSimul()) ) { - - fireMessage(new MessageGraph(sourceGraph,destGraph,"Cannot connect " - + sourceGraph + " with " + destGraph - + " (Invalid child-parent connection, reverse?).", - MessageEvent.WARNING)); - continue; - } - } - } - - if (causesLoop(sDH,dDH)) { - if (noLoopWarning) { - fireMessage(new MessageGraph(sourceGraph,destGraph,"Warning: Auto-" - + "layout of simulations with loops are not" - + " well supported!", - MessageEvent.ERROR)); - noLoopWarning = false; - } - } - Connection c = instConnectionFromName(nameCon.getItsClass(), - Connection.class); - ((Graph)sourceGraph).connectTo((Graph)destGraph,c); - } - } - } - - /** Will a connection of source to dest result in a loop? */ - private boolean causesLoop (GraphDataHolder source, GraphDataHolder dest) { - if (source.isInput() && - (source.getOwner().getOwner() == dest.getOwner().getOwner())) { - return false; // special case: internal dh connection - } - return findDataHolderInChain(source,dest); - } - - /** This method returns true if a connection between to DataHolders results - * in a cyclic connection.*/ - private boolean findDataHolderInChain(GraphDataHolder theDH, - GraphDataHolder tryChain) { - GraphStep step = (GraphStep)tryChain.getOwner().getOwner(); - if (theDH.getOwner().getOwner() == step) return true; // found it - GraphDataHolder output[] = step.getOutputDataHolders(); - for (int i=0; i<output.length; i++) { - if (output[i].hasOutputConnections()) { - if (findDataHolderInChain(theDH, - (GraphDataHolder)output[i].getOutConnection(0).graphIn)) { - return true; - } - } - } - return false; - } - - private void initDistColors() { - distColor = new Color[8]; - distColor[0] = new Color(MIN_C_INT,MIN_C_INT,MIN_C_INT); - distColor[1] = new Color(MIN_C_INT,MIN_C_INT,MAX_C_INT); - distColor[2] = new Color(MIN_C_INT,MAX_C_INT,MIN_C_INT); - distColor[3] = new Color(MIN_C_INT,MAX_C_INT,MAX_C_INT); - distColor[4] = new Color(MAX_C_INT,MIN_C_INT,MIN_C_INT); - distColor[5] = new Color(MAX_C_INT,MIN_C_INT,MAX_C_INT); - distColor[6] = new Color(MAX_C_INT,MAX_C_INT,MIN_C_INT); - distColor[7] = new Color(MAX_C_INT,MAX_C_INT,MAX_C_INT); - } - - private Color genColorFromNode(String node) { - for (int i=0; i<nodeColorMap.size(); i++) { - String n = ((NodeColor)nodeColorMap.get(i)).node; - if (n.equals(node)) { - return ((NodeColor)nodeColorMap.get(i)).color; - } - } - Color baseColor; - int baseColorIx = nodeColorMap.size()%8; - baseColor = distColor[baseColorIx]; - int round = nodeColorMap.size()/8+1; - // interpolate between base colors - int r = distColor[baseColorIx].getRed(); - int g = distColor[baseColorIx].getGreen(); - int b = distColor[baseColorIx].getBlue(); - Color newColor = new Color(r,g,b); - nodeColorMap.add(new NodeColor(node,newColor)); - return newColor; - } - - /** Darkens specified color with CHILD_COLOR_ADJUST %. */ - private Color darker(Color color) { - int r,g,b; - r = (int)(color.getRed() * CHILD_COLOR_ADJUST); - g = (int)(color.getGreen() * CHILD_COLOR_ADJUST); - b = (int)(color.getBlue() * CHILD_COLOR_ADJUST); - return new Color(r,g,b); - } - - /** Dispatch the specified MessageEvent to all the registered listeners. */ - protected void fireMessage(MessageEvent event) { - if (root.getGraphManager() != null) { - root.getGraphManager().fireMessage(event); - } - } - - /** Register a MessageListener. All XML parser messages will be send to the - * listener. The messages contain extra information (e.g. line number) */ - public void addMessageListener (MessageListener messageListener) { - _mlisteners.add(messageListener); - } - /** Unregisters the specified MessageListener */ - public void removeMessageListener (MessageListener messageListener) { - _mlisteners.remove(messageListener); - } - - public MessageListener[] getMessageListeners () { - MessageListener ml [] = new MessageListener[_mlisteners.size()]; - for (int i=0; i<ml.length; i++) { - ml[i] = (MessageListener)_mlisteners.get(i); - } - return ml; - } - - private void addToPath(Graph graph) { - if (cPath.length() == 0) { - cPath = new String(graph.getName()); - } else { - cPath += Reference.getDelimiter() + graph.getName(); - } - } - - private void removeFromPath(Graph graph) { - int i = cPath.toString().indexOf(graph.getName()); - if (i == -1) { - System.out.println("ContHandlerSim.removeFromPath(): error"); - return; - } - StringBuffer temp = new StringBuffer(cPath); - if (i == 0) { - temp.setLength(i); - } else { - temp.setLength(i-1); - } - cPath = temp.toString(); - } - - private class RefGraph { - public Graph graph; - public Reference ref; - RefGraph(Graph graph, Reference ref) { - this.ref = ref; - this.graph = graph; - } - } - - /** Structure in which unresolved connections can be placed. Connection - * names should be passed fully scoped (e.g. "mySimul.myDataHolder1") */ - private class NameConnection { - public Reference source; - public Reference dest; - int rate; - String itsClass; - NameConnection (String s, String d, String scope) { - source = new Reference(s,scope); - dest = new Reference(d,scope); - rate = -1; - } - /** Set the rate that will be set when the actual connection is made */ - public void setRate(int rate) { this.rate = rate; } - public int getRate() { return rate; } - public void setItsClass(String itsClass) { this.itsClass = itsClass; } - public String getItsClass() { return itsClass; } - public String getSourceName() { return source.getName(); } - public String getDestName() { return dest.getName(); } - public String toString() { return "NameConnection: " - + source + " -> " + dest; } - } - - private class NodeColor { - public String node; - public Color color; - NodeColor(String node, Color color) { - this.node = node; - this.color = color; - } - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/DimCtrlStepCenter.java b/support/tools/BaseSimGUI/src/org/astron/basesim/DimCtrlStepCenter.java deleted file mode 100644 index efb7d784bf6..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/DimCtrlStepCenter.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.astron.basesim; - -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public class DimCtrlStepCenter extends DimensionController { - - public static int FIXED_WIDTH = 215; - public static int FIXED_HEIGHT = 136; - - public DimCtrlStepCenter() {} - - /** Calculates the dimensions of the GraphComposite. Informs the GraphManager - * on the size change. */ - public void setDimensions() { - gc.setBaseSize(new Dimension(FIXED_WIDTH,FIXED_HEIGHT)); - gc.getGraphManager().setDimensionsChanged(); // inform manager about size - // change - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/DimensionController.java b/support/tools/BaseSimGUI/src/org/astron/basesim/DimensionController.java deleted file mode 100644 index 1146b859b91..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/DimensionController.java +++ /dev/null @@ -1,95 +0,0 @@ -package org.astron.basesim; - -/** - * Title: DimensionController - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -import java.awt.*; - -/** The DimensionController class controls the dimensions of a registered - * GraphComposite. The default implementation inflates the GraphComposite so - * that its children just fit. */ -public class DimensionController { - - int vertSpacing; - int horzSpacing; - float sFactorH = (float)0.25; - float sFactorV = (float)0.25; - GraphComposite gc; - - public DimensionController() {} - - /** Copy constructor */ - public DimensionController(DimensionController d) { - vertSpacing = d.getVerticalSpacing(); - horzSpacing = d.getHorizontalSpacing(); - sFactorH = d.getSpacingFactor(true); - sFactorV = d.getSpacingFactor(false); - gc = d.getGraphComposite(); - } - - public void setGraphComposite(GraphComposite gc) { - this.gc = gc; - } - - /** Set the spacing between components in pixels at 100% zoom level. */ - public void setSpacing (int horizontal, int vertical) { - horzSpacing = horizontal; - vertSpacing = vertical; - } - - public void setHorizontalSpacing(int spacing) { horzSpacing = spacing; } - public void setVerticalSpacing(int spacing) { vertSpacing = spacing; } - - /** Get the base vertical spacing. This is the vertical spacing when the - * zoom level equals 1. This method is called by auto-layout managers. */ - public int getVerticalSpacing() { return vertSpacing; } - - /** Get the base horizontal spacing. This is the horizontal spacing when the - * zoom level equals 1. This method is called by auto-layout managers. */ - public int getHorizontalSpacing() { return horzSpacing; } - - public void setSpacingFactor(float factor, boolean horizontal) { - if (horizontal) { - sFactorH = factor; - } else { - sFactorV = factor; - } - } - public float getSpacingFactor(boolean horizontal) { - if (horizontal) { - return sFactorH; - } else { - return sFactorV; - } - } - - public GraphComposite getGraphComposite() { return gc; } - - /** Calculates the dimensions of the GraphComposite. Informs the GraphManager - * on the size change. */ - public void setDimensions() { - int maxWidth=0,maxHeight=0,temp; - for (int i=0; i<gc.numberOfGraphs(); i++) { - Graph graph = gc.getGraph(i); - if (graph.isVisible()) { - if ((temp=graph.getBaseX()+graph.getBaseWidth()) > maxWidth) { - maxWidth=temp; - } - if ((temp=graph.getBaseY()+graph.getBaseHeight()) > maxHeight) { - maxHeight=temp; - } - } - } - maxWidth += (int)(getHorizontalSpacing() * getSpacingFactor(true)); - maxHeight += (int)(getVerticalSpacing() * getSpacingFactor(false)); - gc.setBaseSize(new Dimension(maxWidth,maxHeight)); - gc.getGraphManager().setDimensionsChanged(); // inform manager about size - // change - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/ErrorHandlerSim.java b/support/tools/BaseSimGUI/src/org/astron/basesim/ErrorHandlerSim.java deleted file mode 100644 index 8e5ec0f1c3e..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/ErrorHandlerSim.java +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Class ErrorHandlerSim<p> - * Description: <p> - * Copyright: Copyright (c) <p> - * Company: Astron<p> - * @author Robbert Dam - * @version 1.0 - */ - -import java.util.*; -import java.io.*; -import org.xml.sax.*; -import org.astron.util.*; -import org.astron.util.gui.*; - -public class ErrorHandlerSim implements ErrorHandler { - - /** List of MessageListeners */ - private ArrayList _mlisteners = new ArrayList(); - - /** Document name (XML file name) */ - private String _filename = new String("Noname.xml"); - - public ErrorHandlerSim() {} - - public void warning(SAXParseException exception) throws SAXException { - String message; - if (_filename != null) message = new String (_filename + ": '"); - else message = new String ("'"); - message = message+exception.getLocalizedMessage()+"' at line "+ - exception.getLineNumber()+", char "+exception.getColumnNumber()+"."; - fireMessage(new MessageXML(this,message,MessageEvent.NOTIFY, - exception.getLineNumber(),exception.getColumnNumber())); - } - - public void error(SAXParseException exception) throws SAXException { - String message; - if (_filename != null) message = new String (_filename + ": '"); - else message = new String ("'"); - message = message+exception.getLocalizedMessage()+"' at line "+ - exception.getLineNumber()+", char "+exception.getColumnNumber()+"."; - fireMessage(new MessageXML(this,message,MessageEvent.ERROR, - exception.getLineNumber(),exception.getColumnNumber())); - } - - public void fatalError(SAXParseException exception) throws SAXException { - String message; - if (_filename != null) message = new String (_filename + ": '"); - else message = new String ("'"); - message = message+" (fatal) "+exception.getLocalizedMessage()+"' at line "+ - exception.getLineNumber()+", char "+exception.getColumnNumber()+"."; - fireMessage(new MessageXML(this,message,MessageEvent.ERROR, - exception.getLineNumber(),exception.getColumnNumber())); - } - - /** (Re)sets the document name. This name will be displayed in every - * message the ErrorHandler sends to its MessageListeners. */ - public void changeDocumentName (String name) { - _filename = name; - } - - /** Register a MessageListener. All XML parser messages will be send to the - * listener. The messages contain extra information (e.g. line number) */ - public void addMessageListener (MessageListener messageListener) { - _mlisteners.add(messageListener); - } - /** Unregisters the specified MessageListener */ - public void removeMessageListener (MessageListener messageListener) { - _mlisteners.remove(messageListener); - } - /** Dispatch the specified MessageEvent to all the registered listeners. */ - protected void fireMessage(MessageEvent event) { - if (_mlisteners.size() == 0) { - System.out.println(event); - } else { - for (int i=0; i<_mlisteners.size(); i++) { - ((MessageListener)_mlisteners.get(i)).note(event); - } - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/Graph.java b/support/tools/BaseSimGUI/src/org/astron/basesim/Graph.java deleted file mode 100644 index d09ff17303a..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/Graph.java +++ /dev/null @@ -1,702 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Class Graph - * Description: - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.awt.*; -import java.awt.geom.*; -import java.util.*; -import org.astron.util.*; -import javax.swing.*; -import kiwi.util.Config; - - /** The Graph class represents a visual object that can be part of a - * composite. A Graph is visualized as a rectangle with rounded corners. - * A Graph can display its name, it can be selected and can be rescaled - * using a specified zoom level. In addition, a Graph can be connected - * to other Graph. A Graph has input and output connection points which - * exact locations can be asked to a Graph object. - * - * The Graph class is the base class for all graphical objects. - */ -public class Graph { - - /** Spacing between selection markers and object at a 100% zoom level */ - private final static int SELECT_MARK_SPACING = 1; - /** Size of black rectangle in selection marker */ - private final static int SELECT_MARK_SIZE = 5; - - /** Followup number for name generation (when Graph name is not specified) */ - static int followUp = 0; - - static int SIDE_WEST = 0; - static int SIDE_EAST = 1; - static int SIDE_SOUTH = 2; - static int SIDE_NORTH = 3; - - /** A multiplier for the relative dimensions */ - private double _zoomLevel; - /** The current location of this Graph relative to its owner */ - protected Point loc; - /** The location of the Graph at a 100% zoom level */ - private Point _baseLoc; - /** The height of this Graph at a 100% zoom level */ - private int _relHeight; - /** The width of this Graph at a 100% zoom level */ - private int _relWidth; - /** The current height of this Graph */ - protected int height; - /** The current width of this Graph */ - protected int width; - /** The size of the rounding of the basic Graph visualization */ - private int _roundSize; - /** The size of roundings of this Graph at a 100% zoom level */ - private int _relRoundSize; - /** Background color */ - private Paint _bkColor; - /** Line color (foreground color) */ - private Paint _lineColor; - /** Selection color (may be deprecated in the future) */ - private Paint _selColor; - /** Is this Graph selected? */ - private boolean _selected; - /** Is this Graph visible? */ - private int _visible; - /** Are the borders of this Graph visible? */ - private boolean _borderVisible; - /** The name of this Graph */ - private String _name; - /** Should the Graphs name be displayed? */ - private boolean _nameVisible; - /** The owner of this Graph. Can be null. */ - private GraphComposite _owner; - /** Dynamic array of input connections */ - protected ArrayList inConn; - /** Dynamic array of output connectiosn */ - protected ArrayList outConn; - /** Counter for connection point retreival functions */ - private int _inFollowUp = 0; - /** Counter for connection point retreival functions */ - private int _outFollowUp = 0; - /** The level in the composite tree. -1 means 'not yet determined'. */ - private int _treeLevel = 0; - /** The GraphManager for this Graph object */ - protected GraphManager manager; - /** Part of the Graph tree can be drawn. Is this Graph the graphical root? */ - private boolean _graphicalRoot = false; - - public Graph () - { - _relHeight = 0; - _relWidth =0 ; - loc = new Point(0,0); - _baseLoc = new Point(0,0); - _name = "Graph"+followUp++; - defaultSettings(); - } - - /** Create a Graph on a specified location with no dimensions */ - public Graph(GraphManager man, int x, int y, String name) { - _relHeight = 0; - _relWidth =0 ; - loc = new Point(x,y); - _baseLoc = new Point(x,y); - if (name != null) _name = name; else _name = ""; - manager = man; - defaultSettings(); - } - - /** Create a Graph with specified location and dimensions */ - public Graph(GraphManager man, int x, int y, int width, int height, String name) { - loc = new Point(x,y); - _baseLoc = new Point(x,y); - _relWidth = width; - _relHeight = height; - if (name != null) _name = name; else _name = ""; - manager = man; - defaultSettings(); - } - - private void defaultSettings () - { - _owner = null; - _borderVisible = true; - _visible = 0; - width = 0; - height = 0; - _borderVisible = true; - inConn = new ArrayList(); - outConn = new ArrayList(); - _nameVisible = true; - _roundSize = 10; - _zoomLevel = 1; - height = (int)(_zoomLevel*_relHeight); - width = (int)(_zoomLevel*_relWidth); - _relRoundSize = (int)(_zoomLevel*_relRoundSize); - _selColor = Color.black; - _lineColor = Color.black; - _bkColor = Color.white; - sizeChanged(); - } - - /** Registers the Graph Manager */ - public void setGraphManager(GraphManager manager) { this.manager = manager; } - - public GraphManager getGraphManager() { return manager; } - - protected void transformDimensions() { - height = (int)(_zoomLevel*_relHeight); - width = (int)(_zoomLevel*_relWidth); - loc.x = (int)(_zoomLevel*_baseLoc.x); - loc.y = (int)(_zoomLevel*_baseLoc.y); - _roundSize = (int)(_zoomLevel*_relRoundSize); - } - - /** Recalc the dimensions of this Graph using the given zoom level. */ - public void setZoomLevel (double level) - { - _zoomLevel = level; - transformDimensions(); - } - - /** Return current zoom level*/ - public double getZoomLevel() { return _zoomLevel; } - - /** @deprecated */ - public boolean isGraphicalRoot() { return _graphicalRoot; } - /** @deprecated */ - public void setGraphicalRoot(boolean graphicalRoot) { - _graphicalRoot = graphicalRoot; - } - - /** Enable/disable border visibility */ - public void enableBorder (boolean visible) { _borderVisible = visible; } - - public boolean hasVisibleBorders () { return _borderVisible; } - - // ----- - --- ---- -- - -- -- - ------- - --------- ----- --------- - --- - // Painting methods. - // -------- -- --- ---- -- ---------- - - ----------- - --- -- - --- - - -- - - /** Invokes <code>paintBorder()</code> and <code>paintGraph()</code> - * respectively. */ - public boolean paint () - { - Graphics2D g = manager.getGraphics(); - Point point = getAbsoluteLocation(); // Resolve location - if (_borderVisible) paintBorder(g,point); - if (_nameVisible) paintGraph(g,point); - return true; - } - - /** Paints the border around this Graph. It will not check if the borders - * are visible! This task is left to <code>paint()</code>. It also - * fills the background of the Graph with the background color. - * - * @param g Graphics context on which to draw - * @param abs Absolute location of upper-left corner of this Graph */ - protected void paintBorder(Graphics2D g, Point abs) { - g.setPaint(Color.black); - g.fillRoundRect(abs.x+2,abs.y+2,width,height,_roundSize,_roundSize); - g.setPaint(_bkColor); - g.fillRoundRect(abs.x,abs.y,width,height,_roundSize,_roundSize); - g.setPaint(_lineColor); - g.drawRoundRect(abs.x,abs.y,width,height,_roundSize,_roundSize); - if (_selected) { - int s = (int)(SELECT_MARK_SPACING*_zoomLevel); - int b = SELECT_MARK_SIZE; - g.setPaint(_selColor); - g.fillRect(abs.x-s-b,abs.y-s-b,b,b); - g.fillRect(abs.x+s+width,abs.y-s-b,b,b); - g.fillRect(abs.x-s-b,abs.y+s+height,b,b); - g.fillRect(abs.x+s+width,abs.y+s+height,b,b); - } - } - - /** Display the name of this Graph. This method will not check if the name - * is visible! This task is left to <code>paint()</code> - * - * @param g Graphics context on which to draw - * @param abs Absolute location of upper-left corner of this Graph */ - protected void paintGraph(Graphics2D g, Point abs) { - String text = new String(_name); - Font font = Main.SETTINGS.getGraphTitleFont(); - FontMetrics fontMetr = g.getFontMetrics(font); - g.setFont(font); - int rs = (int)(0.25*_roundSize); - int textWidth = fontMetr.stringWidth(text); - if (textWidth >= width) { // check if name fits - return; // nope - } - - g.drawString(text,(width/2)-(textWidth/2)+abs.x, // center both - (height/2) + abs.y // horz. and vert, - + (int)(0.5*fontMetr.getMaxAscent())); - } - - /** Redraw connections. Do not overload this method. If you like to change - * the appeareance of a Connection overload the Connection classs instead. */ - public void paintConnections () - { - if (getOwner() != null) if (!getOwner().isGraphicalRoot()) { - Graphics2D g = manager.getGraphics(); - for (int i=0; i<inConn.size(); i++) { - ((Connection)inConn.get(i)).paint(g); - } - } - } - - /** Draws a box containing the properties of this Graph object. The box - * will be centered within the rectangle specified by bounds. The method - * attempts to draw as much properties as the space allows. */ - public void paintProperties(Graphics2D g, String title, Rectangle bounds) { - Config p = getProperties(); - int heightLeft = bounds.height; - int x=0,y=0,textWidth=0; - - // get fonts and font info - Font tFont = Main.SETTINGS.getGraphTitleFont(); - FontMetrics titleM = g.getFontMetrics(tFont); - Font pFont = Main.SETTINGS.getGraphPropFont(); - FontMetrics propM = g.getFontMetrics(pFont); - - Point abs = bounds.getLocation(); - bounds.setLocation(0,0); - - if (p.size() > 0) { - - if ( bounds.width < titleM.stringWidth(title) || - bounds.height < titleM.getHeight() ) { - System.out.println("bounds: "+bounds+", stringBounds: "+titleM.getStringBounds(title,g)); - return; // title doesn't fit - } - - heightLeft -= titleM.getHeight() - - (2*LINE_SPACING) - - propM.getHeight(); - - g.setFont(tFont); - textWidth = titleM.stringWidth(title); - x = (width/2)-(textWidth/2)+abs.x; - } else { - heightLeft = -1; // no properties to display - } - if (heightLeft >= 0) { - // we can draw at least one property - y = abs.y + titleM.getAscent(); - g.drawString(title,x,y); - y += titleM.getDescent() + titleM.getLeading() + LINE_SPACING; - g.drawLine(abs.x + 3,y,abs.x + bounds.width - 3, y); - y += LINE_SPACING + propM.getAscent(); - x = abs.x + 3; - g.setFont(pFont); - Enumeration enum = p.list(); - int keyWidth, valueWidth; - for (int i=0; i<p.size(); i++) { - String key = (String)enum.nextElement(); - String value = p.getProperty(key); - keyWidth = propM.stringWidth(key); - valueWidth = propM.stringWidth(value); - if (keyWidth + PROP_HORZ_SPACING + valueWidth < bounds.width) { - g.drawString(key,x,y); - g.drawString(value,x+PROP_INDENT,y); - } - y += propM.getHeight(); - heightLeft -= propM.getHeight(); - if (heightLeft < 0) break; - } - } else { - // we cannot draw any properties, only draw the title - y = (bounds.height/2) + abs.y + (titleM.getAscent()/2); - g.drawString(title,x,y); - g.draw(new Rectangle(x-5,y-14,textWidth+10,20)); - } - } - - public void setBaseRoundSize(int roundSize) { _relRoundSize = roundSize; } - public void setRoundSize(int roundSize) { _roundSize = roundSize; } - public int getRoundSize() { return _roundSize; } - public void setLineColor (Color color) { _lineColor = color; }; - public void setBackground (Paint paint) { _bkColor = paint; }; - public Paint getLineColor () { return _lineColor; } - public Paint getBackground () { return _bkColor; } - public void setName (String name) { _name = name; } - public String getName () { return _name; } - public String toString () { - return _name; - } - public void enableClientDisplay (boolean enable) { _nameVisible = enable; } - public boolean hasVisibleClient() { return _nameVisible; } - - /** Notify the root that the tree structure has been changed. The root will - * relayout the entire tree. It will then repaint the Graph. */ - public void treeStructureChanged() { - if (getOwner() != null) { - getOwner().treeStructureChanged(); - } else { - // we are root - try { - ((GraphComposite)this).layoutAll(); - } catch (ClassCastException e) { e.printStackTrace(); } - } - } - - /** Notifies the root that this object changed its dimensions. */ - public void sizeChanged() { - if (this.getOwner() == null) { - try { - ((GraphComposite)this).layoutAll(); - } catch (ClassCastException e) {} - } else { - this.getOwner().sizeChanged(); - } - } - - /** Get the height of this Graph in pixels. */ - public int getHeight () { return height; } - - /** Get the width of this Graph in pixels. */ - public int getWidth () { return width; } - - /** Get the width of this Graph at a 100% zoom level */ - public int getBaseHeight () { return _relHeight; } - /** Get the height of this Graph at a 100% zoom level */ - public int getBaseWidth () { return _relWidth; } - - /** Get the dimensions of this Graph at the current zoom level in pixels */ - public Dimension getSize() { return new Dimension(width,height); } - - /** Get the dimensions of this Graph at a 100% zoom level in pixels */ - public Dimension getBaseSize() { return new Dimension(_relWidth,_relHeight); } - - /** Get the X coordinate of this Graph relative to it's owners upper left - * corner */ - public int getX () { return loc.x; } - - public int getBaseX () { return _baseLoc.x; } - - /** Get the Y coordinate of this Graph relative to it's owners upper left - * corner - * @deprecated Use getBaseY() */ - public int getY () { return loc.y; } - - public int getBaseY () { return _baseLoc.y; } - - /** Get the location of this Graph at the current zoom level relative to - * its owners upper left corner. - * @deprecated Use getBasePoint() */ - public Point getPoint() { return loc; } - - /** Get the location of this Graph at the current zoom level relative to - * its owners uppes left corner. */ - public Point getBasePoint() { return _baseLoc; } - - /** Get the (absolute) location of this Graph at the current zoom level */ - public Point getAbsoluteLocation () { - // recursivly find the absolute location of this Graph - if (_graphicalRoot) { - return loc; - } else { - if (_owner != null) { - Point ownerLoc = _owner.getAbsoluteLocation(); - Point thisLoc = new Point(loc); - thisLoc.translate (ownerLoc.x,ownerLoc.y); - return thisLoc; - } else { - // no owner, this Graph coordinates are absolute - return loc; - } - } - } - - /** Transform given relative coordinate to an absolute coordinate */ - public Point resolveLocation (Point rel) { - if (rel == null) return null; - Point abs = getAbsoluteLocation(); - abs.translate(rel.x,rel.y); - return abs; - } - - /** Set the Graphs relative X coordinate */ - public void setX (int x) { loc.x = x; } - - public void setBaseX(int x) { _baseLoc.x = x; } - - /** Set the Graphs relative Y coordinate */ - public void setY (int y) { loc.y = y; } - - public void setBaseY (int y) { _baseLoc.y = y; } - - /** Set the base location of this Graph. This is the location of the Graph - * at a 100% zoom level. This method is called by the auto-layout managers */ - public void setBaseLocation(Point loc) { _baseLoc = loc; } - - /** Set the heigth of this Graph */ - public void setHeight (int h) { - if (h >= 0) height = h; - sizeChanged(); - } - /** Set the width of this Graph */ - public void setWidth (int w) { - if (w >= 0) width = w; - sizeChanged(); - } - - /** Change the size of this Graph */ - public void setSize(Dimension d) { - width = (int)d.getWidth(); - height = (int)d.getHeight(); - //sizeChanged(); - } - - /** Change the size of this Graph */ - public void setBaseSize(Dimension d) { - _relWidth = (int)d.getWidth(); - _relHeight = (int)d.getHeight(); - } - - /** Does the Graph have its dimensions set? */ - public boolean isEmpty () { - if (_relWidth == 0 || _relHeight == 0) return true; - else return false; - } - - /** (re)set the location/dimension of this Graph */ - public void setFrame (int x, int y, int w, int h) { - loc.x = x; - loc.y = y; - if (w >= 0) width = w; - if (h >= 0) height = h; - } - - public void setRect (double x, double y, double w, double h) { - setFrame ((int)x,(int)y,(int)w,(int)h); - } - - /** - * Set this Graph parent. A parent is the Graph that contains this Graph - * in case of a composite. This method will copy the GraphManager of its - * parent by calling getGraphManager(). - * - * @see GraphComposite - */ - public void setOwner (GraphComposite owner) { - _owner = owner; - } - - /** - * Select/deselect graph - */ - public void setSelected (boolean selected) { - _selected = selected; - this.connectionShowMode(selected); - } - - /** Is this Graph selected? */ - public boolean isSelected () { return _selected; } - - /** Set visibility */ - public void setVisible (boolean visible) { - if (visible) { - _visible = 0; - } else { - _visible = 1; - } - } - - /** Is this Graph visible? */ - public boolean isVisible () { - //return _visible && canBeDrawn(); - return (_visible==0); - } - - /** Returns the Graphs parent. Null if it hasn't any */ - public GraphComposite getOwner () { return _owner; } - - // --- -- - - - - - -- - - -- - -- - -- - - - -- - -- - - -- - - --- - - // Methods used for connecting this Graph to other Graphs - // - -- -- - - -- - - -- - - - - - -- -- -- -- --- ----- -- -- - -- - --- - - - /** Provides access to the incoming Connections */ - public Connection getInConnection (int index) { - if (index >= inConn.size()) return null; - return (Connection)inConn.get(index); - } - - /** Provides access to the outgoing Connections */ - public Connection getOutConnection (int index) { - if (index >= outConn.size()) return null; - return (Connection)outConn.get(index); - } - - /** Retreive the number of incoming connections */ - public int nrInConnections () - { - return inConn.size(); - } - - /** Retreive the number of outgoing connections */ - public int nrOutConnections () - { - return outConn.size(); - } - - /** Notify this Graph that it is part of a Connection between two Graphs */ - public void registerConnection (Connection connection) - { - if (connection.graphIn == this) inConn.add(connection); - else if (connection.graphOut == this) outConn.add(connection); - //TODO: else throw an exception - } - - /** Connect this graph to the specified graph using the specified connection.*/ - public Connection connectTo (Graph graph, Connection connection) { - connection.graphOut = this; - connection.graphIn = graph; - graph.registerConnection(connection); - outConn.add(connection); - return connection; - } - - /** Create a unidirectional connection. A handler to the created Connection - * is returned. */ - public Connection connectTo (Graph graph) - { - Connection connection = new Connection (this,graph); - return connectTo(graph,connection); - } - - /** Determine if this Graph is connected to the selected Graph in any - * direction */ - public boolean isConnectedTo (Graph graph) - { - for (int i=0; i<outConn.size(); i++) - { - if (((Connection)outConn.get(i)).graphIn == graph) return true; - } - for (int i=0; i<inConn.size(); i++) - { - if (((Connection)inConn.get(i)).graphOut == graph) return true; - } - return false; - } - - /** Determine if this Graph is already connected to any other Graph (input) */ - public boolean hasInputConnections () { return inConn.size() > 0; } - - /** Determine if this Graph is already connected to any other Graph (output) */ - public boolean hasOutputConnections () { return outConn.size() > 0; } - - /** - * Ask this Graph for a connection coordinate in specified orientation. - * The returned coordinate is absolute. If a point cannot be determined it - * returns null. - */ - public Point getConnectionPoint (boolean incoming, Connection con) { - Point point; - // are we visible? - if ((_visible==0) && canBeDrawn()) { - if (incoming) { - point = resolveLocation (new Point(0,height/2)); - } else { - point = resolveLocation (new Point(width,height/2)); - } - } else { - if (_owner == null) return null; // can't create connection point - point = _owner.getConnectionPoint(incoming,con); - } - return point; - } - - /** Returns 'this' when this Graph contains the specified point. If not - * it returns null. */ - public Graph containerOf (Point p) { - Point absCoor = getAbsoluteLocation(); - if (p.getX() >= absCoor.getX() && p.getX() <= absCoor.getX()+width && - p.getY() >= absCoor.getY() && p.getY() <= absCoor.getY()+height) { - return this; - } else return null; - } - - /** Add this to bounded when the Graph lies within the specified bounds */ - public void enumBoundedGraphs (Rectangle bounds, Vector bounded) { - Point absC = getAbsoluteLocation(); - Rectangle absR = new Rectangle(absC,new Dimension(width,height)); - if (bounds.contains(absR)) { - bounded.add(this); - } - } - - /** Sets the composite tree level of this Graph. */ - public void setTreeLevel (int level) { - _treeLevel = level; - manager.suggestTreeHeight(_treeLevel); - } - - /** Returns the level of this Graph in the composite tree. */ - public int getTreeLevel () { return _treeLevel; } - - /** Determines if this Graph can be drawn. It checks if the Graph has enough - * space (taken the given zoomlevel) to draw itself. Override this function - * to specify what conditions should be met for the Graph to draw itself. */ - public boolean canBeDrawn() { return true; } - - public boolean connectionShowMode(boolean bold) { - Connection c; - for (int i=0; i<inConn.size(); i++) { - c = (Connection)inConn.get(i); - c.setSelected(bold); - } - for (int i=0; i<outConn.size(); i++) { - c = (Connection)outConn.get(i); - c.setSelected(bold); - } - return true; - } - - /** Reset the dimensions of this Graph */ - protected void resetDim () { height=0; width=0; _relHeight=0; _relWidth=0; } - - /** Returns all interesting properties of this Graph. Overload this method - * to add your own interesting properties. */ - public Config getProperties() { - Config p = new Config(); - p.putString("Name",_name); - return p; - } - - /** Overload this function if you want to relate an icon with this Graph */ - public Icon getIcon() { - return null; - } - - final static int LINE_SPACING = 5; - final static int PROP_HORZ_SPACING = 50; - final static int PROP_INDENT = 100; -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphActionEvent.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphActionEvent.java deleted file mode 100644 index 1ec12c2257c..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphActionEvent.java +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.util.EventObject; - -public class GraphActionEvent extends EventObject { - - public GraphActionEvent(Object source) { - super(source); - // REVISIT: implement - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphActionListener.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphActionListener.java deleted file mode 100644 index 0717fd81a23..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphActionListener.java +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Interface GraphActionListener - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public interface GraphActionListener { - // REVISIT: implement -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphComposite.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphComposite.java deleted file mode 100644 index c6b852d63aa..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphComposite.java +++ /dev/null @@ -1,428 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title - * Description: - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.util.*; -import java.awt.*; -import kiwi.util.Config; - -/** - * This class represents a composition of multiple Graphs. It contains - * methods for adding Graph to the composite (these functions will resize - * the composite Graph according to the dimensions of the added Graph) - * - * A composition has its own coordinate system with (0,0) set to the - * upper left coordinates of the composition. - * - * The default GraphComposite displays a filled rectangle to visualize its - * boundaries. You can disable enable this property with enableBorder(). - * - * A GraphComposite can be in two different states. In the first state - * it will not paint its children and it will calculate its own coordinates. - * In this state the GraphComposite can use its entire client area to draw on. - * In the second state it will draw its children. The methode setState() - * can switch between these states. - * - * The layout of components within the GraphComposite is controlled by a - * LayoutController. The dimensions of the GraphComposite are controlled - * by a DimensionController. The default DimensionController inflates the - * GraphComposite so that its children just fit. Every state has a - * DimensionController attached to it. - */ -public class GraphComposite extends Graph { - - final static int NR_OF_STATES = 2; - - /** State in which the GraphComposite will not draw its children */ - final static int STATE_INDEPENDENT = 0; - /** State in which the GraphComposite will draw its children */ - final static int STATE_DRAWCHILDREN = 1; - - /** Holds the GraphComposites' children */ - protected ArrayList _graphList; - /** The manager that handles the layout of components in this Graph */ - protected LayoutController _layoutController; - /** The managers that handle the dimensions of this GraphComposite */ - protected DimensionController dimController[] = - new DimensionController[NR_OF_STATES]; - /** Current horizontal spacing between Graphs */ - private int _horzSpacing; - /** Current vertical spacing between Graphs */ - private int _vertSpacing; - /** Used by function getFirstChild() and getNextChild() */ - private int _currentChild=0; - /** Current state */ - private int state = STATE_DRAWCHILDREN; - - public GraphComposite(GraphManager man) { - super(man,0,0,"GraphComposite"+followUp++); - defaultSettings(); - } - - public GraphComposite(GraphManager man, String name) { - super (man,0,0,name); - defaultSettings(); - } - - /** Create an empty composite with no dimensions. */ - public GraphComposite(GraphManager man, int x, int y, String name) { - super (man,x,y,name); - defaultSettings(); - } - - private void defaultSettings () { - _graphList = new ArrayList (); - _horzSpacing = 0; - _vertSpacing = 0; - setDimCtrl(STATE_DRAWCHILDREN,new DimensionController()); // default 'inflater' - } - - /** Select layout */ - public void setLayoutController (LayoutController layoutController) { - _layoutController = layoutController; - _layoutController.setGraphComposite(this); - } - - /** Retreive layout manager. Null if not set. */ - public LayoutController getLayoutController () { return _layoutController; } - - /** Registers DimensionController with this component. The state specifies - * the GraphComposite state in which this DimensionController will be - * active. This can be STATE_DRAWCHILDREN or STATE_INDEPENDENT. */ - public void setDimCtrl (int state, DimensionController dimController) { - this.dimController[state] = dimController; - this.dimController[state].setGraphComposite(this); - } - - /** Returns registered DimensionController for a specified state. The - * state can be STATE_DRAWCHILDREN or STATE_INDEPENDENT. It returns null - * if no DimensionController has been set for the specified state. */ - public DimensionController getDimCtrl(int state) { return dimController[state]; } - - /** Returns the DimensionController for the current state. */ - public DimensionController getDimCtrl() { return dimController[state]; } - - /** Set visibility. The method sets the same value to all its children when - * its state flag is set to STATE_DRAWCHILDREN. */ - public void setVisible (boolean visible) { - super.setVisible(visible); - if (state == STATE_DRAWCHILDREN) { - for (int i=0; i<numberOfGraphs(); i++) { - getGraph(i).setVisible(visible); - } - } - } - - protected void transformDimensions() { - super.transformDimensions(); - _horzSpacing = (int)(getZoomLevel() * getDimCtrl(state).getHorizontalSpacing()); - _vertSpacing = (int)(getZoomLevel() * getDimCtrl(state).getVerticalSpacing()); - } - - /** Recalc the dimensions of this Graph using the given zoom level. */ - public void setZoomLevel (double level) { - super.setZoomLevel(level); - for (int i=0; i<_graphList.size(); i++) { - ((Graph)_graphList.get(i)).setZoomLevel(level); - } - } - - /** Change state of this GraphComposite. Can be STATE_INDEPENDANT, - * STATE_DRAWCHILDREN. The method will inform the GraphManager that it - * should relayout the entire tree, because of a size change. */ - public void setState(int state, boolean recurse) { - setState(state); - if (recurse) { - for (int i=0; i<numberOfGraphs(); i++) { - Graph graph = getGraph(i); - if (graph instanceof GraphComposite) { - ((GraphComposite)graph).setState(state,true); - } - } - } - } - - /** Change state of this GraphComposte. Can be STATE_INDEPENDANT, - * STATE_DRAWCHILDREN. The method will inform the GraphManager that it - * should relayout the entire tree, because of a size change. */ - public void setState(int state) { - if (dimController[state] == null) { - System.out.println("Warning: No dimension controller exists for specified state."); - return; - } - this.state = state; - getGraphManager().setDimensionsChanged(); - - if (this.state == STATE_INDEPENDENT) { - for (int i=0; i<numberOfGraphs(); i++) { - getGraph(i).setVisible(false); - } - } else - if (this.state == STATE_DRAWCHILDREN) { - for (int i=0; i<numberOfGraphs(); i++) { - getGraph(i).setVisible(true); - } - } - } - - public void setGraphManager(GraphManager man) { - super.setGraphManager(man); - for (int i=0; i<numberOfGraphs(); i++) { - getGraph(i).setGraphManager(man); - } - } - - /** Returns either STATE_INDEPENDANT or STATE_DRAWCHILDREN. */ - public int getState() { return state; } - - /** Paint this composite. When its is in state STATE_DRAWCHILDREN it will - * calls <code>paint()</code> on all its children, - * after some checks have been made (visibility, withinh clip bounds, etc) - * When state is STATE_INDEPENDANT, it will call its paintGraph method. */ - public boolean paint () { - if (manager == null) return false; - if (manager.getGraphics() == null) return false; - if ((this.numberOfGraphs() == 0)) return false; // empty composite - Graphics2D g = manager.getGraphics(); - Point point = getAbsoluteLocation(); // Resolve location - if (hasVisibleBorders()) paintBorder(g,point); - if (state == STATE_INDEPENDENT) { - if (hasVisibleClient()) paintGraph(g,point); - return true; - } else { - if (!isVisible()) return false; - for (int i=0; i<_graphList.size(); i++) { - Graph graph = (Graph)_graphList.get(i); - if (!graph.isVisible()) continue; - if (graph.isEmpty()) continue; - if (!graph.canBeDrawn()) continue; - Rectangle rect = manager.getGraphics().getClipBounds(); - Point p = graph.getAbsoluteLocation(); - //REVISIT: avoid object creation at this point - if (!rect.intersects(new Rectangle(p, // within bounds? - new Dimension(graph.getWidth(),graph.getHeight())))) continue; - graph.paint(); - } - return true; - } - } - - /** Paint all connections and call <code>paintConnections()</code> on all - * its children. root must be set to true */ - public void paintConnections () { - super.paintConnections(); - for (int i=0; i<numberOfGraphs(); i++) getGraph(i).paintConnections(); - } - - /** Display the name of this Graph. - * @param abs Absolute location of upper-left corner of Graph */ - protected void paintGraph(Graphics2D g, Point abs) { - Font font = new Font("arial",Font.PLAIN,(int)(11)); - FontMetrics fontMetr = g.getFontMetrics(font); - g.setFont(font); - int rs = (int)(0.25*getRoundSize()); - int textWidth = fontMetr.stringWidth(getName()); - if (textWidth >= getWidth()) { // check if name fits - return; // nope - } - g.drawString(getName(),(getWidth()/2)-(textWidth/2)+abs.x, // center horizontally - abs.y+fontMetr.getMaxAscent()+rs); - } - - /** Relayout subtree of this GraphComposite. Should only be called on - * the root, or you'll mess up your layout! */ - public void layoutAll () { - if (_layoutController == null) return; - _layoutController.preprocess(); - layoutChildren(); - if (_layoutController.canBeDone()) _layoutController.doLayout(); - dimController[state].setDimensions(); - } - - /** Calls layoutAll() on all its children. */ - private boolean layoutChildren () { - for (int i=0; i<_graphList.size(); i++) { - Graph graph = (Graph)_graphList.get(i); - if (graph instanceof GraphComposite) - ((GraphComposite)graph).layoutAll(); - } - return true; - } - - /** Sets the composite tree level of this Graph. */ - public void setTreeLevel (int level) { - super.setTreeLevel(level); - for (int i=0; i<numberOfGraphs(); i++) { - getGraph(i).setTreeLevel(level+1); - } - } - - /** set a Graph at a specific index. Index should be a value in the range - * 0 - numberOfGraphs()-1 */ - public void setGraph(Graph graph, int index) { - if ( (index < 0) || (index >= numberOfGraphs()) ) return; - if (state == STATE_INDEPENDENT) graph.setVisible(false); - if (!isVisible()) graph.setVisible(false); - graph.setOwner(this); - _graphList.set(index,graph); - } - - /** Add a Graph to the composite. */ - public void addGraph (Graph graph) { - if (state == STATE_INDEPENDENT) graph.setVisible(false); - if (!isVisible()) graph.setVisible(false); - graph.setOwner (this); - _graphList.add(graph); - } - - /** Remove a Graph from the composite. */ - public void removeGraph (Graph graph) { - graph.setOwner(null); - _graphList.remove(graph); - //treeStructureChanged(); - } - - /** Remove a Graph from the composite. */ - public void removeGraph (int index) { - if (index < _graphList.size()) { - this.getGraph(index).setOwner(null); - _graphList.remove(index); - //treeStructureChanged(); - } else { - System.err.println("GraphComposite: Tried to remove nonexis. Graph"); - } - } - - /** Remove all Graph from the composite */ - public void removeAllGraphs() { - for (int i=0; i<_graphList.size(); i++) { - this.getGraph(i).setOwner(null); - } - _graphList.clear(); - } - - /** Replace a Graph at a given index with the specified Graph */ - public void replaceGraph(int index, Graph graph) { - _graphList.remove(index); - graph.setOwner(this); - _graphList.add(index,graph); - } - - /** This method provides access to the Graph in the composition by index */ - public Graph getGraph (int index) { - return (index < _graphList.size()) ? (Graph)_graphList.get(index) : null; - } - - /** Returns the number of Graphs in this composition */ - public int numberOfGraphs () { return _graphList.size(); } - - /** - * This method returns the index of the specified Graph in this composite. - * If the Graph is not part of this composite it returns -1. - */ - public int getGraphIndex (Graph graph) { - for (int i=0; i<_graphList.size(); i++) - if (_graphList.get(i)==graph) return i; - return -1; - } - - /** Get a connection point. A basic GraphComposite cannot determine a - * connection point, so it will always pass the request to its owner. - * When no connection point could be determined, the method returns null. - * Overload this method when you want a composite to return a connection - * point. */ - public Point getConnectionPoint (boolean incoming, Connection con) { - GraphComposite owner = getOwner(); - if (owner != null) return owner.getConnectionPoint(incoming,con); - else return null; - } - - /** Returns the Graph which contains the specified point. Return null if - * not any of the Graphs contains this point */ - public Graph containerOf (Point p) { - if (super.containerOf(p)!=null) { - Graph graph; - for (int i=0; i<_graphList.size(); i++) { - graph = ((Graph)_graphList.get(i)).containerOf(p); - if (graph != null) if (graph.hasVisibleBorders()&& - graph.canBeDrawn()) return graph; else break; - } - return this; - } - return null; - } - - /** Add this to bounded when the Graph lies within the specified bounds. - * Recusivly calls enumBoundedGraphs() on all its children. */ - public void enumBoundedGraphs (Rectangle bounds, Vector bounded) { - super.enumBoundedGraphs(bounds,bounded); - if (isVisible()) { - for (int i=0; i<numberOfGraphs(); i++) { - getGraph(i).enumBoundedGraphs(bounds,bounded); - } - } - } - - /** Does this GraphComposite contain the specified Graph? */ - public boolean contains(Graph graph) { - for (int i=0; i<_graphList.size(); i++) { - if ((Graph)_graphList.get(i) == graph) return true; - } - return false; - } - - /** Return width of largest composite Graph (based at zoom level of 100%) */ - public int maxHeightGraph() { - int maxHeight=0; - for (int i=0; i<this.numberOfGraphs(); i++) { - Graph graph = this.getGraph(i); - if (graph.isVisible()) { - if (maxHeight < graph.getBaseHeight()) { - maxHeight = graph.getBaseHeight(); - } - } - } - return maxHeight; - } - - /** Return height of heighest composite Graph (based at zoom level of 100%) */ - public int maxWidthGraph() { - int maxWidth=0; - for (int i=0; i<this.numberOfGraphs(); i++) { - Graph graph = this.getGraph(i); - if (graph.isVisible()) { - if (maxWidth < graph.getBaseWidth()) { - maxWidth = graph.getBaseWidth(); - } - } - } - return maxWidth; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphDataHolder.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphDataHolder.java deleted file mode 100644 index fe60d2ef331..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphDataHolder.java +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Visual LofarSim - * Description: - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.awt.*; -import kiwi.util.Config; - -/** - * A DataHolder is a specific Graph that can be added to the Step and Simul - * composites. A DataHolder can be either used for input or output. Specific - * DataHolders should inherit from this class. - */ -public class GraphDataHolder extends Graph { - - /** - * Is this an input DataHolder? - */ - boolean _inputDataHolder; - - public GraphDataHolder() { - super(null,0,0,20,33,"DataHolder"+followUp++); - defaultSettings(); - } - - public GraphDataHolder(GraphManager man, boolean input) { - super(man,0,0,20,33,"DataHolder"+followUp++); - _inputDataHolder = input; - defaultSettings(); - } - - public GraphDataHolder(GraphManager man, String name,boolean input) { - super(man,0,0,20,33,name); - _inputDataHolder = input; - defaultSettings(); - } - - public GraphStep getOwnerStep() { - return (GraphStep)getOwner().getOwner(); - } - - void defaultSettings() - { - setBackground(Color.orange); - setBaseRoundSize(0); - } - - /** - * Create DataHolder connections. Only one connection can be made per - * DataHolder. When an attemption is made to create multiple connections - * a warning Message will be send to all MessageListeners - */ - public Connection connectTo (Graph graph, Connection connection) - { - connection.graphOut = this; - connection.graphIn = graph; - if (! (graph instanceof GraphDataHolder)) { - manager.fireMessage(new MessageGraph(this, - "Attempt to connect "+this+" to " - + graph +" failed (they are incompatible)",MessageGraph.WARNING)); - return null; - } - if (!this.hasOutputConnections()) { - if (!graph.hasInputConnections()) { - graph.registerConnection(connection); - outConn.add(connection); - return connection; - } else { - manager.fireMessage(new MessageGraph(this, - "Attempt to connect "+this+" to "+graph+" failed (" + graph - + " already has its input connected)",MessageGraph.WARNING)); - return null; - } - } else { - manager.fireMessage(new MessageGraph(this, - "Attempt to connect "+this+" to "+graph+" failed (" + this - + " already has an output connection)",MessageGraph.WARNING)); - return null; - } - } - - /** - * Create DataHolder connections. Only one connection can be made per - * DataHolder. When an attemption is made to create multiple connections - * a warning Message will be send to all MessageListeners - */ - public Connection connectTo (Graph graph) - { - Connection connection = new Connection (this,graph); - return connectTo(graph,connection); - } - - public void setInput(boolean input) { _inputDataHolder = input; } - - /** Is this an input DataHolder? */ - public boolean isInput () { return _inputDataHolder; } - - /** Is this an output DataHolder? */ - public boolean isOutput () { return !_inputDataHolder; } - - public boolean canBeDrawn() { - //if (getZoomLevel() < 0.4) return false; else return true; - //if (getOwner().getVerticalSpacing() < 10) return false; else return true; - return true; - } - - /** Alter size of this GraphDataHolder */ - public void setTreeLevel (int level) { - super.setTreeLevel(level); - setBaseSize(new Dimension ((int)(20*(1.0/level*6)),(int)(33*(1.0/level*6)))); - } - - public String getClassName() { return ""; } - - public Config getProperties() { - Config p = super.getProperties(); - p.putString("Class",getClassName()); - return p; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphDiagram.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphDiagram.java deleted file mode 100644 index ae892549eec..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphDiagram.java +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: class GraphDiagram<p> - * Description: <p> - * Copyright: Copyright (c) <p> - * Company: Astron<p> - * @author Robbert Dam - * @version 1.0 - */ - -import javax.swing.*; -import java.util.*; -import java.awt.*; -import java.io.*; -import org.astron.util.*; -import org.astron.util.gui.*; - -/** - * A GraphDiagram is a collection of GraphComposites and Connections. - * - * Notes: - * It should auto-layout the Graphs based on the Connections. - * It should provide different states in which diagrams can be displayed. - */ -public class GraphDiagram extends GraphSimul { - ArrayList _connectionList; - - public GraphDiagram(GraphManager manager) { - super (manager,"GraphDiagram"+followUp); - defaultSettings(); - } - - public GraphDiagram(GraphManager manager,String name) { - super (manager,name); - defaultSettings(); - } - - private void defaultSettings() { - setBackground(Color.white); - setBaseRoundSize(0); - getDimCtrl().setSpacing(10,100); - } - - /** Overloaded from Graph.canBeDrawn(). Always returns true. */ - public boolean canBeDrawn() { return true; } - - /** Overloaded for performance measurements */ - public void layoutAll() { - Date date1 = new Date(); - super.layoutAll(); - Date date2 = new Date(); - long run = date2.getTime() - date1.getTime(); - manager.fireMessage(new MessageGraph(this,"Auto-layout completed (" - + run + " ms)")); - } - - public void setSelected(boolean selected) { /* cannot select root */ } - - /** Stores Graphics2D state and sets it back after drawing is completed */ - public boolean paint () - { - Graphics2D g = manager.getGraphics(); - Stroke stroke = g.getStroke(); - Paint paint = g.getPaint(); - boolean b = super.paint(); - g.setPaint(paint); - g.setStroke(stroke); - return b; - } - - public void paintConnections () { - Graphics2D g = manager.getGraphics(); - Stroke stroke = g.getStroke(); - Paint paint = g.getPaint(); - super.paintConnections(); - g.setPaint(paint); - g.setStroke(stroke); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphException.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphException.java deleted file mode 100644 index ea943be94e1..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphException.java +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: <p> - * Description: <p> - * Copyright: Copyright (c) <p> - * Company: <p> - * @author - * @version 1.0 - */ - -public class GraphException extends Exception { - - /** - * Create a new GraphException. - * - * @param message The error or warning message. - * @see org.xml.sax.Parser#setLocale - */ - public GraphException (String message) { - super(message); - this.exception = null; - } - - /** - * Create a new GraphException wrapping an existing exception. - * GraphException - * <p>The existing exception will be embedded in the new - * one, and its message will become the default message for - * the GraphException.</p> - * - * @param e The exception to be wrapped in a GraphException. - */ - public GraphException (Exception e) - { - super(); - this.exception = e; - } - - /** - * Create a new GraphException from an existing exception. - * - * <p>The existing exception will be embedded in the new - * one, but the new exception will have its own message.</p> - * - * @param message The detail message. - * @param e The exception to be wrapped in a GraphException. - */ - public GraphException (String message, Exception e) - { - super(message); - this.exception = e; - } - - /** - * Return a detail message for this exception. - * - * <p>If there is an embedded exception, and if the GraphException - * has no detail message of its own, this method will return - * the detail message from the embedded exception.</p> - * - * @return The error or warning message. - */ - public String getMessage () - { - String message = super.getMessage(); - - if (message == null && exception != null) { - return exception.getMessage(); - } else { - return message; - } - } - - /** - * Return the embedded exception, if any. - * - * @return The embedded exception, or null if there is none. - */ - public Exception getException () - { - return exception; - } - - /** - * Override toString to pick up any embedded exception. - * - * @return A string representation of this exception. - */ - public String toString () - { - if (exception != null) { - return exception.toString(); - } else { - return super.toString(); - } - } - - ////////////////////////////////////////////////////////////////////// - // Internal state. - ////////////////////////////////////////////////////////////////////// - - /** - * @serial The embedded exception if tunnelling, or null. - */ - private Exception exception; -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphManager.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphManager.java deleted file mode 100644 index 6b992342aee..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphManager.java +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Class GraphManager - * Description: - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.util.*; -import java.awt.*; -import javax.swing.*; -import org.astron.util.*; -import org.astron.util.gui.*; - -/** The GraphManager provides a Graph tree with valueable information. - * Every Graph in a Graph tree holds a reference to the GraphManager. - * Graphs can register a GraphActionListener with the GraphManager in order - * to be notified when some specific action occurs.*/ -public class GraphManager { - - protected ArrayList _mlisteners = new ArrayList(); - private Graphics2D _g2D; - private JComponent _container; - private SelectionManager selMan; - private int _treeHeight = 0; - private boolean dimChanged = false; - - public GraphManager() { - selMan = new SelectionManager(); - } - - /** Get a Graphics context to draw on */ - public Graphics2D getGraphics() { return _g2D; } - - /** Set the Graphics context the Graphs must draw on. */ - public void setGraphics(Graphics2D g2D) { - _g2D = g2D; - _g2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, - RenderingHints.VALUE_TEXT_ANTIALIAS_ON); - } - - /** Registers a GraphActionListener. The registered listener will receive - * all GraphActionEvents that are send through the GraphManager. */ - public void addGraphActionListener(GraphActionListener listener) { - // REVISIT: implement - throw new java.lang.UnsupportedOperationException(); - } - - /** Registers a GraphActionListener. The registered listener will receive - * all GraphActionEvents which class is an instance of the specified - * GraphActionEvent class. */ - public void addGraphActionListener(GraphActionListener listener, - GraphActionEvent event) { - // REVISIT: implement - throw new java.lang.UnsupportedOperationException(); - } - - /** Unregisters the specified GraphActionListener.*/ - public void removeGraphActionListener(GraphActionListener listener) { - // REVISIT: implement - throw new java.lang.UnsupportedOperationException(); - } - - /** Dispatches the specified event to all listeners. */ - public void fireGraphAction(GraphActionEvent event) { - // REVISIT: implement - throw new java.lang.UnsupportedOperationException(); - } - - /** Registers a MessageListener with this Graph. The Graph will dispatch - * user messages to all its registered MessageListeners. */ - public void addMessageListener (MessageListener messageListener) { - _mlisteners.add(messageListener); - } - - /** Unregisters the specified MessageListener */ - public void removeMessageListener (MessageListener messageListener) { - _mlisteners.remove(messageListener); - } - - public MessageListener[] getMessageListeners () { - MessageListener ml [] = new MessageListener[_mlisteners.size()]; - for (int i=0; i<ml.length; i++) { - ml[i] = (MessageListener)_mlisteners.get(i); - } - return ml; - } - - /** Dispatch the specified MessageEvent to all the registered listeners. */ - protected void fireMessage(MessageEvent event) { - if (_mlisteners.size() == 0) { - System.out.println(event); - } else { - for (int i=0; i<_mlisteners.size(); i++) { - ((MessageListener)_mlisteners.get(i)).note(event); - } - } - } - - /** Sets the JComponent on which this Graph is drawn. If a method needs to - * resolve the container of a Graph, it can call the getContainer() method - * on its GraphManager. - * - * @see getContainer */ - public void setContainer(JComponent container) { - _container = container; - } - - /** Retreives the JComponent on which this Graph is drawn. Returns null if - * this Graph is not drawn on a JComponent */ - public JComponent getContainer() { return _container; } - - public SelectionManager getSelectionManager() { return selMan; } - - /** Every Graph call this method when it is added to the Graph tree. The - * Graphs tell their level to the GraphManager, so he can keep track on - * the height of the tree. */ - public void suggestTreeHeight(int treeLevel) { - if (treeLevel > _treeHeight) _treeHeight = treeLevel; - } - - public int getTreeHeight() { return _treeHeight; } - - public void setDimensionsChanged() { dimChanged = true; } - - public boolean dimensionsChanged() { - if (dimChanged) { - dimChanged = false; - return true; - } else return false; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphParamHolder.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphParamHolder.java deleted file mode 100644 index d568c56c55f..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphParamHolder.java +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: <p> - * Description: <p> - * Copyright: Copyright (c) <p> - * Company: <p> - * @author - * @version 1.0 - */ - -public class GraphParamHolder extends Graph { - - public GraphParamHolder(GraphManager man, String name) { - super(man,0,0,name); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphSelectionEvent.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphSelectionEvent.java deleted file mode 100644 index 634e72e8681..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphSelectionEvent.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.astron.basesim; - -import java.util.EventObject; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public class GraphSelectionEvent extends EventObject { - - boolean added; - Graph graph; - - public GraphSelectionEvent(Object source, Graph graph, boolean added) { - super(source); - this.added = added; - this.graph = graph; - } - - public boolean isSelected() { return added; } - public Graph getGraph() { return graph; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphSelectionListener.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphSelectionListener.java deleted file mode 100644 index 1727ae07537..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphSelectionListener.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.astron.basesim; - -import java.util.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public interface GraphSelectionListener extends EventListener { - public void valueChanged(GraphSelectionEvent e); -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphSimul.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphSimul.java deleted file mode 100644 index 9c924c25d78..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphSimul.java +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Visual LofarSim - * Description: - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.util.*; -import java.awt.*; -import org.astron.util.*; -import kiwi.util.Config; - -public class GraphSimul extends GraphStep { - - final static Color defBackground = new Color(180,190,240); - - LayoutSimul _layoutSimul = new LayoutSimul(); - - /** The WorkHolder of a Simul is not part of the diagram, but it is visible - * when the Graph tree is displayed in a JTree. So we store it here. - * @see BaseSimTreeModel*/ - private GraphWorkHolder _gwh; - - public GraphSimul() { - super (null,"GraphSimul"+followUp++); - defaultSettings(); - } - - public GraphSimul(GraphManager man) { - super (man,"GraphSimul"+followUp++); - defaultSettings(); - } - - public GraphSimul(GraphManager man, String name) { - super (man,name); - defaultSettings(); - } - - private void defaultSettings() { - setBackground(defBackground); - ((GraphComposite)this.getGraph(1)).setLayoutController(_layoutSimul); - getInnerComposite().setDimCtrl(STATE_INDEPENDENT,new DimCtrlStepCenter()); - getDimCtrl().setSpacing(10,100); - } - - /** Add WorkHolder to this Simul object. Although not visible in the - * GraphSimul, the WorkHolder is stored in a member variable. (We must - * store it, because the JTree does show it.) */ - public void setWorkHolder(GraphWorkHolder workHolder) { - _gwh = workHolder; - // ugly workaround. needed for BaseSimTreeModel - GraphComposite gc = new GraphComposite(getGraphManager()); - gc.setOwner(this); - _gwh.setOwner(gc); - _workHolderIsSet = true; - } - - /** Returns the GraphWorkHolder of this GraphSimul. Returns null if not set.*/ - public GraphWorkHolder getWorkHolder() { return _gwh; } - - /** Returns true if this GraphSimul has a WorkHolder */ - public boolean hasWorkHolder() { return _gwh != null; } - - public int numberOfSteps() { return _compCore.numberOfGraphs(); } - - public void addStep (GraphStep step) { - getInnerComposite().addGraph(step); - } - - public GraphStep getStep(int index) { - return (GraphStep)getInnerComposite().getGraph(index); - } - - public void setZoomLevel (double level) { - super.setZoomLevel(level); - if (_gwh != null) getWorkHolder().setZoomLevel(level); - } - - /** Returns all interesting properties of this GraphStep. Overload this method - * to add your own interesting properties. */ - public Config getProperties() { - Config p = super.getProperties(); - p.putInt("numberOfSteps",numberOfSteps()); - return p; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphStep.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphStep.java deleted file mode 100644 index 21cd645c39b..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphStep.java +++ /dev/null @@ -1,348 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Visual LofarSim - * Description: - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.awt.*; -import java.util.*; - -/** - * A Step is a kind of composite that holds a (centered) Workholder, - * a set of input DataHolders and a set of output DataHolders. - * <blockquote> - * <em>Note: Although graphically a GraphStep CONTAINS DataHolders, in the - * LofarSim model it's the WorkHolder that contains the DataHolders. This - * gives a little trouble when parsing the model file when a WorkHolder - * is encountered which should be placed in a Step which might not yet - * be available. This can be overcome by parsing from the highest level (Simuls) - * down to the lower levels (Steps->WorkHolders->DataHolders)</em> - * </blockquote> - */ -public class GraphStep extends GraphComposite { - - /** - * Is a Workholder set and layed out in this Step? - */ - boolean _workHolderIsSet; - /** - * Is a Paramholder set and layed out in this Step? - */ - boolean _paramHolderIsSet; - - protected GraphComposite _compInput; // contains input DataHolders - protected GraphComposite _compOutput; // contains output DataHolders - protected GraphComposite _compCore; // contains WorkHolder or Steps - - private String _node; - - boolean _init; - - public GraphStep() { - super (null,0,0,"GraphStep"+followUp++); - defaultSettings(); - } - - public GraphStep(GraphManager man) { - super (man,0,0,"GraphStep"+followUp++); - defaultSettings(); - } - - public GraphStep(GraphManager man, String name) { - super (man,0,0,name); - defaultSettings(); - } - - private void defaultSettings () - { - setBackground(Color.lightGray); - setLineColor(Color.black); - setBaseRoundSize(20); - _paramHolderIsSet = false; - _init = true; // for Step specific initialization - _compInput = new GraphComposite(getGraphManager()); - _compInput.getDimCtrl().setSpacing (30,20); - _compInput.getDimCtrl().setSpacingFactor(0.05f,false); - _compOutput = new GraphComposite(getGraphManager()); - _compOutput.getDimCtrl().setSpacing (30,20); - _compOutput.getDimCtrl().setSpacingFactor(0.05f,false); - _compInput.setLayoutController( - new LayoutDataHolder(LayoutDataHolder.STEP_INPUT)); - _compInput.enableBorder(false); - _compInput.enableClientDisplay(false); - _compOutput.setLayoutController( - new LayoutDataHolder(LayoutDataHolder.STEP_OUTPUT)); - _compOutput.enableBorder(false); - _compOutput.enableClientDisplay(true); - _init = false; - - _compCore = new GraphCompositeInner(getGraphManager()); - _compCore.setLayoutController(new LayoutCentered()); - _compCore.enableBorder(false); - _compCore.enableClientDisplay(true); - - // -Note------------------------------------------------------------------- - // For GraphSimul classes the vertical and horizontal spacings between - // its children are determined by its LayoutController. So the horizontal - // and vertical spacings set here for _compCore will not be applied to - // GraphSimul objects. - // ------------------------------------------------------------------------ - - _compCore.getDimCtrl().setSpacing(80,16); - _compCore.getDimCtrl().setSpacingFactor(0.10f,false); - - addGraph(_compInput); - addGraph(_compCore); - addGraph(_compOutput); - setLayoutController(new LayoutFlow(LayoutFlow.ALIGN_HORZ)); - getDimCtrl().setSpacing(0,0); - setBaseSize(new Dimension(300,0)); - } - - /** - * Determine if this Step has a WorkHolder - */ - public boolean hasWorkHolder () - { - return _workHolderIsSet; - } - - /** - * Add a WorkHolder. Only one WorkHolder can exist in a Step. - */ - public void setWorkHolder (GraphWorkHolder workHolder) - { - if (_workHolderIsSet) return; - _compCore.addGraph (workHolder); - _workHolderIsSet = true; - } - - /** Get the WorkHolder of this GraphStep. Returns null if not set.*/ - public GraphWorkHolder getWorkHolder() { - return (_compCore.numberOfGraphs()>0) ? - (GraphWorkHolder)_compCore.getGraph(0) : null; - } - - public GraphSimul getOwnerSimul() { - return (GraphSimul)getOwner().getOwner(); - } - - /** - * Add a DataHolder. - */ - public void addDataHolder (GraphDataHolder dataHolder) - { - if (dataHolder.isInput()) _compInput.addGraph(dataHolder); - else _compOutput.addGraph(dataHolder); - } - - /** - * Add a ParamHolder. Only one ParamHolder can exist in a Step - */ - public void addParamHolder (GraphDataHolder paramHolder) - { - addGraph (paramHolder); - _paramHolderIsSet = true; - } - - /** - * Connect this Step to another Step. There are two possibilities, - * one is a connection between two Steps on the same level, the other is a - * connection between a parent and it's child. - */ - public void connectTo (GraphStep step) - // REVISIT: return value should be 'Connection'? - { - boolean connectionsCreated = false; - - GraphDataHolder gdhThis[], gdhThat[]; - if (this == step.getOwner().getOwner()) { - // situation where a simul's input is connected to the input of one - // of its children (in->in) - gdhThis = getInputDataHolders(); - gdhThat = step.getInputDataHolders(); - } else if (getOwner().getOwner() == step) { - // situation where a simul's ouput is connected to its parent output - // (out->out) - gdhThis = getOutputDataHolders(); - gdhThat = step.getOutputDataHolders(); - } else { - // connection between steps on the same level (out->in) - gdhThis = getOutputDataHolders(); - gdhThat = step.getInputDataHolders(); - (super.connectTo(step)).setVisible(false); - } - int thatIx=0; - if (gdhThat.length == 0) return; - for (int i=0; i<gdhThis.length; i++) - { - if (!gdhThis[i].hasOutputConnections()) { - while (gdhThat[thatIx].hasInputConnections()) - { - if (++thatIx>=gdhThat.length) { - if (!connectionsCreated) manager.fireMessage( - new MessageGraph(this,"Could not connect "+this+" to "+step+"." - + " No input dataholders available.")); - return ; - } - } - gdhThis[i].connectTo(gdhThat[thatIx++]); - connectionsCreated = true; - if (thatIx >= gdhThat.length) break; - } - } - if (!connectionsCreated) manager.fireMessage( - new MessageGraph(this,"Could not connect "+this+" to "+step+"." - + " No output dataholders available.")); - } - - /** Returns input GraphDataHolder count */ - public int nrInputDataHolders() { return _compInput.numberOfGraphs(); } - - /** Returns output GraphDataHolder count */ - public int nrOutputDataHolders() { return _compOutput.numberOfGraphs(); } - - /** Get a list of input DataHolders. Used for connection between Steps */ - public GraphDataHolder[] getInputDataHolders () { - GraphDataHolder gdh[] = new GraphDataHolder[_compInput.numberOfGraphs()]; - for (int i=0;i<gdh.length;i++) gdh[i] = (GraphDataHolder)_compInput.getGraph(i); - return gdh; - } - - /** Get a list of output DataHolders. Used for connection between Steps */ - public GraphDataHolder[] getOutputDataHolders () { - GraphDataHolder gdh[] = new GraphDataHolder[_compOutput.numberOfGraphs()]; - for (int i=0;i<gdh.length;i++) gdh[i] = (GraphDataHolder)_compOutput.getGraph(i); - return gdh; - } - - public GraphComposite getInputDataHolderComposite() { - return _compInput; - } - - public GraphComposite getOutputDataHolderComposite() { - return _compOutput; - } - - public GraphComposite getInnerComposite() { - return _compCore; - } - - /** Overloaded from GraphComposite. Passes the state change request to its - * inner composite. */ - public void setState(int state) { - _compCore.setState(state); - } - - /** Overloaded from GraphComposite. Passes the current state request to its - * inner composite. */ - public int getState() { - return _compCore.getState(); - } - - /** - * Get a connection point to this Step. The point is absolute. If the point - * cannot be determined it will return null. - */ - public Point getConnectionPoint (boolean incoming, Connection con) - { - // are we visible? - if (isVisible() && canBeDrawn()) { - if (incoming) { - Graph graph = con.graphIn; - if (((GraphDataHolder)graph).isOutput()) return null; - Point pC = graph.getAbsoluteLocation(); - Point pT = this.getAbsoluteLocation(); - pT.y = (int)(pC.getY()+graph.getHeight()/2); - return pT; - } else { - Graph graph = con.graphOut; - if (((GraphDataHolder)graph).isInput()) return null; - Point pC = graph.getAbsoluteLocation(); - Point pT = this.getAbsoluteLocation(); - pT.x += getWidth(); - pT.y = (int)(pC.getY()+graph.getHeight()/2); - return pT; - } - } else { - return null; - } - } - - public boolean canBeDrawn() { - return true; - //if (getOwner().getVerticalSpacing() <= 1) return false; else return true; - } - - /** Enable/disable showing step info. A GraphStep is build of tree - * GraphComposite objects. Calling this method will set the state of the - * middle GraphComposite to either STATE_INDEPENDENT or STATE_DRAWCHILDREN */ - public void showStepInfo(boolean enable) { - if (enable) { - if (_compCore.getState() == STATE_INDEPENDENT) return; // already in state - _compCore.setState(STATE_INDEPENDENT); - } else { - if (_compCore.getState() == STATE_DRAWCHILDREN) return; // already in state - _compCore.setState(STATE_DRAWCHILDREN); - } - } - - public void setNode(String node) { _node = node; } - public String getNode() { return _node; } - - protected void paintGraph(Graphics2D g, Point abs) { - String origName = new String(getName()); - if (_node != null) setName(getName() + " (" + _node + ")"); - super.paintGraph(g,abs); - setName(origName); - } - - /** This class represent the inner composite that will, in case of a GraphStep, - * display the WorkHolder, or, in case of a Graphsimul display its contained - * Steps or its WorkHolder. */ - private class GraphCompositeInner extends GraphComposite { - public GraphCompositeInner(GraphManager man) { - super(man); - } - - public GraphCompositeInner(GraphManager man, String name) { - super(man,name); - } - - public GraphCompositeInner(GraphManager man, int x, int y, String name) { - super(man,x,y,name); - } - /** Lets the WorkHolder of this simul/step do the drawing. - * A Simul will display a picture together with some info when - * its Steps are invisible. */ - protected void paintGraph(Graphics2D g, Point abs) { - GraphWorkHolder wh = getWorkHolder(); - if (wh != null) wh.paintGraph(g,abs); - } - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphWorkHolder.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphWorkHolder.java deleted file mode 100644 index 24adaededf6..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphWorkHolder.java +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Visual LofarSim - * Description: - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.awt.*; -import kiwi.util.Config; - -//! DataHolders are connected to WorkHolders. Should WorkHolder maintain a -//! list of DataHolder(+channel numbers)? - -public class GraphWorkHolder extends Graph { - - private String className = "WorkHolder"; - - public GraphWorkHolder() { - super (null,0,0,60,20,"GraphWorkHolder"+followUp++); - defaultSettings(); - } - - public GraphWorkHolder(GraphManager man) { - super (man,0,0,60,20,"GraphWorkHolder"+followUp++); - defaultSettings(); - } - - /** Since the WorkHolder is part of a composite, you cannot specify its - * coordinates (they'll be calculated by the composite) */ - public GraphWorkHolder(GraphManager man, String name) { - super (man,0,0,60,20,name); - defaultSettings(); - } - - private void defaultSettings () - { - setLineColor(Color.black); - setBackground(Color.gray); - setBaseRoundSize(50); - } - - public boolean canBeDrawn() { - if (getZoomLevel() < 0.5) return false; else return true; - } - - public Config getProperties() { - Config p = super.getProperties(); - p.putString("Class",getClassName()); - return p; - } - - public void setClassName(String className) { this.className = className; } - public String getClassName() { return className; } - public GraphDataHolder buildDataHolder(boolean input) { - return new GraphDataHolder(); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphWorkHolderImage.java b/support/tools/BaseSimGUI/src/org/astron/basesim/GraphWorkHolderImage.java deleted file mode 100644 index 1a79ea28f95..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/GraphWorkHolderImage.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.astron.basesim; - -import java.awt.*; -import java.awt.image.*; -import javax.swing.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -/** The GraphWorkHolderImage is the base class for all WorkHolder that - * are contained within Simuls. These are only visible when the Simul - * is not expanded (it does not draw its children). These objects are not - * part of the composite tree, but their drawing code will be called by - * their related Simuls. */ -public class GraphWorkHolderImage extends GraphWorkHolder { - - final static int INDENT = 5; - - private static int followUp = 100; - private static MediaTracker mt = null; - protected Image image = null; - - public GraphWorkHolderImage() { - super (); - defaultSettings(); - } - - public GraphWorkHolderImage(GraphManager man) { - super (man); - defaultSettings(); - } - - public GraphWorkHolderImage(GraphManager man, String name) { - super (man,name); - defaultSettings(); - } - - private void defaultSettings() { - setBaseSize(new Dimension(DimCtrlStepCenter.FIXED_WIDTH, - DimCtrlStepCenter.FIXED_HEIGHT)); - } - - /** Paint this WorkHolder. A Simul workholder displays an icon, a title, - * and some other interesting properties depending on the type (class) of - * WorkHolder */ - public void paintGraph(Graphics2D g, Point abs) { - if (image == null) { - String text = getClassName(); - if (text == null) text = getName(); - Font font = new Font("times",Font.BOLD,(int)(11)); - FontMetrics fontMetr = g.getFontMetrics(font); - g.setFont(font); - int textWidth = fontMetr.stringWidth(text); - if (textWidth >= width) return; - int xpos = (width/2)-(textWidth/2)+abs.x; - int ypos = (height/2) + abs.y + (int)(0.5*fontMetr.getMaxAscent()); - g.drawString(text,xpos,ypos); - g.draw(new Rectangle(xpos-5,ypos-14,textWidth+10,20)); - - // REVISIT: fix this method - //paintProperties(g,getClassName(),new Rectangle(abs.x,abs.y,width,height)); - } else { - g.drawImage(image,abs.x+INDENT,abs.y+INDENT, - width-INDENT*2,height-INDENT*2, - (Color)getBackground(),null); - g.drawRect(abs.x+INDENT,abs.y+INDENT,width-INDENT*2,height-INDENT*2); - } - } - - /** Determines the space this Graph object needs to visualize itself - * properly*/ - public int getPreferredWidth() { - return -1; - } - - /** Determines the space this Graph object needs to visualize itself - * properly*/ - public int getPreferredHeight() { - return -1; - } - - public void setImage(Image image) { - this.image = image; - if (mt != null) { - mt.addImage(image,followUp++); - } - } - - /** Set a MediaTracker. */ - static public void setMediaTracker(MediaTracker mediaTracker) { - mt = mediaTracker; - } - - static public MediaTracker getMediaTracker() { return mt; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/JBaseSim.java b/support/tools/BaseSimGUI/src/org/astron/basesim/JBaseSim.java deleted file mode 100644 index cf764f95a79..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/JBaseSim.java +++ /dev/null @@ -1,675 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// zxzss Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: <p> - * Description: <p> - * Copyright: Copyright (c) <p> - * Company: ASTRON<p> - * @author Robbert Dam - * @version 1.0 - */ - -import org.xml.sax.*; -import java.util.*; -import java.awt.*; -import javax.swing.*; -import javax.swing.event.*; -import java.awt.event.*; -import java.io.*; -import org.astron.util.gui.*; - -/** - * Java swing component that can display a single Graph or a complex - * hierarchy of GraphComposites. - */ -public class JBaseSim extends JComponent implements ComponentListener, - MouseInputListener, - KeyListener, - Scrollable { - - //-- constants - final static int MODUS_ZOOM = 0; - final static int MODUS_PAN = 1; - final static int MODUS_SELECT = 2; - - //-- Mouse cursor shapes - final static Cursor CURSOR_SELECT = new Cursor(Cursor.DEFAULT_CURSOR); - Cursor CURSOR_PAN = new Cursor(Cursor.HAND_CURSOR); - Cursor CURSOR_ZOOM = new Cursor(Cursor.DEFAULT_CURSOR); - - //-- misc - private GraphComposite diagram; - private int _mode; - private double _zoomStep; - private double _maxZoomLevel; - private Stack zoomStack; - private Graph focusGraph; - private MouseEvent lastMove; - private JToolTip currentTip = null; - - //-- popup menu actions - AbstractAction policyCenterSteps = new ActionCenterSteps(); - AbstractAction showChildren = new ActionShowChildren(); - - public JBaseSim () { - diagram = null; - defaultSettings(); - } - - public JBaseSim(GraphComposite diagram) { - setGraph(diagram); - defaultSettings(); - } - - private void defaultSettings() { - addMouseListener (this); - addMouseMotionListener (this); - addKeyListener(this); - // set behavior of tooltips - setToolTipText("Hi!"); - ToolTipManager.sharedInstance() - .setDismissDelay(Main.SETTINGS.getInt("toolTipDismissDelay")); - ToolTipManager.sharedInstance() - .setReshowDelay(Main.SETTINGS.getInt("toolTipReshowDelay")); - - loadCursors(); - } - - private void loadCursors() { - Toolkit defToolkit = Toolkit.getDefaultToolkit(); - Image panImage = defToolkit.getImage("images/mpan.gif"); - Image zoomImage = defToolkit.getImage("images/mzoom.gif"); - CURSOR_PAN = defToolkit.createCustomCursor(panImage, - new Point(0,0), // hotspot - "panCursor"); - CURSOR_ZOOM = defToolkit.createCustomCursor(zoomImage, - new Point(0,0), // hotspot - "zoomCursor"); - } - - private void initialize() { - setBorder(BorderFactory.createLoweredBevelBorder()); - _mode = MODUS_SELECT; - _zoomStep = 3; - _maxZoomLevel = 10; - } - - public void clearDiagram() { - diagram = null; - repaint(); - } - - public void setMode(int mode) { - _mode = mode; - switch (_mode) { - case MODUS_PAN: - setAutoscrolls(true); - setCursor(CURSOR_PAN); - break; - case MODUS_SELECT: - setCursor(CURSOR_SELECT); - break; - case MODUS_ZOOM: - setCursor(CURSOR_ZOOM); - break; - } - } - public int getMode() { return _mode; } - public void setZoomStepsize(double stepsize) { _zoomStep = stepsize; } - public double getZoomStepSize() { return _zoomStep; } - public void setMaxZoomLevel(double level) { _maxZoomLevel = level; } - public double getMaxZoomLevel() { return _maxZoomLevel; } - - /** Resizes to diagram size and returns new component size. If the diagram - * size is smaller then the parent size in which this component is - * contained, then this method will center the diagram in the parent - * component.*/ - private Dimension recalcDimension() { - Dimension r = new Dimension(getParent().getSize()); - if (diagram != null) { - if (diagram.getWidth() > r.getWidth()) { - r.width = diagram.getWidth(); - } - if (diagram.getHeight() > r.getHeight()) { - r.height = diagram.getHeight(); - } - } - setPreferredSize(r); - revalidate(); - return r; - } - - /** Lets the displayed diagram just fit the viewport. This method changed the - * zoom level of the diagram. */ - public void fitDiagram() { - - JViewport viewport; - if (getParent() instanceof JViewport) { - viewport = (JViewport)getParent(); - } else { - System.out.println("A JBaseSim is expected to be within a JScrollPane!"); - return; - } - Dimension d = viewport.getSize(); - diagram.setZoomLevel(diagram.getZoomLevel()); // make sure dim. are current - float newZoomLevel; - if (diagram.getBaseWidth() > diagram.getBaseHeight()) { - // adjust to width - newZoomLevel = (float)(d.width-50) / diagram.getBaseWidth(); - } else { - // adjust to height - newZoomLevel = (float)(d.height-50) / diagram.getBaseHeight(); - } - diagram.setZoomLevel(newZoomLevel); - recalcDimension(); - } - - private JPopupMenu createPopupMenu(Graph graph) { - - if (graph instanceof GraphDiagram) return null; - - JPopupMenu popup = new JPopupMenu(); - JMenuItem labelItem = new JMenuItem(); - labelItem.setText(graph.getName()); - labelItem.setEnabled(false); - labelItem.setBackground(Color.blue); - popup.add(labelItem); - - if (graph instanceof GraphSimul) { - JMenuItem showChildrenItem = new JMenuItem(showChildren); - if (((GraphSimul)graph).numberOfSteps() == 0) { - showChildrenItem.setEnabled(false); - } - if (((GraphSimul)graph).getState() == GraphSimul.STATE_INDEPENDENT) { - showChildren.putValue(AbstractAction.NAME,"Expand"); - } else { - showChildren.putValue(AbstractAction.NAME,"Collapse"); - } - popup.addSeparator(); - popup.add(showChildrenItem); - } - focusGraph = graph; - return popup; - } - - public boolean parseSimul (InputStream input, MessageListener listener) { - return parseSimul(input,listener,null); - } - - /** Parse the specified XML file containing the simulation. */ - public boolean parseSimul (InputStream input, - MessageListener listener, - String docName) { - Date date1 = new Date(); - ContHandlerSim contentHandler = new ContHandlerSim(); - ErrorHandlerSim errorHandler = new ErrorHandlerSim(); - errorHandler.changeDocumentName(docName); - errorHandler.addMessageListener(listener); - contentHandler.addMessageListener(listener); - try { - XMLReader parser = (XMLReader)Class.forName(Main.SETTINGS - .getString("xmlParser")) - .newInstance(); - parser.setContentHandler(contentHandler); - parser.setErrorHandler(errorHandler); - parser.setFeature( "http://xml.org/sax/features/validation",true); - parser.setFeature( "http://xml.org/sax/features/namespaces",true); - parser.setFeature( "http://apache.org/xml/features/validation/schema",true); - parser.parse(new InputSource(input)); - } catch (Exception e) { - Graph graph = contentHandler.getRoot(); - if (graph != null) { - MessageApp ma = new MessageApp(e); - graph.getGraphManager().fireMessage(ma); - } - return false; - } - contentHandler.getRoot().setTreeLevel(0); - contentHandler.getRoot().getGraphManager().setContainer(this); - setGraph(contentHandler.getRoot()); - - Date date2 = new Date(); - long run = date2.getTime() - date1.getTime(); - listener.note(new MessageGraph(diagram,"Parsing completed ("+run+" ms)")); - System.gc(); // garbage collection - return true; - } - - public void setGraph (GraphComposite diagram) { - if (diagram != null) diagram.setGraphicalRoot(false); - this.diagram = diagram; - diagram.setBaseX(0); - diagram.setBaseY(0); - diagram.setGraphicalRoot(true); - diagram.treeStructureChanged(); - diagram.setZoomLevel(0.4); - - initialize(); - fitDiagram(); - repaint(); - zoomStack = new Stack(); - } - - public Graph getGraph() { return diagram; } - - /** Overrides JComponent addNotify. Registers a ComponentListener with - * the new parent.*/ - public void addNotify() { - super.addNotify(); - getParent().addComponentListener(this); - } - - /** Adjust the JViewPort to let the specified Graph be visible as close - * as possible to the center of the screen. - * @param graph The Graph object to be centered - * @param adjZoomLevel Adjust zoom level? */ - public void centerGraph (Graph graph, boolean adjZoomLevel) { - recalcDimension(); - Rectangle r = new Rectangle(); - Rectangle visR = getVisibleRect(); - Point p = graph.getAbsoluteLocation(); - r.x = p.x - visR.width/2 + graph.getWidth()/2; - r.y = p.y - visR.height/2 + graph.getHeight()/2; - r.width = visR.width; - r.height = visR.height; - if (r.x < 0) r.x = 0; - if (r.y < 0) r.y = 0; - scrollRectToVisible(r); - } - - protected void paintComponent(Graphics g) { - if (diagram == null) return; - diagram.setX((int)(this.getWidth()/2-diagram.getWidth()/2)); - diagram.setY((int)(this.getHeight()/2-diagram.getHeight()/2)); - diagram.getGraphManager().setGraphics((Graphics2D)g); - diagram.paint(); - diagram.paintConnections(); - } - - public void addGraphSelectionListener(GraphSelectionListener l) { - diagram.getGraphManager().getSelectionManager().addGraphSelectionListener(l); - } - public void removeGraphSelectionListener(GraphSelectionListener l) { - diagram.getGraphManager().getSelectionManager().removeGraphSelectionListener(l); - } - - private void zoomIn(float newLevel, Point direction, boolean rect) { - - Graph graph = diagram.containerOf(direction); - diagram.setZoomLevel(newLevel); - - // transform click coordinates to new component size - Rectangle r = new Rectangle(getVisibleRect()); - Dimension oldCompDim = getSize(); - Dimension compDim = recalcDimension(); - int trX = (int)(direction.x * (compDim.width / oldCompDim.getWidth())); - int trY = (int)(direction.y * (compDim.height / oldCompDim.getHeight())); - - graph= diagram.containerOf(new Point(trX,trY)); - - // scroll JViewPort - if (rect) { - r.x = trX; - r.y = trY; - } else { - r.x = trX-(direction.x - r.x); - r.y = trY-(direction.y - r.y); - } - scrollRectToVisible(r); - repaint(); - } - - private void zoomOut(float newLevel, Point direction) { - diagram.setZoomLevel(newLevel); - - // transform click coordinates to new component size - Rectangle r = new Rectangle(getVisibleRect()); - Dimension oldCompDim = getSize(); - Dimension compDim = recalcDimension(); - Point trP = - new Point((int)(direction.x * (compDim.width / oldCompDim.getWidth())), - (int)(direction.y * (compDim.height / oldCompDim.getHeight()))); - - // scroll JViewPort - trP.x -= direction.x - r.x; - trP.y -= direction.y - r.y; - - ((JViewport)getParent()).setViewPosition(trP); - repaint(); - } - - public JToolTip createToolTip() { - Graph graph = null; - if ( (lastMove != null) && (diagram != null) ) { - graph = diagram.containerOf(lastMove.getPoint()); - currentTip = new JSimToolTip(graph); - currentTip.setComponent(this); - return currentTip; - } - return new JSimToolTip(null); - } - - // ----- ComponentListener interface implementation - - public void componentHidden(ComponentEvent e) { } - public void componentMoved(ComponentEvent e) { } - public void componentResized(ComponentEvent e) { - recalcDimension(); - } - public void componentShown(ComponentEvent e) { } - - // ----- MouseInputListener interface implementation - - private boolean mouseClicked; - private Rectangle dragRect = new Rectangle(); - private Point press = new Point(); - - public void mouseClicked(MouseEvent e) { - if (diagram == null) return; // no diagram loaded - switch (_mode) { - case MODUS_ZOOM: - float newZoomLevel = (float)diagram.getZoomLevel(); - - if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) { - - // push current zoom level on zoom stack - zoomStack.push(new ZoomRecord(newZoomLevel)); - newZoomLevel += _zoomStep*(newZoomLevel/_maxZoomLevel); - if (newZoomLevel > _maxZoomLevel) { - zoomStack.pop(); - return; // max. level reached - } - - zoomIn(newZoomLevel,e.getPoint(),false); - return; - } else if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) { - // zoom out - if (zoomStack.empty()) { - newZoomLevel -= _zoomStep*(newZoomLevel/_maxZoomLevel); - } else { - ZoomRecord zR = (ZoomRecord)zoomStack.pop(); - newZoomLevel = zR.zoomLevel; - } - zoomOut(newZoomLevel,e.getPoint()); - return; - } else return; - case MODUS_SELECT: - - // select/deselect a Graph - if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) { - Graph graph = diagram.containerOf(e.getPoint()); - SelectionManager s = diagram.getGraphManager().getSelectionManager(); - if (graph != null) { - if (e.isControlDown()) { - s.addInverseSelection(graph); - } else { - s.setInverseSelection(graph); - } - } else s.unselectAll(); - } else if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) { - Graph graph = diagram.containerOf(e.getPoint()); - if (graph != null) { - JPopupMenu popup = createPopupMenu(graph); - if (popup != null) popup.show(this,e.getX(),e.getY()); - } - } - repaint(); - return; - - case MODUS_PAN: - return; - default: - System.err.println("Unreconized mode set. Use one of predefined modus"); - return; - } - } - public void mouseEntered(MouseEvent e) { - } - public void mouseExited(MouseEvent e) { - } - public void mousePressed(MouseEvent e) { - mouseClicked = true; - if (_mode == MODUS_PAN) { - press.setLocation(getLocationOnScreen()); - press.x += e.getPoint().x; - press.y += e.getPoint().y; - } else { - press.setLocation(e.getX(),e.getY()); - dragRect.setBounds(e.getX(),e.getY(),0,0); - } - } - public void mouseReleased(MouseEvent e) { - if (diagram == null) return; - if (mouseClicked) return; // user wasn't draggin - // check if rectangle was larger then 3 pixels - if (dragRect.width <= 3 || dragRect.height <= 3) { - Graphics2D g = (Graphics2D)getGraphics(); - g.setXORMode(Color.white); - g.draw(dragRect); - return; - } - if (_mode == MODUS_SELECT) { - Graphics2D g = (Graphics2D)getGraphics(); - g.setXORMode(Color.white); - g.draw(dragRect); - Vector bounded = new Vector(30); - diagram.enumBoundedGraphs(dragRect,bounded); - if (e.isControlDown()) { - diagram.getGraphManager().getSelectionManager().addInverseSelection(bounded); - } else { - diagram.getGraphManager().getSelectionManager().setInverseSelection(bounded); - } - return; - } - if (_mode == MODUS_ZOOM) { - Graphics2D g = (Graphics2D)getGraphics(); - g.setXORMode(Color.white); - g.draw(dragRect); - - Rectangle r = new Rectangle(getVisibleRect()); - int x,y; - float zoomLevel; - if (dragRect.width > dragRect.height) { - if (diagram.getZoomLevel() < 1) { - zoomLevel = (r.width / (float)dragRect.width) - * (float)diagram.getZoomLevel(); - } else { - zoomLevel = (r.width / (float)dragRect.width) - * (float)diagram.getZoomLevel(); - } - } else { - if (diagram.getZoomLevel() < 1) { - zoomLevel = (r.height / (float)dragRect.height) - * (float)diagram.getZoomLevel(); - } else { - zoomLevel = (r.height / (float)dragRect.height) - * (float)diagram.getZoomLevel(); - } - } - - x = (int)(dragRect.x - (r.width/2.0) + (dragRect.width/2.0)); - y = (int)(dragRect.y - (r.height/2.0) + (dragRect.height/2.0)); - - // push current zoom level on zoom stack; zoom in - zoomStack.push(new ZoomRecord((float)diagram.getZoomLevel())); - //zoomIn(zoomLevel,new Point(x,y),true); - zoomIn(zoomLevel,new Point(dragRect.x,dragRect.y),true); - return; - } - } - public void mouseDragged(MouseEvent e) { - mouseClicked = false; - - if (_mode == MODUS_ZOOM || _mode == MODUS_SELECT) { - Graphics2D g = (Graphics2D)getGraphics(); - g.setXORMode(Color.white); - g.draw(dragRect); - if (press.x > e.getX()) { - dragRect.width = press.x - e.getX(); - dragRect.x = press.x - dragRect.width; - } else { - dragRect.width = e.getX() - press.x; - dragRect.x = press.x; - } - if (press.y > e.getY()) { - dragRect.height = press.y - e.getY(); - dragRect.y = press.y - dragRect.height; - } else { - dragRect.height = e.getY() - press.y; - dragRect.y = press.y; - } - g.draw(dragRect); - return; - } - if (_mode == MODUS_PAN) { - - // set mouse cursor to drag endless for user convenience - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - Point absPoint = getLocationOnScreen(); - absPoint.x += e.getPoint().x; - absPoint.y += e.getPoint().y; - try { - Robot robot = new Robot(); - if (absPoint.x >= (screenSize.width-1)) { - robot.mouseMove(0,absPoint.y); - press.x = 0; - return; - } else - if (absPoint.y >= (screenSize.height-1)) { - robot.mouseMove(absPoint.x,0); - press.y = 0; - return; - } else - if (absPoint.y == 0) { - robot.mouseMove(absPoint.x,screenSize.height); - press.y = screenSize.height; - return; - } else - if (absPoint.x == 0) { - robot.mouseMove(screenSize.width,absPoint.y); - press.x = screenSize.width; - return; - } - } catch (AWTException x) { - // platform config does not allow low level input control - } - Rectangle r = getVisibleRect(); - r.x -= absPoint.x - press.x; - r.y -= absPoint.y - press.y; - scrollRectToVisible(r); - press.setLocation(absPoint.x,absPoint.y); - return; - } - } - public void mouseMoved(MouseEvent e) { - lastMove = e; - } - - // ----- KeyListener interface implementation - - public void keyTyped(KeyEvent e) { - System.out.println("keyTyped() : "+e); - } - - public void keyPressed(KeyEvent e) { - System.out.println("keyPressed() : "+e); - } - - public void keyReleased(KeyEvent e) { - System.out.println("keyReleased() : "+e); - } - - // ----- Scrollable interface implementation - - public Dimension getPreferredScrollableViewportSize() { - Dimension d = - new Dimension (Toolkit.getDefaultToolkit().getScreenSize()); - d.width *= 0.6; - d.height *= 0.6; - return d; - } - public int getScrollableBlockIncrement(Rectangle visibleRect, - int orientation, int direction) { - if (orientation == SwingConstants.HORIZONTAL) - return visibleRect.width - 40; - else - return visibleRect.height - 40; - } - public boolean getScrollableTracksViewportHeight() { - return false; - } - public boolean getScrollableTracksViewportWidth() { - return false; - } - public int getScrollableUnitIncrement(Rectangle visibleRect, - int orientation, int direction) { - return 1; - } - - private class ZoomRecord { - float zoomLevel; - ZoomRecord(float zoomLevel) { - this.zoomLevel = zoomLevel; - } - } - - //-- Action classes (for items in popup menu) - private class ActionCenterSteps extends AbstractAction { - boolean centerSteps; - public ActionCenterSteps() { - super("Center steps"); - centerSteps = false; - } - public void actionPerformed(ActionEvent e) { - centerSteps = !centerSteps; - if (centerSteps) { - } else { - } - } - public boolean getState() { - return centerSteps; - } - } - private class ActionShowChildren extends AbstractAction { - public ActionShowChildren() { - super(); - } - public void actionPerformed(ActionEvent e) { - GraphSimul gs = (GraphSimul)focusGraph; - if (gs.getState() == GraphStep.STATE_INDEPENDENT) { - gs.setState(GraphStep.STATE_DRAWCHILDREN); - } else { - gs.setState(GraphStep.STATE_INDEPENDENT); - } - if (diagram.getGraphManager().dimensionsChanged()) { - diagram.layoutAll(); - fitDiagram(); - centerGraph(focusGraph,false); - repaint(); - } - // since the zoom level has been drastically changed we'll delete the - // zoom history - zoomStack.clear(); - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/JSimToolTip.java b/support/tools/BaseSimGUI/src/org/astron/basesim/JSimToolTip.java deleted file mode 100644 index a7b4770a8de..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/JSimToolTip.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.astron.basesim; - -import javax.swing.*; -import org.astron.util.gui.*; -import java.util.*; -import kiwi.util.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class JSimToolTip extends JMultiLineToolTip { - - Graph graph; - - public JSimToolTip(Graph graph) { - super(); - this.graph = graph; - } - public String getTipText() { - if (graph == null) return ""; - String text = ""; - Config p = graph.getProperties(); - Enumeration enum = p.list(); - for (int i=0; i<p.size(); i++) { - String key = (String)enum.nextElement(); - String value = p.getProperty(key); - text += key + "=" + value; - if (i != p.size() - 1) text += '\n'; - } - return text; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/JTestGraph.java b/support/tools/BaseSimGUI/src/org/astron/basesim/JTestGraph.java deleted file mode 100644 index 932cca88bd5..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/JTestGraph.java +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: <p> - * Description: <p> - * Copyright: Copyright (c) <p> - * Company: <p> - * @author - * @version 1.0 - */ - -import java.util.*; -import java.awt.*; -import javax.swing.*; -import java.awt.event.*; - -/** - * Java swing component that can display a single Graph or a complex - * hierarchy of GraphComposites. - */ -public class JTestGraph extends JComponent { - - GraphComposite composite; - GraphManager man; - - public JTestGraph () { - man = new GraphManager(); - composite = new GraphComposite(man,"root composite"); - composite.setLayoutController(new LayoutFlow(LayoutFlow.ALIGN_VERT)); - composite.getDimCtrl().setSpacing(80,10); - composite.getDimCtrl().setSpacingFactor(1,false); - composite.setLineColor(Color.black); - composite.addGraph(new GraphWorkHolder(man)); - composite.addGraph(new GraphWorkHolder(man)); - composite.enableBorder(true); - GraphComposite innerComposite = new GraphComposite(man,"inner composite"); - innerComposite.enableBorder(true); - innerComposite.getDimCtrl().setSpacing(20,20); - composite.addGraph(innerComposite); - Graph graph2 = new Graph(man,0,0,"Graph2"); - graph2.setBackground(Color.orange); - graph2.setBaseSize(new Dimension(200,150)); - graph2.setRoundSize(16); - Graph graph3 = new Graph(man,0,0,"Graph3"); - graph3.setBackground(Color.blue); - graph3.setBaseSize(new Dimension(150,180)); - graph3.setRoundSize(34); - graph3.setVisible(true); - graph2.setVisible(true); - - innerComposite.addGraph(graph2); - innerComposite.addGraph(graph3); - innerComposite.setLayoutController(new LayoutFlow(LayoutFlow.ALIGN_HORZ)); - Graph graph = new Graph(man,0,0,"Graph object"); - graph.setVisible(true); - graph.setBackground(Color.yellow); - graph.setRoundSize(10); - graph.setBaseSize(new Dimension(100,100)); - graph.connectTo(graph2); - graph2.connectTo(graph3); - composite.addGraph(graph); - composite.addGraph(new GraphWorkHolder(man)); - composite.setZoomLevel(1); - composite.enableBorder(true); - //graph2.setVisible(false); - composite.layoutAll(); - } - - protected void paintComponent(Graphics g) { - g.drawString("Test of GraphComposite",20,20); - man.setGraphics((Graphics2D)g); - composite.paint(); - composite.paintConnections(); - } - - private void testVisibility() { - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutCentered.java b/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutCentered.java deleted file mode 100644 index 54ae6611a4e..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutCentered.java +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -//swe -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -import java.awt.*; - -/** - * Title: Class LayoutCentered - * Description: Layout manager for centering Graphs in a Graphcomposite - * Copyright: Copyright (c) - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -/** This layout controller will place all composites children in the center - * of their parent. Typically, the composite should contain 0 or 1 children. */ -public class LayoutCentered implements LayoutController { - - private GraphComposite _container; - - public LayoutCentered() { - } - - public void setGraphComposite(GraphComposite container) { - _container = container; - } - - /** Always returns true. */ - public boolean canBeDone() { return true; } - - /** The center layout will not do any preprocessing. */ - public void preprocess() {} - - /** Center all composite Graphs in the main Graph. */ - public void doLayout() { - int width = _container.maxWidthGraph() - + (int)(_container.getDimCtrl().getSpacingFactor(true) - * _container.getDimCtrl().getHorizontalSpacing()) * 2; - int height = _container.maxHeightGraph() - + (int)(_container.getDimCtrl().getSpacingFactor(false) - * _container.getDimCtrl().getVerticalSpacing()) * 2; - for (int i=0; i<_container.numberOfGraphs(); i++) { - Graph graph = _container.getGraph(i); - Dimension d = graph.getBaseSize(); - graph.setBaseX((int)((width/2)-(d.width/2))); - graph.setBaseY((int)((height/2)-(d.height/2))); - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutController.java b/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutController.java deleted file mode 100644 index 65424dc3b76..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutController.java +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: LayoutController - * Description: Basic interface for layout managers - * Copyright: Copyright (c) - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -/** - * The LayoutController interface must be used to build a class that - * can layout components in a GraphComposite. Typically a layout controller - * will calculate the layout of a given GraphComposite at its zoom level of - * 100%. It will use the getBase...() and setBase...() methods for this purpose. - */ -public interface LayoutController { - /** - * Set the GraphComposite on which the manager will operate - */ - public void setGraphComposite (GraphComposite container); - /** - * This method indicates wether the preconditions of the layout algoritm - * can be met. Simple layout (like centering, flowing) should just return - * true - */ - public boolean canBeDone(); - /** - * Preprocess layout specific data. This should be all calculations that can - * be done independent of the dimensions of the GraphComposite's children. - * The preprocess method should not be used to alter dimensions or coordinates. - * This method was added so other layout managers can do a layout based on - * results of another layout algoritm. - */ - public void preprocess (); - /** - * Layout the Graph in this composite using a composition - */ - public void doLayout (); -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutDataHolder.java b/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutDataHolder.java deleted file mode 100644 index e8dd796c2db..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutDataHolder.java +++ /dev/null @@ -1,379 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: LayoutDataHolder - * Description: Default layout manager for DataHolders - * Copyright: Copyright (c) - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -/** - * The DataHolder layout is a complex layout type that vertically aligns - * dataholder in a simul blocks based on their connections. It rearranges - * the dataholders to minimize the number of cross connections in the diagram. - */ -public class LayoutDataHolder implements LayoutController { - - final static int MIN_VERTICAL_SPACING = 20; - - static int STEP_INPUT = 0; - static int STEP_OUTPUT = 1; - /** Constant value that can be passed to setOptimizeModus() */ - static int OPTIMIZE_INTERNAL = 2; - /** Constant value that can be passed to setOptimizeModus() */ - static int OPTIMIZE_EXTERNAL = 3; - /** Constant value that can be passed to setOptimizeModus() */ - static int OPTIMIZE_DISABLED = 4; - - /** This variable indicates the height of the composite tree. - * REVISIT: this value should be the determined tree height.*/ - int treeHeight = 10; - - private int _optimize = OPTIMIZE_EXTERNAL; - private int _type; - private GraphStep _layout[][]; - private GraphDataHolder _orderedDH[]; - - GraphComposite _container; - /** Construct a new LayoutDataHolder. - * @param type type of DataHolders: STEP_INPUT or STEP_OUPUT - */ - public LayoutDataHolder(int type) { - _type = type; - } - public void setGraphComposite(GraphComposite container) { - _container = container; - } - /** Specify which optimalization scheme to use. Can be one of the following - * values: OPTIMIZE_INTERNAL, OPTIMIZE_EXTERNAL or OPTIMIZE_DISABLED (default) - * Internal optimalization means that the DataHolders are ordered such that - * a minimum number of cross-connections will occur inside the Step. - * External optimalization means that the DataHolder are ordered such that - * a minimum number of cross-connections will occur between two Steps. - * When disabled, no optimalization is applied. */ - public void setOptimizeMethod (int method) { _optimize = method; } - - public boolean canBeDone() { - // check if all children are of type GraphDataHolder - if (_container.numberOfGraphs() == 0) return false; - for (int i=0; i<_container.numberOfGraphs(); i++) { - if (!(_container.getGraph(i) instanceof GraphDataHolder)) { - return false; - } - } - return true; - } - public void preprocess() { - calcVertSpacing(); // adjust vertical DH spacing to treelevel - } - public void doLayout() { - - try { - GraphComposite ownerGraph = _container.getOwner().getOwner(); - _layout = ((LayoutSimul)ownerGraph.getLayoutController()).getLayout(); - if (_layout == null) { - System.err.println("LayoutDataHolder: Cannot perform layout "+ - "of "+_container+". preprocess() was not called or failed"); - setOptimizeMethod(OPTIMIZE_DISABLED); - } - } - catch (ClassCastException e) { - System.err.println("LayoutDataHolder: Step containing DataHolders"+ - " should have an owner. doLayout() aborted. "); - setOptimizeMethod(OPTIMIZE_DISABLED); - } - orderDH(); - if (_orderedDH == null) { - return; - } - // determine vertical spacing. - int vertSpacing = _container.getDimCtrl().getVerticalSpacing(); - int horzSpacing = _container.getDimCtrl().getHorizontalSpacing(); - - _container.resetDim(); - - // place DataHolders - int y=(int)(vertSpacing * _container.getDimCtrl().getSpacingFactor(false)); - int maxWidth = _container.maxWidthGraph(); - for (int i=0; i<_orderedDH.length; i++) { - if (_orderedDH[i] != null) { - _orderedDH[i].setBaseX((int)((maxWidth/2) - - (_orderedDH[i].getBaseWidth()/2)) - + (int)(horzSpacing - * _container.getDimCtrl().getSpacingFactor(true))); - _orderedDH[i].setBaseY(y); - _container.replaceGraph(i,_orderedDH[i]); - y += vertSpacing+_orderedDH[i].getBaseHeight(); - } else { - // alternative, when this is used, orderDH() needs to be fixed - boolean found; - for (int j=0; j<_container.numberOfGraphs(); j++) { - Graph graph = _container.getGraph(j); - found = false; - for (int k=0; k<_orderedDH.length; k++) { - if (_orderedDH[k] == graph) { found = true; break; } - } - if (!found) { - graph.setBaseX((int)((maxWidth/2)-(graph.getBaseWidth()/2)) - + (int)(horzSpacing - * _container.getDimCtrl().getSpacingFactor(true))); - graph.setBaseY(y); - y += vertSpacing+graph.getBaseHeight(); - } - } - break; - } - } - } - - /** Helper function that returns the name of the simul block that a DataHolder - * connects to (DH->?). */ - private String getOutConDest (Graph graph) { - Connection c = graph.getOutConnection(0); - if (c!=null) return c.graphIn.getOwner().getOwner().getName(); - else return null; - } - /** Helper function that returns the name of the simul block that a DataHolder - * is connected to (?->DH). */ - private String getInConDest (Graph graph) { - Connection c = graph.getInConnection(0); - if (c!=null) return c.graphOut.getOwner().getOwner().getName(); - else return null; - } - - /** Helper function that returns the number of the column in the - * GraphSimulLayout result where the Step that contains our DataHolders - * is located. */ - private int findParentInLayout(GraphStep parent) { - - // find parent step in GraphSimulLayout result - int ourColumn = -1; - for (int i=0; i<_layout.length; i++) { - for (int j=0; j<_layout.length; j++) { - if (_layout[i][j] == parent) ourColumn = i; - } - if (ourColumn != -1) break; - } - return ourColumn; - } - - /** Extracts the Dataholders from the layout member variable and puts them - * in an array in correct order. */ - private GraphDataHolder[] getOppositeDataHolders() { - GraphDataHolder dh[] = new GraphDataHolder[_container.numberOfGraphs()]; - if (_type == STEP_INPUT) { - if (_optimize == OPTIMIZE_EXTERNAL) { - GraphStep parent; - try { - parent = (GraphStep)(_container.getOwner()); - } catch (ClassCastException e) { - System.err.println("LayoutDataHolder: Invalid composite tree. GraphStep expected"); - e.printStackTrace(); - return null; - } - int ourColumn = findParentInLayout(parent); - if (ourColumn == -1) { - System.err.println("LayoutDataHolder: Can't find Step " + parent - + " in layout of " + _container.getOwner().getOwner() - + " (part of " - + _container.getOwner().getOwner().getOwner() + ")"); - return null; - } - if (ourColumn-1 < 0) { - // special case, this is the first step. For now use the alternative - // layout. - alternativeLayout(); - return null; - } - int dhIx=0; - for (int k=1; (ourColumn-k)>=0; k++) { - for (int i=0; i<_layout.length; i++) { - GraphStep step = _layout[ourColumn-k][i]; - if (step != null) { - GraphDataHolder[] stepDH = step.getOutputDataHolders(); - for (int j=0; j<stepDH.length; j++) { - Connection con = stepDH[j].getOutConnection(0); - if (con != null) { - if (con.graphIn.getOwner().getOwner() == parent) { - dh[dhIx++] = stepDH[j]; - } - } - } - } - } - } - } else if (_optimize == OPTIMIZE_INTERNAL) { - // REVISIT: internal - } - return dh; - } else { - if (_optimize == OPTIMIZE_EXTERNAL) { - GraphStep parent; - try { - parent = (GraphStep)(_container.getOwner()); - } catch (ClassCastException e) { - System.err.println("LayoutDataHolder: Invalid composite tree. GraphStep expected"); - e.printStackTrace(); - return null; - } - int ourColumn = findParentInLayout(parent); - if (ourColumn == -1) { - System.err.println("LayoutDataHolder: Can't find Step " + parent - + " in layout of " + _container.getOwner().getOwner() - + " (part of " - + _container.getOwner().getOwner().getOwner() + ")"); - return null; - } - if (ourColumn+1 >= _layout.length) { - // special case, this is the last step. For now use the alternative - // layout. - alternativeLayout(); - return null; - } - int dhIx=0; - for (int k=1; (k+ourColumn)<_layout.length; k++) { - for (int i=0; i<_layout.length; i++) { - GraphStep step = _layout[ourColumn+k][i]; - if (step != null) { - GraphDataHolder[] stepDH = step.getInputDataHolders(); - for (int j=0; j<stepDH.length; j++) { - Connection con = stepDH[j].getInConnection(0); - if (con != null) { - if (con.graphOut.getOwner().getOwner() == parent) { - dh[dhIx++] = stepDH[j]; - } - } - } - } - } - if (dhIx == dh.length) break; - } - } else if (_optimize == OPTIMIZE_INTERNAL) { - // REVISIT: internal - } - return dh; - } - } - - /** Order the DataHolders using the chosen optimalization scheme. The result - * is put in the _orderDH member variable. */ - private void orderDH() { - GraphDataHolder dh[]; - _orderedDH = new GraphDataHolder[_container.numberOfGraphs()]; - if (_type == STEP_INPUT) { - if (_optimize == OPTIMIZE_EXTERNAL) { - GraphStep parent = (GraphStep)(_container.getOwner()); - dh = getOppositeDataHolders(); - if (dh == null) { _orderedDH=null; return; } - int j=0; - for (int i=0; i<dh.length; i++) { - if (dh[i] != null) { - _orderedDH[j++] = (GraphDataHolder)dh[i].getOutConnection(0).graphIn; - } - } - // place DH that are not connected on their ouput - for (int i=0; i<dh.length; i++) { - if (dh[i] == null) { - dh = parent.getInputDataHolders(); - for (int k=0; k<dh.length;k++) { - if (!dh[k].hasInputConnections()) { - _orderedDH[j++] = dh[k]; - } - } - break; - } - } - } else if (_optimize == OPTIMIZE_INTERNAL) { - dh = getOppositeDataHolders(); - for (int i=0; i<_container.numberOfGraphs(); i++) { - // REVISIT: implement - } - } else if (_optimize == OPTIMIZE_DISABLED) { - for (int i=0; i<_container.numberOfGraphs(); i++) { - _orderedDH[i] = (GraphDataHolder)_container.getGraph(i); - } - } - } else { - if (_optimize == OPTIMIZE_EXTERNAL) { - GraphStep parent = (GraphStep)(_container.getOwner()); - dh = getOppositeDataHolders(); - if (dh == null) { _orderedDH=null; return; } - int j=0; - for (int i=0; i<dh.length; i++) { - if (dh[i] != null) { - _orderedDH[j++] = (GraphDataHolder)dh[i].getInConnection(0).graphOut; - } - } - // place DH that are not connected on their ouput - for (int i=0; i<dh.length; i++) { - if (dh[i] == null) { - dh = parent.getOutputDataHolders(); - for (int k=0; k<dh.length;k++) { - if (!dh[k].hasOutputConnections()) { - _orderedDH[j++] = dh[k]; - } - } - break; - } - } - - } else if (_optimize == OPTIMIZE_INTERNAL) { - dh = getOppositeDataHolders(); - for (int i=0; i<_container.numberOfGraphs(); i++) { - // REVISIT: implement - } - } else if (_optimize == OPTIMIZE_DISABLED) { - for (int i=0; i<_container.numberOfGraphs(); i++) { - _orderedDH[i] = (GraphDataHolder)_container.getGraph(i); - } - } - } - } - - private void calcVertSpacing() { - int tHeight = _container.getGraphManager().getTreeHeight(); - int vs = MIN_VERTICAL_SPACING; - vs += vs * (tHeight - _container.getTreeLevel()); - _container.getDimCtrl().setVerticalSpacing(vs); - } - - /** Simple layout mechanism to use when the advanced algoritm fails. */ - private void alternativeLayout () { - int vertSpacing = _container.getDimCtrl().getVerticalSpacing(); - int horzSpacing = _container.getDimCtrl().getHorizontalSpacing(); - int nrOfGraphs = _container.numberOfGraphs(); - int y=(int)(vertSpacing * _container.getDimCtrl().getSpacingFactor(false)); - int maxWidth = _container.maxWidthGraph(); - for (int i=0; i<nrOfGraphs; i++) - { - Graph graph = _container.getGraph(i); - graph.setBaseX((int)((maxWidth/2)-(graph.getBaseWidth()/2)) - + (int)(_container.getDimCtrl().getSpacingFactor(true) - * horzSpacing)); - graph.setBaseY(y); - y += vertSpacing+graph.getBaseHeight(); - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutFlow.java b/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutFlow.java deleted file mode 100644 index 008c1153641..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutFlow.java +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -/** - * The LayoutFlow is a layout type that is similar to the Java AWT - * FlowLayout. It places the Graphs that the GraphComposite contains next - * the each other like characters in a line of text. In addition it can - * align the Graph both horizontally an vertically. - */ -public class LayoutFlow implements LayoutController { - - static int ALIGN_VERT = 0; - static int ALIGN_HORZ = 1; - - private GraphComposite _container; - private int _align; - - /** Create a new LayoutFlow. align must be ALIGN_VERT or ALIGN_HORZ */ - public LayoutFlow (int align) { - _align = align; - } - - public void setGraphComposite(GraphComposite container) { - _container = container; - } - public boolean canBeDone() { - return true; - } - public void preprocess() { - // no preprocessing - } - public void doLayout() { - int nrOfGraphs = _container.numberOfGraphs(); - if (nrOfGraphs == 0) { return; } - int horzSpacing = _container.getDimCtrl().getHorizontalSpacing(); - int vertSpacing = _container.getDimCtrl().getVerticalSpacing(); - int maxHeight, maxWidth; - if (_align == ALIGN_HORZ) { - int x=(int)(horzSpacing*_container.getDimCtrl().getSpacingFactor(true)); - maxHeight = _container.maxHeightGraph(); - for (int i=0; i<nrOfGraphs; i++) - { - Graph graph = _container.getGraph(i); - if (graph.isVisible()) { - Dimension d = graph.getBaseSize(); - graph.setBaseX(x); - graph.setBaseY((int)((maxHeight/2)-(d.height/2) - + _container.getDimCtrl().getSpacingFactor(false) - * vertSpacing)); - x += horzSpacing+d.width; - } - } - } else if (_align == ALIGN_VERT) { - int y=(int)(vertSpacing*_container.getDimCtrl().getSpacingFactor(false)); - maxWidth = _container.maxWidthGraph(); - for (int i=0; i<nrOfGraphs; i++) - { - Graph graph = _container.getGraph(i); - if (graph.isVisible()) { - Dimension d = graph.getBaseSize(); - graph.setBaseX((int)((maxWidth/2)-(d.width/2)) - + (int)(_container.getDimCtrl().getSpacingFactor(true) - * horzSpacing)); - graph.setBaseY(y); - y += vertSpacing+d.height; - } - } - } else throw new java.lang.UnsupportedOperationException(); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutSimul.java b/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutSimul.java deleted file mode 100644 index 1a513214230..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/LayoutSimul.java +++ /dev/null @@ -1,315 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Class LayoutSimul - * Description: Default layout controller for simulations - * Copyright: Copyright (c) - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import java.util.*; -import org.astron.util.*; -import org.astron.util.gui.*; - -/** - * This layout manager lays out connected Graphs within a GraphComposite in - * a 'grid' style. - */ -public class LayoutSimul implements LayoutController { - - GraphStep layout[][]; - GraphStep stepBin[]; - - private GraphComposite _container; - /** List of MessageListeners */ - private ArrayList _mlisteners = new ArrayList(); - - public LayoutSimul() { - } - /** Sets the GraphComposite for which the layout must be determined */ - public void setGraphComposite(GraphComposite container) { - _container = container; - } - /** Returns the result of the preprocess algoritm. Returns null if not - * available */ - public GraphStep[][] getLayout() { return layout; } - - /** Determines approximate location of the Simuls within the container - * Simul. The result is put in the member variabele layout for further - * processing. Other layout mechanism may use this result in their layout - * mechanism (like LayoutDataHolder). */ - public void preprocess() { - int nrOfGraphs = _container.numberOfGraphs(); - if (nrOfGraphs == 0) return; - createDummyConnections(); - GraphStep flying[] = new GraphStep[nrOfGraphs]; - for (int i=0; i<nrOfGraphs; i++) flying[i]=(GraphStep)_container.getGraph(i); - GraphStep rootStep[] = new GraphStep[flying.length]; // too big.. but enough! - - // find roots - int rootStepIx=0; - for (int i=0; i<flying.length; i++) { - if (!flying[i].hasInputConnections()) { - rootStep[rootStepIx++]=flying[i]; - flying[i]=null; - } - } - - // create layout array with worst case dimensions (actually, this can be quite spacy) - // NOTE: layout must be 'vierkant'. LayoutDataHolder relies on that! - layout = new GraphStep[flying.length][flying.length]; - GraphStep prevStep=null; - boolean firstRound = true; - int rootlIxV=0; // index for layout array (root) - int lIxV=0, lIxH=1; // indices for layout array - int rootIx; - int fColumnLength=0; - int watchDog = 0; - while (true) - { - // tricky way to ensure the program will not hang when the algoritm fails - if (watchDog++ == 50) { - fireMessage(new MessageEvent(this,"LayoutSimul: Endless loop detected. Aborting", - MessageEvent.ERROR)); - return; - } - // loop through roots - for (int j=0; j<rootStep.length; j++) - { - // try to find a root that connects to previous step - for (rootIx=0; rootIx<rootStep.length; rootIx++) - { - if (rootStep[rootIx] != null && - rootStep[rootIx].isConnectedTo(prevStep)) break; - } - if (rootIx == rootStep.length) { - // pick first root that != null - rootIx = rootStep.length; - for (int i=0; i<rootStep.length; i++) - if (rootStep[i] != null) {rootIx = i; break; } - //if (rootStep[rootIx] == null) { - if (rootStep.length == rootIx) { - // no more roots - break; - } - } - if (firstRound) { - // place this root in the layout - layout[lIxH-1][rootlIxV++] = rootStep[rootIx]; - } - for (int i=0; i<rootStep[rootIx].nrOutConnections(); i++) - { - // loop through the roots outgoing connections, place them - // (if already in other column of grid: clear it and replace it again) - GraphStep step = (GraphStep)rootStep[rootIx].getOutConnection(i).graphIn; - clearFromGrid(step,lIxH); - if (_container.getOwner() != step) { // do not place parent in grid - if (!inGrid(step)) { - layout[lIxH][lIxV] = step; - prevStep = layout[lIxH][lIxV]; - lIxV++; - } - } - } - rootStep[rootIx] = null; - } - //now take next column as roots - loop again - prevStep = null; - rootStep = new GraphStep[lIxV]; - for (int i=0; i<lIxV; i++) rootStep[i] = layout[lIxH][i]; - if (firstRound) { - firstRound = false; - fColumnLength = lIxV+1; - } - lIxH++; - lIxV=0; - if (rootStep.length == 0) break; // end the loop - } - - // place all roots that could not be placed in the first column - for (int i=0; i<rootStep.length && fColumnLength<rootStep.length; i++) { - if (rootStep[i] != null) { - layout[0][fColumnLength++] = rootStep[i]; - } - } - } - - public boolean canBeDone() { - return true; - } - /** Place the Steps based on the result of the preprocess algoritm. */ - public void doLayout() { - - if (layout==null) { - System.out.println("LayoutSimul: call preprocess() before calling doLayout()!"); - return; - } - - _container.resetDim(); - calcVertSpacing(); - int vertSpacing = _container.getDimCtrl().getVerticalSpacing(); - int horzSpacing = _container.getDimCtrl().getHorizontalSpacing(); - - // precalculate height of this simul and of every row - int preCalcHeight = 0; - int rowHeight[] = new int[layout.length]; - for (int i=0; i<layout.length; i++) { - rowHeight[i] = -1 * (int)Math.round(0.5*vertSpacing); - for (int j=0; j<layout[i].length; j++) { - GraphStep graph = layout[i][j]; - if (graph == null) break; - rowHeight[i] += graph.getBaseHeight(); - rowHeight[i] += vertSpacing; - } - if (preCalcHeight < rowHeight[i]) preCalcHeight = rowHeight[i]; - } - - // calculate the coordinates of the Steps in the Grid - int x=(int)Math.round(_container.getDimCtrl().getSpacingFactor(true) - * horzSpacing); - double maxWidth=0; - for (int i=0; i<layout.length; i++) - { - if (layout[i][0] == null) break; - int y=(preCalcHeight/2)-(rowHeight[i]/2); - if (rowHeight[i] < 0) System.out.println("rowHeight[i]="+rowHeight[i]); - for (int j=0; j<layout[i].length; j++) - { - GraphStep graph = layout [i][j]; - if (graph == null) break; - if (graph.getBaseWidth() > maxWidth) maxWidth = graph.getBaseWidth(); - if (graph.isVisible()) { - graph.setBaseX(x); - graph.setBaseY(y); - y += vertSpacing+graph.getBaseHeight(); - } - } - x += horzSpacing+maxWidth; - } - } - - /** Helper method that returns the index of the GraphStep in the array. If the - * GraphStep does not exist in the array, it will be added to the end. - * On failure it will return -1. */ - private int getStepBinIndex(GraphStep step) { - for (int i=0; i<stepBin.length; i++) { - if (stepBin[i] == step) { - return i; - } - if (stepBin[i] == null) { - stepBin[i] = step; - return i; - } - } - System.err.println("LayoutSimul.getStepBinIndex: GraphStep array too small ("+stepBin.length+")"); - return -1; - } - - private void clearFromGrid (GraphStep step, int excludeColumn) { - for (int i=0; i<layout.length; i++) { - if (i == excludeColumn) continue; - for (int j=0; j<layout.length; j++) { - if (layout[i][j] == step) layout[i][j] = null; - } - } - } - - private boolean inGrid (GraphStep step) { - for (int i=0; i<layout.length; i++) { - for (int j=0; j<layout.length; j++) { - if (layout[i][j] == step) { - return true; - } - } - } - return false; - } - - private void createDummyConnections() { - GraphDataHolder dh[]; - GraphStep parentStep = (GraphStep)_container.getOwner(); - for (int j=0; j<_container.numberOfGraphs(); j++) { - GraphStep step = (GraphStep)_container.getGraph(j); - dh = step.getInputDataHolders(); - for (int i=0; i<dh.length; i++) { - Connection c = dh[i].getInConnection(0); - if (c != null) { - GraphStep destStep = (GraphStep)c.graphOut.getOwner().getOwner(); - if ((destStep != parentStep) && (!step.isConnectedTo(destStep))) { - destStep.connectTo((Graph)step).setVisible(false); - } - } - } - dh = step.getOutputDataHolders(); - for (int i=0; i<dh.length; i++) { - Connection c = dh[i].getOutConnection(0); - if (c != null) { - GraphStep destStep = (GraphStep)c.graphIn.getOwner().getOwner(); - if ((destStep != parentStep) && (!step.isConnectedTo(destStep))) { - step.connectTo((Graph)destStep).setVisible(false); - } - } - } - } - } - - private void calcVertSpacing() { - - // calc vertical spacing (using the spacing of its DataHolders) - if (_container.numberOfGraphs() == 0) return; - GraphStep aGraphStep = (GraphStep)_container.getGraph(0); - GraphComposite aDataHolderComp = (GraphComposite)aGraphStep.getGraph(0); - int vs = aDataHolderComp.getDimCtrl().getVerticalSpacing(); - float isf = aDataHolderComp.getDimCtrl().getSpacingFactor(false); - vs = vs-2*(int)(isf*vs); - _container.getDimCtrl().setVerticalSpacing(vs); - - // calc horizontal spacing (using the current tree level) - int tHeight = _container.getGraphManager().getTreeHeight(); - int tLevel = _container.getTreeLevel(); - int hs = (int)(40*(tHeight-tLevel)); - _container.getDimCtrl().setHorizontalSpacing((int)Math.round(hs)); - } - - /** Register a MessageListener. The layout controller will send its error - * messages to all its registered listeners. */ - public void addMessageListener (MessageListener messageListener) { - _mlisteners.add(messageListener); - } - /** Unregisters the specified MessageListener */ - public void removeMessageListener (MessageListener messageListener) { - _mlisteners.remove(messageListener); - } - /** Dispatch the specified MessageEvent to all the registered listeners. */ - protected void fireMessage(MessageEvent event) { - if (_mlisteners.size() == 0) { - System.out.println(event); // no listeners, send to stdout - } else { - for (int i=0; i<_mlisteners.size(); i++) { - ((MessageListener)_mlisteners.get(i)).note(event); - } - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/Main.java b/support/tools/BaseSimGUI/src/org/astron/basesim/Main.java deleted file mode 100644 index 6ffcb1cbdc3..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/Main.java +++ /dev/null @@ -1,929 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Class Main<p> - * Description: Main window<p> - * Copyright: Copyright (c) <p> - * Company: Astron<p> - * @author Robbert Dam - * @version 1.0 - */ - -import javax.swing.*; -import javax.swing.tree.*; -import javax.swing.event.*; -import javax.swing.filechooser.*; -import java.awt.event.*; -import java.awt.*; -import java.io.*; -import org.astron.util.*; -import org.astron.util.gui.*; -import kiwi.io.*; -import javax.swing.plaf.basic.*; -import javax.swing.border.*; - -public class Main extends JFrame implements GraphSelectionListener, - ChangeListener, - DocumentListener, - ActionListener, - Runnable { - - //-- Configuration object. Reachable from anywhere - public static Configuration SETTINGS = - new Configuration(new File("basesim.cfg")); - - //-- enumeration of config keys - private final static String LAST_OPEN_PATH = "lastOpenPath"; - private final static String LAST_SAVE_PATH = "lastSavePath"; - - // indexes for JTabbedPane - final static int COMP_DIAGRAM = 0; - final static int COMP_TEXTEDITOR = 1; - - //-- menu items - AbstractAction fileNew = new ActionFileNew(); - AbstractAction fileOpen = new ActionFileOpen(); - AbstractAction fileSave = new ActionFileSave(); - AbstractAction fileSaveAs = new ActionFileSaveAs(); - AbstractAction fileExit = new ActionFileExit(); - AbstractAction filePrint = new ActionFilePrint(); - AbstractAction editCut = new ActionEditCut(); - AbstractAction editCopy = new ActionEditCopy(); - AbstractAction editPaste = new ActionEditPaste(); - AbstractAction editExpandAll = new ActionEditExpandAll(); - AbstractAction helpAbout = new ActionHelpAbout(); - - AbstractAction diagramSelect = new ActionDiagramSelect(); - AbstractAction diagramZoom = new ActionDiagramZoom(); - AbstractAction diagramPan = new ActionDiagramPan(); - - //-- graphical components - JPanel _contentPane; - JBaseSim baseSim; - JNotifier notifier; - JTreeEx simulTree; - JPanel graphInfoPanel; - JEditTextArea xmlEditor; - JTabbedPane tabbedPane; - JSplitPane splitPane1, splitPane2; - JButtonEx newButton, openButton, saveButton; - JToggleButton selectButton, panButton, zoomButton; - - //-- misc settings - /** Defines behavoir of the simulTree */ - private boolean inspectionMode = false; - private GraphDiagram diagram; - /** File (xml) we are currently editing */ - private File currentFile; - /** Is the XML document still in sync with the diagram? */ - private boolean outOfSync = true; - /** Was the XML document saved to disk? */ - private boolean documentChanged = true; - - /** Variable needed by parser thread */ - private InputStream tInput; - /** Variable needed by parser thread */ - private String tDocName; - /** Variable needed by parser thread */ - private JDialog tParseDialog; - - public Main() { - super ("BaseSim GUI"); - try { - SETTINGS.load(); - } catch(Exception e) { e.printStackTrace(); } - _contentPane = (JPanel)getContentPane(); - setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); - addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - - if (documentChanged) { - int retval = - JOptionPane.showConfirmDialog(null, - "Save the document before exiting?", - "Document changed", - JOptionPane.YES_NO_CANCEL_OPTION); - if (retval == JOptionPane.CANCEL_OPTION) { - return; - } - if (retval == JOptionPane.YES_OPTION) { - try { - if (currentFile == null) { - JFileChooser fileC = new JFileChooser(); - fileC.addChoosableFileFilter(new FileFilterXML()); - String lastPath = SETTINGS.getProperty(LAST_SAVE_PATH); - if (lastPath != null) - fileC.setCurrentDirectory(new File(lastPath)); - fileC.setSelectedFile(new File("Noname.xml")); - int retVal = fileC.showSaveDialog(_contentPane); - if (retVal == JFileChooser.APPROVE_OPTION) { - currentFile = fileC.getSelectedFile(); - SETTINGS.setProperty(LAST_SAVE_PATH,currentFile.getPath()); - } else { - return; - } - } - FileOutputStream oStream = new FileOutputStream(currentFile); - oStream.write(xmlEditor.getText().getBytes()); - } catch (IOException x) { - x.printStackTrace(); - } - } - } - - try { - SETTINGS.store(); - } catch(Exception x) { x.printStackTrace(); } - System.exit(0); - } - }); - baseSim = new JBaseSim(); - initNotifier(); - initXMLEditor(); - initTree(); - - JScrollPane graphScrollPane = new JScrollPane(baseSim); - graphScrollPane.setVerticalScrollBarPolicy( - JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); - graphScrollPane.setHorizontalScrollBarPolicy( - JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); - - tabbedPane = new JTabbedPane(JTabbedPane.BOTTOM); - tabbedPane.add(graphScrollPane,COMP_DIAGRAM); - tabbedPane.add(xmlEditor,COMP_TEXTEDITOR); - tabbedPane.setTitleAt(COMP_DIAGRAM,"Diagram"); - tabbedPane.setTitleAt(COMP_TEXTEDITOR,"XML"); - tabbedPane.addChangeListener(this); - - JScrollPane treeScrollPane = new JScrollPane(simulTree); - treeScrollPane.setHorizontalScrollBarPolicy( - JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - treeScrollPane.setVerticalScrollBarPolicy( - JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); - - splitPane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); - splitPane1.setContinuousLayout(true); - splitPane1.setLeftComponent(treeScrollPane); - splitPane1.setRightComponent(tabbedPane); - splitPane1.setOneTouchExpandable(true); - splitPane1.setDividerLocation(0.15); - splitPane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT); - splitPane2.setTopComponent(splitPane1); - splitPane2.setBottomComponent(notifier); - splitPane2.setOneTouchExpandable(true); - splitPane2.setDividerLocation(0.7); - splitPane2.setContinuousLayout(true); - - JPanel toolPanel = new JPanel(new BorderLayout()); - toolPanel.add(initMenu(),BorderLayout.NORTH); - toolPanel.add(initToolBar(),BorderLayout.CENTER); - - _contentPane.setLayout(new BorderLayout()); - _contentPane.add(splitPane2,BorderLayout.CENTER); - _contentPane.add(toolPanel,BorderLayout.NORTH); - - pack(); - centerFrame(); - show(); - syncToDocument(); - } - - public void setParseDialog(JParseDialog dialog) { - tParseDialog = dialog; - } - - private void loadDiagram(InputStream input, String docName) { - notifier.clearAll(); - diagram = null; - System.gc(); // good point to do garbage collection - - // start parser thread; build the "busy parsing" dialog - tInput = input; - tDocName = docName; - Thread thread = new Thread(this); - thread.start(); - //tParseDialog = new JParseDialog(this,thread); - } - - public void run() - { - if (baseSim.parseSimul(tInput,notifier,tDocName)) { - - // wait till all images are loaded - try { - GraphWorkHolderImage.getMediaTracker().waitForAll(); - } catch(InterruptedException ie) { ie.printStackTrace(); } - - // load diagram in JBaseSim - if (documentChanged) { - GraphSimul gs = (GraphSimul)baseSim.getGraph(); - gs.setState(GraphStep.STATE_DRAWCHILDREN,true); - if (gs.getGraphManager().dimensionsChanged()) { - gs.layoutAll(); - baseSim.fitDiagram(); - baseSim.centerGraph((Graph)gs,false); - baseSim.repaint(); - } - } - - ((BaseSimTreeModel)simulTree.getModel()) - .setGraphDiagram((GraphDiagram)baseSim.getGraph()); - baseSim.addGraphSelectionListener(this); - } else baseSim.clearDiagram(); - } - - private void loadFileInEditor(File file) { - // load diagram in JTextArea (XML editor) - byte[] b = new byte[(int)file.length()]; - try { - FileInputStream inputStream = new FileInputStream(file); - inputStream.read(b); - } catch(IOException e) { e.printStackTrace(); return; } - String xmlText = new String(b); - outOfSync = false; - xmlEditor.getDocument().removeDocumentListener(this); - xmlEditor.setText(xmlText); - xmlEditor.getDocument().addDocumentListener(this); - documentChanged = false; - } - - /** (re)parses the document */ - private void syncToDocument() { - if (!outOfSync) return; - loadDiagram(new ByteArrayInputStream(xmlEditor.getText().getBytes()),null); - outOfSync = false; - } - - /** Loads the specified file */ - private void loadFile(File file) { - - // load document in XML editor - loadFileInEditor(file); - - // load document in diagram control - FileInputStream inputStream; - try { - inputStream = new FileInputStream(file); - } catch (IOException e) { e.printStackTrace(); return; } - loadDiagram(inputStream,file.getName()); - - // adjust caption of main window - setTitle("BaseSim GUI ("+file.getAbsoluteFile()+")"); - } - - private void initNotifier() { - notifier = new JNotifier(); - } - - private JMenuBar initMenu() { - JMenuBar menuBar = new JMenuBar(); - - JMenu menuFile = new JMenu("File"); - JMenu menuEdit = new JMenu("Edit"); - JMenu menuView = new JMenu("View"); - JMenu menuHelp = new JMenu("Help"); - - JMenuItem itemFileNew = new JMenuItem(fileNew); - JMenuItem itemFileOpen = new JMenuItem(fileOpen); - JMenuItem itemFileSave = new JMenuItem(fileSave); - JMenuItem itemFileSaveAs = new JMenuItem(fileSaveAs); - JMenuItem itemFilePrint = new JMenuItem(filePrint); - JMenuItem itemFileExit = new JMenuItem(fileExit); - - JMenuItem itemEditCut = new JMenuItem(editCut); - JMenuItem itemEditCopy = new JMenuItem(editCopy); - JMenuItem itemEditPaste = new JMenuItem(editPaste); - JMenuItem itemEditExpandAll = new JMenuItem(editExpandAll); - - JMenuItem itemHelpAbout = new JMenuItem(helpAbout); - - // set mnemonics - menuFile.setMnemonic(KeyEvent.VK_F); - itemFileOpen.setMnemonic(KeyEvent.VK_O); - itemFileSave.setMnemonic(KeyEvent.VK_S); - itemFilePrint.setMnemonic(KeyEvent.VK_P); - itemFileExit.setMnemonic(KeyEvent.VK_X); - menuEdit.setMnemonic(KeyEvent.VK_E); - menuView.setMnemonic(KeyEvent.VK_V); - menuHelp.setMnemonic(KeyEvent.VK_H); - - menuBar.add(menuFile); - menuBar.add(menuEdit); - //menuBar.add(menuView); - menuBar.add(menuHelp); - - menuFile.add(itemFileNew); - menuFile.add(itemFileOpen); - menuFile.add(itemFileSave); - menuFile.add(itemFileSaveAs); - menuFile.add(itemFilePrint); - menuFile.addSeparator(); - menuFile.add(itemFileExit); - - menuEdit.add(itemEditCut); - menuEdit.add(itemEditCopy); - menuEdit.add(itemEditPaste); - menuEdit.addSeparator(); - menuEdit.add(itemEditExpandAll); - - menuHelp.add(itemHelpAbout); - - return menuBar; - } - - private JToolBar initToolBar() { - JToolBar toolBar = new JToolBar(); - - selectButton = new JToggleButtonEx(diagramSelect); - selectButton.setText(""); - selectButton.setMnemonic(KeyEvent.VK_S); - selectButton.setSelected(true); - panButton = new JToggleButtonEx(diagramPan); - panButton.setText(""); - panButton.setMnemonic(KeyEvent.VK_P); - zoomButton = new JToggleButtonEx(diagramZoom); - zoomButton.setText(""); - zoomButton.setMnemonic(KeyEvent.VK_Z); - ButtonGroup buttonGroup = new ButtonGroup(); - buttonGroup.add(selectButton); - buttonGroup.add(panButton); - buttonGroup.add(zoomButton); - - newButton = new JButtonEx(fileNew); - newButton.setText(""); - newButton.setToolTipText("New"); - newButton.setIcon(new ImageIcon("images/New24.gif")); - openButton = new JButtonEx(fileOpen); - openButton.setText(""); - openButton.setIcon(new ImageIcon("images/Open24.gif")); - openButton.setToolTipText("Open"); - saveButton = new JButtonEx(fileSave); - saveButton.setText(""); - saveButton.setIcon(new ImageIcon("images/Save24.gif")); - saveButton.setToolTipText("Save"); - - toolBar.add(selectButton); - toolBar.add(panButton); - toolBar.add(zoomButton); - - JSeparator sep = new JSeparator(JSeparator.VERTICAL); - Dimension d1 = new Dimension(2,20); - Dimension d2 = new Dimension(10,20); - sep.setPreferredSize(d1); - sep.setMaximumSize(d1); - toolBar.addSeparator(d2); - toolBar.add(sep); - toolBar.addSeparator(d2); - - toolBar.add(newButton); - toolBar.add(openButton); - toolBar.add(saveButton); - - return toolBar; - } - - private void initTree() { - String imageName = SETTINGS.getString("simulTreeBk","images/tb1.jpg"); - Image i = Toolkit.getDefaultToolkit().createImage(imageName); - MediaTracker mt = new MediaTracker(this); - GraphWorkHolderImage.setMediaTracker(mt); - mt.addImage(i,0); - try { - mt.waitForAll(); // wait for image - } catch(InterruptedException ie) { ie.printStackTrace(); } - simulTree = - new JTreeEx(new BaseSimTreeModel((GraphDiagram)baseSim.getGraph())); - simulTree.getSelectionModel().setSelectionMode - (TreeSelectionModel.SINGLE_TREE_SELECTION); - simulTree.setCellRenderer(new GraphCellRenderer()); - simulTree.setBackground(i); - - //Listen for when the selection changes. - simulTree.addTreeSelectionListener(new TreeSelectionListener() { - Graph lastGraph; - public void valueChanged(TreeSelectionEvent e) { - Object object = simulTree.getLastSelectedPathComponent(); - if (object == null) { - if (lastGraph == null) return; else object = lastGraph; - } - if (object instanceof Graph) { - Graph graph = (Graph)object; - if (!graph.isVisible()) return; - lastGraph = graph; - if (inspectionMode) { - if (graph instanceof GraphComposite) { - baseSim.setGraph((GraphComposite)graph); - } - } else { - SelectionManager selMan = graph.getGraphManager().getSelectionManager(); - selMan.setInverseSelection(graph); - baseSim.centerGraph(graph,false); - } - } - } - }); - } - - private void initXMLEditor() { - xmlEditor = new JEditTextArea(); - xmlEditor.setTokenMarker(new XMLTokenMarker()); - loadFileInEditor(new File("template.xml")); - outOfSync = true; - xmlEditor.getDocument().addDocumentListener(this); - int offset = xmlEditor.getLineStartOffset(10); - xmlEditor.setCaretPosition(offset); - xmlEditor.registerKeyboardAction( // register Ctrl-S (save) - this, - KeyStroke.getKeyStroke(KeyEvent.VK_S,Event.CTRL_MASK), - JComponent.WHEN_IN_FOCUSED_WINDOW - ); - } - - /** Helper function that centers a frame in the middle of the screen */ - public void centerFrame () - { - //Center the window - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - Dimension frameSize = getSize(); - if (frameSize.height > screenSize.height) { - frameSize.height = screenSize.height; - } - if (frameSize.width > screenSize.width) { - frameSize.width = screenSize.width; - } - setLocation((screenSize.width - frameSize.width) / 2, - (screenSize.height - frameSize.height) / 2); - setVisible(true); - } - - //-- Implementation of the GraphSelectionListener interface - /** Display info panel for this component */ - public void valueChanged(GraphSelectionEvent e) { - //REVISIT: implement - if (e.isSelected()) { - } else { - } - } - - /** Send a message to the notifier */ - public void fireMessage(MessageEvent e) { notifier.note(e); } - - /** Sets the keyboard focus to a specific component. Is called by the - * MessageEvents in the JNotifier class. - * - * @param component Can be COMP_DIAGRAM or COMP_TEXTEDITOR */ - public void setFocus(int component) { - switch(component) { - case COMP_DIAGRAM: - tabbedPane.setSelectedIndex(0); - break; - case COMP_TEXTEDITOR: - tabbedPane.setSelectedIndex(1); - break; - } - } - - /** Retreive a handle to the (xml) editor component*/ - public JEditTextArea getEditor() { - return xmlEditor; - } - - // -- ChangeListener implementation - - public void stateChanged(ChangeEvent e) { - if (e.getSource() == tabbedPane) { - // if the user switched between the XML editor and the diagram we must - // synchronize the document and the visualisation with each other. - - if (tabbedPane.getSelectedIndex() == COMP_DIAGRAM) { - // the user switched to the diagram; reparse the document - syncToDocument(); - - // set controls states - selectButton.setEnabled(true); - panButton.setEnabled(true); - zoomButton.setEnabled(true); - } - - if (tabbedPane.getSelectedIndex() == COMP_TEXTEDITOR) { - // the user switched to the editor; explicitly set the keyboard focus - xmlEditor.grabFocus(); - - // set controls states - selectButton.setEnabled(false); - panButton.setEnabled(false); - zoomButton.setEnabled(false); - } - } - } - - // -- DocumentListener implementation - - public void changedUpdate(DocumentEvent e) { - } - public void insertUpdate(DocumentEvent e) { - outOfSync = true; - documentChanged = true; - } - public void removeUpdate(DocumentEvent e) { - outOfSync = true; - documentChanged = true; - } - - // -- ActionListener implementation - - public void actionPerformed(ActionEvent e) { - //REVISIT: save file (ctrl-s) - System.out.println("actionPerformed: "+e); - } - - public static void main(String[] args) { - try { - UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); - } - catch(Exception e) { - e.printStackTrace(); - } - Main main1 = new Main(); - } - private class ActionFileNew extends AbstractAction { - public ActionFileNew() { - super("New", new ImageIcon("images/New16.gif")); - } - public void actionPerformed(ActionEvent e) { - if (documentChanged) { - int retval = - JOptionPane.showConfirmDialog(null, - "Save the document before exiting?", - "Document changed", - JOptionPane.YES_NO_CANCEL_OPTION); - if (retval == JOptionPane.CANCEL_OPTION) { - return; - } - if (retval == JOptionPane.YES_OPTION) { - try { - if (currentFile == null) { - JFileChooser fileC = new JFileChooser(); - fileC.addChoosableFileFilter(new FileFilterXML()); - String lastPath = SETTINGS.getProperty(LAST_SAVE_PATH); - if (lastPath != null) - fileC.setCurrentDirectory(new File(lastPath)); - fileC.setSelectedFile(new File("Noname.xml")); - int retVal = fileC.showSaveDialog(_contentPane); - if (retVal == JFileChooser.APPROVE_OPTION) { - currentFile = fileC.getSelectedFile(); - SETTINGS.setProperty(LAST_SAVE_PATH,currentFile.getPath()); - } else { - return; - } - } - FileOutputStream oStream = new FileOutputStream(currentFile); - oStream.write(xmlEditor.getText().getBytes()); - } catch (IOException x) { x.printStackTrace(); } - } - } - initXMLEditor(); - outOfSync = true; - syncToDocument(); - - currentFile = null; - - // adjust caption of main window - setTitle("BaseSim GUI"); - } - } - private class ActionFileOpen extends AbstractAction { - public ActionFileOpen() { - super("Open...", new ImageIcon("images/Open16.gif")); - } - public void actionPerformed(ActionEvent e) { - JFileChooser fileC = new JFileChooser(); - fileC.addChoosableFileFilter(new FileFilterXML()); - String lastPath = SETTINGS.getProperty(LAST_OPEN_PATH); - if (lastPath != null) fileC.setCurrentDirectory(new File(lastPath)); - int retVal = fileC.showOpenDialog(_contentPane); - if (retVal == JFileChooser.APPROVE_OPTION) { - currentFile = fileC.getSelectedFile(); - SETTINGS.setProperty(LAST_OPEN_PATH,currentFile.getPath()); - loadFile(currentFile); - } - } - } - private class ActionFileSave extends AbstractAction { - public ActionFileSave() { - super("Save", new ImageIcon("images/Save16.gif")); - } - public void actionPerformed(ActionEvent e) { - try { - if (currentFile == null) { - JFileChooser fileC = new JFileChooser(); - fileC.addChoosableFileFilter(new FileFilterXML()); - String lastPath = SETTINGS.getProperty(LAST_SAVE_PATH); - if (lastPath != null) fileC.setCurrentDirectory(new File(lastPath)); - fileC.setSelectedFile(new File("Noname.xml")); - int retVal = fileC.showSaveDialog(_contentPane); - if (retVal == JFileChooser.APPROVE_OPTION) { - currentFile = fileC.getSelectedFile(); - SETTINGS.setProperty(LAST_SAVE_PATH,currentFile.getPath()); - } else return; - } - FileOutputStream oStream = new FileOutputStream(currentFile); - oStream.write(xmlEditor.getText().getBytes()); - documentChanged = false; - } catch (IOException x) { - x.printStackTrace(); - } - } - } - private class ActionFileSaveAs extends AbstractAction { - public ActionFileSaveAs() { - super("Save As...", new ImageIcon("images/SaveAs16.gif")); - } - public void actionPerformed(ActionEvent e) { - try { - JFileChooser fileC = new JFileChooser(); - fileC.addChoosableFileFilter(new FileFilterXML()); - if (currentFile == null) { - fileC.setSelectedFile(new File("Noname.xml")); - } else { - fileC.setSelectedFile(currentFile); - } - String lastPath = SETTINGS.getProperty(LAST_SAVE_PATH); - if (lastPath != null) fileC.setCurrentDirectory(new File(lastPath)); - int retVal = fileC.showSaveDialog(_contentPane); - if (retVal == JFileChooser.APPROVE_OPTION) { - currentFile = fileC.getSelectedFile(); - SETTINGS.setProperty(LAST_SAVE_PATH,currentFile.getPath()); - } else return; - FileOutputStream oStream = new FileOutputStream(currentFile); - oStream.write(xmlEditor.getText().getBytes()); - documentChanged = false; - } catch (IOException x) { - x.printStackTrace(); - } - } - } - private class ActionFileExit extends AbstractAction { - public ActionFileExit() { - super("Exit", new ImageIcon("images/Stop16.gif")); - } - public void actionPerformed(ActionEvent e) { - if (documentChanged) { - int retval = - JOptionPane.showConfirmDialog(null, - "Save the document before exiting?", - "Document changed", - JOptionPane.YES_NO_CANCEL_OPTION); - if (retval == JOptionPane.CANCEL_OPTION) { - return; - } - if (retval == JOptionPane.YES_OPTION) { - try { - if (currentFile == null) { - JFileChooser fileC = new JFileChooser(); - fileC.addChoosableFileFilter(new FileFilterXML()); - String lastPath = SETTINGS.getProperty(LAST_SAVE_PATH); - if (lastPath != null) - fileC.setCurrentDirectory(new File(lastPath)); - fileC.setSelectedFile(new File("Noname.xml")); - int retVal = fileC.showSaveDialog(_contentPane); - if (retVal == JFileChooser.APPROVE_OPTION) { - currentFile = fileC.getSelectedFile(); - SETTINGS.setProperty(LAST_SAVE_PATH,currentFile.getPath()); - } else { - return; - } - } - FileOutputStream oStream = new FileOutputStream(currentFile); - oStream.write(xmlEditor.getText().getBytes()); - } catch (IOException x) { x.printStackTrace(); } - } - } - - try { - SETTINGS.store(); - } catch(Exception x) { x.printStackTrace(); } - System.exit(0); - } - } - private class ActionFilePrint extends AbstractAction { - public ActionFilePrint() { - super("Print...", new ImageIcon("images/Print16.gif")); - } - public void actionPerformed(ActionEvent e) { - JOptionPane.showMessageDialog(null,"Not yet implemented"); - } - } - private class ActionEditCut extends AbstractAction { - public ActionEditCut() { - super("Cut", new ImageIcon("images/Cut16.gif")); - } - public void actionPerformed(ActionEvent e) { - if (tabbedPane.getSelectedIndex() == COMP_TEXTEDITOR) { - xmlEditor.cut(); - } - } - } - private class ActionEditCopy extends AbstractAction { - public ActionEditCopy() { - super("Copy",new ImageIcon("images/Copy16.gif")); - } - public void actionPerformed(ActionEvent e) { - if (tabbedPane.getSelectedIndex() == COMP_TEXTEDITOR) { - xmlEditor.copy(); - } - } - } - private class ActionEditPaste extends AbstractAction { - public ActionEditPaste() { - super("Paste", new ImageIcon("images/Paste16.gif")); - } - public void actionPerformed(ActionEvent e) { - if (tabbedPane.getSelectedIndex() == COMP_TEXTEDITOR) { - xmlEditor.paste(); - } - } - } - private class ActionEditExpandAll extends AbstractAction { - public ActionEditExpandAll() { - super("Expand all"); - } - public void actionPerformed(ActionEvent e) { - - GraphSimul gs = (GraphSimul)baseSim.getGraph(); - gs.setState(GraphStep.STATE_DRAWCHILDREN,true); - - if (gs.getGraphManager().dimensionsChanged()) { - gs.layoutAll(); - baseSim.fitDiagram(); - baseSim.centerGraph((Graph)gs,false); - baseSim.repaint(); - } - // REVISIT: zoom history should be cleared - } - } - private class ActionHelpAbout extends AbstractAction { - public ActionHelpAbout() { - super("About...", new ImageIcon("images/Help16.gif")); - } - public void actionPerformed(ActionEvent e) { - JOptionPane.showMessageDialog(null,"BaseSimGUI (c) ASTRON 2001"); - } - } - - private class ActionDiagramSelect extends AbstractAction { - public ActionDiagramSelect() { - super("Select",new ImageIcon("images/select.gif")); - } - public void actionPerformed(ActionEvent e) { - baseSim.setMode(JBaseSim.MODUS_SELECT); - } - } - - private class ActionDiagramZoom extends AbstractAction { - public ActionDiagramZoom() { - super("Zoom",new ImageIcon("images/Zoom24.gif")); - } - public void actionPerformed(ActionEvent e) { - baseSim.setMode(JBaseSim.MODUS_ZOOM); - } - } - - private class ActionDiagramPan extends AbstractAction { - public ActionDiagramPan() { - super("Pan",new ImageIcon("images/pan.gif")); - } - public void actionPerformed(ActionEvent e) { - baseSim.setMode(JBaseSim.MODUS_PAN); - } - } - - private class FileFilterXML extends javax.swing.filechooser.FileFilter { - public boolean accept (File f) { - if (f.isDirectory()) { - return true; - } - String extension = Utils.getExtension(f); - if ("xml".equals(extension)) return true; else return false; - } - public String getDescription() { - return "XML files (*.xml)"; - } - } - - /** Our own custom tree cell renderer */ - private class GraphCellRenderer extends JLabel implements TreeCellRenderer - { - public GraphCellRenderer() - { - setOpaque(false); - this.setBackground(null); - } - - public Component getTreeCellRendererComponent(JTree tree, - Object value, - boolean sel, - boolean expanded, - boolean leaf, - int row, - boolean hasFocus) - { - setFont(tree.getFont()); - Graph graph = null; - if (value instanceof Graph) { - graph = (Graph)value; - setEnabled(graph.isVisible()); - setText(graph.getName()); - Icon icon = graph.getIcon(); - if (icon == null) { - if (leaf) { - setIcon(UIManager.getIcon("Tree.leafIcon")); - setDisabledIcon(UIManager.getIcon("Tree.leafIcon")); - } else if (expanded) { - setIcon(UIManager.getIcon("Tree.openIcon")); - setDisabledIcon(UIManager.getIcon("Tree.openIcon")); - } else { - setIcon(UIManager.getIcon("Tree.closedIcon")); - setDisabledIcon(UIManager.getIcon("Tree.closedIcon")); - } - } - if(sel && graph.isVisible()) { - setForeground(Color.white); - setBackground(Color.blue); - setOpaque(true); - } else { - setForeground(Color.black); - setBackground(Color.white); - setOpaque(false); - } - } else { - setText((String)value); - } - return this; - } - } - - private class JParseDialog extends JDialog implements ActionListener { - - Container content; - Thread thread; - - public JParseDialog(Frame frame,Thread thread) { - super(frame,"SAX Parser",true); - content = getContentPane(); - content.setLayout(new BorderLayout(10,10)); - JLabel label = new JLabel("Parsing the document...",JLabel.CENTER); - JButton button = new JButton("Interrupt"); - button.addActionListener(this); - content.add(label,BorderLayout.CENTER); - content.add(button,BorderLayout.SOUTH); - ((Main)frame).setParseDialog(this); - this.thread = thread; - thread.start(); - pack(); - centerFrame(); - show(); - } - - public void actionPerformed(ActionEvent e) { - thread.interrupt(); - } - - /** Helper function that centers a frame in the middle of the screen */ - public void centerFrame () - { - //Center the window - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - Dimension frameSize = getSize(); - if (frameSize.height > screenSize.height) { - frameSize.height = screenSize.height; - } - if (frameSize.width > screenSize.width) { - frameSize.width = screenSize.width; - } - setLocation((screenSize.width - frameSize.width) / 2, - (screenSize.height - frameSize.height) / 2); - setVisible(true); - } - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/Main.jbx b/support/tools/BaseSimGUI/src/org/astron/basesim/Main.jbx deleted file mode 100644 index 0113ff3e031..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/Main.jbx +++ /dev/null @@ -1,6 +0,0 @@ -[PropertyInfo] -[IconNames] - - - - diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/MessageApp.java b/support/tools/BaseSimGUI/src/org/astron/basesim/MessageApp.java deleted file mode 100644 index 657a7ab29fa..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/MessageApp.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.astron.basesim; - -import org.astron.util.gui.*; -import javax.swing.*; -import javax.swing.event.*; -import java.util.*; -import java.awt.*; - -/** Displays exception messages in a message box. */ -public class MessageApp extends MessageEvent { - - final static boolean to_stdout = Main.SETTINGS.getBoolean("enableStdout"); - - /** XML message icon */ - final static ImageIcon appIcon = new ImageIcon("images/4.gif"); - - public MessageApp(Exception e) { - super((Object)e,e.toString()); - if (to_stdout) e.printStackTrace(); - } - public MessageApp(Exception e, String text) { - super((Object)e,text); - if (to_stdout) e.printStackTrace(); - } - - public ImageIcon getIcon() { return appIcon; } - - /** Displays exception message in message box. */ - public boolean onClick(JNotifier notifier) { - Exception e = (Exception)getSource(); - // REVISIT: make this a little more readable - Main main = (Main)notifier.getParent() - .getParent().getParent().getParent().getParent(); - JOptionPane.showMessageDialog(main,e.toString(),"Program exception", - JOptionPane.ERROR_MESSAGE); - //REVISIT: add 'show stack trace' button - return true; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/MessageGraph.java b/support/tools/BaseSimGUI/src/org/astron/basesim/MessageGraph.java deleted file mode 100644 index 7bed92fb79d..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/MessageGraph.java +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Class MessageEvent - * Description: Message events that are generated by Graph objects. - * Copyright: Copyright (c) - * Company: Atron - * @author Robbert Dam - * @version 1.0 - */ - -import org.astron.util.gui.*; -import javax.swing.*; - -/** - * Message class for Graph object. Implements the onClick() method. When - * a user clicks on a MessageGraph, the Graph that send the message is selected - * and centered in the diagram view. - */ -public class MessageGraph extends MessageEvent { - - /** Holds destination Graph in case of a Connection error */ - private Graph dest; - - public MessageGraph(Object source, String text) { - super(source,text); - } - /** This constructor should be used to report a connection error.*/ - public MessageGraph(Object source, Object dest, String text) { - super(source,text); - if (dest instanceof Graph) this.dest = (Graph)dest; - } - public MessageGraph(Object source, String text, int type) { - super(source,text,type); - } - /** This constructor should be used to report a connection error.*/ - public MessageGraph(Object source, Object dest, String text, int type) { - super(source,text,type); - if (dest instanceof Graph) this.dest = (Graph)dest; - } - - /** Selects a Graph from which the message originates. */ - public boolean onClick(JNotifier notifier) { - Graph graph; - if (source instanceof Graph) { - graph = (Graph)source; - } else { - System.err.println("MessageGraph.onClick(): source of MessageGraph" - + " (" + source + ") is expected to be instance of Graph!"); - return false; - } - - // get the Main window object; focus on GraphComponent - // REVISIT: make this a little more readable - Main main = (Main)notifier.getParent() - .getParent().getParent().getParent().getParent(); - main.setFocus(Main.COMP_DIAGRAM); - - if (graph.isVisible()) { - GraphManager manager = graph.getGraphManager(); - if (manager.getContainer() instanceof JBaseSim) { - JBaseSim baseSim = (JBaseSim)manager.getContainer(); - baseSim.centerGraph(graph,false); - SelectionManager selMan = manager.getSelectionManager(); - selMan.setSelection(graph); - if (dest != null) selMan.addSelection(dest); - baseSim.repaint(); - } else { - System.err.println("MessageGraph.onClick() handler cannot obtain a " - + "handler to a JBaseSim from the GraphManager."); - return false; - } - } else { - JOptionPane.showMessageDialog( - null, - "This message is related to " + graph.getName() + " which is currently" - + " invisible. \nPlease expand its parent and click on the message again.", - graph.getName(), - JOptionPane.INFORMATION_MESSAGE); - } - return true; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/MessageXML.java b/support/tools/BaseSimGUI/src/org/astron/basesim/MessageXML.java deleted file mode 100644 index eeae71bd6da..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/MessageXML.java +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Class MessageEvent - * Description: Message class for SAX (XML) related messages. - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import javax.swing.*; -import javax.swing.event.*; -import java.util.*; -import java.awt.*; -import org.astron.util.*; -import org.astron.util.gui.*; - -public class MessageXML extends MessageEvent { - - /** XML message icon */ - final static ImageIcon xmlIcon = new ImageIcon("images/closeAllWindows16.gif"); - - private int lineNr; - private int columnNr; - - public MessageXML(Object source, String text) { - super(source,text); - lineNr = -1; - columnNr = -1; - } - public MessageXML(Object source, String text, int type) { - super(source,text,type); - lineNr = -1; - columnNr = -1; - } - public MessageXML(Object source, String text, int type, - int lineNr, int columnNr) { - super(source,text,type); - this.lineNr = lineNr; - this.columnNr = columnNr; - } - public ImageIcon getIcon() { return xmlIcon; } - - /** Jumps to line number where error occured. */ - public boolean onClick(JNotifier notifier) { - - if (lineNr == -1) return false; - - // get the Main window object; focus on XML editor component - // REVISIT: make this a little more readable - Main main = (Main)notifier.getParent() - .getParent().getParent().getParent().getParent(); - main.setFocus(Main.COMP_TEXTEDITOR); - // linenr - 1 because parser is 0 based while jedit is 1 based (for lines). - int offset = main.getEditor().getLineStartOffset(lineNr-1); - main.getEditor().setCaretPosition(offset); - return true; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/Reference.java b/support/tools/BaseSimGUI/src/org/astron/basesim/Reference.java deleted file mode 100644 index 27bf711c9b1..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/Reference.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.astron.basesim; - -import java.util.*; - -/** - * @author Robbert Dam - * @version 1.0 - */ - -/** A Reference is a name that refers to some object. This name - * can be scoped. A name can be related to a context. A context is the - * scope from where the reference was used */ -public class Reference { - - static private String delim = "."; - private String ref; - private String scope; - - public Reference(String name) { - ref = new String(name); - } - - public Reference(String name, String scope) { - this.scope = scope; - ref = name; - } - - public String toString() { - if (ref.length() == 0) return ref; - if (ref.substring(0,1).equals(delim)) { - return scope + ref; - } else { - return scope + delim + ref; - } - } - - static public String getDelimiter() { return delim; } - static public void setDelimiter(String d) { delim = d; } - - /** Get name of this reference. */ - public String getName() { - int i = ref.lastIndexOf(delim); - if (i == -1) return ref; - return new String(ref.getBytes(),i+1,ref.length()-i-1); - } - - public String getScope() { return scope; } - - /** Check if the scope of the specified Reference matches the scope - * of this Reference. */ - public boolean inScope(Reference r) { - StringTokenizer stThat = new StringTokenizer(r.getScope(),delim); - StringTokenizer stThis = new StringTokenizer(this.scope,delim); - - while (stThis.hasMoreTokens()) { - if (!stThat.hasMoreTokens()) return false; - if (!stThat.nextToken().equals(stThis.nextToken())) return false; - } - return true; - } - - /** Compare this reference with another reference. */ - public boolean equals(Reference r) { - if (toString().equals(r.toString())) return true; - else return false; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/SelectionManager.java b/support/tools/BaseSimGUI/src/org/astron/basesim/SelectionManager.java deleted file mode 100644 index d64b6f48cfe..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/SelectionManager.java +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: - * Description: - * Copyright: Copyright (c) - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import javax.swing.*; -import java.util.*; - -/** - * This class manages a list of user selections from a JBaseSim diagram. - * Selections can be reset, added, deleted, etc. - */ -public class SelectionManager { - - private Vector _selection = new Vector(); - - private Vector listener = new Vector(); - - public SelectionManager() {} - - public void setSelection(Graph graph) { - unselectAll(); - addSelection(graph); - } - - public void setSelection(Vector graph) { - unselectAll(); - for (int i=0; i<graph.size(); i++) { - addSelection((Graph)graph.get(i)); - } - } - - public void addSelection(Vector graph) { - for (int i=0; i<graph.size(); i++) { - addSelection((Graph)graph.get(i)); - } - } - - public void addSelection(Graph graph) { - _selection.add(graph); - graph.setSelected(true); - repaintJComponent(graph); - fireGraphSelected(graph); - } - - public void unselectAll() { - Graph tGraph = null; - for (int i=0; i<_selection.size(); i++) { - if (i==0) tGraph = getSelected(0); // for repainting - getSelected(i).setSelected(false); // unselect all - fireGraphUnselected(getSelected(i)); - } - _selection.removeAllElements(); - if (tGraph != null) repaintJComponent(tGraph); - } - - public void unselect(Vector graph) { - for (int i=0; i<graph.size(); i++) { - unselect((Graph)graph.get(i)); - } - } - - public void unselect(Graph graph) { - graph.setSelected(false); - _selection.remove(graph); - repaintJComponent(graph); - fireGraphUnselected(graph); - } - - public void setInverseSelection(Vector graph) { - Graph g = null; - unselectAll(); - for (int i=0; i<graph.size(); i++) { - g = (Graph)graph.get(i); - if (g.isSelected()) { - unselect(g); - } else { - addSelection(g); - } - } - if (g != null) repaintJComponent(g); - } - - public void setInverseSelection(Graph graph) { - if (graph.isSelected()) { - unselect(graph); - } else { - setSelection(graph); - } - repaintJComponent(graph); - } - - public void addInverseSelection(Vector graph) { - Graph g = null; - for (int i=0; i<graph.size(); i++) { - g = (Graph)graph.get(i); - if (g.isSelected()) { - unselect(graph); - } else { - addSelection(graph); - } - } - if (g != null) repaintJComponent(g); - } - - public void addInverseSelection(Graph graph) { - if (graph.isSelected()) { - unselect(graph); - } else { - addSelection(graph); - } - repaintJComponent(graph); - } - - public int nrOfSelections() { return _selection.size(); } - - public Graph getSelected(int index) { - return (Graph)_selection.get(index); - } - - private void repaintJComponent(Graph graph) { - JComponent jComp = graph.getGraphManager().getContainer(); - if (jComp != null) jComp.repaint(); - } - - public void fireGraphSelected(Graph graph) { - GraphSelectionEvent e = new GraphSelectionEvent(this,graph,true); - for (int i=0; i<listener.size(); i++) { - ((GraphSelectionListener)listener.get(i)).valueChanged(e); - } - } - - public void fireGraphUnselected(Graph graph) { - GraphSelectionEvent e = new GraphSelectionEvent(this,graph,false); - for (int i=0; i<listener.size(); i++) { - ((GraphSelectionListener)listener.get(i)).valueChanged(e); - } - } - - public void addGraphSelectionListener(GraphSelectionListener l) { - listener.add(l); - } - - public void removeGraphSelectionListener(GraphSelectionListener l) { - listener.remove(l); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/TestMain.java b/support/tools/BaseSimGUI/src/org/astron/basesim/TestMain.java deleted file mode 100644 index 403a73f83d8..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/TestMain.java +++ /dev/null @@ -1,271 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.basesim; - -/** - * Title: Class Main<p> - * Description: Main window<p> - * Copyright: Copyright (c) <p> - * Company: Astron<p> - * @author Robbert Dam - * @version 1.0 - */ - -import javax.swing.*; -import javax.swing.tree.*; -import javax.swing.event.*; -import java.awt.event.*; -import java.awt.*; -import java.io.*; -import org.astron.util.*; -import org.astron.util.gui.*; - -/** Was used to low-level test the Graph tree strucute, layout controllers */ -public class TestMain extends JFrame{ - - private final static String LAST_PATH = "lastPath"; - - AbstractAction fileOpen = new ActionFileOpen(); - AbstractAction fileNew = new ActionFileNew(); - AbstractAction fileExit = new ActionFileExit(); - AbstractAction filePrint = new ActionFilePrint(); - AbstractAction helpAbout = new ActionHelpAbout(); - AbstractAction diagramSelect = new ActionDiagramSelect(); - AbstractAction diagramZoom = new ActionDiagramZoom(); - AbstractAction diagramPan = new ActionDiagramPan(); - - JPanel _contentPane; - JBaseSim baseSim; - JNotifier notifier; - JTree simulTree; - - public TestMain() { - super ("BaseSim GUI"); - addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - try { - Main.SETTINGS.store(); - } catch (IOException x) { - System.out.println("failed to write config file: "+x); - } - System.exit(0); - } - }); - getContentPane().add(new JTestGraph()); - pack(); - show(); - } - - private void loadFile(File file) {/* - notifier.clearAll(); - GraphManager manager = new GraphManager(); - manager.setContainer(baseSim); - GraphDiagram diagram = new GraphDiagram(manager,"Base simulation"); - diagram.getGraphManager().addMessageListener(notifier); - FileInputStream inputStream; - try { - inputStream = new FileInputStream(file); - } catch (IOException e) { e.printStackTrace(); return; } - if (diagram.parseSimul(inputStream,file.getName())) { - baseSim.setGraph(diagram); - setTitle("BaseSim GUI ("+file.getAbsoluteFile()+")"); - ((BaseSimTreeModel)simulTree.getModel()).setGraphDiagram(diagram); - } else baseSim.clearDiagram(); -*/ } - - private JMenuBar initMenu() { - JMenuBar menuBar = new JMenuBar(); - - JMenu menuFile = new JMenu("File"); - JMenu menuHelp = new JMenu("Help"); - - JMenuItem itemFileNew = new JMenuItem(fileNew); - JMenuItem itemFileOpen = new JMenuItem(fileOpen); - JMenuItem itemFilePrint = new JMenuItem(filePrint); - JMenuItem itemFileExit = new JMenuItem(fileExit); - - JMenuItem itemHelpAbout = new JMenuItem(helpAbout); - - menuBar.add(menuFile); - menuBar.add(menuHelp); - menuFile.add(itemFileNew); - menuFile.add(itemFileOpen); - menuFile.add(itemFilePrint); - menuFile.addSeparator(); - menuFile.add(itemFileExit); - menuHelp.add(itemHelpAbout); - - return menuBar; - } - - private JToolBar initDiagramToolBar() { - JToolBar toolBar = new JToolBar(); - - toolBar.add(diagramSelect); - toolBar.add(diagramPan); - toolBar.add(diagramZoom); - - return toolBar; - } - - private void initTree() { - simulTree = - new JTree(new BaseSimTreeModel((GraphDiagram)baseSim.getGraph())); - simulTree.getSelectionModel().setSelectionMode - (TreeSelectionModel.SINGLE_TREE_SELECTION); - - //Listen for when the selection changes. - simulTree.addTreeSelectionListener(new TreeSelectionListener() { - Graph lastGraph; - public void valueChanged(TreeSelectionEvent e) { - Object object = simulTree.getLastSelectedPathComponent(); - if (object == null) { - if (lastGraph == null) return; else object = lastGraph; - } - if (object instanceof Graph) { - Graph graph = (Graph)object; - lastGraph = graph; - SelectionManager selMan = graph.getGraphManager().getSelectionManager(); - selMan.setInverseSelection(graph); - baseSim.centerGraph(graph,false); - } - } - }); - } - - /** Helper function that centers a frame in the middle of the screen */ - public void centerFrame () - { - //Center the window - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - Dimension frameSize = getSize(); - if (frameSize.height > screenSize.height) { - frameSize.height = screenSize.height; - } - if (frameSize.width > screenSize.width) { - frameSize.width = screenSize.width; - } - setLocation((screenSize.width - frameSize.width) / 2, - (screenSize.height - frameSize.height) / 2); - setVisible(true); - } - - /** Send a message to the notifier */ - public void fireMessage(MessageEvent e) { notifier.note(e); } - - public static void main(String[] args) { - try { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } - catch(Exception e) { - e.printStackTrace(); - } - TestMain main1 = new TestMain(); - } - - private class ActionFileOpen extends AbstractAction { - public ActionFileOpen() { - super("Open..."); - } - public void actionPerformed(ActionEvent e) { - JFileChooser fileC = new JFileChooser(); - String lastPath = Main.SETTINGS.getProperty(LAST_PATH); - if (lastPath != null) fileC.setCurrentDirectory(new File(lastPath)); - int retVal = fileC.showOpenDialog(_contentPane); - if (retVal == JFileChooser.APPROVE_OPTION) { - Main.SETTINGS.setProperty(LAST_PATH,fileC.getSelectedFile().getPath()); - loadFile(fileC.getSelectedFile()); - } - } - } - private class ActionFileNew extends AbstractAction { - public ActionFileNew() { - super("New"); - } - public void actionPerformed(ActionEvent e) {} - } - private class ActionFileExit extends AbstractAction { - public ActionFileExit() { - super("Exit"); - } - public void actionPerformed(ActionEvent e) { - System.exit(0); - } - } - private class ActionFilePrint extends AbstractAction { - public ActionFilePrint() { - super("Print..."); - } - public void actionPerformed(ActionEvent e) {} - } - private class ActionHelpAbout extends AbstractAction { - public ActionHelpAbout() { - super("About..."); - } - public void actionPerformed(ActionEvent e) {} - } - - private class ActionDiagramSelect extends AbstractAction { - public ActionDiagramSelect() { - super("Select",new ImageIcon("images/select.gif")); - } - public void actionPerformed(ActionEvent e) { - baseSim.setMode(JBaseSim.MODUS_SELECT); - } - } - - private class ActionDiagramZoom extends AbstractAction { - public ActionDiagramZoom() { - super("Zoom",new ImageIcon("images/zoom.gif")); - } - public void actionPerformed(ActionEvent e) { - baseSim.setMode(JBaseSim.MODUS_ZOOM); - } - } - - private class ActionDiagramPan extends AbstractAction { - public ActionDiagramPan() { - super("Pan",new ImageIcon("images/pan.gif")); - } - public void actionPerformed(ActionEvent e) { - baseSim.setMode(JBaseSim.MODUS_PAN); - } - } - - /** Little hack that changes the default gray color of a JViewPort */ - private class XScrollPane extends JScrollPane { - - private Color m_color; - - public XScrollPane(JComponent comp) { - super(comp); - //m_color = comp.getBackground(); - m_color = new Color (255,255,240); - // Needed for Java v1.3.0 - getViewport().setBackground(m_color); - } // Needed for Java v1.2.2_005 - public void paintComponent(Graphics g) { - Rectangle r = g.getClipBounds(); - g.setColor(m_color); - g.fillRect(r.x, r.y, r.width, r.height); - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/def/ConCorba.java b/support/tools/BaseSimGUI/src/org/astron/basesim/def/ConCorba.java deleted file mode 100644 index 5a5208859e1..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/def/ConCorba.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.astron.basesim.def; - -import org.astron.basesim.*; -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class ConCorba extends Connection { - public ConCorba() { - super(); - init(); - } - public ConCorba(Graph graphOutput, Graph graphInput) { - super(graphOutput,graphInput); - init(); - } - private void init() { - setColor(Color.blue.darker()); - setStroke(SIMPLE_DOTTED_STROKE); - setStrokeSelected(THICK_DOTTED_STROKE); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/def/ConMPI.java b/support/tools/BaseSimGUI/src/org/astron/basesim/def/ConMPI.java deleted file mode 100644 index e71d3b94c87..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/def/ConMPI.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.astron.basesim.def; - -import org.astron.basesim.*; -import java.awt.*; - -/** The equivalent for the TH_MPI class in BaseSim. */ -public class ConMPI extends Connection { - public ConMPI() { - super(); - init(); - } - public ConMPI(Graph graphOutput, Graph graphInput) { - super(graphOutput,graphInput); - init(); - } - private void init() { - setColor(Color.blue); - setStroke(SIMPLE_DASH_STROKE); - setStrokeSelected(THICK_DASH_STROKE); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/def/ConMem.java b/support/tools/BaseSimGUI/src/org/astron/basesim/def/ConMem.java deleted file mode 100644 index dcbae695a83..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/def/ConMem.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.astron.basesim.def; - -import org.astron.basesim.*; -import java.awt.*; - -/** The equivalent for the TH_Mem class in BaseSim. */ -public class ConMem extends Connection { - - public ConMem() { - super(); - init(); - } - public ConMem(Graph graphOutput, Graph graphInput) { - super(graphOutput,graphInput); - init(); - } - - private void init() { - setStroke(SIMPLE_DASH_STROKE); - setStrokeSelected(THICK_DASH_STROKE); - setColor(Color.gray); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/basesim/def/DHEmpty.java b/support/tools/BaseSimGUI/src/org/astron/basesim/def/DHEmpty.java deleted file mode 100644 index 7762a08f98d..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/basesim/def/DHEmpty.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.astron.basesim.def; - -import org.astron.basesim.GraphDataHolder; -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public class DHEmpty extends GraphDataHolder { - - public DHEmpty() { - super(); - setBackground(Color.white); - } - - /** Paint this Empty DataHolder. Overloaded from Graph. */ - protected void paintGraph(Graphics2D g, Point abs) { - g.drawLine(abs.x,abs.y,abs.x+width,abs.y+height); - g.drawLine(abs.x,abs.y+height,abs.x+width,abs.y); - } - - public String getClassName() { return "DH_Empty"; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHAntenna.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHAntenna.java deleted file mode 100644 index 7f90bb032fe..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHAntenna.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphDataHolder; -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public class DHAntenna extends GraphDataHolder { - - public DHAntenna() { - super(); - setBackground(Color.red); - } - - public String getClassName() { return "DH_Antenna"; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeam.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeam.java deleted file mode 100644 index c6656b2e122..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeam.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphDataHolder; -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public class DHBeam extends GraphDataHolder { - - public DHBeam() { - super(); - setBackground(Color.blue); - } - - public String getClassName() { return "DH_Beam"; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeamBand.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeamBand.java deleted file mode 100644 index e8894774353..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeamBand.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphDataHolder; -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public class DHBeamBand extends GraphDataHolder { - - public DHBeamBand() { - super(); - setBackground(Color.magenta); - } - public String getClassName() { return "DH_BeamBand"; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeamT.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeamT.java deleted file mode 100644 index 36e74ee6267..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHBeamT.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphDataHolder; -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public class DHBeamT extends GraphDataHolder { - - public DHBeamT() { - super(); - setBackground(Color.darkGray); - } - - public String getClassName() { return "DH_BeamT"; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHCorr.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHCorr.java deleted file mode 100644 index 58969cede7a..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHCorr.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphDataHolder; -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public class DHCorr extends GraphDataHolder { - - public DHCorr() { - super(); - setBackground(Color.green); - } - - public String getClassName() { return "DH_Corr"; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHFreq.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHFreq.java deleted file mode 100644 index 2ad9ff90bab..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHFreq.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphDataHolder; -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public class DHFreq extends GraphDataHolder { - - public DHFreq() { - super(); - setBackground(Color.cyan); - } - - public String getClassName() { return "DH_Freq"; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHFreqT.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHFreqT.java deleted file mode 100644 index 08fe93c3d0b..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/DHFreqT.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphDataHolder; -import java.awt.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -public class DHFreqT extends GraphDataHolder { - - public DHFreqT() { - super(); - setBackground(Color.cyan); - } - - public String getClassName() { return "DH_FreqT"; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHAntenna.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHAntenna.java deleted file mode 100644 index 809d85e797f..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHAntenna.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.*; -import java.awt.Toolkit; -import java.awt.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHAntenna extends GraphWorkHolderImage { - - final static Image iWHAntenna = - Toolkit.getDefaultToolkit().getImage("images/Antenna01.gif"); - - public WHAntenna() { - super(); - setBaseRoundSize(2); - setImage(iWHAntenna); - } - - public String getClassName() { return "Antenna"; } - public GraphDataHolder buildDataHolder(boolean input) { return new DHAntenna(); } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHBeam.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHBeam.java deleted file mode 100644 index 11b540a9055..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHBeam.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.astron.lofarsim; - -import java.awt.*; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHBeam extends GraphWorkHolderImage { - - public WHBeam() { - super(); - setBaseSize(new Dimension(60,5)); - } - public String getClassName() { return "Beam"; } - public GraphDataHolder buildDataHolder(boolean input) { - if (input) { - return new DHFreqT(); - } else { - return new DHBeamT(); - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHCPInput.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHCPInput.java deleted file mode 100644 index 0b7055886a0..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHCPInput.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHCPInput extends GraphWorkHolderImage { - - public WHCPInput() { - super(); - } - - public String getClassName() { return "CPInput"; } - public GraphDataHolder buildDataHolder(boolean input) { - if (input) { - return new DHBeam(); - } else { - return new DHBeamBand(); - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHController.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHController.java deleted file mode 100644 index 0bfee6fde0e..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHController.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHController extends GraphWorkHolderImage { - - public WHController() { - super(); - } - - public String getClassName() { return "Controller"; } - public GraphDataHolder buildDataHolder(boolean input) { - return new DHEmpty(); - } - -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHConvolve.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHConvolve.java deleted file mode 100644 index c9ce95de765..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHConvolve.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHConvolve extends GraphWorkHolderImage { - - public WHConvolve() { - super(); - } - - public String getClassName() { return "Convolve"; } - public GraphDataHolder buildDataHolder(boolean input) { - return new DHCorr(); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHCorr.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHCorr.java deleted file mode 100644 index 4521bef8028..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHCorr.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHCorr extends GraphWorkHolderImage { - - public WHCorr() { - super(); - } - - public String getClassName() { return "WHCorr"; } - public GraphDataHolder buildDataHolder(boolean input) { - if (input) { - return new DHBeamBand(); - } else { - return new DHCorr(); - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHDataProc.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHDataProc.java deleted file mode 100644 index 4c34103c7cf..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHDataProc.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHDataProc extends GraphWorkHolderImage { - - public WHDataProc() { - super(); - } - - public String getClassName() { return "Data processor"; } - public GraphDataHolder buildDataHolder(boolean input) { - if (input) { - return new DHBeam(); - } else { - return new DHCorr(); - } - } - -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHFFT.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHFFT.java deleted file mode 100644 index 7c365267e90..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHFFT.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHFFT extends GraphWorkHolderImage { - - public WHFFT() { - super(); - } - - public String getClassName() { return "FFT"; } - public GraphDataHolder buildDataHolder(boolean input) { - if (input) { - return new DHAntenna(); - } else { - return new DHFreq(); - } - } - -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHIntegrator.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHIntegrator.java deleted file mode 100644 index cfd2ce25279..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHIntegrator.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHIntegrator extends GraphWorkHolderImage { - - public WHIntegrator() { - super(); - } - - public String getClassName() { return "Integrator"; } - public GraphDataHolder buildDataHolder(boolean input) { - return new DHCorr(); - } - -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHMakeMS.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHMakeMS.java deleted file mode 100644 index 7b8c5aa357d..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHMakeMS.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHMakeMS extends GraphWorkHolderImage { - - public WHMakeMS() { - super(); - } - - public String getClassName() { return "Make MS"; } - public GraphDataHolder buildDataHolder(boolean input) { - if (input) { - return new DHCorr(); - } else { - return new DHEmpty(); - } - } - -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHStation.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHStation.java deleted file mode 100644 index dddfcad5a9e..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHStation.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHStation extends GraphWorkHolderImage { - - public WHStation() { - super(); - } - - public String getClassName() { return "Station"; } - public GraphDataHolder buildDataHolder(boolean input) { - if (input) { - return new DHAntenna(); - } else { - return new DHBeam(); - } - } - -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHTransB.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHTransB.java deleted file mode 100644 index 17bd9ff1b7c..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHTransB.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.GraphWorkHolderImage; -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHTransB extends GraphWorkHolderImage { - - public WHTransB() { - super(); - } - - public String getClassName() { return "TransB"; } - public GraphDataHolder buildDataHolder(boolean input) { - if (input) { - return new DHBeamT(); - } else { - return new DHBeam(); - } - } - -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHTransF.java b/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHTransF.java deleted file mode 100644 index d51b10554f0..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/lofarsim/WHTransF.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.astron.lofarsim; - -import org.astron.basesim.*; -import org.astron.basesim.def.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class WHTransF extends GraphWorkHolderImage { - - public WHTransF() { - super(); - } - - public String getClassName() { return "TransF"; } - public GraphDataHolder buildDataHolder(boolean input) { - if (input) { - return new DHFreq(); - } else { - return new DHFreqT(); - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/util/Arguments.java b/support/tools/BaseSimGUI/src/org/astron/util/Arguments.java deleted file mode 100644 index 6ef0213a897..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/Arguments.java +++ /dev/null @@ -1,313 +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 acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Xerces" 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 name, without prior written - * permission of the Apache Software Foundation. - * - * 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 and was - * originally based on software copyright (c) 1999, International - * Business Machines, Inc., http://www.apache.org. For more - * information on the Apache Software Foundation, please see - * <http://www.apache.org/>. - */ - - - -package org.astron.util; -import java.lang.Integer; - - - -/** - * Utility like Unix getopt. - * - * Usage: - * - * int c; - * - * parseArgumentTokens(argv); - * while ( (c = getArguments()) != -1 ){ - * - * switch (c) { - * case 'v': - * System.out.println( "v" ); - * break; - * case 'V': - * System.out.println( "V" ); - * break; - * - * @version $id$ - * @author Jeffrey Rodriguez - */ - -public class Arguments { - private boolean fDbug = false; - private Queue queueOfSwitches = new Queue(20); - private Queue queueStringParameters = new Queue(20); - private Queue queueOfOtherStringParameters = new Queue(20); - private String[] messageArray = null; - private int lastPopArgument = 0; - - - public Arguments() { - } - - /** - * Takes the array of standar Args passed - * from main method and parses the '-' and - * the characters after arg. - * - * - The value -1 is a special flag that is - * used to indicate the beginning of the queue - * of flags and it is also to tell the end of - * a group of switches. - * - * This method will generate 3 internal queues. - * - A queue that has the switch flag arguments. - * e.g. - * -dvV - * will hold d, v, V, -1. - * - * - A queue holding the string arguments needed by - * the switch flag arguments. - * If character -p requires a string argument. - * The string argument is saved in the string argument - * queue. - * - * - A queue holding a list of files string parameters - * not associated with a switch flag. - * -a -v -p myvalue test.xml test1.xml - * this queue will containt test.xml test1.xml - * - * @param arguments - * @param argsWithOptions - */ - public void parseArgumentTokens( String[] arguments , char[] argsWithOptions ){ - int theDash = 0; - int lengthOfToken = 0; - char []bufferOfToken = null; - Object[] temp; - - int argLength = arguments.length; - - outer: - for ( int i = 0; i<argLength; i++ ){ - bufferOfToken = arguments[i].toCharArray(); - lengthOfToken = bufferOfToken.length; - if ( bufferOfToken[0] == '-' ){ - int token; - //System.out.println( "argv = " + arguments[i] ); - //System.out.println( "leng = " + lengthOfToken ); - for ( int j = 1; j<lengthOfToken; j++ ){ - token = bufferOfToken[j]; - //System.out.println( "token = " + token ); - queueOfSwitches.push( (Object ) new Integer( token )); - for ( int k = 0; k< argsWithOptions.length; k++) { - if ( token == argsWithOptions[k] ){ - if ( this.fDbug ) { - System.out.println( "token = " + token ); - } - //queueOfSwitches.push( (Object ) new Integer( -1 )); - queueStringParameters.push( arguments[++i] ); - continue outer; - } - } - - } - - if ( i+1 < argLength ){ - if ( !( arguments[i+1].charAt(0) == '-') ) //next argument not start '-' - queueOfSwitches.push( (Object ) new Integer( -1 )); //put -1 marker - } - - } else{ - queueOfOtherStringParameters.push( arguments[i] ); - } - } - - - if ( this.fDbug ) { - queueOfSwitches.print(); - queueStringParameters.print(); - queueOfOtherStringParameters.print(); - } - } - - - /** - * - * @return - */ - public int getArguments(){ - if ( this.fDbug ){ - queueOfSwitches.print(); - } - - //int value = ((Integer ) queueOfSwitches.pop()).intValue(); - //if ( this.fDbug ) { - // System.out.println("value = " + value ); - //} - return queueOfSwitches.empty() ? -1:((Integer ) queueOfSwitches.pop()).intValue(); - } - - - - /** - * - * @return - */ - public String getStringParameter(){ - String s = (String) queueStringParameters.pop(); - if ( this.fDbug ){ - queueStringParameters.print(); - } - if ( this.fDbug ) { - System.out.println( "string par = " + s ); - } - return s; - } - - - public String getlistFiles(){ - - if ( this.fDbug ) { - queueOfOtherStringParameters.print(); - } - - String s = (String) queueOfOtherStringParameters.pop(); - return s; - } - - - - public int stringParameterLeft( ){ - return queueStringParameters.size(); - } - - - public void setUsage( String[] message ){ - messageArray = message; - } - - public void printUsage() { - for ( int i = 0; i< messageArray.length; i++ ){ - System.err.println( messageArray[i] ); - } - } - - // Private methods - - // Private inner classes - - - private static final int maxIncrement = 10; - - private class Queue { - //private LinkedList queue; - private Object[] queue; - private int max; - private int front; - private int rear; - private int items; - - - public Queue( int size) { - queue = new Object[size]; - front = 0; - rear = -1; - items = 0; - max = size; - //queue = new LinkedList(); - } - public void push( Object token ) { - try { - queue[++rear] = token; - items++; - } catch ( ArrayIndexOutOfBoundsException ex ){ - Object[] holdQueue = new Object[max + maxIncrement]; - System.arraycopy(queue, 0, holdQueue,0,max ); - queue = holdQueue; - max += maxIncrement; - queue[rear] = token; - items++; - } - - //queue.addLast( token ); - } - public Object pop() { - Object token = null; - if ( items != 0 ) { - token = queue[front++]; - items--; - } - return token; - } - public boolean empty(){ - return(items==0); - } - - public int size(){ - return items; - } - - public void clear(){ - front = 0; - rear = -1; - items = 0; - } - - - public void print(){ - for ( int i = front; i <= rear;i++ ){ - System.out.println( "token[ " + i - + "] = " + queue[i] ) ; - } - - } - - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/Sample.java b/support/tools/BaseSimGUI/src/org/astron/util/Sample.java deleted file mode 100644 index 6c7ed1cb738..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/Sample.java +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.util; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -import javax.swing.*; -import java.awt.event.*; -import java.awt.*; -import java.util.*; -import org.astron.util.gui.*; - -public class Sample { - - public Sample() { - JFrame frame = new JFrame("JNotifier demo"); - JNotifier notifier = new JNotifier(); - addMessageListener(notifier); - fireMessage(new MessageEvent (this,"Dit is een foutmelding",MessageEvent.ERROR)); - fireMessage(new MessageEvent (this,"Nu een waarschuwing",MessageEvent.WARNING)); - fireMessage(new MessageEvent (this,"Dit is een gewone melding")); - fireMessage(new MessageEvent (this,"MessageEvent")); - fireMessage(new MessageEvent (this,"Dit is een gewone melding")); - fireMessage(new MessageEvent (this,"Dit is een gewone melding")); - fireMessage(new MessageEvent (this,"Dit is een gewone melding")); - frame.getContentPane().add(notifier); - frame.pack(); - frame.show(); - frame.addWindowListener(new MyWindowListener()); - } - - /** Classes that wish to report active messages to the user should implement - * these methods. - * - * ---------------------------- - */ - - ArrayList _mlisteners = new ArrayList(); - - public void addMessageListener (MessageListener messageListener) { - _mlisteners.add(messageListener); - } - public void removeMessageListener (MessageListener messageListener) { - _mlisteners.remove(messageListener); - } - public void fireMessage(MessageEvent event) { - for (int i=0; i<_mlisteners.size(); i++) { - ((MessageListener)_mlisteners.get(i)).note(event); - } - } - - /** -------------------------------- */ - - - /*** Main ***/ - public static void main(String[] args) { - Sample sample1 = new Sample(); - } - private class MyWindowListener implements WindowListener { - public void windowActivated(WindowEvent e) {} - public void windowClosed(WindowEvent e) {} - public void windowClosing(WindowEvent e) { System.exit(0); } - public void windowDeactivated(WindowEvent e) {} - public void windowDeiconified(WindowEvent e) {} - public void windowIconified(WindowEvent e) {} - public void windowOpened(WindowEvent e) {} - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/util/Utils.java b/support/tools/BaseSimGUI/src/org/astron/util/Utils.java deleted file mode 100644 index 2383bd842df..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/Utils.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.astron.util; - -import java.io.File;; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -/** Collection of handy methods */ -public class Utils { - - /* Get the extension of a file in lowercase. */ - public static String getExtension(File f) { - String ext = null; - String s = f.getName(); - int i = s.lastIndexOf('.'); - - if (i > 0 && i < s.length() - 1) { - ext = s.substring(i+1).toLowerCase(); - } - return ext; - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/BatchFileTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/BatchFileTokenMarker.java deleted file mode 100644 index d94c288e2a7..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/BatchFileTokenMarker.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * BatchFileTokenMarker.java - Batch file token marker - * Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * Batch file token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class BatchFileTokenMarker extends TokenMarker -{ - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - char[] array = line.array; - int offset = line.offset; - int lastOffset = offset; - int length = line.count + offset; - - if(SyntaxUtilities.regionMatches(true,line,offset,"rem")) - { - addToken(line.count,Token.COMMENT1); - return Token.NULL; - } - -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - switch(token) - { - case Token.NULL: - switch(array[i]) - { - case '%': - addToken(i - lastOffset,token); - lastOffset = i; - if(length - i <= 3 || array[i+2] == ' ') - { - addToken(2,Token.KEYWORD2); - i += 2; - lastOffset = i; - } - else - token = Token.KEYWORD2; - break; - case '"': - addToken(i - lastOffset,token); - token = Token.LITERAL1; - lastOffset = i; - break; - case ':': - if(i == offset) - { - addToken(line.count,Token.LABEL); - lastOffset = length; - break loop; - } - break; - case ' ': - if(lastOffset == offset) - { - addToken(i - lastOffset,Token.KEYWORD1); - lastOffset = i; - } - break; - } - break; - case Token.KEYWORD2: - if(array[i] == '%') - { - addToken(i1 - lastOffset,token); - token = Token.NULL; - lastOffset = i1; - } - break; - case Token.LITERAL1: - if(array[i] == '"') - { - addToken(i1 - lastOffset,token); - token = Token.NULL; - lastOffset = i1; - } - break; - default: - throw new InternalError("Invalid state: " + token); - } - } - - if(lastOffset != length) - { - if(token != Token.NULL) - token = Token.INVALID; - else if(lastOffset == offset) - token = Token.KEYWORD1; - addToken(length - lastOffset,token); - } - return Token.NULL; - } - - public boolean supportsMultilineTokens() - { - return false; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/CCTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/CCTokenMarker.java deleted file mode 100644 index 4655875b89d..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/CCTokenMarker.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * CCTokenMarker.java - C++ token marker - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ - -package org.astron.util.gui; - -import javax.swing.text.Segment; - -/** - * C++ token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class CCTokenMarker extends CTokenMarker -{ - public CCTokenMarker() - { - super(true,getKeywords()); - } - - public static KeywordMap getKeywords() - { - if(ccKeywords == null) - { - ccKeywords = new KeywordMap(false); - - ccKeywords.add("and", Token.KEYWORD3); - ccKeywords.add("and_eq", Token.KEYWORD3); - ccKeywords.add("asm", Token.KEYWORD2); // - ccKeywords.add("auto", Token.KEYWORD1); // - ccKeywords.add("bitand", Token.KEYWORD3); - ccKeywords.add("bitor", Token.KEYWORD3); - ccKeywords.add("bool",Token.KEYWORD3); - ccKeywords.add("break", Token.KEYWORD1); // - ccKeywords.add("case", Token.KEYWORD1); // - ccKeywords.add("catch", Token.KEYWORD1); - ccKeywords.add("char", Token.KEYWORD3); // - ccKeywords.add("class", Token.KEYWORD3); - ccKeywords.add("compl", Token.KEYWORD3); - ccKeywords.add("const", Token.KEYWORD1); // - ccKeywords.add("const_cast", Token.KEYWORD3); - ccKeywords.add("continue", Token.KEYWORD1); // - ccKeywords.add("default", Token.KEYWORD1); // - ccKeywords.add("delete", Token.KEYWORD1); - ccKeywords.add("do",Token.KEYWORD1); // - ccKeywords.add("double" ,Token.KEYWORD3); // - ccKeywords.add("dynamic_cast", Token.KEYWORD3); - ccKeywords.add("else", Token.KEYWORD1); // - ccKeywords.add("enum", Token.KEYWORD3); // - ccKeywords.add("explicit", Token.KEYWORD1); - ccKeywords.add("export", Token.KEYWORD2); - ccKeywords.add("extern", Token.KEYWORD2); // - ccKeywords.add("false", Token.LITERAL2); - ccKeywords.add("float", Token.KEYWORD3); // - ccKeywords.add("for", Token.KEYWORD1); // - ccKeywords.add("friend", Token.KEYWORD1); - ccKeywords.add("goto", Token.KEYWORD1); // - ccKeywords.add("if", Token.KEYWORD1); // - ccKeywords.add("inline", Token.KEYWORD1); - ccKeywords.add("int", Token.KEYWORD3); // - ccKeywords.add("long", Token.KEYWORD3); // - ccKeywords.add("mutable", Token.KEYWORD3); - ccKeywords.add("namespace", Token.KEYWORD2); - ccKeywords.add("new", Token.KEYWORD1); - ccKeywords.add("not", Token.KEYWORD3); - ccKeywords.add("not_eq", Token.KEYWORD3); - ccKeywords.add("operator", Token.KEYWORD3); - ccKeywords.add("or", Token.KEYWORD3); - ccKeywords.add("or_eq", Token.KEYWORD3); - ccKeywords.add("private", Token.KEYWORD1); - ccKeywords.add("protected", Token.KEYWORD1); - ccKeywords.add("public", Token.KEYWORD1); - ccKeywords.add("register", Token.KEYWORD1); - ccKeywords.add("reinterpret_cast", Token.KEYWORD3); - ccKeywords.add("return", Token.KEYWORD1); // - ccKeywords.add("short", Token.KEYWORD3); // - ccKeywords.add("signed", Token.KEYWORD3); // - ccKeywords.add("sizeof", Token.KEYWORD1); // - ccKeywords.add("static", Token.KEYWORD1); // - ccKeywords.add("static_cast", Token.KEYWORD3); - ccKeywords.add("struct", Token.KEYWORD3); // - ccKeywords.add("switch", Token.KEYWORD1); // - ccKeywords.add("template", Token.KEYWORD3); - ccKeywords.add("this", Token.LITERAL2); - ccKeywords.add("throw", Token.KEYWORD1); - ccKeywords.add("true", Token.LITERAL2); - ccKeywords.add("try", Token.KEYWORD1); - ccKeywords.add("typedef", Token.KEYWORD3); // - ccKeywords.add("typeid", Token.KEYWORD3); - ccKeywords.add("typename", Token.KEYWORD3); - ccKeywords.add("union", Token.KEYWORD3); // - ccKeywords.add("unsigned", Token.KEYWORD3); // - ccKeywords.add("using", Token.KEYWORD2); - ccKeywords.add("virtual", Token.KEYWORD1); - ccKeywords.add("void", Token.KEYWORD1); // - ccKeywords.add("volatile", Token.KEYWORD1); // - ccKeywords.add("wchar_t", Token.KEYWORD3); - ccKeywords.add("while", Token.KEYWORD1); // - ccKeywords.add("xor", Token.KEYWORD3); - ccKeywords.add("xor_eq", Token.KEYWORD3); - - // non ANSI keywords - ccKeywords.add("NULL", Token.LITERAL2); - } - return ccKeywords; - } - - // private members - private static KeywordMap ccKeywords; -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/CTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/CTokenMarker.java deleted file mode 100644 index 8c33340372e..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/CTokenMarker.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * CTokenMarker.java - C token marker - * Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * C token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class CTokenMarker extends TokenMarker -{ - public CTokenMarker() - { - this(true,getKeywords()); - } - - public CTokenMarker(boolean cpp, KeywordMap keywords) - { - this.cpp = cpp; - this.keywords = keywords; - } - - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - char[] array = line.array; - int offset = line.offset; - lastOffset = offset; - lastKeyword = offset; - int length = line.count + offset; - boolean backslash = false; - -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - char c = array[i]; - if(c == '\\') - { - backslash = !backslash; - continue; - } - - switch(token) - { - case Token.NULL: - switch(c) - { - case '#': - if(backslash) - backslash = false; - else if(cpp) - { - if(doKeyword(line,i,c)) - break; - addToken(i - lastOffset,token); - addToken(length - i,Token.KEYWORD2); - lastOffset = lastKeyword = length; - break loop; - } - break; - case '"': - doKeyword(line,i,c); - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - token = Token.LITERAL1; - lastOffset = lastKeyword = i; - } - break; - case '\'': - doKeyword(line,i,c); - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - token = Token.LITERAL2; - lastOffset = lastKeyword = i; - } - break; - case ':': - if(lastKeyword == offset) - { - if(doKeyword(line,i,c)) - break; - backslash = false; - addToken(i1 - lastOffset,Token.LABEL); - lastOffset = lastKeyword = i1; - } - else if(doKeyword(line,i,c)) - break; - break; - case '/': - backslash = false; - doKeyword(line,i,c); - if(length - i > 1) - { - switch(array[i1]) - { - case '*': - addToken(i - lastOffset,token); - lastOffset = lastKeyword = i; - if(length - i > 2 && array[i+2] == '*') - token = Token.COMMENT2; - else - token = Token.COMMENT1; - break; - case '/': - addToken(i - lastOffset,token); - addToken(length - i,Token.COMMENT1); - lastOffset = lastKeyword = length; - break loop; - } - } - break; - default: - backslash = false; - if(!Character.isLetterOrDigit(c) - && c != '_') - doKeyword(line,i,c); - break; - } - break; - case Token.COMMENT1: - case Token.COMMENT2: - backslash = false; - if(c == '*' && length - i > 1) - { - if(array[i1] == '/') - { - i++; - addToken((i+1) - lastOffset,token); - token = Token.NULL; - lastOffset = lastKeyword = i+1; - } - } - break; - case Token.LITERAL1: - if(backslash) - backslash = false; - else if(c == '"') - { - addToken(i1 - lastOffset,token); - token = Token.NULL; - lastOffset = lastKeyword = i1; - } - break; - case Token.LITERAL2: - if(backslash) - backslash = false; - else if(c == '\'') - { - addToken(i1 - lastOffset,Token.LITERAL1); - token = Token.NULL; - lastOffset = lastKeyword = i1; - } - break; - default: - throw new InternalError("Invalid state: " - + token); - } - } - - if(token == Token.NULL) - doKeyword(line,length,'\0'); - - switch(token) - { - case Token.LITERAL1: - case Token.LITERAL2: - addToken(length - lastOffset,Token.INVALID); - token = Token.NULL; - break; - case Token.KEYWORD2: - addToken(length - lastOffset,token); - if(!backslash) - token = Token.NULL; - default: - addToken(length - lastOffset,token); - break; - } - - return token; - } - - public static KeywordMap getKeywords() - { - if(cKeywords == null) - { - cKeywords = new KeywordMap(false); - cKeywords.add("char",Token.KEYWORD3); - cKeywords.add("double",Token.KEYWORD3); - cKeywords.add("enum",Token.KEYWORD3); - cKeywords.add("float",Token.KEYWORD3); - cKeywords.add("int",Token.KEYWORD3); - cKeywords.add("long",Token.KEYWORD3); - cKeywords.add("short",Token.KEYWORD3); - cKeywords.add("signed",Token.KEYWORD3); - cKeywords.add("struct",Token.KEYWORD3); - cKeywords.add("typedef",Token.KEYWORD3); - cKeywords.add("union",Token.KEYWORD3); - cKeywords.add("unsigned",Token.KEYWORD3); - cKeywords.add("void",Token.KEYWORD3); - cKeywords.add("auto",Token.KEYWORD1); - cKeywords.add("const",Token.KEYWORD1); - cKeywords.add("extern",Token.KEYWORD1); - cKeywords.add("register",Token.KEYWORD1); - cKeywords.add("static",Token.KEYWORD1); - cKeywords.add("volatile",Token.KEYWORD1); - cKeywords.add("break",Token.KEYWORD1); - cKeywords.add("case",Token.KEYWORD1); - cKeywords.add("continue",Token.KEYWORD1); - cKeywords.add("default",Token.KEYWORD1); - cKeywords.add("do",Token.KEYWORD1); - cKeywords.add("else",Token.KEYWORD1); - cKeywords.add("for",Token.KEYWORD1); - cKeywords.add("goto",Token.KEYWORD1); - cKeywords.add("if",Token.KEYWORD1); - cKeywords.add("return",Token.KEYWORD1); - cKeywords.add("sizeof",Token.KEYWORD1); - cKeywords.add("switch",Token.KEYWORD1); - cKeywords.add("while",Token.KEYWORD1); - cKeywords.add("asm",Token.KEYWORD2); - cKeywords.add("asmlinkage",Token.KEYWORD2); - cKeywords.add("far",Token.KEYWORD2); - cKeywords.add("huge",Token.KEYWORD2); - cKeywords.add("inline",Token.KEYWORD2); - cKeywords.add("near",Token.KEYWORD2); - cKeywords.add("pascal",Token.KEYWORD2); - cKeywords.add("true",Token.LITERAL2); - cKeywords.add("false",Token.LITERAL2); - cKeywords.add("NULL",Token.LITERAL2); - } - return cKeywords; - } - - // private members - private static KeywordMap cKeywords; - - private boolean cpp; - private KeywordMap keywords; - private int lastOffset; - private int lastKeyword; - - private boolean doKeyword(Segment line, int i, char c) - { - int i1 = i+1; - - int len = i - lastKeyword; - byte id = keywords.lookup(line,lastKeyword,len); - if(id != Token.NULL) - { - if(lastKeyword != lastOffset) - addToken(lastKeyword - lastOffset,Token.NULL); - addToken(len,id); - lastOffset = i; - } - lastKeyword = i1; - return false; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/DefaultInputHandler.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/DefaultInputHandler.java deleted file mode 100644 index 74ae773c921..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/DefaultInputHandler.java +++ /dev/null @@ -1,346 +0,0 @@ -/* - * DefaultInputHandler.java - Default implementation of an input handler - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.KeyStroke; -import java.awt.event.*; -import java.awt.Toolkit; -import java.util.Hashtable; -import java.util.StringTokenizer; - -/** - * The default input handler. It maps sequences of keystrokes into actions - * and inserts key typed events into the text area. - * @author Slava Pestov - * @version $Id$ - */ -public class DefaultInputHandler extends InputHandler -{ - /** - * Creates a new input handler with no key bindings defined. - */ - public DefaultInputHandler() - { - bindings = currentBindings = new Hashtable(); - } - - /** - * Sets up the default key bindings. - */ - public void addDefaultKeyBindings() - { - addKeyBinding("BACK_SPACE",BACKSPACE); - addKeyBinding("C+BACK_SPACE",BACKSPACE_WORD); - addKeyBinding("DELETE",DELETE); - addKeyBinding("C+DELETE",DELETE_WORD); - - addKeyBinding("ENTER",INSERT_BREAK); - addKeyBinding("TAB",INSERT_TAB); - - addKeyBinding("INSERT",OVERWRITE); - addKeyBinding("C+\\",TOGGLE_RECT); - - addKeyBinding("HOME",HOME); - addKeyBinding("END",END); - addKeyBinding("S+HOME",SELECT_HOME); - addKeyBinding("S+END",SELECT_END); - addKeyBinding("C+HOME",DOCUMENT_HOME); - addKeyBinding("C+END",DOCUMENT_END); - addKeyBinding("CS+HOME",SELECT_DOC_HOME); - addKeyBinding("CS+END",SELECT_DOC_END); - - addKeyBinding("PAGE_UP",PREV_PAGE); - addKeyBinding("PAGE_DOWN",NEXT_PAGE); - addKeyBinding("S+PAGE_UP",SELECT_PREV_PAGE); - addKeyBinding("S+PAGE_DOWN",SELECT_NEXT_PAGE); - - addKeyBinding("LEFT",PREV_CHAR); - addKeyBinding("S+LEFT",SELECT_PREV_CHAR); - addKeyBinding("C+LEFT",PREV_WORD); - addKeyBinding("CS+LEFT",SELECT_PREV_WORD); - addKeyBinding("RIGHT",NEXT_CHAR); - addKeyBinding("S+RIGHT",SELECT_NEXT_CHAR); - addKeyBinding("C+RIGHT",NEXT_WORD); - addKeyBinding("CS+RIGHT",SELECT_NEXT_WORD); - addKeyBinding("UP",PREV_LINE); - addKeyBinding("S+UP",SELECT_PREV_LINE); - addKeyBinding("DOWN",NEXT_LINE); - addKeyBinding("S+DOWN",SELECT_NEXT_LINE); - - addKeyBinding("C+ENTER",REPEAT); - } - - /** - * Adds a key binding to this input handler. The key binding is - * a list of white space separated key strokes of the form - * <i>[modifiers+]key</i> where modifier is C for Control, A for Alt, - * or S for Shift, and key is either a character (a-z) or a field - * name in the KeyEvent class prefixed with VK_ (e.g., BACK_SPACE) - * @param keyBinding The key binding - * @param action The action - */ - public void addKeyBinding(String keyBinding, ActionListener action) - { - Hashtable current = bindings; - - StringTokenizer st = new StringTokenizer(keyBinding); - while(st.hasMoreTokens()) - { - KeyStroke keyStroke = parseKeyStroke(st.nextToken()); - if(keyStroke == null) - return; - - if(st.hasMoreTokens()) - { - Object o = current.get(keyStroke); - if(o instanceof Hashtable) - current = (Hashtable)o; - else - { - o = new Hashtable(); - current.put(keyStroke,o); - current = (Hashtable)o; - } - } - else - current.put(keyStroke,action); - } - } - - /** - * Removes a key binding from this input handler. This is not yet - * implemented. - * @param keyBinding The key binding - */ - public void removeKeyBinding(String keyBinding) - { - throw new InternalError("Not yet implemented"); - } - - /** - * Removes all key bindings from this input handler. - */ - public void removeAllKeyBindings() - { - bindings.clear(); - } - - /** - * Returns a copy of this input handler that shares the same - * key bindings. Setting key bindings in the copy will also - * set them in the original. - */ - public InputHandler copy() - { - return new DefaultInputHandler(this); - } - - /** - * Handle a key pressed event. This will look up the binding for - * the key stroke and execute it. - */ - public void keyPressed(KeyEvent evt) - { - int keyCode = evt.getKeyCode(); - int modifiers = evt.getModifiers(); - - if(keyCode == KeyEvent.VK_CONTROL || - keyCode == KeyEvent.VK_SHIFT || - keyCode == KeyEvent.VK_ALT || - keyCode == KeyEvent.VK_META) - return; - - if((modifiers & ~KeyEvent.SHIFT_MASK) != 0 - || evt.isActionKey() - || keyCode == KeyEvent.VK_BACK_SPACE - || keyCode == KeyEvent.VK_DELETE - || keyCode == KeyEvent.VK_ENTER - || keyCode == KeyEvent.VK_TAB - || keyCode == KeyEvent.VK_ESCAPE) - { - if(grabAction != null) - { - handleGrabAction(evt); - return; - } - - KeyStroke keyStroke = KeyStroke.getKeyStroke(keyCode, - modifiers); - Object o = currentBindings.get(keyStroke); - if(o == null) - { - // Don't beep if the user presses some - // key we don't know about unless a - // prefix is active. Otherwise it will - // beep when caps lock is pressed, etc. - if(currentBindings != bindings) - { - Toolkit.getDefaultToolkit().beep(); - // F10 should be passed on, but C+e F10 - // shouldn't - repeatCount = 0; - repeat = false; - evt.consume(); - } - currentBindings = bindings; - return; - } - else if(o instanceof ActionListener) - { - currentBindings = bindings; - - executeAction(((ActionListener)o), - evt.getSource(),null); - - evt.consume(); - return; - } - else if(o instanceof Hashtable) - { - currentBindings = (Hashtable)o; - evt.consume(); - return; - } - } - } - - /** - * Handle a key typed event. This inserts the key into the text area. - */ - public void keyTyped(KeyEvent evt) - { - int modifiers = evt.getModifiers(); - char c = evt.getKeyChar(); - if(c != KeyEvent.CHAR_UNDEFINED && - (modifiers & KeyEvent.ALT_MASK) == 0) - { - if(c >= 0x20 && c != 0x7f) - { - KeyStroke keyStroke = KeyStroke.getKeyStroke( - Character.toUpperCase(c)); - Object o = currentBindings.get(keyStroke); - - if(o instanceof Hashtable) - { - currentBindings = (Hashtable)o; - return; - } - else if(o instanceof ActionListener) - { - currentBindings = bindings; - executeAction((ActionListener)o, - evt.getSource(), - String.valueOf(c)); - return; - } - - currentBindings = bindings; - - if(grabAction != null) - { - handleGrabAction(evt); - return; - } - - // 0-9 adds another 'digit' to the repeat number - if(repeat && Character.isDigit(c)) - { - repeatCount *= 10; - repeatCount += (c - '0'); - return; - } - - executeAction(INSERT_CHAR,evt.getSource(), - String.valueOf(evt.getKeyChar())); - - repeatCount = 0; - repeat = false; - } - } - } - - /** - * Converts a string to a keystroke. The string should be of the - * form <i>modifiers</i>+<i>shortcut</i> where <i>modifiers</i> - * is any combination of A for Alt, C for Control, S for Shift - * or M for Meta, and <i>shortcut</i> is either a single character, - * or a keycode name from the <code>KeyEvent</code> class, without - * the <code>VK_</code> prefix. - * @param keyStroke A string description of the key stroke - */ - public static KeyStroke parseKeyStroke(String keyStroke) - { - if(keyStroke == null) - return null; - int modifiers = 0; - int index = keyStroke.indexOf('+'); - if(index != -1) - { - for(int i = 0; i < index; i++) - { - switch(Character.toUpperCase(keyStroke - .charAt(i))) - { - case 'A': - modifiers |= InputEvent.ALT_MASK; - break; - case 'C': - modifiers |= InputEvent.CTRL_MASK; - break; - case 'M': - modifiers |= InputEvent.META_MASK; - break; - case 'S': - modifiers |= InputEvent.SHIFT_MASK; - break; - } - } - } - String key = keyStroke.substring(index + 1); - if(key.length() == 1) - { - char ch = Character.toUpperCase(key.charAt(0)); - if(modifiers == 0) - return KeyStroke.getKeyStroke(ch); - else - return KeyStroke.getKeyStroke(ch,modifiers); - } - else if(key.length() == 0) - { - System.err.println("Invalid key stroke: " + keyStroke); - return null; - } - else - { - int ch; - - try - { - ch = KeyEvent.class.getField("VK_".concat(key)) - .getInt(null); - } - catch(Exception e) - { - System.err.println("Invalid key stroke: " - + keyStroke); - return null; - } - - return KeyStroke.getKeyStroke(ch,modifiers); - } - } - - // private members - private Hashtable bindings; - private Hashtable currentBindings; - - private DefaultInputHandler(DefaultInputHandler copy) - { - bindings = currentBindings = copy.bindings; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/DefaultTransparentListCellRenderer.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/DefaultTransparentListCellRenderer.java deleted file mode 100644 index cfd676242e5..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/DefaultTransparentListCellRenderer.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * SwingEx Project - * - * This class is part of the Swing Extension Project. The goal of this project - * is to provide Swing components with extra functionality that isn't available - * in the standard Swing components from Sun. - * - * @author Jeroen Zwartepoorte (Jeroen@xs4all.nl) - */ -package org.astron.util.gui; -import java.awt.Component; -import javax.swing.*; - -/** - * This component contains extended functionality that DefaultListCellRenderer - * doesn't have. The DefaultListCellRenderer doesn't work when using a background - * image in a JList. The opaque (transparency) value is set to true (not - * transparent) when the cell is selected. It's set to false (transparent) when - * the is not selected.<BR><BR> - * - * <B>Notes :</B> Any suggestions on extra functionality are welcome! - * - * @author Jeroen Zwartepoorte (<A HREF="mailto:Jeroen@xs4all.nl">Jeroen@xs4all.nl</A>) - * @version 1.0 (13-02-1999) - */ -public class DefaultTransparentListCellRenderer extends DefaultListCellRenderer -{ - /** - * Constructor. - */ - public DefaultTransparentListCellRenderer() - { - super(); - } - - /** - * Set the cells opaque value to true when selected, false when not selected. - * Source used of DefaultListCellRenderer.java. - */ - public Component getListCellRendererComponent(JList list, Object value, - int index, boolean isSelected, boolean cellHasFocus) - { - if (isSelected) - { - setOpaque(true); - setBackground(list.getSelectionBackground()); - setForeground(list.getSelectionForeground()); - } - else - { - setOpaque(false); - setBackground(list.getBackground()); - setForeground(list.getForeground()); - } - - if (value instanceof Icon) - setIcon((Icon)value); - else - setText((value == null) ? "" : value.toString()); - - setEnabled(list.isEnabled()); - setFont(list.getFont()); - setBorder((cellHasFocus) ? UIManager.getBorder("List.focusCellHighlightBorder") : noFocusBorder); - - return this; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/EiffelTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/EiffelTokenMarker.java deleted file mode 100644 index 15f8546198d..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/EiffelTokenMarker.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * EiffelTokenMarker.java - Eiffel token marker - * Copyright (C) 1999 Slava Pestov - * Copyright (C) 1999 Artur Biesiadowski - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ - -package org.astron.util.gui; - -import javax.swing.text.Segment; - -/** - * Eiffel token Marker. - * - * @author Artur Biesiadowski - */ -public class EiffelTokenMarker extends TokenMarker -{ - - public EiffelTokenMarker() - { - this.keywords = getKeywords(); - } - - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - char[] array = line.array; - int offset = line.offset; - lastOffset = offset; - lastKeyword = offset; - int length = line.count + offset; - boolean backslash = false; - -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - char c = array[i]; - if(c == '%') - { - backslash = !backslash; - continue; - } - - switch(token) - { - case Token.NULL: - switch(c) - { - case '"': - doKeyword(line,i,c); - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - token = Token.LITERAL1; - lastOffset = lastKeyword = i; - } - break; - case '\'': - doKeyword(line,i,c); - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - token = Token.LITERAL2; - lastOffset = lastKeyword = i; - } - break; - case ':': - if(lastKeyword == offset) - { - if(doKeyword(line,i,c)) - break; - backslash = false; - addToken(i1 - lastOffset,Token.LABEL); - lastOffset = lastKeyword = i1; - } - else if(doKeyword(line,i,c)) - break; - break; - case '-': - backslash = false; - doKeyword(line,i,c); - if(length - i > 1) - { - switch(array[i1]) - { - case '-': - addToken(i - lastOffset,token); - addToken(length - i,Token.COMMENT1); - lastOffset = lastKeyword = length; - break loop; - } - } - break; - default: - backslash = false; - if(!Character.isLetterOrDigit(c) - && c != '_') - doKeyword(line,i,c); - break; - } - break; - case Token.COMMENT1: - case Token.COMMENT2: - throw new RuntimeException("Wrong eiffel parser state"); - case Token.LITERAL1: - if(backslash) - backslash = false; - else if(c == '"') - { - addToken(i1 - lastOffset,token); - token = Token.NULL; - lastOffset = lastKeyword = i1; - } - break; - case Token.LITERAL2: - if(backslash) - backslash = false; - else if(c == '\'') - { - addToken(i1 - lastOffset,Token.LITERAL1); - token = Token.NULL; - lastOffset = lastKeyword = i1; - } - break; - default: - throw new InternalError("Invalid state: " - + token); - } - } - - if(token == Token.NULL) - doKeyword(line,length,'\0'); - - switch(token) - { - case Token.LITERAL1: - case Token.LITERAL2: - addToken(length - lastOffset,Token.INVALID); - token = Token.NULL; - break; - case Token.KEYWORD2: - addToken(length - lastOffset,token); - if(!backslash) - token = Token.NULL; - default: - addToken(length - lastOffset,token); - break; - } - - return token; - } - - public static KeywordMap getKeywords() - { - if(eiffelKeywords == null) - { - eiffelKeywords = new KeywordMap(true); - eiffelKeywords.add("alias", Token.KEYWORD1); - eiffelKeywords.add("all", Token.KEYWORD1); - eiffelKeywords.add("and", Token.KEYWORD1); - eiffelKeywords.add("as", Token.KEYWORD1); - eiffelKeywords.add("check", Token.KEYWORD1); - eiffelKeywords.add("class", Token.KEYWORD1); - eiffelKeywords.add("creation", Token.KEYWORD1); - eiffelKeywords.add("debug", Token.KEYWORD1); - eiffelKeywords.add("deferred", Token.KEYWORD1); - eiffelKeywords.add("do", Token.KEYWORD1); - eiffelKeywords.add("else",Token.KEYWORD1); - eiffelKeywords.add("elseif", Token.KEYWORD1); - eiffelKeywords.add("end", Token.KEYWORD1); - eiffelKeywords.add("ensure", Token.KEYWORD1); - eiffelKeywords.add("expanded", Token.KEYWORD1); - eiffelKeywords.add("export", Token.KEYWORD1); - eiffelKeywords.add("external", Token.KEYWORD1); - eiffelKeywords.add("feature", Token.KEYWORD1); - eiffelKeywords.add("from", Token.KEYWORD1); - eiffelKeywords.add("frozen", Token.KEYWORD1); - eiffelKeywords.add("if", Token.KEYWORD1); - eiffelKeywords.add("implies",Token.KEYWORD1); - eiffelKeywords.add("indexing", Token.KEYWORD1); - eiffelKeywords.add("infix", Token.KEYWORD1); - eiffelKeywords.add("inherit", Token.KEYWORD1); - eiffelKeywords.add("inspect", Token.KEYWORD1); - eiffelKeywords.add("invariant", Token.KEYWORD1); - eiffelKeywords.add("is", Token.KEYWORD1); - eiffelKeywords.add("like", Token.KEYWORD1); - eiffelKeywords.add("local", Token.KEYWORD1); - eiffelKeywords.add("loop", Token.KEYWORD1); - eiffelKeywords.add("not", Token.KEYWORD1); - eiffelKeywords.add("obsolete", Token.KEYWORD1); - eiffelKeywords.add("old",Token.KEYWORD1); - eiffelKeywords.add("once", Token.KEYWORD1); - eiffelKeywords.add("or", Token.KEYWORD1); - eiffelKeywords.add("prefix", Token.KEYWORD1); - eiffelKeywords.add("redefine", Token.KEYWORD1); - eiffelKeywords.add("rename", Token.KEYWORD1); - eiffelKeywords.add("require", Token.KEYWORD1); - eiffelKeywords.add("rescue", Token.KEYWORD1); - eiffelKeywords.add("retry", Token.KEYWORD1); - eiffelKeywords.add("select", Token.KEYWORD1); - eiffelKeywords.add("separate", Token.KEYWORD1); - eiffelKeywords.add("then",Token.KEYWORD1); - eiffelKeywords.add("undefine", Token.KEYWORD1); - eiffelKeywords.add("until", Token.KEYWORD1); - eiffelKeywords.add("variant", Token.KEYWORD1); - eiffelKeywords.add("when", Token.KEYWORD1); - eiffelKeywords.add("xor", Token.KEYWORD1); - - eiffelKeywords.add("current",Token.LITERAL2); - eiffelKeywords.add("false",Token.LITERAL2); - eiffelKeywords.add("precursor",Token.LITERAL2); - eiffelKeywords.add("result",Token.LITERAL2); - eiffelKeywords.add("strip",Token.LITERAL2); - eiffelKeywords.add("true",Token.LITERAL2); - eiffelKeywords.add("unique",Token.LITERAL2); - eiffelKeywords.add("void",Token.LITERAL2); - - } - return eiffelKeywords; - } - - // private members - private static KeywordMap eiffelKeywords; - - private boolean cpp; - private KeywordMap keywords; - private int lastOffset; - private int lastKeyword; - - private boolean doKeyword(Segment line, int i, char c) - { - int i1 = i+1; - boolean klassname = false; - - int len = i - lastKeyword; - byte id = keywords.lookup(line,lastKeyword,len); - if ( id == Token.NULL ) - { - klassname = true; - for ( int at = lastKeyword; at < lastKeyword + len; at++ ) - { - char ch = line.array[at]; - if ( ch != '_' && !Character.isUpperCase(ch) ) - { - klassname = false; - break; - } - } - if ( klassname ) - id = Token.KEYWORD3; - } - - if(id != Token.NULL) - { - if(lastKeyword != lastOffset) - addToken(lastKeyword - lastOffset,Token.NULL); - addToken(len,id); - lastOffset = i; - } - lastKeyword = i1; - return false; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/HTMLTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/HTMLTokenMarker.java deleted file mode 100644 index f3c784004c0..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/HTMLTokenMarker.java +++ /dev/null @@ -1,259 +0,0 @@ -/* - * HTMLTokenMarker.java - HTML token marker - * Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * HTML token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class HTMLTokenMarker extends TokenMarker -{ - public static final byte JAVASCRIPT = Token.INTERNAL_FIRST; - - public HTMLTokenMarker() - { - this(true); - } - - public HTMLTokenMarker(boolean js) - { - this.js = js; - keywords = JavaScriptTokenMarker.getKeywords(); - } - - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - char[] array = line.array; - int offset = line.offset; - lastOffset = offset; - lastKeyword = offset; - int length = line.count + offset; - boolean backslash = false; - -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - char c = array[i]; - if(c == '\\') - { - backslash = !backslash; - continue; - } - - switch(token) - { - case Token.NULL: // HTML text - backslash = false; - switch(c) - { - case '<': - addToken(i - lastOffset,token); - lastOffset = lastKeyword = i; - if(SyntaxUtilities.regionMatches(false, - line,i1,"!--")) - { - i += 3; - token = Token.COMMENT1; - } - else if(js && SyntaxUtilities.regionMatches( - true,line,i1,"script>")) - { - addToken(8,Token.KEYWORD1); - lastOffset = lastKeyword = (i += 8); - token = JAVASCRIPT; - } - else - { - token = Token.KEYWORD1; - } - break; - case '&': - addToken(i - lastOffset,token); - lastOffset = lastKeyword = i; - token = Token.KEYWORD2; - break; - } - break; - case Token.KEYWORD1: // Inside a tag - backslash = false; - if(c == '>') - { - addToken(i1 - lastOffset,token); - lastOffset = lastKeyword = i1; - token = Token.NULL; - } - break; - case Token.KEYWORD2: // Inside an entity - backslash = false; - if(c == ';') - { - addToken(i1 - lastOffset,token); - lastOffset = lastKeyword = i1; - token = Token.NULL; - break; - } - break; - case Token.COMMENT1: // Inside a comment - backslash = false; - if(SyntaxUtilities.regionMatches(false,line,i,"-->")) - { - addToken((i + 3) - lastOffset,token); - lastOffset = lastKeyword = i + 3; - token = Token.NULL; - } - break; - case JAVASCRIPT: // Inside a JavaScript - switch(c) - { - case '<': - backslash = false; - doKeyword(line,i,c); - if(SyntaxUtilities.regionMatches(true, - line,i1,"/script>")) - { - addToken(i - lastOffset, - Token.NULL); - addToken(9,Token.KEYWORD1); - lastOffset = lastKeyword = (i += 9); - token = Token.NULL; - } - break; - case '"': - if(backslash) - backslash = false; - else - { - doKeyword(line,i,c); - addToken(i - lastOffset,Token.NULL); - lastOffset = lastKeyword = i; - token = Token.LITERAL1; - } - break; - case '\'': - if(backslash) - backslash = false; - else - { - doKeyword(line,i,c); - addToken(i - lastOffset,Token.NULL); - lastOffset = lastKeyword = i; - token = Token.LITERAL2; - } - break; - case '/': - backslash = false; - doKeyword(line,i,c); - if(length - i > 1) - { - addToken(i - lastOffset,Token.NULL); - lastOffset = lastKeyword = i; - if(array[i1] == '/') - { - addToken(length - i,Token.COMMENT2); - lastOffset = lastKeyword = length; - break loop; - } - else if(array[i1] == '*') - { - token = Token.COMMENT2; - } - } - break; - default: backslash = false; - if(!Character.isLetterOrDigit(c) - && c != '_') - doKeyword(line,i,c); - break; - } - break; - case Token.LITERAL1: // JavaScript "..." - if(backslash) - backslash = false; - else if(c == '"') - { - addToken(i1 - lastOffset,Token.LITERAL1); - lastOffset = lastKeyword = i1; - token = JAVASCRIPT; - } - break; - case Token.LITERAL2: // JavaScript '...' - if(backslash) - backslash = false; - else if(c == '\'') - { - addToken(i1 - lastOffset,Token.LITERAL1); - lastOffset = lastKeyword = i1; - token = JAVASCRIPT; - } - break; - case Token.COMMENT2: // Inside a JavaScript comment - backslash = false; - if(c == '*' && length - i > 1 && array[i1] == '/') - { - addToken((i+=2) - lastOffset,Token.COMMENT2); - lastOffset = lastKeyword = i; - token = JAVASCRIPT; - } - break; - default: - throw new InternalError("Invalid state: " - + token); - } - } - - switch(token) - { - case Token.LITERAL1: - case Token.LITERAL2: - addToken(length - lastOffset,Token.INVALID); - token = JAVASCRIPT; - break; - case Token.KEYWORD2: - addToken(length - lastOffset,Token.INVALID); - token = Token.NULL; - break; - case JAVASCRIPT: - doKeyword(line,length,'\0'); - addToken(length - lastOffset,Token.NULL); - break; - default: - addToken(length - lastOffset,token); - break; - } - - return token; - } - - // private members - private KeywordMap keywords; - private boolean js; - private int lastOffset; - private int lastKeyword; - - private boolean doKeyword(Segment line, int i, char c) - { - int i1 = i+1; - - int len = i - lastKeyword; - byte id = keywords.lookup(line,lastKeyword,len); - if(id != Token.NULL) - { - if(lastKeyword != lastOffset) - addToken(lastKeyword - lastOffset,Token.NULL); - addToken(len,id); - lastOffset = i; - } - lastKeyword = i1; - return false; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/IDLTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/IDLTokenMarker.java deleted file mode 100644 index f1ae0d78d2a..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/IDLTokenMarker.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * IDLTokenMarker.java - IDL token marker - * Copyright (C) 1999 Slava Pestov - * Copyright (C) 1999 Juha Lindfors - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * IDL token marker. - * - * @author Slava Pestov - * @author Juha Lindfors - * @version $Id$ - */ -public class IDLTokenMarker extends CTokenMarker -{ - public IDLTokenMarker() - { - super(true,getKeywords()); - } - - public static KeywordMap getKeywords() - { - if(idlKeywords == null) - { - idlKeywords = new KeywordMap(false); - - idlKeywords.add("any", Token.KEYWORD3); - idlKeywords.add("attribute",Token.KEYWORD1); - idlKeywords.add("boolean", Token.KEYWORD3); - idlKeywords.add("case", Token.KEYWORD1); - idlKeywords.add("char", Token.KEYWORD3); - idlKeywords.add("const", Token.KEYWORD1); - idlKeywords.add("context", Token.KEYWORD1); - idlKeywords.add("default", Token.KEYWORD1); - idlKeywords.add("double", Token.KEYWORD3); - idlKeywords.add("enum", Token.KEYWORD3); - idlKeywords.add("exception",Token.KEYWORD1); - idlKeywords.add("FALSE", Token.LITERAL2); - idlKeywords.add("fixed", Token.KEYWORD1); - idlKeywords.add("float", Token.KEYWORD3); - idlKeywords.add("in", Token.KEYWORD1); - idlKeywords.add("inout", Token.KEYWORD1); - idlKeywords.add("interface",Token.KEYWORD1); - idlKeywords.add("long", Token.KEYWORD3); - idlKeywords.add("module", Token.KEYWORD1); - idlKeywords.add("Object", Token.KEYWORD3); - idlKeywords.add("octet", Token.KEYWORD3); - idlKeywords.add("oneway", Token.KEYWORD1); - idlKeywords.add("out", Token.KEYWORD1); - idlKeywords.add("raises", Token.KEYWORD1); - idlKeywords.add("readonly", Token.KEYWORD1); - idlKeywords.add("sequence", Token.KEYWORD3); - idlKeywords.add("short", Token.KEYWORD3); - idlKeywords.add("string", Token.KEYWORD3); - idlKeywords.add("struct", Token.KEYWORD3); - idlKeywords.add("switch", Token.KEYWORD1); - idlKeywords.add("TRUE", Token.LITERAL2); - idlKeywords.add("typedef", Token.KEYWORD3); - idlKeywords.add("unsigned", Token.KEYWORD3); - idlKeywords.add("union", Token.KEYWORD3); - idlKeywords.add("void", Token.KEYWORD3); - idlKeywords.add("wchar", Token.KEYWORD3); - idlKeywords.add("wstring", Token.KEYWORD3); - } - return idlKeywords; - } - - // private members - private static KeywordMap idlKeywords; -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/InputHandler.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/InputHandler.java deleted file mode 100644 index 05c0afc496a..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/InputHandler.java +++ /dev/null @@ -1,1071 +0,0 @@ -/* - * InputHandler.java - Manages key bindings and executes actions - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ - -package org.astron.util.gui; - -import javax.swing.text.*; -import javax.swing.JPopupMenu; -import java.awt.event.*; -import java.awt.Component; -import java.util.*; - -/** - * An input handler converts the user's key strokes into concrete actions. - * It also takes care of macro recording and action repetition.<p> - * - * This class provides all the necessary support code for an input - * handler, but doesn't actually do any key binding logic. It is up - * to the implementations of this class to do so. - * - * @author Slava Pestov - * @version $Id$ - * @see org.gjt.sp.jedit.textarea.DefaultInputHandler - */ -public abstract class InputHandler extends KeyAdapter -{ - /** - * If this client property is set to Boolean.TRUE on the text area, - * the home/end keys will support 'smart' BRIEF-like behaviour - * (one press = start/end of line, two presses = start/end of - * viewscreen, three presses = start/end of document). By default, - * this property is not set. - */ - public static final String SMART_HOME_END_PROPERTY = "InputHandler.homeEnd"; - - public static final ActionListener BACKSPACE = new backspace(); - public static final ActionListener BACKSPACE_WORD = new backspace_word(); - public static final ActionListener DELETE = new delete(); - public static final ActionListener DELETE_WORD = new delete_word(); - public static final ActionListener END = new end(false); - public static final ActionListener DOCUMENT_END = new document_end(false); - public static final ActionListener SELECT_END = new end(true); - public static final ActionListener SELECT_DOC_END = new document_end(true); - public static final ActionListener INSERT_BREAK = new insert_break(); - public static final ActionListener INSERT_TAB = new insert_tab(); - public static final ActionListener HOME = new home(false); - public static final ActionListener DOCUMENT_HOME = new document_home(false); - public static final ActionListener SELECT_HOME = new home(true); - public static final ActionListener SELECT_DOC_HOME = new document_home(true); - public static final ActionListener NEXT_CHAR = new next_char(false); - public static final ActionListener NEXT_LINE = new next_line(false); - public static final ActionListener NEXT_PAGE = new next_page(false); - public static final ActionListener NEXT_WORD = new next_word(false); - public static final ActionListener SELECT_NEXT_CHAR = new next_char(true); - public static final ActionListener SELECT_NEXT_LINE = new next_line(true); - public static final ActionListener SELECT_NEXT_PAGE = new next_page(true); - public static final ActionListener SELECT_NEXT_WORD = new next_word(true); - public static final ActionListener OVERWRITE = new overwrite(); - public static final ActionListener PREV_CHAR = new prev_char(false); - public static final ActionListener PREV_LINE = new prev_line(false); - public static final ActionListener PREV_PAGE = new prev_page(false); - public static final ActionListener PREV_WORD = new prev_word(false); - public static final ActionListener SELECT_PREV_CHAR = new prev_char(true); - public static final ActionListener SELECT_PREV_LINE = new prev_line(true); - public static final ActionListener SELECT_PREV_PAGE = new prev_page(true); - public static final ActionListener SELECT_PREV_WORD = new prev_word(true); - public static final ActionListener REPEAT = new repeat(); - public static final ActionListener TOGGLE_RECT = new toggle_rect(); - - // Default action - public static final ActionListener INSERT_CHAR = new insert_char(); - - private static Hashtable actions; - - static - { - actions = new Hashtable(); - actions.put("backspace",BACKSPACE); - actions.put("backspace-word",BACKSPACE_WORD); - actions.put("delete",DELETE); - actions.put("delete-word",DELETE_WORD); - actions.put("end",END); - actions.put("select-end",SELECT_END); - actions.put("document-end",DOCUMENT_END); - actions.put("select-doc-end",SELECT_DOC_END); - actions.put("insert-break",INSERT_BREAK); - actions.put("insert-tab",INSERT_TAB); - actions.put("home",HOME); - actions.put("select-home",SELECT_HOME); - actions.put("document-home",DOCUMENT_HOME); - actions.put("select-doc-home",SELECT_DOC_HOME); - actions.put("next-char",NEXT_CHAR); - actions.put("next-line",NEXT_LINE); - actions.put("next-page",NEXT_PAGE); - actions.put("next-word",NEXT_WORD); - actions.put("select-next-char",SELECT_NEXT_CHAR); - actions.put("select-next-line",SELECT_NEXT_LINE); - actions.put("select-next-page",SELECT_NEXT_PAGE); - actions.put("select-next-word",SELECT_NEXT_WORD); - actions.put("overwrite",OVERWRITE); - actions.put("prev-char",PREV_CHAR); - actions.put("prev-line",PREV_LINE); - actions.put("prev-page",PREV_PAGE); - actions.put("prev-word",PREV_WORD); - actions.put("select-prev-char",SELECT_PREV_CHAR); - actions.put("select-prev-line",SELECT_PREV_LINE); - actions.put("select-prev-page",SELECT_PREV_PAGE); - actions.put("select-prev-word",SELECT_PREV_WORD); - actions.put("repeat",REPEAT); - actions.put("toggle-rect",TOGGLE_RECT); - actions.put("insert-char",INSERT_CHAR); - } - - /** - * Returns a named text area action. - * @param name The action name - */ - public static ActionListener getAction(String name) - { - return (ActionListener)actions.get(name); - } - - /** - * Returns the name of the specified text area action. - * @param listener The action - */ - public static String getActionName(ActionListener listener) - { - Enumeration enum = getActions(); - while(enum.hasMoreElements()) - { - String name = (String)enum.nextElement(); - ActionListener _listener = getAction(name); - if(_listener == listener) - return name; - } - return null; - } - - /** - * Returns an enumeration of all available actions. - */ - public static Enumeration getActions() - { - return actions.keys(); - } - - /** - * Adds the default key bindings to this input handler. - * This should not be called in the constructor of this - * input handler, because applications might load the - * key bindings from a file, etc. - */ - public abstract void addDefaultKeyBindings(); - - /** - * Adds a key binding to this input handler. - * @param keyBinding The key binding (the format of this is - * input-handler specific) - * @param action The action - */ - public abstract void addKeyBinding(String keyBinding, ActionListener action); - - /** - * Removes a key binding from this input handler. - * @param keyBinding The key binding - */ - public abstract void removeKeyBinding(String keyBinding); - - /** - * Removes all key bindings from this input handler. - */ - public abstract void removeAllKeyBindings(); - - /** - * Grabs the next key typed event and invokes the specified - * action with the key as a the action command. - * @param action The action - */ - public void grabNextKeyStroke(ActionListener listener) - { - grabAction = listener; - } - - /** - * Returns if repeating is enabled. When repeating is enabled, - * actions will be executed multiple times. This is usually - * invoked with a special key stroke in the input handler. - */ - public boolean isRepeatEnabled() - { - return repeat; - } - - /** - * Enables repeating. When repeating is enabled, actions will be - * executed multiple times. Once repeating is enabled, the input - * handler should read a number from the keyboard. - */ - public void setRepeatEnabled(boolean repeat) - { - this.repeat = repeat; - } - - /** - * Returns the number of times the next action will be repeated. - */ - public int getRepeatCount() - { - return (repeat ? Math.max(1,repeatCount) : 1); - } - - /** - * Sets the number of times the next action will be repeated. - * @param repeatCount The repeat count - */ - public void setRepeatCount(int repeatCount) - { - this.repeatCount = repeatCount; - } - - /** - * Returns the macro recorder. If this is non-null, all executed - * actions should be forwarded to the recorder. - */ - public InputHandler.MacroRecorder getMacroRecorder() - { - return recorder; - } - - /** - * Sets the macro recorder. If this is non-null, all executed - * actions should be forwarded to the recorder. - * @param recorder The macro recorder - */ - public void setMacroRecorder(InputHandler.MacroRecorder recorder) - { - this.recorder = recorder; - } - - /** - * Returns a copy of this input handler that shares the same - * key bindings. Setting key bindings in the copy will also - * set them in the original. - */ - public abstract InputHandler copy(); - - /** - * Executes the specified action, repeating and recording it as - * necessary. - * @param listener The action listener - * @param source The event source - * @param actionCommand The action command - */ - public void executeAction(ActionListener listener, Object source, - String actionCommand) - { - // create event - ActionEvent evt = new ActionEvent(source, - ActionEvent.ACTION_PERFORMED, - actionCommand); - - // don't do anything if the action is a wrapper - // (like EditAction.Wrapper) - if(listener instanceof Wrapper) - { - listener.actionPerformed(evt); - return; - } - - // remember old values, in case action changes them - boolean _repeat = repeat; - int _repeatCount = getRepeatCount(); - - // execute the action - if(listener instanceof InputHandler.NonRepeatable) - listener.actionPerformed(evt); - else - { - for(int i = 0; i < Math.max(1,repeatCount); i++) - listener.actionPerformed(evt); - } - - // do recording. Notice that we do no recording whatsoever - // for actions that grab keys - if(grabAction == null) - { - if(recorder != null) - { - if(!(listener instanceof InputHandler.NonRecordable)) - { - if(_repeatCount != 1) - recorder.actionPerformed(REPEAT,String.valueOf(_repeatCount)); - - recorder.actionPerformed(listener,actionCommand); - } - } - - // If repeat was true originally, clear it - // Otherwise it might have been set by the action, etc - if(_repeat) - { - repeat = false; - repeatCount = 0; - } - } - } - - /** - * Returns the text area that fired the specified event. - * @param evt The event - */ - public static JEditTextArea getTextArea(EventObject evt) - { - if(evt != null) - { - Object o = evt.getSource(); - if(o instanceof Component) - { - // find the parent text area - Component c = (Component)o; - for(;;) - { - if(c instanceof JEditTextArea) - return (JEditTextArea)c; - else if(c == null) - break; - if(c instanceof JPopupMenu) - c = ((JPopupMenu)c) - .getInvoker(); - else - c = c.getParent(); - } - } - } - - // this shouldn't happen - System.err.println("BUG: getTextArea() returning null"); - System.err.println("Report this to Slava Pestov <sp@gjt.org>"); - return null; - } - - // protected members - - /** - * If a key is being grabbed, this method should be called with - * the appropriate key event. It executes the grab action with - * the typed character as the parameter. - */ - protected void handleGrabAction(KeyEvent evt) - { - // Clear it *before* it is executed so that executeAction() - // resets the repeat count - ActionListener _grabAction = grabAction; - grabAction = null; - executeAction(_grabAction,evt.getSource(), - String.valueOf(evt.getKeyChar())); - } - - // protected members - protected ActionListener grabAction; - protected boolean repeat; - protected int repeatCount; - protected InputHandler.MacroRecorder recorder; - - /** - * If an action implements this interface, it should not be repeated. - * Instead, it will handle the repetition itself. - */ - public interface NonRepeatable {} - - /** - * If an action implements this interface, it should not be recorded - * by the macro recorder. Instead, it will do its own recording. - */ - public interface NonRecordable {} - - /** - * For use by EditAction.Wrapper only. - * @since jEdit 2.2final - */ - public interface Wrapper {} - - /** - * Macro recorder. - */ - public interface MacroRecorder - { - void actionPerformed(ActionListener listener, - String actionCommand); - } - - public static class backspace implements ActionListener - { - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - - if(!textArea.isEditable()) - { - textArea.getToolkit().beep(); - return; - } - - if(textArea.getSelectionStart() - != textArea.getSelectionEnd()) - { - textArea.setSelectedText(""); - } - else - { - int caret = textArea.getCaretPosition(); - if(caret == 0) - { - textArea.getToolkit().beep(); - return; - } - try - { - textArea.getDocument().remove(caret - 1,1); - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - } - } - } - } - - public static class backspace_word implements ActionListener - { - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - int start = textArea.getSelectionStart(); - if(start != textArea.getSelectionEnd()) - { - textArea.setSelectedText(""); - } - - int line = textArea.getCaretLine(); - int lineStart = textArea.getLineStartOffset(line); - int caret = start - lineStart; - - String lineText = textArea.getLineText(textArea - .getCaretLine()); - - if(caret == 0) - { - if(lineStart == 0) - { - textArea.getToolkit().beep(); - return; - } - caret--; - } - else - { - String noWordSep = (String)textArea.getDocument().getProperty("noWordSep"); - caret = TextUtilities.findWordStart(lineText,caret,noWordSep); - } - - try - { - textArea.getDocument().remove( - caret + lineStart, - start - (caret + lineStart)); - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - } - } - } - - public static class delete implements ActionListener - { - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - - if(!textArea.isEditable()) - { - textArea.getToolkit().beep(); - return; - } - - if(textArea.getSelectionStart() - != textArea.getSelectionEnd()) - { - textArea.setSelectedText(""); - } - else - { - int caret = textArea.getCaretPosition(); - if(caret == textArea.getDocumentLength()) - { - textArea.getToolkit().beep(); - return; - } - try - { - textArea.getDocument().remove(caret,1); - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - } - } - } - } - - public static class delete_word implements ActionListener - { - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - int start = textArea.getSelectionStart(); - if(start != textArea.getSelectionEnd()) - { - textArea.setSelectedText(""); - } - - int line = textArea.getCaretLine(); - int lineStart = textArea.getLineStartOffset(line); - int caret = start - lineStart; - - String lineText = textArea.getLineText(textArea - .getCaretLine()); - - if(caret == lineText.length()) - { - if(lineStart + caret == textArea.getDocumentLength()) - { - textArea.getToolkit().beep(); - return; - } - caret++; - } - else - { - String noWordSep = (String)textArea.getDocument().getProperty("noWordSep"); - caret = TextUtilities.findWordEnd(lineText,caret,noWordSep); - } - - try - { - textArea.getDocument().remove(start, - (caret + lineStart) - start); - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - } - } - } - - public static class end implements ActionListener - { - private boolean select; - - public end(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - - int caret = textArea.getCaretPosition(); - - int lastOfLine = textArea.getLineEndOffset( - textArea.getCaretLine()) - 1; - int lastVisibleLine = textArea.getFirstLine() - + textArea.getVisibleLines(); - if(lastVisibleLine >= textArea.getLineCount()) - { - lastVisibleLine = Math.min(textArea.getLineCount() - 1, - lastVisibleLine); - } - else - lastVisibleLine -= (textArea.getElectricScroll() + 1); - - int lastVisible = textArea.getLineEndOffset(lastVisibleLine) - 1; - int lastDocument = textArea.getDocumentLength(); - - if(caret == lastDocument) - { - textArea.getToolkit().beep(); - return; - } - else if(!Boolean.TRUE.equals(textArea.getClientProperty( - SMART_HOME_END_PROPERTY))) - caret = lastOfLine; - else if(caret == lastVisible) - caret = lastDocument; - else if(caret == lastOfLine) - caret = lastVisible; - else - caret = lastOfLine; - - if(select) - textArea.select(textArea.getMarkPosition(),caret); - else - textArea.setCaretPosition(caret); - } - } - - public static class document_end implements ActionListener - { - private boolean select; - - public document_end(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - if(select) - textArea.select(textArea.getMarkPosition(), - textArea.getDocumentLength()); - else - textArea.setCaretPosition(textArea - .getDocumentLength()); - } - } - - public static class home implements ActionListener - { - private boolean select; - - public home(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - - int caret = textArea.getCaretPosition(); - - int firstLine = textArea.getFirstLine(); - - int firstOfLine = textArea.getLineStartOffset( - textArea.getCaretLine()); - int firstVisibleLine = (firstLine == 0 ? 0 : - firstLine + textArea.getElectricScroll()); - int firstVisible = textArea.getLineStartOffset( - firstVisibleLine); - - if(caret == 0) - { - textArea.getToolkit().beep(); - return; - } - else if(!Boolean.TRUE.equals(textArea.getClientProperty( - SMART_HOME_END_PROPERTY))) - caret = firstOfLine; - else if(caret == firstVisible) - caret = 0; - else if(caret == firstOfLine) - caret = firstVisible; - else - caret = firstOfLine; - - if(select) - textArea.select(textArea.getMarkPosition(),caret); - else - textArea.setCaretPosition(caret); - } - } - - public static class document_home implements ActionListener - { - private boolean select; - - public document_home(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - if(select) - textArea.select(textArea.getMarkPosition(),0); - else - textArea.setCaretPosition(0); - } - } - - public static class insert_break implements ActionListener - { - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - - if(!textArea.isEditable()) - { - textArea.getToolkit().beep(); - return; - } - - textArea.setSelectedText("\n"); - } - } - - public static class insert_tab implements ActionListener - { - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - - if(!textArea.isEditable()) - { - textArea.getToolkit().beep(); - return; - } - - textArea.overwriteSetSelectedText("\t"); - } - } - - public static class next_char implements ActionListener - { - private boolean select; - - public next_char(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - int caret = textArea.getCaretPosition(); - if(caret == textArea.getDocumentLength()) - { - textArea.getToolkit().beep(); - return; - } - - if(select) - textArea.select(textArea.getMarkPosition(), - caret + 1); - else - textArea.setCaretPosition(caret + 1); - } - } - - public static class next_line implements ActionListener - { - private boolean select; - - public next_line(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - int caret = textArea.getCaretPosition(); - int line = textArea.getCaretLine(); - - if(line == textArea.getLineCount() - 1) - { - textArea.getToolkit().beep(); - return; - } - - int magic = textArea.getMagicCaretPosition(); - if(magic == -1) - { - magic = textArea.offsetToX(line, - caret - textArea.getLineStartOffset(line)); - } - - caret = textArea.getLineStartOffset(line + 1) - + textArea.xToOffset(line + 1,magic); - if(select) - textArea.select(textArea.getMarkPosition(),caret); - else - textArea.setCaretPosition(caret); - textArea.setMagicCaretPosition(magic); - } - } - - public static class next_page implements ActionListener - { - private boolean select; - - public next_page(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - int lineCount = textArea.getLineCount(); - int firstLine = textArea.getFirstLine(); - int visibleLines = textArea.getVisibleLines(); - int line = textArea.getCaretLine(); - - firstLine += visibleLines; - - if(firstLine + visibleLines >= lineCount - 1) - firstLine = lineCount - visibleLines; - - textArea.setFirstLine(firstLine); - - int caret = textArea.getLineStartOffset( - Math.min(textArea.getLineCount() - 1, - line + visibleLines)); - if(select) - textArea.select(textArea.getMarkPosition(),caret); - else - textArea.setCaretPosition(caret); - } - } - - public static class next_word implements ActionListener - { - private boolean select; - - public next_word(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - int caret = textArea.getCaretPosition(); - int line = textArea.getCaretLine(); - int lineStart = textArea.getLineStartOffset(line); - caret -= lineStart; - - String lineText = textArea.getLineText(textArea - .getCaretLine()); - - if(caret == lineText.length()) - { - if(lineStart + caret == textArea.getDocumentLength()) - { - textArea.getToolkit().beep(); - return; - } - caret++; - } - else - { - String noWordSep = (String)textArea.getDocument().getProperty("noWordSep"); - caret = TextUtilities.findWordEnd(lineText,caret,noWordSep); - } - - if(select) - textArea.select(textArea.getMarkPosition(), - lineStart + caret); - else - textArea.setCaretPosition(lineStart + caret); - } - } - - public static class overwrite implements ActionListener - { - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - textArea.setOverwriteEnabled( - !textArea.isOverwriteEnabled()); - } - } - - public static class prev_char implements ActionListener - { - private boolean select; - - public prev_char(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - int caret = textArea.getCaretPosition(); - if(caret == 0) - { - textArea.getToolkit().beep(); - return; - } - - if(select) - textArea.select(textArea.getMarkPosition(), - caret - 1); - else - textArea.setCaretPosition(caret - 1); - } - } - - public static class prev_line implements ActionListener - { - private boolean select; - - public prev_line(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - int caret = textArea.getCaretPosition(); - int line = textArea.getCaretLine(); - - if(line == 0) - { - textArea.getToolkit().beep(); - return; - } - - int magic = textArea.getMagicCaretPosition(); - if(magic == -1) - { - magic = textArea.offsetToX(line, - caret - textArea.getLineStartOffset(line)); - } - - caret = textArea.getLineStartOffset(line - 1) - + textArea.xToOffset(line - 1,magic); - if(select) - textArea.select(textArea.getMarkPosition(),caret); - else - textArea.setCaretPosition(caret); - textArea.setMagicCaretPosition(magic); - } - } - - public static class prev_page implements ActionListener - { - private boolean select; - - public prev_page(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - int firstLine = textArea.getFirstLine(); - int visibleLines = textArea.getVisibleLines(); - int line = textArea.getCaretLine(); - - if(firstLine < visibleLines) - firstLine = visibleLines; - - textArea.setFirstLine(firstLine - visibleLines); - - int caret = textArea.getLineStartOffset( - Math.max(0,line - visibleLines)); - if(select) - textArea.select(textArea.getMarkPosition(),caret); - else - textArea.setCaretPosition(caret); - } - } - - public static class prev_word implements ActionListener - { - private boolean select; - - public prev_word(boolean select) - { - this.select = select; - } - - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - int caret = textArea.getCaretPosition(); - int line = textArea.getCaretLine(); - int lineStart = textArea.getLineStartOffset(line); - caret -= lineStart; - - String lineText = textArea.getLineText(textArea - .getCaretLine()); - - if(caret == 0) - { - if(lineStart == 0) - { - textArea.getToolkit().beep(); - return; - } - caret--; - } - else - { - String noWordSep = (String)textArea.getDocument().getProperty("noWordSep"); - caret = TextUtilities.findWordStart(lineText,caret,noWordSep); - } - - if(select) - textArea.select(textArea.getMarkPosition(), - lineStart + caret); - else - textArea.setCaretPosition(lineStart + caret); - } - } - - public static class repeat implements ActionListener, - InputHandler.NonRecordable - { - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - textArea.getInputHandler().setRepeatEnabled(true); - String actionCommand = evt.getActionCommand(); - if(actionCommand != null) - { - textArea.getInputHandler().setRepeatCount( - Integer.parseInt(actionCommand)); - } - } - } - - public static class toggle_rect implements ActionListener - { - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - textArea.setSelectionRectangular( - !textArea.isSelectionRectangular()); - } - } - - public static class insert_char implements ActionListener, - InputHandler.NonRepeatable - { - public void actionPerformed(ActionEvent evt) - { - JEditTextArea textArea = getTextArea(evt); - String str = evt.getActionCommand(); - int repeatCount = textArea.getInputHandler().getRepeatCount(); - - if(textArea.isEditable()) - { - StringBuffer buf = new StringBuffer(); - for(int i = 0; i < repeatCount; i++) - buf.append(str); - textArea.overwriteSetSelectedText(buf.toString()); - } - else - { - textArea.getToolkit().beep(); - } - } - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/JButtonEx.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/JButtonEx.java deleted file mode 100644 index 8ffc13ff7e3..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/JButtonEx.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.astron.util.gui; - -import javax.swing.JButton; -import java.awt.event.*; -import javax.swing.border.*; -import java.awt.*; -import javax.swing.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class JButtonEx extends JButton - implements MouseListener { - private Border emptyBorder; - private Border etchedBorder; - - public JButtonEx() { - super(); - } - - public JButtonEx(Action a) { - super(a); - init(); - } - public JButtonEx(Icon icon) { - super(icon); - init(); - } - public JButtonEx(String text) { - super(text); - init(); - } - public JButtonEx(String text, Icon icon) { - super(text,icon); - init(); - } - private void init() { - emptyBorder = BorderFactory.createEmptyBorder(); - etchedBorder = BorderFactory.createEtchedBorder(); - setBorder(emptyBorder); - addMouseListener(this); - Dimension d = new Dimension(34,26); - setPreferredSize(d); - setMaximumSize(d); - } - public void mouseClicked(MouseEvent e) {} - public void mousePressed(MouseEvent e) {} - public void mouseReleased(MouseEvent e) {} - public void mouseEntered(MouseEvent e) { - if (!isEnabled()) { - setBorder(emptyBorder); - return; - } - setBorder(etchedBorder); - } - public void mouseExited(MouseEvent e) { - setBorder(emptyBorder); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/JEditTextArea.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/JEditTextArea.java deleted file mode 100644 index 28315e4a616..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/JEditTextArea.java +++ /dev/null @@ -1,2137 +0,0 @@ -/* - * JEditTextArea.java - jEdit's text component - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; - -import javax.swing.event.*; -import javax.swing.text.*; -import javax.swing.undo.*; -import javax.swing.*; -import java.awt.datatransfer.*; -import java.awt.event.*; -import java.awt.*; -import java.util.Enumeration; -import java.util.Vector; - -/** - * jEdit's text area component. It is more suited for editing program - * source code than JEditorPane, because it drops the unnecessary features - * (images, variable-width lines, and so on) and adds a whole bunch of - * useful goodies such as: - * <ul> - * <li>More flexible key binding scheme - * <li>Supports macro recorders - * <li>Rectangular selection - * <li>Bracket highlighting - * <li>Syntax highlighting - * <li>Command repetition - * <li>Block caret can be enabled - * </ul> - * It is also faster and doesn't have as many problems. It can be used - * in other applications; the only other part of jEdit it depends on is - * the syntax package.<p> - * - * To use it in your app, treat it like any other component, for example: - * <pre>JEditTextArea ta = new JEditTextArea(); - * ta.setTokenMarker(new JavaTokenMarker()); - * ta.setText("public class Test {\n" - * + " public static void main(String[] args) {\n" - * + " System.out.println(\"Hello World\");\n" - * + " }\n" - * + "}");</pre> - * - * @author Slava Pestov - * @version $Id$ - */ -public class JEditTextArea extends JComponent -{ - /** - * Adding components with this name to the text area will place - * them left of the horizontal scroll bar. In jEdit, the status - * bar is added this way. - */ - public static String LEFT_OF_SCROLLBAR = "los"; - - /** - * Creates a new JEditTextArea with the default settings. - */ - public JEditTextArea() - { - this(TextAreaDefaults.getDefaults()); - } - - /** - * Creates a new JEditTextArea with the specified settings. - * @param defaults The default settings - */ - public JEditTextArea(TextAreaDefaults defaults) - { - // Enable the necessary events - enableEvents(AWTEvent.KEY_EVENT_MASK); - - // Initialize some misc. stuff - painter = new TextAreaPainter(this,defaults); - documentHandler = new DocumentHandler(); - listenerList = new EventListenerList(); - caretEvent = new MutableCaretEvent(); - lineSegment = new Segment(); - bracketLine = bracketPosition = -1; - blink = true; - - // Initialize the GUI - setLayout(new ScrollLayout()); - add(CENTER,painter); - add(RIGHT,vertical = new JScrollBar(JScrollBar.VERTICAL)); - add(BOTTOM,horizontal = new JScrollBar(JScrollBar.HORIZONTAL)); - - // Add some event listeners - vertical.addAdjustmentListener(new AdjustHandler()); - horizontal.addAdjustmentListener(new AdjustHandler()); - painter.addComponentListener(new ComponentHandler()); - painter.addMouseListener(new MouseHandler()); - painter.addMouseMotionListener(new DragHandler()); - addFocusListener(new FocusHandler()); - - // Load the defaults - setInputHandler(defaults.inputHandler); - setDocument(defaults.document); - editable = defaults.editable; - caretVisible = defaults.caretVisible; - caretBlinks = defaults.caretBlinks; - electricScroll = defaults.electricScroll; - - popup = defaults.popup; - - // We don't seem to get the initial focus event? - focusedComponent = this; - } - - /** - * Returns if this component can be traversed by pressing - * the Tab key. This returns false. - */ - public final boolean isManagingFocus() - { - return true; - } - - /** - * Returns the object responsible for painting this text area. - */ - public final TextAreaPainter getPainter() - { - return painter; - } - - /** - * Returns the input handler. - */ - public final InputHandler getInputHandler() - { - return inputHandler; - } - - /** - * Sets the input handler. - * @param inputHandler The new input handler - */ - public void setInputHandler(InputHandler inputHandler) - { - this.inputHandler = inputHandler; - } - - /** - * Returns true if the caret is blinking, false otherwise. - */ - public final boolean isCaretBlinkEnabled() - { - return caretBlinks; - } - - /** - * Toggles caret blinking. - * @param caretBlinks True if the caret should blink, false otherwise - */ - public void setCaretBlinkEnabled(boolean caretBlinks) - { - this.caretBlinks = caretBlinks; - if(!caretBlinks) - blink = false; - - painter.invalidateSelectedLines(); - } - - /** - * Returns true if the caret is visible, false otherwise. - */ - public final boolean isCaretVisible() - { - return (!caretBlinks || blink) && caretVisible; - } - - /** - * Sets if the caret should be visible. - * @param caretVisible True if the caret should be visible, false - * otherwise - */ - public void setCaretVisible(boolean caretVisible) - { - this.caretVisible = caretVisible; - blink = true; - - painter.invalidateSelectedLines(); - } - - /** - * Blinks the caret. - */ - public final void blinkCaret() - { - if(caretBlinks) - { - blink = !blink; - painter.invalidateSelectedLines(); - } - else - blink = true; - } - - /** - * Returns the number of lines from the top and button of the - * text area that are always visible. - */ - public final int getElectricScroll() - { - return electricScroll; - } - - /** - * Sets the number of lines from the top and bottom of the text - * area that are always visible - * @param electricScroll The number of lines always visible from - * the top or bottom - */ - public final void setElectricScroll(int electricScroll) - { - this.electricScroll = electricScroll; - } - - /** - * Updates the state of the scroll bars. This should be called - * if the number of lines in the document changes, or when the - * size of the text are changes. - */ - public void updateScrollBars() - { - if(vertical != null && visibleLines != 0) - { - vertical.setValues(firstLine,visibleLines,0,getLineCount()); - vertical.setUnitIncrement(2); - vertical.setBlockIncrement(visibleLines); - } - - int width = painter.getWidth(); - if(horizontal != null && width != 0) - { - horizontal.setValues(-horizontalOffset,width,0,width * 5); - horizontal.setUnitIncrement(painter.getFontMetrics() - .charWidth('w')); - horizontal.setBlockIncrement(width / 2); - } - } - - /** - * Returns the line displayed at the text area's origin. - */ - public final int getFirstLine() - { - return firstLine; - } - - /** - * Sets the line displayed at the text area's origin without - * updating the scroll bars. - */ - public void setFirstLine(int firstLine) - { - if(firstLine == this.firstLine) - return; - int oldFirstLine = this.firstLine; - this.firstLine = firstLine; - if(firstLine != vertical.getValue()) - updateScrollBars(); - painter.repaint(); - } - - /** - * Returns the number of lines visible in this text area. - */ - public final int getVisibleLines() - { - return visibleLines; - } - - /** - * Recalculates the number of visible lines. This should not - * be called directly. - */ - public final void recalculateVisibleLines() - { - if(painter == null) - return; - int height = painter.getHeight(); - int lineHeight = painter.getFontMetrics().getHeight(); - int oldVisibleLines = visibleLines; - visibleLines = height / lineHeight; - updateScrollBars(); - } - - /** - * Returns the horizontal offset of drawn lines. - */ - public final int getHorizontalOffset() - { - return horizontalOffset; - } - - /** - * Sets the horizontal offset of drawn lines. This can be used to - * implement horizontal scrolling. - * @param horizontalOffset offset The new horizontal offset - */ - public void setHorizontalOffset(int horizontalOffset) - { - if(horizontalOffset == this.horizontalOffset) - return; - this.horizontalOffset = horizontalOffset; - if(horizontalOffset != horizontal.getValue()) - updateScrollBars(); - painter.repaint(); - } - - /** - * A fast way of changing both the first line and horizontal - * offset. - * @param firstLine The new first line - * @param horizontalOffset The new horizontal offset - * @return True if any of the values were changed, false otherwise - */ - public boolean setOrigin(int firstLine, int horizontalOffset) - { - boolean changed = false; - int oldFirstLine = this.firstLine; - - if(horizontalOffset != this.horizontalOffset) - { - this.horizontalOffset = horizontalOffset; - changed = true; - } - - if(firstLine != this.firstLine) - { - this.firstLine = firstLine; - changed = true; - } - - if(changed) - { - updateScrollBars(); - painter.repaint(); - } - - return changed; - } - - /** - * Ensures that the caret is visible by scrolling the text area if - * necessary. - * @return True if scrolling was actually performed, false if the - * caret was already visible - */ - public boolean scrollToCaret() - { - int line = getCaretLine(); - int lineStart = getLineStartOffset(line); - int offset = Math.max(0,Math.min(getLineLength(line) - 1, - getCaretPosition() - lineStart)); - - return scrollTo(line,offset); - } - - /** - * Ensures that the specified line and offset is visible by scrolling - * the text area if necessary. - * @param line The line to scroll to - * @param offset The offset in the line to scroll to - * @return True if scrolling was actually performed, false if the - * line and offset was already visible - */ - public boolean scrollTo(int line, int offset) - { - // visibleLines == 0 before the component is realized - // we can't do any proper scrolling then, so we have - // this hack... - if(visibleLines == 0) - { - setFirstLine(Math.max(0,line - electricScroll)); - return true; - } - - int newFirstLine = firstLine; - int newHorizontalOffset = horizontalOffset; - - if(line < firstLine + electricScroll) - { - newFirstLine = Math.max(0,line - electricScroll); - } - else if(line + electricScroll >= firstLine + visibleLines) - { - newFirstLine = (line - visibleLines) + electricScroll + 1; - if(newFirstLine + visibleLines >= getLineCount()) - newFirstLine = getLineCount() - visibleLines; - if(newFirstLine < 0) - newFirstLine = 0; - } - - int x = _offsetToX(line,offset); - int width = painter.getFontMetrics().charWidth('w'); - - if(x < 0) - { - newHorizontalOffset = Math.min(0,horizontalOffset - - x + width + 5); - } - else if(x + width >= painter.getWidth()) - { - newHorizontalOffset = horizontalOffset + - (painter.getWidth() - x) - width - 5; - } - - return setOrigin(newFirstLine,newHorizontalOffset); - } - - /** - * Converts a line index to a y co-ordinate. - * @param line The line - */ - public int lineToY(int line) - { - FontMetrics fm = painter.getFontMetrics(); - return (line - firstLine) * fm.getHeight() - - (fm.getLeading() + fm.getMaxDescent()); - } - - /** - * Converts a y co-ordinate to a line index. - * @param y The y co-ordinate - */ - public int yToLine(int y) - { - FontMetrics fm = painter.getFontMetrics(); - int height = fm.getHeight(); - return Math.max(0,Math.min(getLineCount() - 1, - y / height + firstLine)); - } - - /** - * Converts an offset in a line into an x co-ordinate. This is a - * slow version that can be used any time. - * @param line The line - * @param offset The offset, from the start of the line - */ - public final int offsetToX(int line, int offset) - { - // don't use cached tokens - painter.currentLineTokens = null; - return _offsetToX(line,offset); - } - - /** - * Converts an offset in a line into an x co-ordinate. This is a - * fast version that should only be used if no changes were made - * to the text since the last repaint. - * @param line The line - * @param offset The offset, from the start of the line - */ - public int _offsetToX(int line, int offset) - { - TokenMarker tokenMarker = getTokenMarker(); - - /* Use painter's cached info for speed */ - FontMetrics fm = painter.getFontMetrics(); - - getLineText(line,lineSegment); - - int segmentOffset = lineSegment.offset; - int x = horizontalOffset; - - /* If syntax coloring is disabled, do simple translation */ - if(tokenMarker == null) - { - lineSegment.count = offset; - return x + Utilities.getTabbedTextWidth(lineSegment, - fm,x,painter,0); - } - /* If syntax coloring is enabled, we have to do this because - * tokens can vary in width */ - else - { - Token tokens; - if(painter.currentLineIndex == line - && painter.currentLineTokens != null) - tokens = painter.currentLineTokens; - else - { - painter.currentLineIndex = line; - tokens = painter.currentLineTokens - = tokenMarker.markTokens(lineSegment,line); - } - - Toolkit toolkit = painter.getToolkit(); - Font defaultFont = painter.getFont(); - SyntaxStyle[] styles = painter.getStyles(); - - for(;;) - { - byte id = tokens.id; - if(id == Token.END) - { - return x; - } - - if(id == Token.NULL) - fm = painter.getFontMetrics(); - else - fm = styles[id].getFontMetrics(defaultFont); - - int length = tokens.length; - - if(offset + segmentOffset < lineSegment.offset + length) - { - lineSegment.count = offset - (lineSegment.offset - segmentOffset); - return x + Utilities.getTabbedTextWidth( - lineSegment,fm,x,painter,0); - } - else - { - lineSegment.count = length; - x += Utilities.getTabbedTextWidth( - lineSegment,fm,x,painter,0); - lineSegment.offset += length; - } - tokens = tokens.next; - } - } - } - - /** - * Converts an x co-ordinate to an offset within a line. - * @param line The line - * @param x The x co-ordinate - */ - public int xToOffset(int line, int x) - { - TokenMarker tokenMarker = getTokenMarker(); - - /* Use painter's cached info for speed */ - FontMetrics fm = painter.getFontMetrics(); - - getLineText(line,lineSegment); - - char[] segmentArray = lineSegment.array; - int segmentOffset = lineSegment.offset; - int segmentCount = lineSegment.count; - - int width = horizontalOffset; - - if(tokenMarker == null) - { - for(int i = 0; i < segmentCount; i++) - { - char c = segmentArray[i + segmentOffset]; - int charWidth; - if(c == '\t') - charWidth = (int)painter.nextTabStop(width,i) - - width; - else - charWidth = fm.charWidth(c); - - if(painter.isBlockCaretEnabled()) - { - if(x - charWidth <= width) - return i; - } - else - { - if(x - charWidth / 2 <= width) - return i; - } - - width += charWidth; - } - - return segmentCount; - } - else - { - Token tokens; - if(painter.currentLineIndex == line && painter - .currentLineTokens != null) - tokens = painter.currentLineTokens; - else - { - painter.currentLineIndex = line; - tokens = painter.currentLineTokens - = tokenMarker.markTokens(lineSegment,line); - } - - int offset = 0; - Toolkit toolkit = painter.getToolkit(); - Font defaultFont = painter.getFont(); - SyntaxStyle[] styles = painter.getStyles(); - - for(;;) - { - byte id = tokens.id; - if(id == Token.END) - return offset; - - if(id == Token.NULL) - fm = painter.getFontMetrics(); - else - fm = styles[id].getFontMetrics(defaultFont); - - int length = tokens.length; - - for(int i = 0; i < length; i++) - { - char c = segmentArray[segmentOffset + offset + i]; - int charWidth; - if(c == '\t') - charWidth = (int)painter.nextTabStop(width,offset + i) - - width; - else - charWidth = fm.charWidth(c); - - if(painter.isBlockCaretEnabled()) - { - if(x - charWidth <= width) - return offset + i; - } - else - { - if(x - charWidth / 2 <= width) - return offset + i; - } - - width += charWidth; - } - - offset += length; - tokens = tokens.next; - } - } - } - - /** - * Converts a point to an offset, from the start of the text. - * @param x The x co-ordinate of the point - * @param y The y co-ordinate of the point - */ - public int xyToOffset(int x, int y) - { - int line = yToLine(y); - int start = getLineStartOffset(line); - return start + xToOffset(line,x); - } - - /** - * Returns the document this text area is editing. - */ - public final SyntaxDocument getDocument() - { - return document; - } - - /** - * Sets the document this text area is editing. - * @param document The document - */ - public void setDocument(SyntaxDocument document) - { - if(this.document == document) - return; - if(this.document != null) - this.document.removeDocumentListener(documentHandler); - this.document = document; - - document.addDocumentListener(documentHandler); - - select(0,0); - updateScrollBars(); - painter.repaint(); - } - - /** - * Returns the document's token marker. Equivalent to calling - * <code>getDocument().getTokenMarker()</code>. - */ - public final TokenMarker getTokenMarker() - { - return document.getTokenMarker(); - } - - /** - * Sets the document's token marker. Equivalent to caling - * <code>getDocument().setTokenMarker()</code>. - * @param tokenMarker The token marker - */ - public final void setTokenMarker(TokenMarker tokenMarker) - { - document.setTokenMarker(tokenMarker); - } - - /** - * Returns the length of the document. Equivalent to calling - * <code>getDocument().getLength()</code>. - */ - public final int getDocumentLength() - { - return document.getLength(); - } - - /** - * Returns the number of lines in the document. - */ - public final int getLineCount() - { - return document.getDefaultRootElement().getElementCount(); - } - - /** - * Returns the line containing the specified offset. - * @param offset The offset - */ - public final int getLineOfOffset(int offset) - { - return document.getDefaultRootElement().getElementIndex(offset); - } - - /** - * Returns the start offset of the specified line. - * @param line The line - * @return The start offset of the specified line, or -1 if the line is - * invalid - */ - public int getLineStartOffset(int line) - { - Element lineElement = document.getDefaultRootElement() - .getElement(line); - if(lineElement == null) - return -1; - else - return lineElement.getStartOffset(); - } - - /** - * Returns the end offset of the specified line. - * @param line The line - * @return The end offset of the specified line, or -1 if the line is - * invalid. - */ - public int getLineEndOffset(int line) - { - Element lineElement = document.getDefaultRootElement() - .getElement(line); - if(lineElement == null) - return -1; - else - return lineElement.getEndOffset(); - } - - /** - * Returns the length of the specified line. - * @param line The line - */ - public int getLineLength(int line) - { - Element lineElement = document.getDefaultRootElement() - .getElement(line); - if(lineElement == null) - return -1; - else - return lineElement.getEndOffset() - - lineElement.getStartOffset() - 1; - } - - /** - * Returns the entire text of this text area. - */ - public String getText() - { - try - { - return document.getText(0,document.getLength()); - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - return null; - } - } - - /** - * Sets the entire text of this text area. - */ - public void setText(String text) - { - try - { - document.beginCompoundEdit(); - document.remove(0,document.getLength()); - document.insertString(0,text,null); - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - } - finally - { - document.endCompoundEdit(); - } - } - - /** - * Returns the specified substring of the document. - * @param start The start offset - * @param len The length of the substring - * @return The substring, or null if the offsets are invalid - */ - public final String getText(int start, int len) - { - try - { - return document.getText(start,len); - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - return null; - } - } - - /** - * Copies the specified substring of the document into a segment. - * If the offsets are invalid, the segment will contain a null string. - * @param start The start offset - * @param len The length of the substring - * @param segment The segment - */ - public final void getText(int start, int len, Segment segment) - { - try - { - document.getText(start,len,segment); - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - segment.offset = segment.count = 0; - } - } - - /** - * Returns the text on the specified line. - * @param lineIndex The line - * @return The text, or null if the line is invalid - */ - public final String getLineText(int lineIndex) - { - int start = getLineStartOffset(lineIndex); - return getText(start,getLineEndOffset(lineIndex) - start - 1); - } - - /** - * Copies the text on the specified line into a segment. If the line - * is invalid, the segment will contain a null string. - * @param lineIndex The line - */ - public final void getLineText(int lineIndex, Segment segment) - { - int start = getLineStartOffset(lineIndex); - getText(start,getLineEndOffset(lineIndex) - start - 1,segment); - } - - /** - * Returns the selection start offset. - */ - public final int getSelectionStart() - { - return selectionStart; - } - - /** - * Returns the offset where the selection starts on the specified - * line. - */ - public int getSelectionStart(int line) - { - if(line == selectionStartLine) - return selectionStart; - else if(rectSelect) - { - Element map = document.getDefaultRootElement(); - int start = selectionStart - map.getElement(selectionStartLine) - .getStartOffset(); - - Element lineElement = map.getElement(line); - int lineStart = lineElement.getStartOffset(); - int lineEnd = lineElement.getEndOffset() - 1; - return Math.min(lineEnd,lineStart + start); - } - else - return getLineStartOffset(line); - } - - /** - * Returns the selection start line. - */ - public final int getSelectionStartLine() - { - return selectionStartLine; - } - - /** - * Sets the selection start. The new selection will be the new - * selection start and the old selection end. - * @param selectionStart The selection start - * @see #select(int,int) - */ - public final void setSelectionStart(int selectionStart) - { - select(selectionStart,selectionEnd); - } - - /** - * Returns the selection end offset. - */ - public final int getSelectionEnd() - { - return selectionEnd; - } - - /** - * Returns the offset where the selection ends on the specified - * line. - */ - public int getSelectionEnd(int line) - { - if(line == selectionEndLine) - return selectionEnd; - else if(rectSelect) - { - Element map = document.getDefaultRootElement(); - int end = selectionEnd - map.getElement(selectionEndLine) - .getStartOffset(); - - Element lineElement = map.getElement(line); - int lineStart = lineElement.getStartOffset(); - int lineEnd = lineElement.getEndOffset() - 1; - return Math.min(lineEnd,lineStart + end); - } - else - return getLineEndOffset(line) - 1; - } - - /** - * Returns the selection end line. - */ - public final int getSelectionEndLine() - { - return selectionEndLine; - } - - /** - * Sets the selection end. The new selection will be the old - * selection start and the bew selection end. - * @param selectionEnd The selection end - * @see #select(int,int) - */ - public final void setSelectionEnd(int selectionEnd) - { - select(selectionStart,selectionEnd); - } - - /** - * Returns the caret position. This will either be the selection - * start or the selection end, depending on which direction the - * selection was made in. - */ - public final int getCaretPosition() - { - return (biasLeft ? selectionStart : selectionEnd); - } - - /** - * Returns the caret line. - */ - public final int getCaretLine() - { - return (biasLeft ? selectionStartLine : selectionEndLine); - } - - /** - * Returns the mark position. This will be the opposite selection - * bound to the caret position. - * @see #getCaretPosition() - */ - public final int getMarkPosition() - { - return (biasLeft ? selectionEnd : selectionStart); - } - - /** - * Returns the mark line. - */ - public final int getMarkLine() - { - return (biasLeft ? selectionEndLine : selectionStartLine); - } - - /** - * Sets the caret position. The new selection will consist of the - * caret position only (hence no text will be selected) - * @param caret The caret position - * @see #select(int,int) - */ - public final void setCaretPosition(int caret) - { - select(caret,caret); - } - - /** - * Selects all text in the document. - */ - public final void selectAll() - { - select(0,getDocumentLength()); - } - - /** - * Moves the mark to the caret position. - */ - public final void selectNone() - { - select(getCaretPosition(),getCaretPosition()); - } - - /** - * Selects from the start offset to the end offset. This is the - * general selection method used by all other selecting methods. - * The caret position will be start if start < end, and end - * if end > start. - * @param start The start offset - * @param end The end offset - */ - public void select(int start, int end) - { - int newStart, newEnd; - boolean newBias; - if(start <= end) - { - newStart = start; - newEnd = end; - newBias = false; - } - else - { - newStart = end; - newEnd = start; - newBias = true; - } - - if(newStart < 0 || newEnd > getDocumentLength()) - { - throw new IllegalArgumentException("Bounds out of" - + " range: " + newStart + "," + - newEnd); - } - - // If the new position is the same as the old, we don't - // do all this crap, however we still do the stuff at - // the end (clearing magic position, scrolling) - if(newStart != selectionStart || newEnd != selectionEnd - || newBias != biasLeft) - { - int newStartLine = getLineOfOffset(newStart); - int newEndLine = getLineOfOffset(newEnd); - - if(painter.isBracketHighlightEnabled()) - { - if(bracketLine != -1) - painter.invalidateLine(bracketLine); - updateBracketHighlight(end); - if(bracketLine != -1) - painter.invalidateLine(bracketLine); - } - - painter.invalidateLineRange(selectionStartLine,selectionEndLine); - painter.invalidateLineRange(newStartLine,newEndLine); - - document.addUndoableEdit(new CaretUndo( - selectionStart,selectionEnd)); - - selectionStart = newStart; - selectionEnd = newEnd; - selectionStartLine = newStartLine; - selectionEndLine = newEndLine; - biasLeft = newBias; - - fireCaretEvent(); - } - - // When the user is typing, etc, we don't want the caret - // to blink - blink = true; - caretTimer.restart(); - - // Disable rectangle select if selection start = selection end - if(selectionStart == selectionEnd) - rectSelect = false; - - // Clear the `magic' caret position used by up/down - magicCaret = -1; - - scrollToCaret(); - } - - /** - * Returns the selected text, or null if no selection is active. - */ - public final String getSelectedText() - { - if(selectionStart == selectionEnd) - return null; - - if(rectSelect) - { - // Return each row of the selection on a new line - - Element map = document.getDefaultRootElement(); - - int start = selectionStart - map.getElement(selectionStartLine) - .getStartOffset(); - int end = selectionEnd - map.getElement(selectionEndLine) - .getStartOffset(); - - // Certain rectangles satisfy this condition... - if(end < start) - { - int tmp = end; - end = start; - start = tmp; - } - - StringBuffer buf = new StringBuffer(); - Segment seg = new Segment(); - - for(int i = selectionStartLine; i <= selectionEndLine; i++) - { - Element lineElement = map.getElement(i); - int lineStart = lineElement.getStartOffset(); - int lineEnd = lineElement.getEndOffset() - 1; - int lineLen = lineEnd - lineStart; - - lineStart = Math.min(lineStart + start,lineEnd); - lineLen = Math.min(end - start,lineEnd - lineStart); - - getText(lineStart,lineLen,seg); - buf.append(seg.array,seg.offset,seg.count); - - if(i != selectionEndLine) - buf.append('\n'); - } - - return buf.toString(); - } - else - { - return getText(selectionStart, - selectionEnd - selectionStart); - } - } - - /** - * Replaces the selection with the specified text. - * @param selectedText The replacement text for the selection - */ - public void setSelectedText(String selectedText) - { - if(!editable) - { - throw new InternalError("Text component" - + " read only"); - } - - document.beginCompoundEdit(); - - try - { - if(rectSelect) - { - Element map = document.getDefaultRootElement(); - - int start = selectionStart - map.getElement(selectionStartLine) - .getStartOffset(); - int end = selectionEnd - map.getElement(selectionEndLine) - .getStartOffset(); - - // Certain rectangles satisfy this condition... - if(end < start) - { - int tmp = end; - end = start; - start = tmp; - } - - int lastNewline = 0; - int currNewline = 0; - - for(int i = selectionStartLine; i <= selectionEndLine; i++) - { - Element lineElement = map.getElement(i); - int lineStart = lineElement.getStartOffset(); - int lineEnd = lineElement.getEndOffset() - 1; - int rectStart = Math.min(lineEnd,lineStart + start); - - document.remove(rectStart,Math.min(lineEnd - rectStart, - end - start)); - - if(selectedText == null) - continue; - - currNewline = selectedText.indexOf('\n',lastNewline); - if(currNewline == -1) - currNewline = selectedText.length(); - - document.insertString(rectStart,selectedText - .substring(lastNewline,currNewline),null); - - lastNewline = Math.min(selectedText.length(), - currNewline + 1); - } - - if(selectedText != null && - currNewline != selectedText.length()) - { - int offset = map.getElement(selectionEndLine) - .getEndOffset() - 1; - document.insertString(offset,"\n",null); - document.insertString(offset + 1,selectedText - .substring(currNewline + 1),null); - } - } - else - { - document.remove(selectionStart, - selectionEnd - selectionStart); - if(selectedText != null) - { - document.insertString(selectionStart, - selectedText,null); - } - } - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - throw new InternalError("Cannot replace" - + " selection"); - } - // No matter what happends... stops us from leaving document - // in a bad state - finally - { - document.endCompoundEdit(); - } - - setCaretPosition(selectionEnd); - } - - /** - * Returns true if this text area is editable, false otherwise. - */ - public final boolean isEditable() - { - return editable; - } - - /** - * Sets if this component is editable. - * @param editable True if this text area should be editable, - * false otherwise - */ - public final void setEditable(boolean editable) - { - this.editable = editable; - } - - /** - * Returns the right click popup menu. - */ - public final JPopupMenu getRightClickPopup() - { - return popup; - } - - /** - * Sets the right click popup menu. - * @param popup The popup - */ - public final void setRightClickPopup(JPopupMenu popup) - { - this.popup = popup; - } - - /** - * Returns the `magic' caret position. This can be used to preserve - * the column position when moving up and down lines. - */ - public final int getMagicCaretPosition() - { - return magicCaret; - } - - /** - * Sets the `magic' caret position. This can be used to preserve - * the column position when moving up and down lines. - * @param magicCaret The magic caret position - */ - public final void setMagicCaretPosition(int magicCaret) - { - this.magicCaret = magicCaret; - } - - /** - * Similar to <code>setSelectedText()</code>, but overstrikes the - * appropriate number of characters if overwrite mode is enabled. - * @param str The string - * @see #setSelectedText(String) - * @see #isOverwriteEnabled() - */ - public void overwriteSetSelectedText(String str) - { - // Don't overstrike if there is a selection - if(!overwrite || selectionStart != selectionEnd) - { - setSelectedText(str); - return; - } - - // Don't overstrike if we're on the end of - // the line - int caret = getCaretPosition(); - int caretLineEnd = getLineEndOffset(getCaretLine()); - if(caretLineEnd - caret <= str.length()) - { - setSelectedText(str); - return; - } - - document.beginCompoundEdit(); - - try - { - document.remove(caret,str.length()); - document.insertString(caret,str,null); - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - } - finally - { - document.endCompoundEdit(); - } - } - - /** - * Returns true if overwrite mode is enabled, false otherwise. - */ - public final boolean isOverwriteEnabled() - { - return overwrite; - } - - /** - * Sets if overwrite mode should be enabled. - * @param overwrite True if overwrite mode should be enabled, - * false otherwise. - */ - public final void setOverwriteEnabled(boolean overwrite) - { - this.overwrite = overwrite; - painter.invalidateSelectedLines(); - } - - /** - * Returns true if the selection is rectangular, false otherwise. - */ - public final boolean isSelectionRectangular() - { - return rectSelect; - } - - /** - * Sets if the selection should be rectangular. - * @param overwrite True if the selection should be rectangular, - * false otherwise. - */ - public final void setSelectionRectangular(boolean rectSelect) - { - this.rectSelect = rectSelect; - painter.invalidateSelectedLines(); - } - - /** - * Returns the position of the highlighted bracket (the bracket - * matching the one before the caret) - */ - public final int getBracketPosition() - { - return bracketPosition; - } - - /** - * Returns the line of the highlighted bracket (the bracket - * matching the one before the caret) - */ - public final int getBracketLine() - { - return bracketLine; - } - - /** - * Adds a caret change listener to this text area. - * @param listener The listener - */ - public final void addCaretListener(CaretListener listener) - { - listenerList.add(CaretListener.class,listener); - } - - /** - * Removes a caret change listener from this text area. - * @param listener The listener - */ - public final void removeCaretListener(CaretListener listener) - { - listenerList.remove(CaretListener.class,listener); - } - - /** - * Deletes the selected text from the text area and places it - * into the clipboard. - */ - public void cut() - { - if(editable) - { - copy(); - setSelectedText(""); - } - } - - /** - * Places the selected text into the clipboard. - */ - public void copy() - { - if(selectionStart != selectionEnd) - { - Clipboard clipboard = getToolkit().getSystemClipboard(); - - String selection = getSelectedText(); - - int repeatCount = inputHandler.getRepeatCount(); - StringBuffer buf = new StringBuffer(); - for(int i = 0; i < repeatCount; i++) - buf.append(selection); - - clipboard.setContents(new StringSelection(buf.toString()),null); - } - } - - /** - * Inserts the clipboard contents into the text. - */ - public void paste() - { - if(editable) - { - Clipboard clipboard = getToolkit().getSystemClipboard(); - try - { - // The MacOS MRJ doesn't convert \r to \n, - // so do it here - String selection = ((String)clipboard - .getContents(this).getTransferData( - DataFlavor.stringFlavor)) - .replace('\r','\n'); - - int repeatCount = inputHandler.getRepeatCount(); - StringBuffer buf = new StringBuffer(); - for(int i = 0; i < repeatCount; i++) - buf.append(selection); - selection = buf.toString(); - setSelectedText(selection); - } - catch(Exception e) - { - getToolkit().beep(); - System.err.println("Clipboard does not" - + " contain a string"); - } - } - } - - /** - * Called by the AWT when this component is removed from it's parent. - * This stops clears the currently focused component. - */ - public void removeNotify() - { - super.removeNotify(); - if(focusedComponent == this) - focusedComponent = null; - } - - /** - * Forwards key events directly to the input handler. - * This is slightly faster than using a KeyListener - * because some Swing overhead is avoided. - */ - public void processKeyEvent(KeyEvent evt) - { - // added by Robbert Dam - if (evt.getModifiers() == Event.CTRL_MASK - && evt.getID() == KeyEvent.KEY_PRESSED) { - if (evt.getKeyCode() == KeyEvent.VK_C) { copy(); return; } - if (evt.getKeyCode() == KeyEvent.VK_V) { paste(); return; } - if (evt.getKeyCode() == KeyEvent.VK_X) { cut(); return; } - } - - - if(inputHandler == null) - return; - switch(evt.getID()) - { - case KeyEvent.KEY_TYPED: - inputHandler.keyTyped(evt); - break; - case KeyEvent.KEY_PRESSED: - inputHandler.keyPressed(evt); - break; - case KeyEvent.KEY_RELEASED: - inputHandler.keyReleased(evt); - break; - } - } - - // protected members - protected static String CENTER = "center"; - protected static String RIGHT = "right"; - protected static String BOTTOM = "bottom"; - - protected static JEditTextArea focusedComponent; - protected static Timer caretTimer; - - protected TextAreaPainter painter; - - protected JPopupMenu popup; - - protected EventListenerList listenerList; - protected MutableCaretEvent caretEvent; - - protected boolean caretBlinks; - protected boolean caretVisible; - protected boolean blink; - - protected boolean editable; - - protected int firstLine; - protected int visibleLines; - protected int electricScroll; - - protected int horizontalOffset; - - protected JScrollBar vertical; - protected JScrollBar horizontal; - protected boolean scrollBarsInitialized; - - protected InputHandler inputHandler; - protected SyntaxDocument document; - protected DocumentHandler documentHandler; - - protected Segment lineSegment; - - protected int selectionStart; - protected int selectionStartLine; - protected int selectionEnd; - protected int selectionEndLine; - protected boolean biasLeft; - - protected int bracketPosition; - protected int bracketLine; - - protected int magicCaret; - protected boolean overwrite; - protected boolean rectSelect; - - protected void fireCaretEvent() - { - Object[] listeners = listenerList.getListenerList(); - for(int i = listeners.length - 2; i >= 0; i--) - { - if(listeners[i] == CaretListener.class) - { - ((CaretListener)listeners[i+1]).caretUpdate(caretEvent); - } - } - } - - protected void updateBracketHighlight(int newCaretPosition) - { - if(newCaretPosition == 0) - { - bracketPosition = bracketLine = -1; - return; - } - - try - { - int offset = TextUtilities.findMatchingBracket( - document,newCaretPosition - 1); - if(offset != -1) - { - bracketLine = getLineOfOffset(offset); - bracketPosition = offset - getLineStartOffset(bracketLine); - return; - } - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - } - - bracketLine = bracketPosition = -1; - } - - protected void documentChanged(DocumentEvent evt) - { - DocumentEvent.ElementChange ch = evt.getChange( - document.getDefaultRootElement()); - - int count; - if(ch == null) - count = 0; - else - count = ch.getChildrenAdded().length - - ch.getChildrenRemoved().length; - - int line = getLineOfOffset(evt.getOffset()); - if(count == 0) - { - painter.invalidateLine(line); - } - // do magic stuff - else if(line < firstLine) - { - setFirstLine(firstLine + count); - } - // end of magic stuff - else - { - painter.invalidateLineRange(line,firstLine + visibleLines); - updateScrollBars(); - } - } - - class ScrollLayout implements LayoutManager - { - public void addLayoutComponent(String name, Component comp) - { - if(name.equals(CENTER)) - center = comp; - else if(name.equals(RIGHT)) - right = comp; - else if(name.equals(BOTTOM)) - bottom = comp; - else if(name.equals(LEFT_OF_SCROLLBAR)) - leftOfScrollBar.addElement(comp); - } - - public void removeLayoutComponent(Component comp) - { - if(center == comp) - center = null; - if(right == comp) - right = null; - if(bottom == comp) - bottom = null; - else - leftOfScrollBar.removeElement(comp); - } - - public Dimension preferredLayoutSize(Container parent) - { - Dimension dim = new Dimension(); - Insets insets = getInsets(); - dim.width = insets.left + insets.right; - dim.height = insets.top + insets.bottom; - - Dimension centerPref = center.getPreferredSize(); - dim.width += centerPref.width; - dim.height += centerPref.height; - Dimension rightPref = right.getPreferredSize(); - dim.width += rightPref.width; - Dimension bottomPref = bottom.getPreferredSize(); - dim.height += bottomPref.height; - - return dim; - } - - public Dimension minimumLayoutSize(Container parent) - { - Dimension dim = new Dimension(); - Insets insets = getInsets(); - dim.width = insets.left + insets.right; - dim.height = insets.top + insets.bottom; - - Dimension centerPref = center.getMinimumSize(); - dim.width += centerPref.width; - dim.height += centerPref.height; - Dimension rightPref = right.getMinimumSize(); - dim.width += rightPref.width; - Dimension bottomPref = bottom.getMinimumSize(); - dim.height += bottomPref.height; - - return dim; - } - - public void layoutContainer(Container parent) - { - Dimension size = parent.getSize(); - Insets insets = parent.getInsets(); - int itop = insets.top; - int ileft = insets.left; - int ibottom = insets.bottom; - int iright = insets.right; - - int rightWidth = right.getPreferredSize().width; - int bottomHeight = bottom.getPreferredSize().height; - int centerWidth = size.width - rightWidth - ileft - iright; - int centerHeight = size.height - bottomHeight - itop - ibottom; - - center.setBounds( - ileft, - itop, - centerWidth, - centerHeight); - - right.setBounds( - ileft + centerWidth, - itop, - rightWidth, - centerHeight); - - // Lay out all status components, in order - Enumeration status = leftOfScrollBar.elements(); - while(status.hasMoreElements()) - { - Component comp = (Component)status.nextElement(); - Dimension dim = comp.getPreferredSize(); - comp.setBounds(ileft, - itop + centerHeight, - dim.width, - bottomHeight); - ileft += dim.width; - } - - bottom.setBounds( - ileft, - itop + centerHeight, - size.width - rightWidth - ileft - iright, - bottomHeight); - } - - // private members - private Component center; - private Component right; - private Component bottom; - private Vector leftOfScrollBar = new Vector(); - } - - static class CaretBlinker implements ActionListener - { - public void actionPerformed(ActionEvent evt) - { - if(focusedComponent != null - && focusedComponent.hasFocus()) - focusedComponent.blinkCaret(); - } - } - - class MutableCaretEvent extends CaretEvent - { - MutableCaretEvent() - { - super(JEditTextArea.this); - } - - public int getDot() - { - return getCaretPosition(); - } - - public int getMark() - { - return getMarkPosition(); - } - } - - class AdjustHandler implements AdjustmentListener - { - public void adjustmentValueChanged(final AdjustmentEvent evt) - { - if(!scrollBarsInitialized) - return; - - // If this is not done, mousePressed events accumilate - // and the result is that scrolling doesn't stop after - // the mouse is released - SwingUtilities.invokeLater(new Runnable() { - public void run() - { - if(evt.getAdjustable() == vertical) - setFirstLine(vertical.getValue()); - else - setHorizontalOffset(-horizontal.getValue()); - } - }); - } - } - - class ComponentHandler extends ComponentAdapter - { - public void componentResized(ComponentEvent evt) - { - recalculateVisibleLines(); - scrollBarsInitialized = true; - } - } - - class DocumentHandler implements DocumentListener - { - public void insertUpdate(DocumentEvent evt) - { - documentChanged(evt); - - int offset = evt.getOffset(); - int length = evt.getLength(); - - int newStart; - int newEnd; - - if(selectionStart > offset || (selectionStart - == selectionEnd && selectionStart == offset)) - newStart = selectionStart + length; - else - newStart = selectionStart; - - if(selectionEnd >= offset) - newEnd = selectionEnd + length; - else - newEnd = selectionEnd; - - select(newStart,newEnd); - } - - public void removeUpdate(DocumentEvent evt) - { - documentChanged(evt); - - int offset = evt.getOffset(); - int length = evt.getLength(); - - int newStart; - int newEnd; - - if(selectionStart > offset) - { - if(selectionStart > offset + length) - newStart = selectionStart - length; - else - newStart = offset; - } - else - newStart = selectionStart; - - if(selectionEnd > offset) - { - if(selectionEnd > offset + length) - newEnd = selectionEnd - length; - else - newEnd = offset; - } - else - newEnd = selectionEnd; - - select(newStart,newEnd); - } - - public void changedUpdate(DocumentEvent evt) - { - } - } - - class DragHandler implements MouseMotionListener - { - public void mouseDragged(MouseEvent evt) - { - if(popup != null && popup.isVisible()) - return; - - setSelectionRectangular((evt.getModifiers() - & InputEvent.CTRL_MASK) != 0); - select(getMarkPosition(),xyToOffset(evt.getX(),evt.getY())); - } - - public void mouseMoved(MouseEvent evt) {} - } - - class FocusHandler implements FocusListener - { - public void focusGained(FocusEvent evt) - { - setCaretVisible(true); - focusedComponent = JEditTextArea.this; - } - - public void focusLost(FocusEvent evt) - { - setCaretVisible(false); - focusedComponent = null; - } - } - - class MouseHandler extends MouseAdapter - { - public void mousePressed(MouseEvent evt) - { - requestFocus(); - - // Focus events not fired sometimes? - setCaretVisible(true); - focusedComponent = JEditTextArea.this; - - if((evt.getModifiers() & InputEvent.BUTTON3_MASK) != 0 - && popup != null) - { - popup.show(painter,evt.getX(),evt.getY()); - return; - } - - int line = yToLine(evt.getY()); - int offset = xToOffset(line,evt.getX()); - int dot = getLineStartOffset(line) + offset; - - switch(evt.getClickCount()) - { - case 1: - doSingleClick(evt,line,offset,dot); - break; - case 2: - // It uses the bracket matching stuff, so - // it can throw a BLE - try - { - doDoubleClick(evt,line,offset,dot); - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - } - break; - case 3: - doTripleClick(evt,line,offset,dot); - break; - } - } - - private void doSingleClick(MouseEvent evt, int line, - int offset, int dot) - { - if((evt.getModifiers() & InputEvent.SHIFT_MASK) != 0) - { - rectSelect = (evt.getModifiers() & InputEvent.CTRL_MASK) != 0; - select(getMarkPosition(),dot); - } - else - setCaretPosition(dot); - } - - private void doDoubleClick(MouseEvent evt, int line, - int offset, int dot) throws BadLocationException - { - // Ignore empty lines - if(getLineLength(line) == 0) - return; - - try - { - int bracket = TextUtilities.findMatchingBracket( - document,Math.max(0,dot - 1)); - if(bracket != -1) - { - int mark = getMarkPosition(); - // Hack - if(bracket > mark) - { - bracket++; - mark--; - } - select(mark,bracket); - return; - } - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - } - - // Ok, it's not a bracket... select the word - String lineText = getLineText(line); - char ch = lineText.charAt(Math.max(0,offset - 1)); - - String noWordSep = (String)document.getProperty("noWordSep"); - if(noWordSep == null) - noWordSep = ""; - - // If the user clicked on a non-letter char, - // we select the surrounding non-letters - boolean selectNoLetter = (!Character - .isLetterOrDigit(ch) - && noWordSep.indexOf(ch) == -1); - - int wordStart = 0; - - for(int i = offset - 1; i >= 0; i--) - { - ch = lineText.charAt(i); - if(selectNoLetter ^ (!Character - .isLetterOrDigit(ch) && - noWordSep.indexOf(ch) == -1)) - { - wordStart = i + 1; - break; - } - } - - int wordEnd = lineText.length(); - for(int i = offset; i < lineText.length(); i++) - { - ch = lineText.charAt(i); - if(selectNoLetter ^ (!Character - .isLetterOrDigit(ch) && - noWordSep.indexOf(ch) == -1)) - { - wordEnd = i; - break; - } - } - - int lineStart = getLineStartOffset(line); - select(lineStart + wordStart,lineStart + wordEnd); - - /* - String lineText = getLineText(line); - String noWordSep = (String)document.getProperty("noWordSep"); - int wordStart = TextUtilities.findWordStart(lineText,offset,noWordSep); - int wordEnd = TextUtilities.findWordEnd(lineText,offset,noWordSep); - - int lineStart = getLineStartOffset(line); - select(lineStart + wordStart,lineStart + wordEnd); - */ - } - - private void doTripleClick(MouseEvent evt, int line, - int offset, int dot) - { - select(getLineStartOffset(line),getLineEndOffset(line)-1); - } - } - - class CaretUndo extends AbstractUndoableEdit - { - private int start; - private int end; - - CaretUndo(int start, int end) - { - this.start = start; - this.end = end; - } - - public boolean isSignificant() - { - return false; - } - - public String getPresentationName() - { - return "caret move"; - } - - public void undo() throws CannotUndoException - { - super.undo(); - - select(start,end); - } - - public void redo() throws CannotRedoException - { - super.redo(); - - select(start,end); - } - - public boolean addEdit(UndoableEdit edit) - { - if(edit instanceof CaretUndo) - { - CaretUndo cedit = (CaretUndo)edit; - start = cedit.start; - end = cedit.end; - cedit.die(); - - return true; - } - else - return false; - } - } - - static - { - caretTimer = new Timer(500,new CaretBlinker()); - caretTimer.setInitialDelay(500); - caretTimer.start(); - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/JListEx.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/JListEx.java deleted file mode 100644 index 611551e4c61..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/JListEx.java +++ /dev/null @@ -1,578 +0,0 @@ -/** - * SwingEx Project - * - * This class is part of the Swing Extension Project. The goal of this project - * is to provide Swing components with extra functionality that isn't available - * in the standard Swing components from Sun. - * - * @author Jeroen Zwartepoorte (Jeroen@xs4all.nl) - */ -package org.astron.util.gui; - -import java.awt.*; -import java.awt.event.*; -import java.util.Vector; - -// JFC 1.0.X -/*import com.sun.java.swing.*; -import com.sun.java.swing.event.ListSelectionListener;*/ - -// JFC 1.1.X -import javax.swing.*; -import javax.swing.event.ListSelectionListener; - -/** - * This component contains extended functionality that JList doesn't have. It's - * written so that you only have to change your JList declaration from JList to - * JListEx. The rest of the changes are transparent. These are the extra - * functionalities: <BR> - * <UL> - * <LI><B>DataTips</B>: When a cell isn't completely visible, it displays a - * JToolTip when the user holds the cursor over it.</LI> - * <LI><B>JScrollPane</B>: In order for the datatips to work, JListEx is already - * in a JScrollPane. You don't have to add JListEx to a scrollpane like you had - * to do for JList. You can get access to the scrollpane by using the - * getScrollPane() method.</LI> - * <LI><B>Background image:</B> You can change the background of the component - * from a dull white color to a nice image. You can also set the component to - * either scroll the image when you scroll the JList or to have the background - * remain fixed while you scroll.</LI></UL> - * - * <B>Notes :</B><UL> - * <LI>There's a bug in Swing 1.1 & 1.1.1 beta1 that causes the tooltips to be - * be displayed as a panel. The result of this bug is that when JListEx is - * located near the border of a Frame, the tooltip doesn't display outside the - * frame. The location provided by list_getToolTipLocation isn't correctly used - * to position the tooltip either. The workaround is to modify ToolTipManager.java - * to use a WindowTip when the lightWeightPopupEnabled boolean is set to false. - * This can be done by changing the code in the method <B>void showTipWindow()</B> - * to the following code:<BR><PRE> - * if (insideComponent.getRootPane() == null){ - * tipWindow = new WindowPopup((frameForComponent(insideComponent)),tip,size); - * heavyWeightPopupEnabled = true; - * } - * else if (lightWeightPopupEnabled){ - * heavyWeightPopupEnabled = false; - * tipWindow = new JPanelPopup(tip,size); - * } - * else { - * // The following code has been changed due to a bug in the source from Sun. - * heavyWeightPopupEnabled = true; - * tipWindow = new WindowPopup((frameForComponent(insideComponent)),tip,size); - * } - * <PRE></LI></UL> - * - * Any suggestions on extra functionality are welcome! - * - * @author Jeroen Zwartepoorte (<A HREF="mailto:Jeroen@xs4all.nl">Jeroen@xs4all.nl</A>) - * @author used source by Zafir Anjum (<A HREF="http://www.codeguru.com/java/articles/123.shtml">www.codeguru.com/java/articles/123.shtml</A>) - * @version 1.0 (13-02-1999) - */ -public class JListEx extends JComponent -{ - // Private variables. - private JScrollPaneEx scrollpane = null; - private JList list = null; - private ImageIcon ImBackground = null; - private int nDismissDelay = 0; - private boolean bDataTips = false; - private boolean bScrollableBackground = true; - - /** - * Parameterless constructor. - * #see javax.swing.JList#JList() - */ - public JListEx() - { - list = new JList(); - init(); - } - - /** - * Object array constructor. - * #see javax.swing.JList#JList(Object[]) - */ - public JListEx(final Object[] listData) - { - list = new JList(); - init(); - } - - /** - * Vector constructor. - * #see javax.swing.JList#JList(Vector) - */ - public JListEx(final Vector listData) - { - list = new JList(); - init(); - } - - /** - * ListModel constructor. - * #see javax.swing.JList#JList(ListModel) - */ - public JListEx(ListModel dataModel) - { - list = new JList(); - init(); - } - - /** - * Intialize class variables. - */ - protected void init() - { - // Set ToolTipManager to use heavyweight tooltips. (workaround for - // bug in ToolTipManager.java in Swing 1.1 & Swing 1.1.1 beta1. - // In order for workaround to work, you need to change ToolTipManager.java - // and recompile ToolTipManager classes and replace them in Swingall.jar. - ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false); - - // Set list opaque and fore & background values. These need to be set in - // order for the ListCellRenderer to render the component without obscuring - // the background image. - list.setOpaque(false); - list.setBackground(null); - list.setForeground(null); - list.setCellRenderer(new DefaultTransparentListCellRenderer()); - - // Setup layout. - scrollpane = new JScrollPaneEx(list); - this.setLayout(new BorderLayout()); - this.add(scrollpane, BorderLayout.CENTER); - } - - /** - * Returns wether the datatips are enabled. - */ - public boolean getDataTips() - { - return bDataTips; - } - - /** - * Enable or disable datatips. - */ - public void setDataTips(boolean bDataTips) - { - this.bDataTips = bDataTips; - if (bDataTips) - list.setToolTipText("text"); - else - list.setToolTipText(""); - } - - /** - * Returns scrollpane that contains JList. - */ - public JScrollPaneEx getScrollPane() - { - return scrollpane; - } - - /** - * This method is called when the JList is asked for the tooltip text. - * JList.getToolTipText refers to this method. This method is declared here - * because it needs access to the JScrollPane that the JList is in. - */ - protected String list_getToolTipText(MouseEvent event) - { - int idx = list.locationToIndex(event.getPoint()); - - if (idx == -1) - return null; - - Object obj = list.getModel().getElementAt(idx); - - boolean bSelected = obj.equals(list.getSelectedValue()); - - Component comp = list.getCellRenderer().getListCellRendererComponent(list, - obj, idx, bSelected, bSelected); - - if (obj == null) - return null; - if (obj.toString().equals("")) - return null; - - if (comp.getPreferredSize().width < scrollpane.getSize().width) - return null; - - return obj.toString(); - } - - /** - * This method is called when the JList is asked for the position of the - * tooltip. JList.getToolTipLocation refers to this method. This method is - * declared here because it needs access to the JScrollPane that the JList - * is in. - */ - protected Point list_getToolTipLocation(MouseEvent event) - { - int idx = list.locationToIndex(event.getPoint()); - - if (idx == -1) - return null; - - Object obj = list.getModel().getElementAt(idx); - - boolean bSelected = obj.equals(list.getSelectedValue()); - - Component comp = list.getCellRenderer().getListCellRendererComponent(list, - obj, idx, bSelected, bSelected); - - if (obj == null) - return null; - if (obj.toString().equals("")) - return null; - - if (comp.getPreferredSize().width < scrollpane.getSize().width) - return null; - - Point pt = list.getCellBounds(idx, idx).getLocation(); - if (pt == null) - return null; - - pt.translate(-2, -1); - - return pt; - } - - /** - * This method is called when the JList is repainted. The list_paint method - * draws a background image when ImBackground != null and if the - * bScrollableBackground is set to true. If that property is set to false, - * the background image is painted by the JScrollPane that contains the - * JList. It checks if the icon size != -1 to see if the image is really - * loaded. - */ - protected void list_paint(Graphics g) - { - if (ImBackground != null) - { - if (bScrollableBackground) - { - // Make sure image is loaded. - if ((ImBackground.getIconWidth() == -1) || - (ImBackground.getIconHeight() == -1)) - return; - - Dimension dim = list.getSize(); - - // Tile image. - for (int x = 0; x < dim.width; x += ImBackground.getIconWidth()) - for (int y = 0; y < dim.height; y += ImBackground.getIconHeight()) - g.drawImage(ImBackground.getImage(), x, y, null, null); - } - } - } - - /** - * This sets the background image. We need to repaint the component after - * this property is set. - */ - public void setBackgroundImage(ImageIcon ImBackground) - { - this.ImBackground = ImBackground; - repaint(); - } - - /** - * This sets the background image and sets the scrollable property too. We - * need to repaint the component after the properties are set. - */ - public void setBackgroundImage(ImageIcon ImBackground, boolean bScrollableBackground) - { - this.ImBackground = ImBackground; - setScrollableBackground(bScrollableBackground); - } - - /** - * This returns the background image currently used for painting the - * background of the JList. - */ - public ImageIcon getBackgroundImage() - { - return ImBackground; - } - - /** - * This sets wether the background image scrolls with the JList or if it - * remains fixed. - */ - public void setScrollableBackground(boolean bScrollableBackground) - { - this.bScrollableBackground = bScrollableBackground; - - if (bScrollableBackground) - scrollpane.setBackgroundImage(null); - else - scrollpane.setBackgroundImage(ImBackground); - repaint(); - } - - /** - * This returns wether the background scrolls with the JList. - */ - public boolean getScrollableBackground() - { - return bScrollableBackground; - } - - /** - * MouseListener methods. These methods change the dismissDelay integer - * of the ToolTipManager to make sure the datatips don't disappear after - * a while when you still have the mouse over them. This happens when the - * mouse enters JListEx, and the value is set back to it's original value - * on mouseExited. - */ - public void this_mouseEntered(MouseEvent e) - { - mouseEntered(e); - } - - public void this_mouseExited(MouseEvent e) - { - mouseExited(e); - } - - public void mouseEntered(MouseEvent e) - { - nDismissDelay = ToolTipManager.sharedInstance().getDismissDelay(); - ToolTipManager.sharedInstance().setDismissDelay(Integer.MAX_VALUE); - } - - public void mouseExited(MouseEvent e) - { - ToolTipManager.sharedInstance().setDismissDelay(nDismissDelay); - } - - public void mouseClicked(MouseEvent e) {} - public void mousePressed(MouseEvent e) {} - public void mouseReleased(MouseEvent e) {} - - - /** - * JList methods. - * - * These methods are declared here so that the programmer can use JListEx - * like any normal JList. Since this class extends JComponent we need to - * add all the public methods in JList here and call the appropriate method - * in the JList. - */ - public void addListSelectionListener(ListSelectionListener listener) { - list.addListSelectionListener(listener); - } - - public void addSelectionInterval(int anchor, int lead) { - list.addSelectionInterval(anchor, lead); - } - - public void clearSelection() { - list.clearSelection(); - } - - public void ensureIndexIsVisible(int index) { - list.ensureIndexIsVisible(index); - } - - public int getAnchorSelectionIndex() { - return list.getAnchorSelectionIndex(); - } - - public Rectangle getCellBounds(int index1, int index2) { - return list.getCellBounds(index1, index2); - } - - public ListCellRenderer getCellRenderer() { - return list.getCellRenderer(); - } - - public int getFirstVisibleIndex() { - return list.getFirstVisibleIndex(); - } - - public int getFixedCellHeight() { - return list.getFixedCellHeight(); - } - - public int getFixedCellWidth() { - return list.getFixedCellWidth(); - } - - public int getLastVisibleIndex() { - return list.getLastVisibleIndex(); - } - - public int getLeadSelectionIndex() { - return list.getLeadSelectionIndex(); - } - - public int getMaxSelectionIndex() { - return list.getMaxSelectionIndex(); - } - - public int getMinSelectionIndex() { - return list.getMinSelectionIndex(); - } - - public ListModel getModel() { - return list.getModel(); - } - - public Dimension getPreferredScrollableViewportSize() { - return list.getPreferredScrollableViewportSize(); - } - - public Object getPrototypeCellValue() { - return list.getPrototypeCellValue(); - } - - public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { - return list.getScrollableBlockIncrement(visibleRect, orientation, direction); - } - - public boolean getScrollableTracksViewportHeight() { - return list.getScrollableTracksViewportHeight(); - } - - public boolean getScrollableTracksViewportWidth() { - return list.getScrollableTracksViewportWidth(); - } - - public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { - return list.getScrollableUnitIncrement(visibleRect, orientation, direction); - } - - public int getSelectedIndex() { - return list.getSelectedIndex(); - } - - public int[] getSelectedIndices() { - return list.getSelectedIndices(); - } - - public Object getSelectedValue() { - return list.getSelectedValue(); - } - - public Object[] getSelectedValues() { - return list.getSelectedValues(); - } - - public Color getSelectionBackground() { - return list.getSelectionBackground(); - } - - public Color getSelectionForeground() { - return list.getSelectionForeground(); - } - - public int getSelectionMode() { - return list.getSelectionMode(); - } - - public ListSelectionModel getSelectionModel() { - return list.getSelectionModel(); - } - - public boolean getValueIsAdjusting() { - return list.getValueIsAdjusting(); - } - - public int getVisibleRowCount() { - return list.getVisibleRowCount(); - } - - public Point indexToLocation(int index) { - return list.indexToLocation(index); - } - - public boolean isSelectedIndex(int index) { - return list.isSelectedIndex(index); - } - - public boolean isSelectionEmpty() { - return list.isSelectionEmpty(); - } - - public int locationToIndex(Point location) { - return list.locationToIndex(location); - } - - public void removeListSelectionListener(ListSelectionListener listener) { - list.removeListSelectionListener(listener); - } - - public void removeSelectionInterval(int index0, int index1) { - list.removeSelectionInterval(index0, index1); - } - - public void setCellRenderer(ListCellRenderer cellRenderer) { - list.setCellRenderer(cellRenderer); - } - - public void setFixedCellHeight(int height) { - list.setFixedCellHeight(height); - } - - public void setFixedCellWidth(int width) { - list.setFixedCellWidth(width); - } - - public void setListData(final Object[] listData) { - list.setListData(listData); - } - - public void setListData(final Vector listData) { - list.setListData(listData); - } - - public void setModel(ListModel model) { - list.setModel(model); - } - - public void setPrototypeCellValue(Object prototypeCellValue) { - list.setPrototypeCellValue(prototypeCellValue); - } - - public void setSelectedIndex(int index) { - list.setSelectedIndex(index); - } - - public void setSelectedIndices(int[] indices) { - list.setSelectedIndices(indices); - } - - public void setSelectedValue(Object anObject,boolean shouldScroll) { - list.setSelectedValue(anObject, shouldScroll); - } - - public void setSelectionBackground(Color selectionBackground) { - list.setSelectionBackground(selectionBackground); - } - - public void setSelectionForeground(Color selectionForeground) { - list.setSelectionForeground(selectionForeground); - } - - public void setSelectionInterval(int anchor, int lead) { - list.setSelectionInterval(anchor, lead); - } - - public void setSelectionMode(int selectionMode) { - list.setSelectionMode(selectionMode); - } - - public void setSelectionModel(ListSelectionModel selectionModel) { - list.setSelectionModel(selectionModel); - } - - public void setValueIsAdjusting(boolean b) { - list.setValueIsAdjusting(b); - } - - public void setVisibleRowCount(int visibleRowCount) { - list.setVisibleRowCount(visibleRowCount); - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/JMultiLineToolTip.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/JMultiLineToolTip.java deleted file mode 100644 index 227d2fe27f0..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/JMultiLineToolTip.java +++ /dev/null @@ -1,148 +0,0 @@ -package org.astron.util.gui; - -import javax.swing.JToolTip; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Zafir Anjum - * @version 1.0 - */ - -// JMultiLineToolTip.java -import javax.swing.*; -import javax.swing.plaf.*; - -import java.awt.*; -import java.awt.font.*; -import java.awt.event.*; -import javax.swing.plaf.*; -import javax.swing.plaf.basic.BasicToolTipUI; -import javax.swing.text.*; - -public class JMultiLineToolTip extends JToolTip -{ - private static final String uiClassID = "ToolTipUI"; - - String tipText; - JComponent component; - - public JMultiLineToolTip() { - updateUI(); - } - - public void updateUI() { - setUI(MultiLineToolTipUI.createUI(this)); - } - - public void setColumns(int columns) - { - this.columns = columns; - this.fixedwidth = 0; - } - - public int getColumns() - { - return columns; - } - - public void setFixedWidth(int width) - { - this.fixedwidth = width; - this.columns = 0; - } - - public int getFixedWidth() - { - return fixedwidth; - } - - protected int columns = 0; - protected int fixedwidth = 0; -} - -class MultiLineToolTipUI extends BasicToolTipUI { - static MultiLineToolTipUI sharedInstance = new MultiLineToolTipUI(); - Font smallFont; - static JToolTip tip; - protected CellRendererPane rendererPane; - - private static JTextArea textArea ; - - public static ComponentUI createUI(JComponent c) { - return sharedInstance; - } - - public MultiLineToolTipUI() { - super(); - } - - public void installUI(JComponent c) { - super.installUI(c); - tip = (JToolTip)c; - rendererPane = new CellRendererPane(); - c.add(rendererPane); - } - - public void uninstallUI(JComponent c) { - super.uninstallUI(c); - - c.remove(rendererPane); - rendererPane = null; - } - - public void paint(Graphics g, JComponent c) { - Dimension size = c.getSize(); - textArea.setBackground(c.getBackground()); - rendererPane.paintComponent(g, textArea, c, 1, 1, - size.width - 1, size.height - 1, true); - } - - public Dimension getPreferredSize(JComponent c) { - String tipText = ((JToolTip)c).getTipText(); - if (tipText == null) - return new Dimension(0,0); - textArea = new JTextArea(tipText ); - rendererPane.removeAll(); - rendererPane.add(textArea ); - textArea.setWrapStyleWord(true); - int width = ((JMultiLineToolTip)c).getFixedWidth(); - int columns = ((JMultiLineToolTip)c).getColumns(); - - if( columns > 0 ) - { - textArea.setColumns(columns); - textArea.setSize(0,0); - textArea.setLineWrap(true); - textArea.setSize( textArea.getPreferredSize() ); - } - else if( width > 0 ) - { - textArea.setLineWrap(true); - Dimension d = textArea.getPreferredSize(); - d.width = width; - d.height++; - textArea.setSize(d); - } - else - textArea.setLineWrap(false); - - - Dimension dim = textArea.getPreferredSize(); - - dim.height += 1; - dim.width += 1; - return dim; - } - - public Dimension getMinimumSize(JComponent c) { - return getPreferredSize(c); - } - - public Dimension getMaximumSize(JComponent c) { - return getPreferredSize(c); - } -} - diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/JNotifier.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/JNotifier.java deleted file mode 100644 index d690ad6796f..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/JNotifier.java +++ /dev/null @@ -1,181 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.util.gui; - -/** - * Title: Graphical Notifier - * Description: Swing component that can display messages. - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import javax.swing.*; -import javax.swing.event.*; -import java.util.*; -import java.awt.*; -import java.awt.event.*; -import javax.swing.plaf.basic.*; - -public class JNotifier extends JPanel implements MessageListener { - - /** Default message icon */ - final static ImageIcon defaultIcon = new ImageIcon("images/copy16.gif"); - - //private MessageListModel _model = new MessageListModel(); - private MessageListModel _model = new MessageListModel(); - public JList _list; - private JScrollPane _scrollPane; - JNotifier _this; - - public JNotifier() { - _list = new JList(_model); - _list.setVisibleRowCount(6); - _list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - _list.addMouseListener(new MyMouseListener()); - _list.setCellRenderer(new MyCellRenderer()); - _scrollPane = new JScrollPane(_list, - JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, - JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - setLayout(new GridLayout(1,1)); - add(_scrollPane); - _this = this; - } - - public void note(MessageEvent event) { - _model.addMessageEvent(event); - _list.ensureIndexIsVisible(_model.getSize()-1); - } - - public void clearAll() { _model.clearAll(); } - - /** The Data Model for the JList */ - private class MessageListModel extends DefaultListModel { - ArrayList events; - MessageListModel () { events = new ArrayList(30); } - public void addMessageEvent (MessageEvent event) { - events.add(event); - EventListener el[]=getListeners(ListDataListener.class); - fireContentsChanged(this,0,events.size()-1); - fireIntervalAdded(this,0,events.size()-1); - } - public void clearAll() { - events.clear(); - fireIntervalRemoved(this,0,events.size()); - } - public void clearInvalid() { - boolean change = false; - for (int i=0; i<events.size(); i++) { - if (getMessageEventAt(i).valid()) { - events.remove(i); - change = true; - } - } - if (change) fireIntervalRemoved(this,0,events.size()-1); - } - public MessageEvent getMessageEventAt(int index) { - return (MessageEvent)events.get(index); - } - public Object getElementAt(int index) { - return events.get(index); - } - public int getSize() { - return events.size(); - } - } - - /** Handles mouse clicks on the JList */ - private class MyMouseListener implements MouseListener { - public void mouseClicked(MouseEvent e) { - if (((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) - && (e.getClickCount()==2)) { - // left button double-clicked - JList list = (JList)e.getSource(); - int ix = list.locationToIndex(e.getPoint()); - if (ix != -1) { - MessageEvent mEvent = (MessageEvent) - list.getModel().getElementAt(ix); - mEvent.onClick(_this); // take message specific action - } - } - } - public void mouseEntered(MouseEvent e) { - } - public void mouseExited(MouseEvent e) { - } - public void mousePressed(MouseEvent e) { - } - public void mouseReleased(MouseEvent e) { - } - } - - /** Calls MessageEvent onClick() handler when a list item is selected */ - private class SelectionListener implements ListSelectionListener { - public void valueChanged(ListSelectionEvent e) { - if (e.getValueIsAdjusting()) return; - JList list = (JList)e.getSource(); - if (list.isSelectionEmpty()) return; - MessageEvent mevent = (MessageEvent)list.getSelectedValue(); - if (mevent == null) { - System.err.println("MessageEvent==null in SelectionListener"); - return; - } - mevent.onClick(_this); // take message specific action. - } - } - - /** Custom JList item renderer that renders an icon followed by a string */ - class MyCellRenderer extends JLabel implements ListCellRenderer { - - public MyCellRenderer () { - setIconTextGap(3); - setOpaque(false); - } - - // We just reconfigure the JLabel each time we're called. - public Component getListCellRendererComponent(JList list,Object value, - int index,boolean isSelected,boolean cellHasFocus) - { - if (! (value instanceof MessageEvent) ) { - setText(value.toString()); - return this; - } - MessageEvent event = (MessageEvent)value; - setText(event.getMessage()); - setIcon((event.getIcon() == null) ? defaultIcon : event.getIcon()); - if (isSelected) { - setBackground(list.getSelectionBackground()); - setForeground(list.getSelectionForeground()); - setOpaque(true); - } else { - setOpaque(false); - if (event.getType() == event.ERROR) setForeground(Color.red); - else if (event.getType() == event.WARNING) setForeground(Color.blue); - else setForeground(Color.black); - setBackground(list.getBackground()); - } - setEnabled(list.isEnabled()); - setFont(list.getFont()); - return this; - } - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/JScrollPaneEx.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/JScrollPaneEx.java deleted file mode 100644 index 1ec3377d8b4..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/JScrollPaneEx.java +++ /dev/null @@ -1,121 +0,0 @@ -/** - * SwingEx Project - * - * This class is part of the Swing Extension Project. The goal of this project - * is to provide Swing components with extra functionality that isn't available - * in the standard Swing components from Sun. - * - * @author Jeroen Zwartepoorte (Jeroen@xs4all.nl) - */ -package org.astron.util.gui; - -import java.awt.*; -import javax.swing.*; - -/** - * This component contains extended functionality that JScrollPane doesn't have. - * It's written so that you only have to change your JScrollPane declaration from - * JList to JScrollPaneEx. The rest of the changes are transparent. These are the - * extra functionalities: <BR> - * <UL> - * <LI><B>Background image:</B> You can change the background of the component - * from a dull white color to a nice image. The image doesn't scroll when you - * scroll the component(s) inside the JScrollPaneEx. That functionality lies - * with the component inside the scrollpane.</LI></UL> - * - * <B>Notes :</B> Any suggestions on extra functionality are welcome! - * - * @author Jeroen Zwartepoorte (<A HREF="mailto:Jeroen@xs4all.nl">Jeroen@xs4all.nl</A>) - * @author used source by Zafir Anjum (<A HREF="http://www.codeguru.com/java/articles/181.shtml">www.codeguru.com/java/articles/181.shtml</A>) - * @version 1.0 (13-02-1999) - */ -public class JScrollPaneEx extends JScrollPane -{ - // Private variables. - private ImageIcon ImBackground = null; - - /** - * @see javax.swing.JScrollPane#JScrollPane - */ - public JScrollPaneEx() - { - super(); - } - - /** - * @see javax.swing.JScrollPane#JScrollPane(java.awt.Component) - */ - public JScrollPaneEx(Component view) - { - super(view); - } - - /** - * @see javax.swing.JScrollPane#JScrollPane(java.awt.Component,int,int) - */ - public JScrollPaneEx(Component view, int vsbPolicy, int hsbPolicy) - { - super(view, vsbPolicy, hsbPolicy); - } - - /** - * @see javax.swing.JScrollPane#JScrollPane(int, int) - */ - public JScrollPaneEx(int vsbPolicy, int hsbPolicy) - { - super(vsbPolicy, hsbPolicy); - } - - /** - * This sets the background image. We need to repaint the component after - * this property is set. - */ - public void setBackgroundImage(ImageIcon ImBackground) - { - this.ImBackground = ImBackground; - repaint(); - } - - /** - * This returns the background image currently used for painting the - * background. - */ - public ImageIcon getBackgroundImage() - { - return ImBackground; - } - - /** - * This overrides JScrollPane.paint(Graphics g). We first need to draw the - * tiled background image. After that, we can call super.paint(g) to paint - * the JScrollPane. - */ - public void paintComponent(Graphics g) - { - if (ImBackground != null) - { - // Make sure image is loaded. - if ((ImBackground.getIconWidth() == -1) || - (ImBackground.getIconHeight() == -1)) - { - super.paint(g); - return; - } - - // Tile image. - Rectangle rect = getViewport().getViewRect(); - for (int x = 0; x < rect.width; x += ImBackground.getIconWidth()) - for (int y = 0; y < rect.height; y += ImBackground.getIconHeight()) - g.drawImage(ImBackground.getImage(), x, y, null, null); - - // Do not use cached image for scrolling. - getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE); - - Rectangle r = g.getClipBounds(); - g.setColor(Color.red); - g.fillRect(r.x, r.y, r.width, r.height); - System.out.println("painted!"); - } - //super.paint(g); - } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/JToggleButtonEx.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/JToggleButtonEx.java deleted file mode 100644 index 124b86690a9..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/JToggleButtonEx.java +++ /dev/null @@ -1,78 +0,0 @@ -package org.astron.util.gui; - -import javax.swing.JToggleButton; -import java.awt.event.*; -import javax.swing.border.*; -import java.awt.*; -import javax.swing.*; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -public class JToggleButtonEx extends JToggleButton - implements MouseListener { - private Border emptyBorder; - private Border etchedBorder; - private Border selBorder; - - public JToggleButtonEx() { - super(); - } - public JToggleButtonEx(Action a) { - super(a); - init(); - } - public JToggleButtonEx(Icon icon) { - super(icon); - init(); - } - public JToggleButtonEx(Icon icon, boolean selected) { - super(icon,selected); - init(); - } - public JToggleButtonEx(String text) { - super(text); - init(); - } - public JToggleButtonEx(String text, boolean selected) { - super(text,selected); - init(); - } - public JToggleButtonEx(String text, Icon icon) { - super(text,icon); - init(); - } - public JToggleButtonEx(String text, Icon icon, boolean selected) { - super(text,icon,selected); - init(); - } - private void init() { - emptyBorder = BorderFactory.createEmptyBorder(); - etchedBorder = BorderFactory.createEtchedBorder(); - selBorder = BorderFactory.createBevelBorder(1); - setBorder(emptyBorder); - addMouseListener(this); - Dimension d = new Dimension(34,30); - setPreferredSize(d); - setMaximumSize(d); - } - public void mouseClicked(MouseEvent e) {} - public void mousePressed(MouseEvent e) {} - public void mouseReleased(MouseEvent e) {} - public void mouseEntered(MouseEvent e) { - if (!isEnabled()) { - setBorder(emptyBorder); - return; - } - setBorder(etchedBorder); - } - public void mouseExited(MouseEvent e) { - setBorder(emptyBorder); - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/JTreeEx.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/JTreeEx.java deleted file mode 100644 index 97f0ec7394c..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/JTreeEx.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.astron.util.gui; - -import javax.swing.*; -import javax.swing.tree.*; -import java.awt.*; -import javax.swing.plaf.basic.*; -import java.util.*; - -/** - * Title: LOFARSim - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -/** A JTree that changes the default white background of a JTree to an - * bitmapped background. */ -public class JTreeEx extends JTree { - - public JTreeEx() { - super(); - } - public JTreeEx(Hashtable value) { - super(value); - } - public JTreeEx(Object[] value) { - super(value); - } - public JTreeEx(TreeModel newModel) { - super(newModel); - } - public JTreeEx(TreeNode root) { - super(root); - } - public JTreeEx(TreeNode root, boolean asksAllowsChildren) { - super(root,asksAllowsChildren); - } - public JTreeEx(Vector value) { - super(value); - } - - public void setBackground(Image i) { - setUI(new MyTreeUI(i)); - } - - private class MyTreeUI extends javax.swing.plaf.basic.BasicTreeUI { - private Image bkgImg = null; - - public MyTreeUI(Image i) { - bkgImg = i; - } - - public void paint(Graphics g, JComponent c) { - if (bkgImg != null) { - g.drawImage(bkgImg, 0, 0, null); - } - //let the superclass handle the rest - super.paint(g, c); - } - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/JavaScriptTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/JavaScriptTokenMarker.java deleted file mode 100644 index c90ce849457..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/JavaScriptTokenMarker.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * JavaScriptTokenMarker.java - JavaScript token marker - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * JavaScript token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class JavaScriptTokenMarker extends CTokenMarker -{ - public JavaScriptTokenMarker() - { - super(false,getKeywords()); - } - - public static KeywordMap getKeywords() - { - if(javaScriptKeywords == null) - { - javaScriptKeywords = new KeywordMap(false); - javaScriptKeywords.add("function",Token.KEYWORD3); - javaScriptKeywords.add("var",Token.KEYWORD3); - javaScriptKeywords.add("else",Token.KEYWORD1); - javaScriptKeywords.add("for",Token.KEYWORD1); - javaScriptKeywords.add("if",Token.KEYWORD1); - javaScriptKeywords.add("in",Token.KEYWORD1); - javaScriptKeywords.add("new",Token.KEYWORD1); - javaScriptKeywords.add("return",Token.KEYWORD1); - javaScriptKeywords.add("while",Token.KEYWORD1); - javaScriptKeywords.add("with",Token.KEYWORD1); - javaScriptKeywords.add("break",Token.KEYWORD1); - javaScriptKeywords.add("case",Token.KEYWORD1); - javaScriptKeywords.add("continue",Token.KEYWORD1); - javaScriptKeywords.add("default",Token.KEYWORD1); - javaScriptKeywords.add("false",Token.LABEL); - javaScriptKeywords.add("this",Token.LABEL); - javaScriptKeywords.add("true",Token.LABEL); - } - return javaScriptKeywords; - } - - // private members - private static KeywordMap javaScriptKeywords; -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/JavaTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/JavaTokenMarker.java deleted file mode 100644 index fd85f96e569..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/JavaTokenMarker.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * JavaTokenMarker.java - Java token marker - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ - -package org.astron.util.gui; - -import javax.swing.text.Segment; - -/** - * Java token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class JavaTokenMarker extends CTokenMarker -{ - public JavaTokenMarker() - { - super(false,getKeywords()); - } - - public static KeywordMap getKeywords() - { - if(javaKeywords == null) - { - javaKeywords = new KeywordMap(false); - javaKeywords.add("package",Token.KEYWORD2); - javaKeywords.add("import",Token.KEYWORD2); - javaKeywords.add("byte",Token.KEYWORD3); - javaKeywords.add("char",Token.KEYWORD3); - javaKeywords.add("short",Token.KEYWORD3); - javaKeywords.add("int",Token.KEYWORD3); - javaKeywords.add("long",Token.KEYWORD3); - javaKeywords.add("float",Token.KEYWORD3); - javaKeywords.add("double",Token.KEYWORD3); - javaKeywords.add("boolean",Token.KEYWORD3); - javaKeywords.add("void",Token.KEYWORD3); - javaKeywords.add("class",Token.KEYWORD3); - javaKeywords.add("interface",Token.KEYWORD3); - javaKeywords.add("abstract",Token.KEYWORD1); - javaKeywords.add("final",Token.KEYWORD1); - javaKeywords.add("private",Token.KEYWORD1); - javaKeywords.add("protected",Token.KEYWORD1); - javaKeywords.add("public",Token.KEYWORD1); - javaKeywords.add("static",Token.KEYWORD1); - javaKeywords.add("synchronized",Token.KEYWORD1); - javaKeywords.add("native",Token.KEYWORD1); - javaKeywords.add("volatile",Token.KEYWORD1); - javaKeywords.add("transient",Token.KEYWORD1); - javaKeywords.add("break",Token.KEYWORD1); - javaKeywords.add("case",Token.KEYWORD1); - javaKeywords.add("continue",Token.KEYWORD1); - javaKeywords.add("default",Token.KEYWORD1); - javaKeywords.add("do",Token.KEYWORD1); - javaKeywords.add("else",Token.KEYWORD1); - javaKeywords.add("for",Token.KEYWORD1); - javaKeywords.add("if",Token.KEYWORD1); - javaKeywords.add("instanceof",Token.KEYWORD1); - javaKeywords.add("new",Token.KEYWORD1); - javaKeywords.add("return",Token.KEYWORD1); - javaKeywords.add("switch",Token.KEYWORD1); - javaKeywords.add("while",Token.KEYWORD1); - javaKeywords.add("throw",Token.KEYWORD1); - javaKeywords.add("try",Token.KEYWORD1); - javaKeywords.add("catch",Token.KEYWORD1); - javaKeywords.add("extends",Token.KEYWORD1); - javaKeywords.add("finally",Token.KEYWORD1); - javaKeywords.add("implements",Token.KEYWORD1); - javaKeywords.add("throws",Token.KEYWORD1); - javaKeywords.add("this",Token.LITERAL2); - javaKeywords.add("null",Token.LITERAL2); - javaKeywords.add("super",Token.LITERAL2); - javaKeywords.add("true",Token.LITERAL2); - javaKeywords.add("false",Token.LITERAL2); - } - return javaKeywords; - } - - // private members - private static KeywordMap javaKeywords; -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/KeywordMap.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/KeywordMap.java deleted file mode 100644 index 157fea906f0..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/KeywordMap.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * KeywordMap.java - Fast keyword->id map - * Copyright (C) 1998, 1999 Slava Pestov - * Copyright (C) 1999 Mike Dillon - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * A <code>KeywordMap</code> is similar to a hashtable in that it maps keys - * to values. However, the `keys' are Swing segments. This allows lookups of - * text substrings without the overhead of creating a new string object. - * <p> - * This class is used by <code>CTokenMarker</code> to map keywords to ids. - * - * @author Slava Pestov, Mike Dillon - * @version $Id$ - */ -public class KeywordMap -{ - /** - * Creates a new <code>KeywordMap</code>. - * @param ignoreCase True if keys are case insensitive - */ - public KeywordMap(boolean ignoreCase) - { - this(ignoreCase, 52); - this.ignoreCase = ignoreCase; - } - - /** - * Creates a new <code>KeywordMap</code>. - * @param ignoreCase True if the keys are case insensitive - * @param mapLength The number of `buckets' to create. - * A value of 52 will give good performance for most maps. - */ - public KeywordMap(boolean ignoreCase, int mapLength) - { - this.mapLength = mapLength; - this.ignoreCase = ignoreCase; - map = new Keyword[mapLength]; - } - - /** - * Looks up a key. - * @param text The text segment - * @param offset The offset of the substring within the text segment - * @param length The length of the substring - */ - public byte lookup(Segment text, int offset, int length) - { - if(length == 0) - return Token.NULL; - Keyword k = map[getSegmentMapKey(text, offset, length)]; - while(k != null) - { - if(length != k.keyword.length) - { - k = k.next; - continue; - } - if(SyntaxUtilities.regionMatches(ignoreCase,text,offset, - k.keyword)) - return k.id; - k = k.next; - } - return Token.NULL; - } - - /** - * Adds a key-value mapping. - * @param keyword The key - * @Param id The value - */ - public void add(String keyword, byte id) - { - int key = getStringMapKey(keyword); - map[key] = new Keyword(keyword.toCharArray(),id,map[key]); - } - - /** - * Returns true if the keyword map is set to be case insensitive, - * false otherwise. - */ - public boolean getIgnoreCase() - { - return ignoreCase; - } - - /** - * Sets if the keyword map should be case insensitive. - * @param ignoreCase True if the keyword map should be case - * insensitive, false otherwise - */ - public void setIgnoreCase(boolean ignoreCase) - { - this.ignoreCase = ignoreCase; - } - - // protected members - protected int mapLength; - - protected int getStringMapKey(String s) - { - return (Character.toUpperCase(s.charAt(0)) + - Character.toUpperCase(s.charAt(s.length()-1))) - % mapLength; - } - - protected int getSegmentMapKey(Segment s, int off, int len) - { - return (Character.toUpperCase(s.array[off]) + - Character.toUpperCase(s.array[off + len - 1])) - % mapLength; - } - - // private members - class Keyword - { - public Keyword(char[] keyword, byte id, Keyword next) - { - this.keyword = keyword; - this.id = id; - this.next = next; - } - - public char[] keyword; - public byte id; - public Keyword next; - } - - private Keyword[] map; - private boolean ignoreCase; -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/MakefileTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/MakefileTokenMarker.java deleted file mode 100644 index b4890938073..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/MakefileTokenMarker.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * MakefileTokenMarker.java - Makefile token marker - * Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ - -package org.astron.util.gui; - -import javax.swing.text.Segment; - -/** - * Makefile token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class MakefileTokenMarker extends TokenMarker -{ - // public members - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - char[] array = line.array; - int offset = line.offset; - int lastOffset = offset; - int length = line.count + offset; - boolean backslash = false; -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - char c = array[i]; - if(c == '\\') - { - backslash = !backslash; - continue; - } - - switch(token) - { - case Token.NULL: - switch(c) - { - case ':': case '=': case ' ': case '\t': - backslash = false; - if(lastOffset == offset) - { - addToken(i1 - lastOffset,Token.KEYWORD1); - lastOffset = i1; - } - break; - case '#': - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - addToken(length - i,Token.COMMENT1); - lastOffset = length; - break loop; - } - break; - case '$': - if(backslash) - backslash = false; - else if(lastOffset != offset) - { - addToken(i - lastOffset,token); - lastOffset = i; - if(length - i > 1) - { - char c1 = array[i1]; - if(c1 == '(' || c1 == '{') - token = Token.KEYWORD2; - else - { - addToken(2,Token.KEYWORD2); - lastOffset += 2; - i++; - } - } - } - break; - case '"': - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - token = Token.LITERAL1; - lastOffset = i; - } - break; - case '\'': - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - token = Token.LITERAL2; - lastOffset = i; - } - break; - default: - backslash = false; - break; - } - case Token.KEYWORD2: - backslash = false; - if(c == ')' || c == '}') - { - addToken(i1 - lastOffset,token); - token = Token.NULL; - lastOffset = i1; - } - break; - case Token.LITERAL1: - if(backslash) - backslash = false; - else if(c == '"') - { - addToken(i1 - lastOffset,token); - token = Token.NULL; - lastOffset = i1; - } - else - backslash = false; - break; - case Token.LITERAL2: - if(backslash) - backslash = false; - else if(c == '\'') - { - addToken(i1 - lastOffset,Token.LITERAL1); - token = Token.NULL; - lastOffset = i1; - } - else - backslash = false; - break; - } - } - switch(token) - { - case Token.KEYWORD2: - addToken(length - lastOffset,Token.INVALID); - token = Token.NULL; - break; - case Token.LITERAL2: - addToken(length - lastOffset,Token.LITERAL1); - break; - default: - addToken(length - lastOffset,token); - break; - } - return token; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/MessageEvent.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/MessageEvent.java deleted file mode 100644 index 34310511c19..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/MessageEvent.java +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.util.gui; - -/** - * Title: Class MessageEvent - * Description: Event object for notify Messages - * Copyright: Copyright (c) 2001 - * Company: Astron - * @author Robbert Dam - * @version 1.0 - */ - -import javax.swing.*; -import java.util.*; - -public class MessageEvent extends EventObject { - - public static final int UNRECOV_ERROR = 0; - public static final int ERROR = 1; - public static final int WARNING = 2; - public static final int NOTIFY = 3; - public static final int HINT = 4; - - /** The message text */ - private String _message; - /** The level of importance of this message. Must be one of the predefined - * variables: UNRECOV_ERROR, ERROR, WARNING, NOTIFY (Default) or HINT. */ - private int _type; - - /** Construct a MessageEvent, specify constructing object and message text */ - public MessageEvent(Object source, String text) { - super (source); - _message = text; - _type = HINT; - } - - /** Construct a MessageEvent, specify source object, message text and type */ - public MessageEvent(Object source, String text, int type) { - super(source); - _message = text; - _type = type; - } - - /** The type of message. Should be UNRECOV_ERROR, ERROR, WARNING, - * NOTIFY (Default) or HINT. */ - public void setType (int type) { _type = type; } - - /** Get the type of message: UNRECOV_ERROR, ERROR, WARNING, NOTIFY or HINT */ - public int getType () { return _type; } - - /** Retreive message text */ - public String getMessage() { return _message; } - - /** (Re)set the message text */ - public void setMessage(String text) { _message = text; } - - /** Get the icon that should be displayed with this message. - * Returns null when not specified. */ - public ImageIcon getIcon() { return null; } - - /** The action to be taken when a user clicks on the message. Does nothing, - * (alwayes returns true) override this function with your own handler. - * - * @param notifier The JNotifier control the users clicked in - */ - public boolean onClick(JNotifier notifier) { return true; } - - /** String representation of this object. */ - public String toString () { return "MessageEvent: "+_message; } - - /** Returns true is this message is still valid. Invalid messaged are cleared - * by the viewer. */ - public boolean valid () { return true; } -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/MessageListener.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/MessageListener.java deleted file mode 100644 index e505de4e0c9..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/MessageListener.java +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2000, 2001 -// ASTRON (Netherlands Foundation for Research in Astronomy) -// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -////////////////////////////////////////////////////////////////////// - -package org.astron.util.gui; - -/** - * Title: - * Description: - * Copyright: Copyright (c) 2001 - * Company: - * @author - * @version 1.0 - */ - -import java.util.EventListener; - -/** - * This is the interface for GUI components that wish to visualize program - * messages. - */ -public interface MessageListener extends EventListener { - /** Send a note to the message listener */ - public void note (MessageEvent event); -} \ No newline at end of file diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/PHPTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/PHPTokenMarker.java deleted file mode 100644 index c295e07a375..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/PHPTokenMarker.java +++ /dev/null @@ -1,357 +0,0 @@ -/* - * PHPTokenMarker.java - Token marker for PHP - * Copyright (C) 1999 Clancy Malcolm - * Based on HTMLTokenMarker.java Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * PHP token marker. - * - * @author Clancy Malcolm - * @version $Id$ - */ -public class PHPTokenMarker extends TokenMarker -{ - public static final byte SCRIPT = Token.INTERNAL_FIRST; - - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - char[] array = line.array; - int offset = line.offset; - lastOffset = offset; - lastKeyword = offset; - int length = line.count + offset; - boolean backslash = false; - -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - char c = array[i]; - if(c == '\\') - { - backslash = !backslash; - continue; - } - - switch(token) - { - case Token.NULL: // HTML text - backslash = false; - switch(c) - { - case '<': - addToken(i - lastOffset,token); - lastOffset = lastKeyword = i; - if(SyntaxUtilities.regionMatches(false, - line,i1,"!--")) - { - i += 3; - token = Token.COMMENT1; - } - else if(SyntaxUtilities.regionMatches( - true,line,i1,"?php")) - { - addToken(5,Token.LABEL); - lastOffset = lastKeyword = (i += 4) + 1; - token = SCRIPT; - } - else if(SyntaxUtilities.regionMatches( - true,line,i1,"?")) - { - addToken(2,Token.LABEL); - lastOffset = lastKeyword = (i += 1) + 1; - token = SCRIPT; - } - else if(SyntaxUtilities.regionMatches( - true,line,i1,"script>")) - { - addToken(8,Token.LABEL); - lastOffset = lastKeyword = (i += 7) + 1; - token = SCRIPT; - } - else - { - token = Token.KEYWORD1; - } - break; - case '&': - addToken(i - lastOffset,token); - lastOffset = lastKeyword = i; - token = Token.KEYWORD2; - break; - } - break; - case Token.KEYWORD1: // Inside a tag - backslash = false; - if(c == '>') - { - addToken(i1 - lastOffset,token); - lastOffset = lastKeyword = i1; - token = Token.NULL; - } - break; - case Token.KEYWORD2: // Inside an entity - backslash = false; - if(c == ';') - { - addToken(i1 - lastOffset,token); - lastOffset = lastKeyword = i1; - token = Token.NULL; - break; - } - break; - case Token.COMMENT1: // Inside a comment - backslash = false; - if(SyntaxUtilities.regionMatches(false,line,i,"-->")) - { - addToken(i + 3 - lastOffset,token); - i += 2; - lastOffset = lastKeyword = i + 1; - token = Token.NULL; - } - break; - case SCRIPT: // Inside a JavaScript or PHP - switch(c) - { - case '<': - backslash = false; - doKeyword(line,i,c); - if(SyntaxUtilities.regionMatches(true, - line,i1,"/script>")) - { - //Ending the script - addToken(i - lastOffset, - Token.KEYWORD3); - addToken(9,Token.LABEL); - lastOffset = lastKeyword = (i += 8) + 1; - token = Token.NULL; - } - else - { - // < operator - addToken(i - lastOffset, - Token.KEYWORD3); - addToken(1,Token.OPERATOR); - lastOffset = lastKeyword = i1; - } - break; - case '?': - backslash = false; - doKeyword(line, i, c); - if (array[i1] == '>') - { - //Ending the script - addToken(i - lastOffset, - Token.KEYWORD3); - addToken(2,Token.LABEL); - lastOffset = lastKeyword = (i += 1) + 1; - token = Token.NULL; - } - else - { - //? operator - addToken(i - lastOffset, Token.KEYWORD3); - addToken(1,Token.OPERATOR); - lastOffset = lastKeyword = i1; - } - break; - case '"': - if(backslash) - backslash = false; - else - { - doKeyword(line,i,c); - addToken(i - lastOffset,Token.KEYWORD3); - lastOffset = lastKeyword = i; - token = Token.LITERAL1; - } - break; - case '\'': - if(backslash) - backslash = false; - else - { - doKeyword(line,i,c); - addToken(i - lastOffset,Token.KEYWORD3); - lastOffset = lastKeyword = i; - token = Token.LITERAL2; - } - break; - case '#': - doKeyword(line,i,c); - addToken(i - lastOffset,Token.KEYWORD3); - addToken(length - i,Token.COMMENT2); - lastOffset = lastKeyword = length; - break loop; - case '/': - backslash = false; - doKeyword(line,i,c); - if(length - i > 1) /*This is the same as if(length > i + 1) */ - { - addToken(i - lastOffset,Token.KEYWORD3); - lastOffset = lastKeyword = i; - if(array[i1] == '/') - { - addToken(length - i,Token.COMMENT2); - lastOffset = lastKeyword = length; - break loop; - } - else if(array[i1] == '*') - { - token = Token.COMMENT2; - } - else - { - // / operator - addToken(i - lastOffset, Token.KEYWORD3); - addToken(1,Token.OPERATOR); - lastOffset = lastKeyword = i1; - } - } - else - { - // / operator - addToken(i - lastOffset, Token.KEYWORD3); - addToken(1,Token.OPERATOR); - lastOffset = lastKeyword = i1; - } - break; - default: - backslash = false; - if(!Character.isLetterOrDigit(c) - && c != '_' && c != '$') - { - doKeyword(line,i,c); - if (c != ' ') - { - //assume non alphanumeric characters are operators - addToken(i - lastOffset, Token.KEYWORD3); - addToken(1,Token.OPERATOR); - lastOffset = lastKeyword = i1; - } - } - break; - } - break; - case Token.LITERAL1: // Script "..." - if(backslash) - backslash = false; - else if(c == '"') - { - addToken(i1 - lastOffset,Token.LITERAL1); - lastOffset = lastKeyword = i1; - token = SCRIPT; - } - break; - case Token.LITERAL2: // Script '...' - if(backslash) - backslash = false; - else if(c == '\'') - { - addToken(i1 - lastOffset,Token.LITERAL1); - lastOffset = lastKeyword = i1; - token = SCRIPT; - } - break; - case Token.COMMENT2: // Inside a Script comment - backslash = false; - if(c == '*' && length - i > 1 && array[i1] == '/') - { - addToken(i + 2 - lastOffset,Token.COMMENT2); - i += 1; - lastOffset = lastKeyword = i + 1; - token = SCRIPT; - } - break; - default: - throw new InternalError("Invalid state: " - + token); - } - } - - switch(token) - { - case Token.LITERAL1: - addToken(length - lastOffset,Token.LITERAL1); - break; - case Token.LITERAL2: - addToken(length - lastOffset,Token.LITERAL2); - break; - case Token.KEYWORD2: - addToken(length - lastOffset,Token.INVALID); - token = Token.NULL; - break; - case SCRIPT: - doKeyword(line,length,'\0'); - addToken(length - lastOffset,Token.KEYWORD3); - break; - default: - addToken(length - lastOffset,token); - break; - } - - return token; - } - - // private members - private static KeywordMap keywords; - private int lastOffset; - private int lastKeyword; - - static - { - keywords = new KeywordMap(false); - keywords.add("function",Token.KEYWORD2); - keywords.add("class",Token.KEYWORD2); - keywords.add("var",Token.KEYWORD2); - keywords.add("require",Token.KEYWORD2); - keywords.add("include",Token.KEYWORD2); - keywords.add("else",Token.KEYWORD1); - keywords.add("elseif",Token.KEYWORD1); - keywords.add("do",Token.KEYWORD1); - keywords.add("for",Token.KEYWORD1); - keywords.add("if",Token.KEYWORD1); - keywords.add("endif",Token.KEYWORD1); - keywords.add("in",Token.KEYWORD1); - keywords.add("new",Token.KEYWORD1); - keywords.add("return",Token.KEYWORD1); - keywords.add("while",Token.KEYWORD1); - keywords.add("endwhile",Token.KEYWORD1); - keywords.add("with",Token.KEYWORD1); - keywords.add("break",Token.KEYWORD1); - keywords.add("switch",Token.KEYWORD1); - keywords.add("case",Token.KEYWORD1); - keywords.add("continue",Token.KEYWORD1); - keywords.add("default",Token.KEYWORD1); - keywords.add("echo",Token.KEYWORD1); - keywords.add("false",Token.KEYWORD1); - keywords.add("this",Token.KEYWORD1); - keywords.add("true",Token.KEYWORD1); - keywords.add("array",Token.KEYWORD1); - keywords.add("extends",Token.KEYWORD1); - } - - private boolean doKeyword(Segment line, int i, char c) - { - int i1 = i+1; - - int len = i - lastKeyword; - byte id = keywords.lookup(line,lastKeyword,len); - if(id != Token.NULL) - { - if(lastKeyword != lastOffset) - addToken(lastKeyword - lastOffset,Token.KEYWORD3); - addToken(len,id); - lastOffset = i; - } - lastKeyword = i1; - return false; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/PatchTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/PatchTokenMarker.java deleted file mode 100644 index 0c0cc80d8f8..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/PatchTokenMarker.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * PatchTokenMarker.java - DIFF patch token marker - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * Patch/diff token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class PatchTokenMarker extends TokenMarker -{ - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - if(line.count == 0) - return Token.NULL; - switch(line.array[line.offset]) - { - case '+': case '>': - addToken(line.count,Token.KEYWORD1); - break; - case '-': case '<': - addToken(line.count,Token.KEYWORD2); - break; - case '@': case '*': - addToken(line.count,Token.KEYWORD3); - break; - default: - addToken(line.count,Token.NULL); - break; - } - return Token.NULL; - } - - public boolean supportsMultilineTokens() - { - return false; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/PerlTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/PerlTokenMarker.java deleted file mode 100644 index 40d9ab45459..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/PerlTokenMarker.java +++ /dev/null @@ -1,712 +0,0 @@ -/* - * PerlTokenMarker.java - Perl token marker - * Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * Perl token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class PerlTokenMarker extends TokenMarker -{ - // public members - public static final byte S_ONE = Token.INTERNAL_FIRST; - public static final byte S_TWO = (byte)(Token.INTERNAL_FIRST + 1); - public static final byte S_END = (byte)(Token.INTERNAL_FIRST + 2); - - public PerlTokenMarker() - { - this(getKeywords()); - } - - public PerlTokenMarker(KeywordMap keywords) - { - this.keywords = keywords; - } - - public byte markTokensImpl(byte _token, Segment line, int lineIndex) - { - char[] array = line.array; - int offset = line.offset; - token = _token; - lastOffset = offset; - lastKeyword = offset; - matchChar = '\0'; - matchCharBracket = false; - matchSpacesAllowed = false; - int length = line.count + offset; - - if(token == Token.LITERAL1 && lineIndex != 0 - && lineInfo[lineIndex - 1].obj != null) - { - String str = (String)lineInfo[lineIndex - 1].obj; - if(str != null && str.length() == line.count - && SyntaxUtilities.regionMatches(false,line, - offset,str)) - { - addToken(line.count,token); - return Token.NULL; - } - else - { - addToken(line.count,token); - lineInfo[lineIndex].obj = str; - return token; - } - } - - boolean backslash = false; -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - char c = array[i]; - if(c == '\\') - { - backslash = !backslash; - continue; - } - - switch(token) - { - case Token.NULL: - switch(c) - { - case '#': - if(doKeyword(line,i,c)) - break; - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - addToken(length - i,Token.COMMENT1); - lastOffset = lastKeyword = length; - break loop; - } - break; - case '=': - backslash = false; - if(i == offset) - { - token = Token.COMMENT2; - addToken(length - i,token); - lastOffset = lastKeyword = length; - break loop; - } - else - doKeyword(line,i,c); - break; - case '$': case '&': case '%': case '@': - backslash = false; - if(doKeyword(line,i,c)) - break; - if(length - i > 1) - { - if(c == '&' && (array[i1] == '&' - || Character.isWhitespace( - array[i1]))) - i++; - else - { - addToken(i - lastOffset,token); - lastOffset = lastKeyword = i; - token = Token.KEYWORD2; - } - } - break; - case '"': - if(doKeyword(line,i,c)) - break; - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - token = Token.LITERAL1; - lineInfo[lineIndex].obj = null; - lastOffset = lastKeyword = i; - } - break; - case '\'': - if(backslash) - backslash = false; - else - { - int oldLastKeyword = lastKeyword; - if(doKeyword(line,i,c)) - break; - if(i != oldLastKeyword) - break; - addToken(i - lastOffset,token); - token = Token.LITERAL2; - lastOffset = lastKeyword = i; - } - break; - case '`': - if(doKeyword(line,i,c)) - break; - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - token = Token.OPERATOR; - lastOffset = lastKeyword = i; - } - break; - case '<': - if(doKeyword(line,i,c)) - break; - if(backslash) - backslash = false; - else - { - if(length - i > 2 && array[i1] == '<' - && !Character.isWhitespace(array[i+2])) - { - addToken(i - lastOffset,token); - lastOffset = lastKeyword = i; - token = Token.LITERAL1; - int len = length - (i+2); - if(array[length - 1] == ';') - len--; - lineInfo[lineIndex].obj = - createReadinString(array,i + 2,len); - } - } - break; - case ':': - backslash = false; - if(doKeyword(line,i,c)) - break; - // Doesn't pick up all labels, - // but at least doesn't mess up - // XXX::YYY - if(lastKeyword != 0) - break; - addToken(i1 - lastOffset,Token.LABEL); - lastOffset = lastKeyword = i1; - break; - case '-': - backslash = false; - if(doKeyword(line,i,c)) - break; - if(i != lastKeyword || length - i <= 1) - break; - switch(array[i1]) - { - case 'r': case 'w': case 'x': - case 'o': case 'R': case 'W': - case 'X': case 'O': case 'e': - case 'z': case 's': case 'f': - case 'd': case 'l': case 'p': - case 'S': case 'b': case 'c': - case 't': case 'u': case 'g': - case 'k': case 'T': case 'B': - case 'M': case 'A': case 'C': - addToken(i - lastOffset,token); - addToken(2,Token.KEYWORD3); - lastOffset = lastKeyword = i+2; - i++; - } - break; - case '/': case '?': - if(doKeyword(line,i,c)) - break; - if(length - i > 1) - { - backslash = false; - char ch = array[i1]; - if(Character.isWhitespace(ch)) - break; - matchChar = c; - matchSpacesAllowed = false; - addToken(i - lastOffset,token); - token = S_ONE; - lastOffset = lastKeyword = i; - } - break; - default: - backslash = false; - if(!Character.isLetterOrDigit(c) - && c != '_') - doKeyword(line,i,c); - break; - } - break; - case Token.KEYWORD2: - backslash = false; - // This test checks for an end-of-variable - // condition - if(!Character.isLetterOrDigit(c) && c != '_' - && c != '#' && c != '\'' && c != ':' - && c != '&') - { - // If this is the first character - // of the variable name ($'aaa) - // ignore it - if(i != offset && array[i-1] == '$') - { - addToken(i1 - lastOffset,token); - lastOffset = lastKeyword = i1; - } - // Otherwise, end of variable... - else - { - addToken(i - lastOffset,token); - lastOffset = lastKeyword = i; - // Wind back so that stuff - // like $hello$fred is picked - // up - i--; - token = Token.NULL; - } - } - break; - case S_ONE: case S_TWO: - if(backslash) - backslash = false; - else - { - if(matchChar == '\0') - { - if(Character.isWhitespace(matchChar) - && !matchSpacesAllowed) - break; - else - matchChar = c; - } - else - { - switch(matchChar) - { - case '(': - matchChar = ')'; - matchCharBracket = true; - break; - case '[': - matchChar = ']'; - matchCharBracket = true; - break; - case '{': - matchChar = '}'; - matchCharBracket = true; - break; - case '<': - matchChar = '>'; - matchCharBracket = true; - break; - default: - matchCharBracket = false; - break; - } - if(c != matchChar) - break; - if(token == S_TWO) - { - token = S_ONE; - if(matchCharBracket) - matchChar = '\0'; - } - else - { - token = S_END; - addToken(i1 - lastOffset, - Token.LITERAL2); - lastOffset = lastKeyword = i1; - } - } - } - break; - case S_END: - backslash = false; - if(!Character.isLetterOrDigit(c) - && c != '_') - doKeyword(line,i,c); - break; - case Token.COMMENT2: - backslash = false; - if(i == offset) - { - addToken(line.count,token); - if(length - i > 3 && SyntaxUtilities - .regionMatches(false,line,offset,"=cut")) - token = Token.NULL; - lastOffset = lastKeyword = length; - break loop; - } - break; - case Token.LITERAL1: - if(backslash) - backslash = false; - /* else if(c == '$') - backslash = true; */ - else if(c == '"') - { - addToken(i1 - lastOffset,token); - token = Token.NULL; - lastOffset = lastKeyword = i1; - } - break; - case Token.LITERAL2: - if(backslash) - backslash = false; - /* else if(c == '$') - backslash = true; */ - else if(c == '\'') - { - addToken(i1 - lastOffset,Token.LITERAL1); - token = Token.NULL; - lastOffset = lastKeyword = i1; - } - break; - case Token.OPERATOR: - if(backslash) - backslash = false; - else if(c == '`') - { - addToken(i1 - lastOffset,token); - token = Token.NULL; - lastOffset = lastKeyword = i1; - } - break; - default: - throw new InternalError("Invalid state: " - + token); - } - } - - if(token == Token.NULL) - doKeyword(line,length,'\0'); - - switch(token) - { - case Token.KEYWORD2: - addToken(length - lastOffset,token); - token = Token.NULL; - break; - case Token.LITERAL2: - addToken(length - lastOffset,Token.LITERAL1); - break; - case S_END: - addToken(length - lastOffset,Token.LITERAL2); - token = Token.NULL; - break; - case S_ONE: case S_TWO: - addToken(length - lastOffset,Token.INVALID); // XXX - token = Token.NULL; - break; - default: - addToken(length - lastOffset,token); - break; - } - return token; - } - - // private members - private KeywordMap keywords; - private byte token; - private int lastOffset; - private int lastKeyword; - private char matchChar; - private boolean matchCharBracket; - private boolean matchSpacesAllowed; - - private boolean doKeyword(Segment line, int i, char c) - { - int i1 = i+1; - - if(token == S_END) - { - addToken(i - lastOffset,Token.LITERAL2); - token = Token.NULL; - lastOffset = i; - lastKeyword = i1; - return false; - } - - int len = i - lastKeyword; - byte id = keywords.lookup(line,lastKeyword,len); - if(id == S_ONE || id == S_TWO) - { - if(lastKeyword != lastOffset) - addToken(lastKeyword - lastOffset,Token.NULL); - addToken(len,Token.LITERAL2); - lastOffset = i; - lastKeyword = i1; - if(Character.isWhitespace(c)) - matchChar = '\0'; - else - matchChar = c; - matchSpacesAllowed = true; - token = id; - return true; - } - else if(id != Token.NULL) - { - if(lastKeyword != lastOffset) - addToken(lastKeyword - lastOffset,Token.NULL); - addToken(len,id); - lastOffset = i; - } - lastKeyword = i1; - return false; - } - - // Converts < EOF >, < 'EOF' >, etc to <EOF> - private String createReadinString(char[] array, int start, int len) - { - int idx1 = start; - int idx2 = start + len - 1; - - while((idx1 <= idx2) && (!Character.isLetterOrDigit(array[idx1]))) - idx1++; - - while((idx1 <= idx2) && (!Character.isLetterOrDigit(array[idx2]))) - idx2--; - - return new String(array, idx1, idx2 - idx1 + 1); - } - - private static KeywordMap perlKeywords; - - private static KeywordMap getKeywords() - { - if(perlKeywords == null) - { - perlKeywords = new KeywordMap(false); - perlKeywords.add("my",Token.KEYWORD1); - perlKeywords.add("local",Token.KEYWORD1); - perlKeywords.add("new",Token.KEYWORD1); - perlKeywords.add("if",Token.KEYWORD1); - perlKeywords.add("until",Token.KEYWORD1); - perlKeywords.add("while",Token.KEYWORD1); - perlKeywords.add("elsif",Token.KEYWORD1); - perlKeywords.add("else",Token.KEYWORD1); - perlKeywords.add("eval",Token.KEYWORD1); - perlKeywords.add("unless",Token.KEYWORD1); - perlKeywords.add("foreach",Token.KEYWORD1); - perlKeywords.add("continue",Token.KEYWORD1); - perlKeywords.add("exit",Token.KEYWORD1); - perlKeywords.add("die",Token.KEYWORD1); - perlKeywords.add("last",Token.KEYWORD1); - perlKeywords.add("goto",Token.KEYWORD1); - perlKeywords.add("next",Token.KEYWORD1); - perlKeywords.add("redo",Token.KEYWORD1); - perlKeywords.add("goto",Token.KEYWORD1); - perlKeywords.add("return",Token.KEYWORD1); - perlKeywords.add("do",Token.KEYWORD1); - perlKeywords.add("sub",Token.KEYWORD1); - perlKeywords.add("use",Token.KEYWORD1); - perlKeywords.add("require",Token.KEYWORD1); - perlKeywords.add("package",Token.KEYWORD1); - perlKeywords.add("BEGIN",Token.KEYWORD1); - perlKeywords.add("END",Token.KEYWORD1); - perlKeywords.add("eq",Token.OPERATOR); - perlKeywords.add("ne",Token.OPERATOR); - perlKeywords.add("not",Token.OPERATOR); - perlKeywords.add("and",Token.OPERATOR); - perlKeywords.add("or",Token.OPERATOR); - - perlKeywords.add("abs",Token.KEYWORD3); - perlKeywords.add("accept",Token.KEYWORD3); - perlKeywords.add("alarm",Token.KEYWORD3); - perlKeywords.add("atan2",Token.KEYWORD3); - perlKeywords.add("bind",Token.KEYWORD3); - perlKeywords.add("binmode",Token.KEYWORD3); - perlKeywords.add("bless",Token.KEYWORD3); - perlKeywords.add("caller",Token.KEYWORD3); - perlKeywords.add("chdir",Token.KEYWORD3); - perlKeywords.add("chmod",Token.KEYWORD3); - perlKeywords.add("chomp",Token.KEYWORD3); - perlKeywords.add("chr",Token.KEYWORD3); - perlKeywords.add("chroot",Token.KEYWORD3); - perlKeywords.add("chown",Token.KEYWORD3); - perlKeywords.add("closedir",Token.KEYWORD3); - perlKeywords.add("close",Token.KEYWORD3); - perlKeywords.add("connect",Token.KEYWORD3); - perlKeywords.add("cos",Token.KEYWORD3); - perlKeywords.add("crypt",Token.KEYWORD3); - perlKeywords.add("dbmclose",Token.KEYWORD3); - perlKeywords.add("dbmopen",Token.KEYWORD3); - perlKeywords.add("defined",Token.KEYWORD3); - perlKeywords.add("delete",Token.KEYWORD3); - perlKeywords.add("die",Token.KEYWORD3); - perlKeywords.add("dump",Token.KEYWORD3); - perlKeywords.add("each",Token.KEYWORD3); - perlKeywords.add("endgrent",Token.KEYWORD3); - perlKeywords.add("endhostent",Token.KEYWORD3); - perlKeywords.add("endnetent",Token.KEYWORD3); - perlKeywords.add("endprotoent",Token.KEYWORD3); - perlKeywords.add("endpwent",Token.KEYWORD3); - perlKeywords.add("endservent",Token.KEYWORD3); - perlKeywords.add("eof",Token.KEYWORD3); - perlKeywords.add("exec",Token.KEYWORD3); - perlKeywords.add("exists",Token.KEYWORD3); - perlKeywords.add("exp",Token.KEYWORD3); - perlKeywords.add("fctnl",Token.KEYWORD3); - perlKeywords.add("fileno",Token.KEYWORD3); - perlKeywords.add("flock",Token.KEYWORD3); - perlKeywords.add("fork",Token.KEYWORD3); - perlKeywords.add("format",Token.KEYWORD3); - perlKeywords.add("formline",Token.KEYWORD3); - perlKeywords.add("getc",Token.KEYWORD3); - perlKeywords.add("getgrent",Token.KEYWORD3); - perlKeywords.add("getgrgid",Token.KEYWORD3); - perlKeywords.add("getgrnam",Token.KEYWORD3); - perlKeywords.add("gethostbyaddr",Token.KEYWORD3); - perlKeywords.add("gethostbyname",Token.KEYWORD3); - perlKeywords.add("gethostent",Token.KEYWORD3); - perlKeywords.add("getlogin",Token.KEYWORD3); - perlKeywords.add("getnetbyaddr",Token.KEYWORD3); - perlKeywords.add("getnetbyname",Token.KEYWORD3); - perlKeywords.add("getnetent",Token.KEYWORD3); - perlKeywords.add("getpeername",Token.KEYWORD3); - perlKeywords.add("getpgrp",Token.KEYWORD3); - perlKeywords.add("getppid",Token.KEYWORD3); - perlKeywords.add("getpriority",Token.KEYWORD3); - perlKeywords.add("getprotobyname",Token.KEYWORD3); - perlKeywords.add("getprotobynumber",Token.KEYWORD3); - perlKeywords.add("getprotoent",Token.KEYWORD3); - perlKeywords.add("getpwent",Token.KEYWORD3); - perlKeywords.add("getpwnam",Token.KEYWORD3); - perlKeywords.add("getpwuid",Token.KEYWORD3); - perlKeywords.add("getservbyname",Token.KEYWORD3); - perlKeywords.add("getservbyport",Token.KEYWORD3); - perlKeywords.add("getservent",Token.KEYWORD3); - perlKeywords.add("getsockname",Token.KEYWORD3); - perlKeywords.add("getsockopt",Token.KEYWORD3); - perlKeywords.add("glob",Token.KEYWORD3); - perlKeywords.add("gmtime",Token.KEYWORD3); - perlKeywords.add("grep",Token.KEYWORD3); - perlKeywords.add("hex",Token.KEYWORD3); - perlKeywords.add("import",Token.KEYWORD3); - perlKeywords.add("index",Token.KEYWORD3); - perlKeywords.add("int",Token.KEYWORD3); - perlKeywords.add("ioctl",Token.KEYWORD3); - perlKeywords.add("join",Token.KEYWORD3); - perlKeywords.add("keys",Token.KEYWORD3); - perlKeywords.add("kill",Token.KEYWORD3); - perlKeywords.add("lcfirst",Token.KEYWORD3); - perlKeywords.add("lc",Token.KEYWORD3); - perlKeywords.add("length",Token.KEYWORD3); - perlKeywords.add("link",Token.KEYWORD3); - perlKeywords.add("listen",Token.KEYWORD3); - perlKeywords.add("log",Token.KEYWORD3); - perlKeywords.add("localtime",Token.KEYWORD3); - perlKeywords.add("lstat",Token.KEYWORD3); - perlKeywords.add("map",Token.KEYWORD3); - perlKeywords.add("mkdir",Token.KEYWORD3); - perlKeywords.add("msgctl",Token.KEYWORD3); - perlKeywords.add("msgget",Token.KEYWORD3); - perlKeywords.add("msgrcv",Token.KEYWORD3); - perlKeywords.add("no",Token.KEYWORD3); - perlKeywords.add("oct",Token.KEYWORD3); - perlKeywords.add("opendir",Token.KEYWORD3); - perlKeywords.add("open",Token.KEYWORD3); - perlKeywords.add("ord",Token.KEYWORD3); - perlKeywords.add("pack",Token.KEYWORD3); - perlKeywords.add("pipe",Token.KEYWORD3); - perlKeywords.add("pop",Token.KEYWORD3); - perlKeywords.add("pos",Token.KEYWORD3); - perlKeywords.add("printf",Token.KEYWORD3); - perlKeywords.add("print",Token.KEYWORD3); - perlKeywords.add("push",Token.KEYWORD3); - perlKeywords.add("quotemeta",Token.KEYWORD3); - perlKeywords.add("rand",Token.KEYWORD3); - perlKeywords.add("readdir",Token.KEYWORD3); - perlKeywords.add("read",Token.KEYWORD3); - perlKeywords.add("readlink",Token.KEYWORD3); - perlKeywords.add("recv",Token.KEYWORD3); - perlKeywords.add("ref",Token.KEYWORD3); - perlKeywords.add("rename",Token.KEYWORD3); - perlKeywords.add("reset",Token.KEYWORD3); - perlKeywords.add("reverse",Token.KEYWORD3); - perlKeywords.add("rewinddir",Token.KEYWORD3); - perlKeywords.add("rindex",Token.KEYWORD3); - perlKeywords.add("rmdir",Token.KEYWORD3); - perlKeywords.add("scalar",Token.KEYWORD3); - perlKeywords.add("seekdir",Token.KEYWORD3); - perlKeywords.add("seek",Token.KEYWORD3); - perlKeywords.add("select",Token.KEYWORD3); - perlKeywords.add("semctl",Token.KEYWORD3); - perlKeywords.add("semget",Token.KEYWORD3); - perlKeywords.add("semop",Token.KEYWORD3); - perlKeywords.add("send",Token.KEYWORD3); - perlKeywords.add("setgrent",Token.KEYWORD3); - perlKeywords.add("sethostent",Token.KEYWORD3); - perlKeywords.add("setnetent",Token.KEYWORD3); - perlKeywords.add("setpgrp",Token.KEYWORD3); - perlKeywords.add("setpriority",Token.KEYWORD3); - perlKeywords.add("setprotoent",Token.KEYWORD3); - perlKeywords.add("setpwent",Token.KEYWORD3); - perlKeywords.add("setsockopt",Token.KEYWORD3); - perlKeywords.add("shift",Token.KEYWORD3); - perlKeywords.add("shmctl",Token.KEYWORD3); - perlKeywords.add("shmget",Token.KEYWORD3); - perlKeywords.add("shmread",Token.KEYWORD3); - perlKeywords.add("shmwrite",Token.KEYWORD3); - perlKeywords.add("shutdown",Token.KEYWORD3); - perlKeywords.add("sin",Token.KEYWORD3); - perlKeywords.add("sleep",Token.KEYWORD3); - perlKeywords.add("socket",Token.KEYWORD3); - perlKeywords.add("socketpair",Token.KEYWORD3); - perlKeywords.add("sort",Token.KEYWORD3); - perlKeywords.add("splice",Token.KEYWORD3); - perlKeywords.add("split",Token.KEYWORD3); - perlKeywords.add("sprintf",Token.KEYWORD3); - perlKeywords.add("sqrt",Token.KEYWORD3); - perlKeywords.add("srand",Token.KEYWORD3); - perlKeywords.add("stat",Token.KEYWORD3); - perlKeywords.add("study",Token.KEYWORD3); - perlKeywords.add("substr",Token.KEYWORD3); - perlKeywords.add("symlink",Token.KEYWORD3); - perlKeywords.add("syscall",Token.KEYWORD3); - perlKeywords.add("sysopen",Token.KEYWORD3); - perlKeywords.add("sysread",Token.KEYWORD3); - perlKeywords.add("syswrite",Token.KEYWORD3); - perlKeywords.add("telldir",Token.KEYWORD3); - perlKeywords.add("tell",Token.KEYWORD3); - perlKeywords.add("tie",Token.KEYWORD3); - perlKeywords.add("tied",Token.KEYWORD3); - perlKeywords.add("time",Token.KEYWORD3); - perlKeywords.add("times",Token.KEYWORD3); - perlKeywords.add("truncate",Token.KEYWORD3); - perlKeywords.add("uc",Token.KEYWORD3); - perlKeywords.add("ucfirst",Token.KEYWORD3); - perlKeywords.add("umask",Token.KEYWORD3); - perlKeywords.add("undef",Token.KEYWORD3); - perlKeywords.add("unlink",Token.KEYWORD3); - perlKeywords.add("unpack",Token.KEYWORD3); - perlKeywords.add("unshift",Token.KEYWORD3); - perlKeywords.add("untie",Token.KEYWORD3); - perlKeywords.add("utime",Token.KEYWORD3); - perlKeywords.add("values",Token.KEYWORD3); - perlKeywords.add("vec",Token.KEYWORD3); - perlKeywords.add("wait",Token.KEYWORD3); - perlKeywords.add("waitpid",Token.KEYWORD3); - perlKeywords.add("wantarray",Token.KEYWORD3); - perlKeywords.add("warn",Token.KEYWORD3); - perlKeywords.add("write",Token.KEYWORD3); - - perlKeywords.add("m",S_ONE); - perlKeywords.add("q",S_ONE); - perlKeywords.add("qq",S_ONE); - perlKeywords.add("qw",S_ONE); - perlKeywords.add("qx",S_ONE); - perlKeywords.add("s",S_TWO); - perlKeywords.add("tr",S_TWO); - perlKeywords.add("y",S_TWO); - } - return perlKeywords; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/PropsTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/PropsTokenMarker.java deleted file mode 100644 index 42ff686266e..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/PropsTokenMarker.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * PropsTokenMarker.java - Java props/DOS INI token marker - * Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * Java properties/DOS INI token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class PropsTokenMarker extends TokenMarker -{ - public static final byte VALUE = Token.INTERNAL_FIRST; - - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - char[] array = line.array; - int offset = line.offset; - int lastOffset = offset; - int length = line.count + offset; -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - switch(token) - { - case Token.NULL: - switch(array[i]) - { - case '#': case ';': - if(i == offset) - { - addToken(line.count,Token.COMMENT1); - lastOffset = length; - break loop; - } - break; - case '[': - if(i == offset) - { - addToken(i - lastOffset,token); - token = Token.KEYWORD2; - lastOffset = i; - } - break; - case '=': - addToken(i - lastOffset,Token.KEYWORD1); - token = VALUE; - lastOffset = i; - break; - } - break; - case Token.KEYWORD2: - if(array[i] == ']') - { - addToken(i1 - lastOffset,token); - token = Token.NULL; - lastOffset = i1; - } - break; - case VALUE: - break; - default: - throw new InternalError("Invalid state: " - + token); - } - } - if(lastOffset != length) - addToken(length - lastOffset,Token.NULL); - return Token.NULL; - } - - public boolean supportsMultilineTokens() - { - return false; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/PythonTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/PythonTokenMarker.java deleted file mode 100644 index 40336b7267e..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/PythonTokenMarker.java +++ /dev/null @@ -1,238 +0,0 @@ -/* - * PythonTokenMarker.java - Python token marker - * Copyright (C) 1999 Jonathan Revusky - * Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * Python token marker. - * - * @author Jonathan Revusky - * @version $Id$ - */ -public class PythonTokenMarker extends TokenMarker -{ - private static final byte TRIPLEQUOTE1 = Token.INTERNAL_FIRST; - private static final byte TRIPLEQUOTE2 = Token.INTERNAL_LAST; - - public PythonTokenMarker() - { - this.keywords = getKeywords(); - } - - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - char[] array = line.array; - int offset = line.offset; - lastOffset = offset; - lastKeyword = offset; - int length = line.count + offset; - boolean backslash = false; - -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - char c = array[i]; - if(c == '\\') - { - backslash = !backslash; - continue; - } - - switch(token) - { - case Token.NULL: - switch(c) - { - case '#': - if(backslash) - backslash = false; - else - { - doKeyword(line,i,c); - addToken(i - lastOffset,token); - addToken(length - i,Token.COMMENT1); - lastOffset = lastKeyword = length; - break loop; - } - break; - case '"': - doKeyword(line,i,c); - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - if(SyntaxUtilities.regionMatches(false, - line,i1,"\"\"")) - { - token = TRIPLEQUOTE1; - } - else - { - token = Token.LITERAL1; - } - lastOffset = lastKeyword = i; - } - break; - case '\'': - doKeyword(line,i,c); - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - if(SyntaxUtilities.regionMatches(false, - line,i1,"''")) - { - token = TRIPLEQUOTE2; - } - else - { - token = Token.LITERAL2; - } - lastOffset = lastKeyword = i; - } - break; - default: - backslash = false; - if(!Character.isLetterOrDigit(c) - && c != '_') - doKeyword(line,i,c); - break; - } - break; - case Token.LITERAL1: - if(backslash) - backslash = false; - else if(c == '"') - { - addToken(i1 - lastOffset,token); - token = Token.NULL; - lastOffset = lastKeyword = i1; - } - break; - case Token.LITERAL2: - if(backslash) - backslash = false; - else if(c == '\'') - { - addToken(i1 - lastOffset,Token.LITERAL1); - token = Token.NULL; - lastOffset = lastKeyword = i1; - } - break; - case TRIPLEQUOTE1: - if(backslash) - backslash = false; - else if(SyntaxUtilities.regionMatches(false, - line,i,"\"\"\"")) - { - addToken((i+=4) - lastOffset, - Token.LITERAL1); - token = Token.NULL; - lastOffset = lastKeyword = i; - } - break; - case TRIPLEQUOTE2: - if(backslash) - backslash = false; - else if(SyntaxUtilities.regionMatches(false, - line,i,"'''")) - { - addToken((i+=4) - lastOffset, - Token.LITERAL1); - token = Token.NULL; - lastOffset = lastKeyword = i; - } - break; - default: - throw new InternalError("Invalid state: " - + token); - } - } - - switch(token) - { - case TRIPLEQUOTE1: - case TRIPLEQUOTE2: - addToken(length - lastOffset,Token.LITERAL1); - break; - case Token.NULL: - doKeyword(line,length,'\0'); - default: - addToken(length - lastOffset,token); - break; - } - - return token; - } - - public static KeywordMap getKeywords() - { - if (pyKeywords == null) - { - pyKeywords = new KeywordMap(false); - pyKeywords.add("and",Token.KEYWORD3); - pyKeywords.add("not",Token.KEYWORD3); - pyKeywords.add("or",Token.KEYWORD3); - pyKeywords.add("if",Token.KEYWORD1); - pyKeywords.add("for",Token.KEYWORD1); - pyKeywords.add("assert",Token.KEYWORD1); - pyKeywords.add("break",Token.KEYWORD1); - pyKeywords.add("continue",Token.KEYWORD1); - pyKeywords.add("elif",Token.KEYWORD1); - pyKeywords.add("else",Token.KEYWORD1); - pyKeywords.add("except",Token.KEYWORD1); - pyKeywords.add("exec",Token.KEYWORD1); - pyKeywords.add("finally",Token.KEYWORD1); - pyKeywords.add("raise",Token.KEYWORD1); - pyKeywords.add("return",Token.KEYWORD1); - pyKeywords.add("try",Token.KEYWORD1); - pyKeywords.add("while",Token.KEYWORD1); - pyKeywords.add("def",Token.KEYWORD2); - pyKeywords.add("class",Token.KEYWORD2); - pyKeywords.add("del",Token.KEYWORD2); - pyKeywords.add("from",Token.KEYWORD2); - pyKeywords.add("global",Token.KEYWORD2); - pyKeywords.add("import",Token.KEYWORD2); - pyKeywords.add("in",Token.KEYWORD2); - pyKeywords.add("is",Token.KEYWORD2); - pyKeywords.add("lambda",Token.KEYWORD2); - pyKeywords.add("pass",Token.KEYWORD2); - pyKeywords.add("print",Token.KEYWORD2); - } - return pyKeywords; - } - - // private members - private static KeywordMap pyKeywords; - - private KeywordMap keywords; - private int lastOffset; - private int lastKeyword; - - private boolean doKeyword(Segment line, int i, char c) - { - int i1 = i+1; - - int len = i - lastKeyword; - byte id = keywords.lookup(line,lastKeyword,len); - if(id != Token.NULL) - { - if(lastKeyword != lastOffset) - addToken(lastKeyword - lastOffset,Token.NULL); - addToken(len,id); - lastOffset = i; - } - lastKeyword = i1; - return false; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/README.txt b/support/tools/BaseSimGUI/src/org/astron/util/gui/README.txt deleted file mode 100644 index 07a825cd7bb..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/README.txt +++ /dev/null @@ -1,46 +0,0 @@ -OLDSYNTAX PACKAGE README - -I am placing the jEdit 2.2.1 syntax highlighting package in the public -domain. This means it can be integrated into commercial programs, etc. - -This package requires at least Java 1.1 and Swing 1.1. Syntax -highlighting for the following file types is supported: - -- C++, C -- CORBA IDL -- Eiffel -- HTML -- Java -- Java properties -- JavaScript -- MS-DOS INI -- MS-DOS batch files -- Makefile -- PHP -- Perl -- Python -- TeX -- Transact-SQL -- Unix patch/diff -- Unix shell script -- XML - -This package is undocumented; read the source (start by taking a look at -JEditTextArea.java) to find out how to use it; it's really simple. Feel -free to e-mail questions, queries, etc. to me, but keep in mind that -this code is very old and I no longer maintain it. So if you find a bug, -don't bother me about it; fix it yourself. - -* Copyright - -The jEdit 2.2.1 syntax highlighting package contains code that is -Copyright 1998-1999 Slava Pestov, Artur Biesiadowski, Clancy Malcolm, -Jonathan Revusky, Juha Lindfors and Mike Dillon. - -You may use and modify this package for any purpose. Redistribution is -permitted, in both source and binary form, provided that this notice -remains intact in all source distributions of this package. - --- Slava Pestov -25 September 2000 -<sp@gjt.org> diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/SQLTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/SQLTokenMarker.java deleted file mode 100644 index 1ed74e7cf77..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/SQLTokenMarker.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * SQLTokenMarker.java - Generic SQL token marker - * Copyright (C) 1999 mike dillon - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * SQL token marker. - * - * @author mike dillon - * @version $Id$ - */ -public class SQLTokenMarker extends TokenMarker -{ - private int offset, lastOffset, lastKeyword, length; - - // public members - public SQLTokenMarker(KeywordMap k) - { - this(k, false); - } - - public SQLTokenMarker(KeywordMap k, boolean tsql) - { - keywords = k; - isTSQL = tsql; - } - - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - offset = lastOffset = lastKeyword = line.offset; - length = line.count + offset; - -loop: - for(int i = offset; i < length; i++) - { - switch(line.array[i]) - { - case '*': - if(token == Token.COMMENT1 && length - i >= 1 && line.array[i+1] == '/') - { - token = Token.NULL; - i++; - addToken((i + 1) - lastOffset,Token.COMMENT1); - lastOffset = i + 1; - } - else if (token == Token.NULL) - { - searchBack(line, i); - addToken(1,Token.OPERATOR); - lastOffset = i + 1; - } - break; - case '[': - if(token == Token.NULL) - { - searchBack(line, i); - token = Token.LITERAL1; - literalChar = '['; - lastOffset = i; - } - break; - case ']': - if(token == Token.LITERAL1 && literalChar == '[') - { - token = Token.NULL; - literalChar = 0; - addToken((i + 1) - lastOffset,Token.LITERAL1); - lastOffset = i + 1; - } - break; - case '.': case ',': case '(': case ')': - if (token == Token.NULL) { - searchBack(line, i); - addToken(1, Token.NULL); - lastOffset = i + 1; - } - break; - case '+': case '%': case '&': case '|': case '^': - case '~': case '<': case '>': case '=': - if (token == Token.NULL) { - searchBack(line, i); - addToken(1,Token.OPERATOR); - lastOffset = i + 1; - } - break; - case ' ': case '\t': - if (token == Token.NULL) { - searchBack(line, i, false); - } - break; - case ':': - if(token == Token.NULL) - { - addToken((i+1) - lastOffset,Token.LABEL); - lastOffset = i + 1; - } - break; - case '/': - if(token == Token.NULL) - { - if (length - i >= 2 && line.array[i + 1] == '*') - { - searchBack(line, i); - token = Token.COMMENT1; - lastOffset = i; - i++; - } - else - { - searchBack(line, i); - addToken(1,Token.OPERATOR); - lastOffset = i + 1; - } - } - break; - case '-': - if(token == Token.NULL) - { - if (length - i >= 2 && line.array[i+1] == '-') - { - searchBack(line, i); - addToken(length - i,Token.COMMENT1); - lastOffset = length; - break loop; - } - else - { - searchBack(line, i); - addToken(1,Token.OPERATOR); - lastOffset = i + 1; - } - } - break; - case '!': - if(isTSQL && token == Token.NULL && length - i >= 2 && - (line.array[i+1] == '=' || line.array[i+1] == '<' || line.array[i+1] == '>')) - { - searchBack(line, i); - addToken(1,Token.OPERATOR); - lastOffset = i + 1; - } - break; - case '"': case '\'': - if(token == Token.NULL) - { - token = Token.LITERAL1; - literalChar = line.array[i]; - addToken(i - lastOffset,Token.NULL); - lastOffset = i; - } - else if(token == Token.LITERAL1 && literalChar == line.array[i]) - { - token = Token.NULL; - literalChar = 0; - addToken((i + 1) - lastOffset,Token.LITERAL1); - lastOffset = i + 1; - } - break; - default: - break; - } - } - if(token == Token.NULL) - searchBack(line, length, false); - if(lastOffset != length) - addToken(length - lastOffset,token); - return token; - } - - // protected members - protected boolean isTSQL = false; - - // private members - private KeywordMap keywords; - private char literalChar = 0; - - private void searchBack(Segment line, int pos) - { - searchBack(line, pos, true); - } - - private void searchBack(Segment line, int pos, boolean padNull) - { - int len = pos - lastKeyword; - byte id = keywords.lookup(line,lastKeyword,len); - if(id != Token.NULL) - { - if(lastKeyword != lastOffset) - addToken(lastKeyword - lastOffset,Token.NULL); - addToken(len,id); - lastOffset = pos; - } - lastKeyword = pos + 1; - if (padNull && lastOffset < pos) - addToken(pos - lastOffset, Token.NULL); - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/ShellScriptTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/ShellScriptTokenMarker.java deleted file mode 100644 index 5598e4964d7..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/ShellScriptTokenMarker.java +++ /dev/null @@ -1,268 +0,0 @@ -/* - * ShellScriptTokenMarker.java - Shell script token marker - * Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * Shell script token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class ShellScriptTokenMarker extends TokenMarker -{ - // public members - public static final byte LVARIABLE = Token.INTERNAL_FIRST; - - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - char[] array = line.array; - byte cmdState = 0; // 0 = space before command, 1 = inside - // command, 2 = after command - int offset = line.offset; - int lastOffset = offset; - int length = line.count + offset; - - if(token == Token.LITERAL1 && lineIndex != 0 - && lineInfo[lineIndex - 1].obj != null) - { - String str = (String)lineInfo[lineIndex - 1].obj; - if(str != null && str.length() == line.count - && SyntaxUtilities.regionMatches(false,line, - offset,str)) - { - addToken(line.count,Token.LITERAL1); - return Token.NULL; - } - else - { - addToken(line.count,Token.LITERAL1); - lineInfo[lineIndex].obj = str; - return Token.LITERAL1; - } - } - - boolean backslash = false; -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - char c = array[i]; - - if(c == '\\') - { - backslash = !backslash; - continue; - } - - switch(token) - { - case Token.NULL: - switch(c) - { - case ' ': case '\t': case '(': case ')': - backslash = false; - if(cmdState == 1/*insideCmd*/) - { - addToken(i - lastOffset,Token.KEYWORD1); - lastOffset = i; - cmdState = 2; /*afterCmd*/ - } - break; - case '=': - backslash = false; - if(cmdState == 1/*insideCmd*/) - { - addToken(i - lastOffset,token); - lastOffset = i; - cmdState = 2; /*afterCmd*/ - } - break; - case '&': case '|': case ';': - if(backslash) - backslash = false; - else - cmdState = 0; /*beforeCmd*/ - break; - case '#': - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - addToken(length - i,Token.COMMENT1); - lastOffset = length; - break loop; - } - break; - case '$': - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - cmdState = 2; /*afterCmd*/ - lastOffset = i; - if(length - i >= 2) - { - switch(array[i1]) - { - case '(': - continue; - case '{': - token = LVARIABLE; - break; - default: - token = Token.KEYWORD2; - break; - } - } - else - token = Token.KEYWORD2; - } - break; - case '"': - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - token = Token.LITERAL1; - lineInfo[lineIndex].obj = null; - cmdState = 2; /*afterCmd*/ - lastOffset = i; - } - break; - case '\'': - if(backslash) - backslash = false; - else - { - addToken(i - lastOffset,token); - token = Token.LITERAL2; - cmdState = 2; /*afterCmd*/ - lastOffset = i; - } - break; - case '<': - if(backslash) - backslash = false; - else - { - if(length - i > 1 && array[i1] == '<') - { - addToken(i - lastOffset, - token); - token = Token.LITERAL1; - lastOffset = i; - lineInfo[lineIndex].obj = - new String(array,i + 2, - length - (i+2)); - } - } - break; - default: - backslash = false; - if(Character.isLetter(c)) - { - if(cmdState == 0 /*beforeCmd*/) - { - addToken(i - lastOffset,token); - lastOffset = i; - cmdState++; /*insideCmd*/ - } - } - break; - } - break; - case Token.KEYWORD2: - backslash = false; - if(!Character.isLetterOrDigit(c) && c != '_') - { - if(i != offset && array[i-1] == '$') - { - addToken(i1 - lastOffset,token); - lastOffset = i1; - token = Token.NULL; - continue; - } - else - { - addToken(i - lastOffset,token); - lastOffset = i; - token = Token.NULL; - } - } - break; - case Token.LITERAL1: - if(backslash) - backslash = false; - else if(c == '"') - { - addToken(i1 - lastOffset,token); - cmdState = 2; /*afterCmd*/ - lastOffset = i1; - token = Token.NULL; - } - else - backslash = false; - break; - case Token.LITERAL2: - if(backslash) - backslash = false; - else if(c == '\'') - { - addToken(i1 - lastOffset,Token.LITERAL1); - cmdState = 2; /*afterCmd*/ - lastOffset = i1; - token = Token.NULL; - } - else - backslash = false; - break; - case LVARIABLE: - backslash = false; - if(c == '}') - { - addToken(i1 - lastOffset,Token.KEYWORD2); - lastOffset = i1; - token = Token.NULL; - } - break; - default: - throw new InternalError("Invalid state: " + token); - } - } - - switch(token) - { - case Token.NULL: - if(cmdState == 1) - addToken(length - lastOffset,Token.KEYWORD1); - else - addToken(length - lastOffset,token); - break; - case Token.LITERAL2: - addToken(length - lastOffset,Token.LITERAL1); - break; - case Token.KEYWORD2: - addToken(length - lastOffset,token); - token = Token.NULL; - break; - case LVARIABLE: - addToken(length - lastOffset,Token.INVALID); - token = Token.NULL; - break; - default: - addToken(length - lastOffset,token); - break; - } - return token; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/StackLayout.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/StackLayout.java deleted file mode 100644 index 7193ed9bca7..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/StackLayout.java +++ /dev/null @@ -1,309 +0,0 @@ -package org.astron.util.gui; - -import java.awt.Component; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.Insets; -import java.awt.LayoutManager2; - -import java.util.Iterator; -import java.util.List; -import java.util.ArrayList; - -public class StackLayout implements LayoutManager2 -{ - private List _components; - private List _constraints; - - private int _vgap; - private HorizontalBehaviour _defaultBehaviour; - - public StackLayout() - { - this(5); - } - - public StackLayout(int vgap) - { - this(vgap, LEFT); - } - - public StackLayout(int vgap, HorizontalBehaviour defaultHorizontalBehaviour) - { - super(); - - _vgap = vgap; - _defaultBehaviour = defaultHorizontalBehaviour; - - _components = new ArrayList(); - _constraints = new ArrayList(); - } - - public int getVerticalGap() - { - return _vgap; - } - - public void setVerticalGap(int vgap) - { - _vgap = vgap; - } - - public void removeLayoutComponent(Component component) - { - synchronized (component.getTreeLock()) - { - int index = _components.indexOf(component); - - _components.remove(index); - _constraints.remove(index); - } - } - - public void addLayoutComponent(Component component, Object constraint) - { - synchronized (component.getTreeLock()) - { - HorizontalBehaviour behaviour; - - if(constraint == null) - { - behaviour = _defaultBehaviour; - } - else - { - behaviour = (HorizontalBehaviour) constraint; - } - - _components.add(component); - _constraints.add(behaviour); - } - } - - public void addLayoutComponent(String name, Component comp) - { - System.out.println("This method is not supported by the StackLayout"); - } - - public float getLayoutAlignmentX(Container target) - { - return 0.5f; - } - - public float getLayoutAlignmentY(Container target) - { - return 0.5f; - } - - public void invalidateLayout(Container target) - { - //no info is cached - } - - // returns all preferred heigths of the components and the maximum preferred widths - public Dimension preferredLayoutSize(Container container) - { - synchronized (container.getTreeLock()) - { - Dimension result = new Dimension(0, 0); - - Iterator componentIterator = _components.iterator(); - while(componentIterator.hasNext()) - { - Component component = (Component) componentIterator.next(); - - if (component.isVisible()) - { - Dimension dimension = component.getPreferredSize(); - - result.height += dimension.height + _vgap; - result.width = Math.max(result.width, dimension.width); - } - } - - Insets insets = container.getInsets(); - result.width += insets.left + insets.right; - result.height += insets.top + insets.bottom; - result.height -= _vgap; - return result; - } - } - - // returns all preferred heigths of the components and the maximum of the minimum widths - public Dimension minimumLayoutSize(Container container) - { - synchronized (container.getTreeLock()) - { - Dimension result = new Dimension(0, 0); - - Iterator componentIterator = _components.iterator(); - while(componentIterator.hasNext()) - { - Component component = (Component) componentIterator.next(); - - if (component.isVisible()) - { - Dimension dimension = component.getMinimumSize(); - Dimension preferredDimension = component.getPreferredSize(); - - result.height += preferredDimension.height + _vgap; - result.width = Math.max(result.width, dimension.width); - } - } - - Insets insets = container.getInsets(); - result.width += insets.left + insets.right; - result.height += insets.top + insets.bottom; - result.height -= _vgap; - - return result; - } - } - - // returns all preferred heigths of the components and the minimum of the maximum widths - public Dimension maximumLayoutSize(Container container) - { - synchronized (container.getTreeLock()) - { - Dimension result = new Dimension(Integer.MAX_VALUE, 0); - - Iterator componentIterator = _components.iterator(); - Iterator constraintIterator = _constraints.iterator(); - while(componentIterator.hasNext()) - { - Component component = (Component) componentIterator.next(); - HorizontalBehaviour constraint = (HorizontalBehaviour) constraintIterator.next(); - - if (component.isVisible()) - { - Dimension dimension = component.getMaximumSize(); - Dimension preferredDimension = component.getPreferredSize(); - - result.height += preferredDimension.height + _vgap; - - if(constraint.doesMaximumSizeMatter()) - { - result.width = Math.min(result.width, dimension.width); - } - } - } - - Insets insets = container.getInsets(); - result.width += insets.left + insets.right; - result.height += insets.top + insets.bottom; - result.height -= _vgap; - - return result; - } - } - - public void layoutContainer(Container container) - { - synchronized (container.getTreeLock()) - { - Dimension targetDimension = container.getSize(); - Insets insets = container.getInsets(); - - int maximumWidth = targetDimension.width - (insets.left + insets.right); - - int x = insets.left; - int y = insets.top; - - Iterator componentIterator = _components.iterator(); - Iterator constraintIterator = _constraints.iterator(); - - while(componentIterator.hasNext()) - { - Component component = (Component) componentIterator.next(); - HorizontalBehaviour constraint = (HorizontalBehaviour) constraintIterator.next(); - - if(component.isVisible()) - { - constraint.positionComponent(component, x, y, maximumWidth); - y += component.getPreferredSize().getHeight() + _vgap; - } - } - } - } - - public static final HorizontalBehaviour STRETCH = new StretchHorizontalBehaviour(); - public static final HorizontalBehaviour LEFT = new LeftPreferredSizeBehaviour(); - public static final HorizontalBehaviour RIGHT = new RightPreferredSizeBehaviour(); - public static final HorizontalBehaviour CENTER = new CenterPreferredSizeBehaviour(); - - public interface HorizontalBehaviour - { - public void positionComponent(Component component, int x, int y, int maximumWidth); - public boolean doesMaximumSizeMatter(); - } - - public static class StretchHorizontalBehaviour implements HorizontalBehaviour - { - public void positionComponent(Component component, int x, int y, int maximumWidth) - { - component.setSize(maximumWidth, component.getPreferredSize().height); - component.setLocation(x, y); - } - - public boolean doesMaximumSizeMatter() - { - return true; - } - } - - public static abstract class PreferredSizeHorizontalBehaviour implements HorizontalBehaviour - { - public int sizeComponent(Component component, int maximumWidth) - { - Dimension preferredSize = component.getPreferredSize(); - - int width; - int height = preferredSize.height; - - if(preferredSize.getWidth() > maximumWidth) - { - width = maximumWidth; - } - else - { - width = preferredSize.width; - } - - component.setSize(width, height); - - return width; - } - - public boolean doesMaximumSizeMatter() - { - return false; - } - } - - public static class LeftPreferredSizeBehaviour extends PreferredSizeHorizontalBehaviour - { - public void positionComponent(Component component, int x, int y, int maximumWidth) - { - int width = sizeComponent(component, maximumWidth); - component.setLocation(x, y); - } - } - - public static class RightPreferredSizeBehaviour extends PreferredSizeHorizontalBehaviour - { - public void positionComponent(Component component, int x, int y, int maximumWidth) - { - int width = sizeComponent(component, maximumWidth); - component.setLocation(x + (maximumWidth - width), y); - } - } - - public static class CenterPreferredSizeBehaviour extends PreferredSizeHorizontalBehaviour - { - public void positionComponent(Component component, int x, int y, int maximumWidth) - { - int width = sizeComponent(component, maximumWidth); - component.setLocation(x + ((maximumWidth - width)/2), y); - } - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxDocument.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxDocument.java deleted file mode 100644 index 9ac46488238..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxDocument.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * SyntaxDocument.java - Document that can be tokenized - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ - -package org.astron.util.gui; - -import javax.swing.event.*; -import javax.swing.text.*; -import javax.swing.undo.UndoableEdit; - -/** - * A document implementation that can be tokenized by the syntax highlighting - * system. - * - * @author Slava Pestov - * @version $Id$ - */ -public class SyntaxDocument extends PlainDocument -{ - /** - * Returns the token marker that is to be used to split lines - * of this document up into tokens. May return null if this - * document is not to be colorized. - */ - public TokenMarker getTokenMarker() - { - return tokenMarker; - } - - /** - * Sets the token marker that is to be used to split lines of - * this document up into tokens. May throw an exception if - * this is not supported for this type of document. - * @param tm The new token marker - */ - public void setTokenMarker(TokenMarker tm) - { - tokenMarker = tm; - if(tm == null) - return; - tokenMarker.insertLines(0,getDefaultRootElement() - .getElementCount()); - tokenizeLines(); - } - - /** - * Reparses the document, by passing all lines to the token - * marker. This should be called after the document is first - * loaded. - */ - public void tokenizeLines() - { - tokenizeLines(0,getDefaultRootElement().getElementCount()); - } - - /** - * Reparses the document, by passing the specified lines to the - * token marker. This should be called after a large quantity of - * text is first inserted. - * @param start The first line to parse - * @param len The number of lines, after the first one to parse - */ - public void tokenizeLines(int start, int len) - { - if(tokenMarker == null || !tokenMarker.supportsMultilineTokens()) - return; - - Segment lineSegment = new Segment(); - Element map = getDefaultRootElement(); - - len += start; - - try - { - for(int i = start; i < len; i++) - { - Element lineElement = map.getElement(i); - int lineStart = lineElement.getStartOffset(); - getText(lineStart,lineElement.getEndOffset() - - lineStart - 1,lineSegment); - tokenMarker.markTokens(lineSegment,i); - } - } - catch(BadLocationException bl) - { - bl.printStackTrace(); - } - } - - /** - * Starts a compound edit that can be undone in one operation. - * Subclasses that implement undo should override this method; - * this class has no undo functionality so this method is - * empty. - */ - public void beginCompoundEdit() {} - - /** - * Ends a compound edit that can be undone in one operation. - * Subclasses that implement undo should override this method; - * this class has no undo functionality so this method is - * empty. - */ - public void endCompoundEdit() {} - - /** - * Adds an undoable edit to this document's undo list. The edit - * should be ignored if something is currently being undone. - * @param edit The undoable edit - * - * @since jEdit 2.2pre1 - */ - public void addUndoableEdit(UndoableEdit edit) {} - - // protected members - protected TokenMarker tokenMarker; - - /** - * We overwrite this method to update the token marker - * state immediately so that any event listeners get a - * consistent token marker. - */ - protected void fireInsertUpdate(DocumentEvent evt) - { - if(tokenMarker != null) - { - DocumentEvent.ElementChange ch = evt.getChange( - getDefaultRootElement()); - if(ch != null) - { - tokenMarker.insertLines(ch.getIndex() + 1, - ch.getChildrenAdded().length - - ch.getChildrenRemoved().length); - } - } - - super.fireInsertUpdate(evt); - } - - /** - * We overwrite this method to update the token marker - * state immediately so that any event listeners get a - * consistent token marker. - */ - protected void fireRemoveUpdate(DocumentEvent evt) - { - if(tokenMarker != null) - { - DocumentEvent.ElementChange ch = evt.getChange( - getDefaultRootElement()); - if(ch != null) - { - tokenMarker.deleteLines(ch.getIndex() + 1, - ch.getChildrenRemoved().length - - ch.getChildrenAdded().length); - } - } - - super.fireRemoveUpdate(evt); - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxStyle.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxStyle.java deleted file mode 100644 index 37a75fa12f3..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxStyle.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * SyntaxStyle.java - A simple text style class - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ - -package org.astron.util.gui; - -import java.awt.*; -import java.util.StringTokenizer; - -/** - * A simple text style class. It can specify the color, italic flag, - * and bold flag of a run of text. - * @author Slava Pestov - * @version $Id$ - */ -public class SyntaxStyle -{ - /** - * Creates a new SyntaxStyle. - * @param color The text color - * @param italic True if the text should be italics - * @param bold True if the text should be bold - */ - public SyntaxStyle(Color color, boolean italic, boolean bold) - { - this.color = color; - this.italic = italic; - this.bold = bold; - } - - /** - * Returns the color specified in this style. - */ - public Color getColor() - { - return color; - } - - /** - * Returns true if no font styles are enabled. - */ - public boolean isPlain() - { - return !(bold || italic); - } - - /** - * Returns true if italics is enabled for this style. - */ - public boolean isItalic() - { - return italic; - } - - /** - * Returns true if boldface is enabled for this style. - */ - public boolean isBold() - { - return bold; - } - - /** - * Returns the specified font, but with the style's bold and - * italic flags applied. - */ - public Font getStyledFont(Font font) - { - if(font == null) - throw new NullPointerException("font param must not" - + " be null"); - if(font.equals(lastFont)) - return lastStyledFont; - lastFont = font; - lastStyledFont = new Font(font.getFamily(), - (bold ? Font.BOLD : 0) - | (italic ? Font.ITALIC : 0), - font.getSize()); - return lastStyledFont; - } - - /** - * Returns the font metrics for the styled font. - */ - public FontMetrics getFontMetrics(Font font) - { - if(font == null) - throw new NullPointerException("font param must not" - + " be null"); - if(font.equals(lastFont) && fontMetrics != null) - return fontMetrics; - lastFont = font; - lastStyledFont = new Font(font.getFamily(), - (bold ? Font.BOLD : 0) - | (italic ? Font.ITALIC : 0), - font.getSize()); - fontMetrics = Toolkit.getDefaultToolkit().getFontMetrics( - lastStyledFont); - return fontMetrics; - } - - /** - * Sets the foreground color and font of the specified graphics - * context to that specified in this style. - * @param gfx The graphics context - * @param font The font to add the styles to - */ - public void setGraphicsFlags(Graphics gfx, Font font) - { - Font _font = getStyledFont(font); - gfx.setFont(_font); - gfx.setColor(color); - } - - /** - * Returns a string representation of this object. - */ - public String toString() - { - return getClass().getName() + "[color=" + color + - (italic ? ",italic" : "") + - (bold ? ",bold" : "") + "]"; - } - - // private members - private Color color; - private boolean italic; - private boolean bold; - private Font lastFont; - private Font lastStyledFont; - private FontMetrics fontMetrics; -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxUtilities.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxUtilities.java deleted file mode 100644 index 7270145b128..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/SyntaxUtilities.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * SyntaxUtilities.java - Utility functions used by syntax colorizing - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.*; -import java.awt.*; - -/** - * Class with several utility functions used by jEdit's syntax colorizing - * subsystem. - * - * @author Slava Pestov - * @version $Id$ - */ -public class SyntaxUtilities -{ - /** - * Checks if a subregion of a <code>Segment</code> is equal to a - * string. - * @param ignoreCase True if case should be ignored, false otherwise - * @param text The segment - * @param offset The offset into the segment - * @param match The string to match - */ - public static boolean regionMatches(boolean ignoreCase, Segment text, - int offset, String match) - { - int length = offset + match.length(); - char[] textArray = text.array; - if(length > text.offset + text.count) - return false; - for(int i = offset, j = 0; i < length; i++, j++) - { - char c1 = textArray[i]; - char c2 = match.charAt(j); - if(ignoreCase) - { - c1 = Character.toUpperCase(c1); - c2 = Character.toUpperCase(c2); - } - if(c1 != c2) - return false; - } - return true; - } - - /** - * Checks if a subregion of a <code>Segment</code> is equal to a - * character array. - * @param ignoreCase True if case should be ignored, false otherwise - * @param text The segment - * @param offset The offset into the segment - * @param match The character array to match - */ - public static boolean regionMatches(boolean ignoreCase, Segment text, - int offset, char[] match) - { - int length = offset + match.length; - char[] textArray = text.array; - if(length > text.offset + text.count) - return false; - for(int i = offset, j = 0; i < length; i++, j++) - { - char c1 = textArray[i]; - char c2 = match[j]; - if(ignoreCase) - { - c1 = Character.toUpperCase(c1); - c2 = Character.toUpperCase(c2); - } - if(c1 != c2) - return false; - } - return true; - } - - /** - * Returns the default style table. This can be passed to the - * <code>setStyles()</code> method of <code>SyntaxDocument</code> - * to use the default syntax styles. - */ - public static SyntaxStyle[] getDefaultSyntaxStyles() - { - SyntaxStyle[] styles = new SyntaxStyle[Token.ID_COUNT]; - - styles[Token.COMMENT1] = new SyntaxStyle(Color.black,true,false); - styles[Token.COMMENT2] = new SyntaxStyle(new Color(0x990033),true,false); - styles[Token.KEYWORD1] = new SyntaxStyle(Color.black,false,true); - styles[Token.KEYWORD2] = new SyntaxStyle(Color.magenta,false,false); - styles[Token.KEYWORD3] = new SyntaxStyle(new Color(0x009600),false,false); - styles[Token.LITERAL1] = new SyntaxStyle(new Color(0x650099),false,false); - styles[Token.LITERAL2] = new SyntaxStyle(new Color(0x650099),false,true); - styles[Token.LABEL] = new SyntaxStyle(new Color(0x990033),false,true); - styles[Token.OPERATOR] = new SyntaxStyle(Color.black,false,true); - styles[Token.INVALID] = new SyntaxStyle(Color.red,false,true); - - return styles; - } - - /** - * Paints the specified line onto the graphics context. Note that this - * method munges the offset and count values of the segment. - * @param line The line segment - * @param tokens The token list for the line - * @param styles The syntax style list - * @param expander The tab expander used to determine tab stops. May - * be null - * @param gfx The graphics context - * @param x The x co-ordinate - * @param y The y co-ordinate - * @return The x co-ordinate, plus the width of the painted string - */ - public static int paintSyntaxLine(Segment line, Token tokens, - SyntaxStyle[] styles, TabExpander expander, Graphics gfx, - int x, int y) - { - Font defaultFont = gfx.getFont(); - Color defaultColor = gfx.getColor(); - - int offset = 0; - for(;;) - { - byte id = tokens.id; - if(id == Token.END) - break; - - int length = tokens.length; - if(id == Token.NULL) - { - if(!defaultColor.equals(gfx.getColor())) - gfx.setColor(defaultColor); - if(!defaultFont.equals(gfx.getFont())) - gfx.setFont(defaultFont); - } - else - styles[id].setGraphicsFlags(gfx,defaultFont); - - line.count = length; - x = Utilities.drawTabbedText(line,x,y,gfx,expander,0); - line.offset += length; - offset += length; - - tokens = tokens.next; - } - - return x; - } - - // private members - private SyntaxUtilities() {} -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/TSQLTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/TSQLTokenMarker.java deleted file mode 100644 index ee93159717e..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/TSQLTokenMarker.java +++ /dev/null @@ -1,968 +0,0 @@ -/* - * TSQLTokenMarker.java - Transact-SQL token marker - * Copyright (C) 1999 mike dillon - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * Transact-SQL token marker. - * - * @author mike dillon - * @version $Id$ - */ -public class TSQLTokenMarker extends SQLTokenMarker -{ - // public members - public TSQLTokenMarker() - { - super(getKeywordMap(), true); - } - - public static KeywordMap getKeywordMap() - { - if (tsqlKeywords == null) { - tsqlKeywords = new KeywordMap(true); - addKeywords(); - addDataTypes(); - addSystemFunctions(); - addOperators(); - addSystemStoredProcedures(); - addSystemTables(); - } - return tsqlKeywords; - } - - private static void addKeywords() - { - tsqlKeywords.add("ADD",Token.KEYWORD1); - tsqlKeywords.add("ALTER",Token.KEYWORD1); - tsqlKeywords.add("ANSI_NULLS",Token.KEYWORD1); - tsqlKeywords.add("AS",Token.KEYWORD1); - tsqlKeywords.add("ASC",Token.KEYWORD1); - tsqlKeywords.add("AUTHORIZATION",Token.KEYWORD1); - tsqlKeywords.add("BACKUP",Token.KEYWORD1); - tsqlKeywords.add("BEGIN",Token.KEYWORD1); - tsqlKeywords.add("BREAK",Token.KEYWORD1); - tsqlKeywords.add("BROWSE",Token.KEYWORD1); - tsqlKeywords.add("BULK",Token.KEYWORD1); - tsqlKeywords.add("BY",Token.KEYWORD1); - tsqlKeywords.add("CASCADE",Token.KEYWORD1); - tsqlKeywords.add("CHECK",Token.KEYWORD1); - tsqlKeywords.add("CHECKPOINT",Token.KEYWORD1); - tsqlKeywords.add("CLOSE",Token.KEYWORD1); - tsqlKeywords.add("CLUSTERED",Token.KEYWORD1); - tsqlKeywords.add("COLUMN",Token.KEYWORD1); - tsqlKeywords.add("COMMIT",Token.KEYWORD1); - tsqlKeywords.add("COMMITTED",Token.KEYWORD1); - tsqlKeywords.add("COMPUTE",Token.KEYWORD1); - tsqlKeywords.add("CONFIRM",Token.KEYWORD1); - tsqlKeywords.add("CONSTRAINT",Token.KEYWORD1); - tsqlKeywords.add("CONTAINS",Token.KEYWORD1); - tsqlKeywords.add("CONTAINSTABLE",Token.KEYWORD1); - tsqlKeywords.add("CONTINUE",Token.KEYWORD1); - tsqlKeywords.add("CONTROLROW",Token.KEYWORD1); - tsqlKeywords.add("CREATE",Token.KEYWORD1); - tsqlKeywords.add("CURRENT",Token.KEYWORD1); - tsqlKeywords.add("CURRENT_DATE",Token.KEYWORD1); - tsqlKeywords.add("CURRENT_TIME",Token.KEYWORD1); - tsqlKeywords.add("CURSOR",Token.KEYWORD1); - tsqlKeywords.add("DATABASE",Token.KEYWORD1); - tsqlKeywords.add("DBCC",Token.KEYWORD1); - tsqlKeywords.add("DEALLOCATE",Token.KEYWORD1); - tsqlKeywords.add("DECLARE",Token.KEYWORD1); - tsqlKeywords.add("DEFAULT",Token.KEYWORD1); - tsqlKeywords.add("DELETE",Token.KEYWORD1); - tsqlKeywords.add("DENY",Token.KEYWORD1); - tsqlKeywords.add("DESC",Token.KEYWORD1); - tsqlKeywords.add("DISK",Token.KEYWORD1); - tsqlKeywords.add("DISTINCT",Token.KEYWORD1); - tsqlKeywords.add("DISTRIBUTED",Token.KEYWORD1); - tsqlKeywords.add("DOUBLE",Token.KEYWORD1); - tsqlKeywords.add("DROP",Token.KEYWORD1); - tsqlKeywords.add("DUMMY",Token.KEYWORD1); - tsqlKeywords.add("DUMP",Token.KEYWORD1); - tsqlKeywords.add("ELSE",Token.KEYWORD1); - tsqlKeywords.add("END",Token.KEYWORD1); - tsqlKeywords.add("ERRLVL",Token.KEYWORD1); - tsqlKeywords.add("ERROREXIT",Token.KEYWORD1); - tsqlKeywords.add("ESCAPE",Token.KEYWORD1); - tsqlKeywords.add("EXCEPT",Token.KEYWORD1); - tsqlKeywords.add("EXEC",Token.KEYWORD1); - tsqlKeywords.add("EXECUTE",Token.KEYWORD1); - tsqlKeywords.add("EXIT",Token.KEYWORD1); - tsqlKeywords.add("FETCH",Token.KEYWORD1); - tsqlKeywords.add("FILE",Token.KEYWORD1); - tsqlKeywords.add("FILLFACTOR",Token.KEYWORD1); - tsqlKeywords.add("FLOPPY",Token.KEYWORD1); - tsqlKeywords.add("FOR",Token.KEYWORD1); - tsqlKeywords.add("FOREIGN",Token.KEYWORD1); - tsqlKeywords.add("FREETEXT",Token.KEYWORD1); - tsqlKeywords.add("FREETEXTTABLE",Token.KEYWORD1); - tsqlKeywords.add("FROM",Token.KEYWORD1); - tsqlKeywords.add("FULL",Token.KEYWORD1); - tsqlKeywords.add("GOTO",Token.KEYWORD1); - tsqlKeywords.add("GRANT",Token.KEYWORD1); - tsqlKeywords.add("GROUP",Token.KEYWORD1); - tsqlKeywords.add("HAVING",Token.KEYWORD1); - tsqlKeywords.add("HOLDLOCK",Token.KEYWORD1); - tsqlKeywords.add("IDENTITY_INSERT",Token.KEYWORD1); - tsqlKeywords.add("IDENTITYCOL",Token.KEYWORD1); - tsqlKeywords.add("ID",Token.KEYWORD1); - tsqlKeywords.add("IF",Token.KEYWORD1); - tsqlKeywords.add("INDEX",Token.KEYWORD1); - tsqlKeywords.add("INNER",Token.KEYWORD1); - tsqlKeywords.add("INSERT",Token.KEYWORD1); - tsqlKeywords.add("INTO",Token.KEYWORD1); - tsqlKeywords.add("IS",Token.KEYWORD1); - tsqlKeywords.add("ISOLATION",Token.KEYWORD1); - tsqlKeywords.add("KEY",Token.KEYWORD1); - tsqlKeywords.add("KILL",Token.KEYWORD1); - tsqlKeywords.add("LEVEL",Token.KEYWORD1); - tsqlKeywords.add("LINENO",Token.KEYWORD1); - tsqlKeywords.add("LOAD",Token.KEYWORD1); - tsqlKeywords.add("MAX",Token.KEYWORD1); - tsqlKeywords.add("MIN",Token.KEYWORD1); - tsqlKeywords.add("MIRROREXIT",Token.KEYWORD1); - tsqlKeywords.add("NATIONAL",Token.KEYWORD1); - tsqlKeywords.add("NOCHECK",Token.KEYWORD1); - tsqlKeywords.add("NONCLUSTERED",Token.KEYWORD1); - tsqlKeywords.add("OF",Token.KEYWORD1); - tsqlKeywords.add("OFF",Token.KEYWORD1); - tsqlKeywords.add("OFFSETS",Token.KEYWORD1); - tsqlKeywords.add("ON",Token.KEYWORD1); - tsqlKeywords.add("ONCE",Token.KEYWORD1); - tsqlKeywords.add("ONLY",Token.KEYWORD1); - tsqlKeywords.add("OPEN",Token.KEYWORD1); - tsqlKeywords.add("OPENDATASOURCE",Token.KEYWORD1); - tsqlKeywords.add("OPENQUERY",Token.KEYWORD1); - tsqlKeywords.add("OPENROWSET",Token.KEYWORD1); - tsqlKeywords.add("OPTION",Token.KEYWORD1); - tsqlKeywords.add("ORDER",Token.KEYWORD1); - tsqlKeywords.add("OVER",Token.KEYWORD1); - tsqlKeywords.add("PERCENT",Token.KEYWORD1); - tsqlKeywords.add("PERM",Token.KEYWORD1); - tsqlKeywords.add("PERMANENT",Token.KEYWORD1); - tsqlKeywords.add("PIPE",Token.KEYWORD1); - tsqlKeywords.add("PLAN",Token.KEYWORD1); - tsqlKeywords.add("PRECISION",Token.KEYWORD1); - tsqlKeywords.add("PREPARE",Token.KEYWORD1); - tsqlKeywords.add("PRIMARY",Token.KEYWORD1); - tsqlKeywords.add("PRINT",Token.KEYWORD1); - tsqlKeywords.add("PRIVILEGES",Token.KEYWORD1); - tsqlKeywords.add("PROC",Token.KEYWORD1); - tsqlKeywords.add("PROCEDURE",Token.KEYWORD1); - tsqlKeywords.add("PROCESSEXIT",Token.KEYWORD1); - tsqlKeywords.add("PUBLIC",Token.KEYWORD1); - tsqlKeywords.add("QUOTED_IDENTIFIER",Token.KEYWORD1); - tsqlKeywords.add("RAISERROR",Token.KEYWORD1); - tsqlKeywords.add("READ",Token.KEYWORD1); - tsqlKeywords.add("READTEXT",Token.KEYWORD1); - tsqlKeywords.add("RECONFIGURE",Token.KEYWORD1); - tsqlKeywords.add("REFERENCES",Token.KEYWORD1); - tsqlKeywords.add("REPEATABLE",Token.KEYWORD1); - tsqlKeywords.add("REPLICATION",Token.KEYWORD1); - tsqlKeywords.add("RESTORE",Token.KEYWORD1); - tsqlKeywords.add("RESTRICT",Token.KEYWORD1); - tsqlKeywords.add("RETURN",Token.KEYWORD1); - tsqlKeywords.add("REVOKE",Token.KEYWORD1); - tsqlKeywords.add("ROLLBACK",Token.KEYWORD1); - tsqlKeywords.add("ROWGUIDCOL",Token.KEYWORD1); - tsqlKeywords.add("RULE",Token.KEYWORD1); - tsqlKeywords.add("SAVE",Token.KEYWORD1); - tsqlKeywords.add("SCHEMA",Token.KEYWORD1); - tsqlKeywords.add("SELECT",Token.KEYWORD1); - tsqlKeywords.add("SERIALIZABLE",Token.KEYWORD1); - tsqlKeywords.add("SET",Token.KEYWORD1); - tsqlKeywords.add("SETUSER",Token.KEYWORD1); - tsqlKeywords.add("SHUTDOWN",Token.KEYWORD1); - tsqlKeywords.add("STATISTICS",Token.KEYWORD1); - tsqlKeywords.add("TABLE",Token.KEYWORD1); - tsqlKeywords.add("TAPE",Token.KEYWORD1); - tsqlKeywords.add("TEMP",Token.KEYWORD1); - tsqlKeywords.add("TEMPORARY",Token.KEYWORD1); - tsqlKeywords.add("TEXTIMAGE_ON",Token.KEYWORD1); - tsqlKeywords.add("THEN",Token.KEYWORD1); - tsqlKeywords.add("TO",Token.KEYWORD1); - tsqlKeywords.add("TOP",Token.KEYWORD1); - tsqlKeywords.add("TRAN",Token.KEYWORD1); - tsqlKeywords.add("TRANSACTION",Token.KEYWORD1); - tsqlKeywords.add("TRIGGER",Token.KEYWORD1); - tsqlKeywords.add("TRUNCATE",Token.KEYWORD1); - tsqlKeywords.add("TSEQUAL",Token.KEYWORD1); - tsqlKeywords.add("UNCOMMITTED",Token.KEYWORD1); - tsqlKeywords.add("UNION",Token.KEYWORD1); - tsqlKeywords.add("UNIQUE",Token.KEYWORD1); - tsqlKeywords.add("UPDATE",Token.KEYWORD1); - tsqlKeywords.add("UPDATETEXT",Token.KEYWORD1); - tsqlKeywords.add("USE",Token.KEYWORD1); - tsqlKeywords.add("VALUES",Token.KEYWORD1); - tsqlKeywords.add("VARYING",Token.KEYWORD1); - tsqlKeywords.add("VIEW",Token.KEYWORD1); - tsqlKeywords.add("WAITFOR",Token.KEYWORD1); - tsqlKeywords.add("WHEN",Token.KEYWORD1); - tsqlKeywords.add("WHERE",Token.KEYWORD1); - tsqlKeywords.add("WHILE",Token.KEYWORD1); - tsqlKeywords.add("WITH",Token.KEYWORD1); - tsqlKeywords.add("WORK",Token.KEYWORD1); - tsqlKeywords.add("WRITETEXT",Token.KEYWORD1); - } - - private static void addDataTypes() - { - tsqlKeywords.add("binary",Token.KEYWORD1); - tsqlKeywords.add("bit",Token.KEYWORD1); - tsqlKeywords.add("char",Token.KEYWORD1); - tsqlKeywords.add("character",Token.KEYWORD1); - tsqlKeywords.add("datetime",Token.KEYWORD1); - tsqlKeywords.add("decimal",Token.KEYWORD1); - tsqlKeywords.add("float",Token.KEYWORD1); - tsqlKeywords.add("image",Token.KEYWORD1); - tsqlKeywords.add("int",Token.KEYWORD1); - tsqlKeywords.add("integer",Token.KEYWORD1); - tsqlKeywords.add("money",Token.KEYWORD1); - tsqlKeywords.add("name",Token.KEYWORD1); - tsqlKeywords.add("numeric",Token.KEYWORD1); - tsqlKeywords.add("nchar",Token.KEYWORD1); - tsqlKeywords.add("nvarchar",Token.KEYWORD1); - tsqlKeywords.add("ntext",Token.KEYWORD1); - tsqlKeywords.add("real",Token.KEYWORD1); - tsqlKeywords.add("smalldatetime",Token.KEYWORD1); - tsqlKeywords.add("smallint",Token.KEYWORD1); - tsqlKeywords.add("smallmoney",Token.KEYWORD1); - tsqlKeywords.add("text",Token.KEYWORD1); - tsqlKeywords.add("timestamp",Token.KEYWORD1); - tsqlKeywords.add("tinyint",Token.KEYWORD1); - tsqlKeywords.add("uniqueidentifier",Token.KEYWORD1); - tsqlKeywords.add("varbinary",Token.KEYWORD1); - tsqlKeywords.add("varchar",Token.KEYWORD1); - } - - private static void addSystemFunctions() - { - tsqlKeywords.add("@@CONNECTIONS",Token.KEYWORD2); - tsqlKeywords.add("@@CPU_BUSY",Token.KEYWORD2); - tsqlKeywords.add("@@CURSOR_ROWS",Token.KEYWORD2); - tsqlKeywords.add("@@DATEFIRST",Token.KEYWORD2); - tsqlKeywords.add("@@DBTS",Token.KEYWORD2); - tsqlKeywords.add("@@ERROR",Token.KEYWORD2); - tsqlKeywords.add("@@FETCH_STATUS",Token.KEYWORD2); - tsqlKeywords.add("@@IDENTITY",Token.KEYWORD2); - tsqlKeywords.add("@@IDLE",Token.KEYWORD2); - tsqlKeywords.add("@@IO_BUSY",Token.KEYWORD2); - tsqlKeywords.add("@@LANGID",Token.KEYWORD2); - tsqlKeywords.add("@@LANGUAGE",Token.KEYWORD2); - tsqlKeywords.add("@@LOCK_TIMEOUT",Token.KEYWORD2); - tsqlKeywords.add("@@MAX_CONNECTIONS",Token.KEYWORD2); - tsqlKeywords.add("@@MAX_PRECISION",Token.KEYWORD2); - tsqlKeywords.add("@@NESTLEVEL",Token.KEYWORD2); - tsqlKeywords.add("@@OPTIONS",Token.KEYWORD2); - tsqlKeywords.add("@@PACK_RECEIVED",Token.KEYWORD2); - tsqlKeywords.add("@@PACK_SENT",Token.KEYWORD2); - tsqlKeywords.add("@@PACKET_ERRORS",Token.KEYWORD2); - tsqlKeywords.add("@@PROCID",Token.KEYWORD2); - tsqlKeywords.add("@@REMSERVER",Token.KEYWORD2); - tsqlKeywords.add("@@ROWCOUNT",Token.KEYWORD2); - tsqlKeywords.add("@@SERVERNAME",Token.KEYWORD2); - tsqlKeywords.add("@@SERVICENAME",Token.KEYWORD2); - tsqlKeywords.add("@@SPID",Token.KEYWORD2); - tsqlKeywords.add("@@TEXTSIZE",Token.KEYWORD2); - tsqlKeywords.add("@@TIMETICKS",Token.KEYWORD2); - tsqlKeywords.add("@@TOTAL_ERRORS",Token.KEYWORD2); - tsqlKeywords.add("@@TOTAL_READ",Token.KEYWORD2); - tsqlKeywords.add("@@TOTAL_WRITE",Token.KEYWORD2); - tsqlKeywords.add("@@TRANCOUNT",Token.KEYWORD2); - tsqlKeywords.add("@@VERSION",Token.KEYWORD2); - tsqlKeywords.add("ABS",Token.KEYWORD2); - tsqlKeywords.add("ACOS",Token.KEYWORD2); - tsqlKeywords.add("APP_NAME",Token.KEYWORD2); - tsqlKeywords.add("ASCII",Token.KEYWORD2); - tsqlKeywords.add("ASIN",Token.KEYWORD2); - tsqlKeywords.add("ATAN",Token.KEYWORD2); - tsqlKeywords.add("ATN2",Token.KEYWORD2); - tsqlKeywords.add("CASE",Token.KEYWORD2); - tsqlKeywords.add("CAST",Token.KEYWORD2); - tsqlKeywords.add("CEILING",Token.KEYWORD2); -// tsqlKeywords.add("CHAR",Token.KEYWORD2); - tsqlKeywords.add("CHARINDEX",Token.KEYWORD2); - tsqlKeywords.add("COALESCE",Token.KEYWORD2); - tsqlKeywords.add("COL_LENGTH",Token.KEYWORD2); - tsqlKeywords.add("COL_NAME",Token.KEYWORD2); - tsqlKeywords.add("COLUMNPROPERTY",Token.KEYWORD2); - tsqlKeywords.add("CONVERT",Token.KEYWORD2); - tsqlKeywords.add("COS",Token.KEYWORD2); - tsqlKeywords.add("COT",Token.KEYWORD2); - tsqlKeywords.add("CURRENT_TIME",Token.KEYWORD2); - tsqlKeywords.add("CURRENT_DATE",Token.KEYWORD2); - tsqlKeywords.add("CURRENT_TIMESTAMP",Token.KEYWORD2); - tsqlKeywords.add("CURRENT_USER",Token.KEYWORD2); - tsqlKeywords.add("CURSOR_STATUS",Token.KEYWORD2); - tsqlKeywords.add("DATABASEPROPERTY",Token.KEYWORD2); - tsqlKeywords.add("DATALENGTH",Token.KEYWORD2); - tsqlKeywords.add("DATEADD",Token.KEYWORD2); - tsqlKeywords.add("DATEDIFF",Token.KEYWORD2); - tsqlKeywords.add("DATENAME",Token.KEYWORD2); - tsqlKeywords.add("DATEPART",Token.KEYWORD2); - tsqlKeywords.add("DAY",Token.KEYWORD2); - tsqlKeywords.add("DB_ID",Token.KEYWORD2); - tsqlKeywords.add("DB_NAME",Token.KEYWORD2); - tsqlKeywords.add("DEGREES",Token.KEYWORD2); - tsqlKeywords.add("DIFFERENCE",Token.KEYWORD2); - tsqlKeywords.add("EXP",Token.KEYWORD2); - tsqlKeywords.add("FILE_ID",Token.KEYWORD2); - tsqlKeywords.add("FILE_NAME",Token.KEYWORD2); - tsqlKeywords.add("FILEGROUP_ID",Token.KEYWORD2); - tsqlKeywords.add("FILEGROUP_NAME",Token.KEYWORD2); - tsqlKeywords.add("FILEGROUPPROPERTY",Token.KEYWORD2); - tsqlKeywords.add("FILEPROPERTY",Token.KEYWORD2); - tsqlKeywords.add("FLOOR",Token.KEYWORD2); - tsqlKeywords.add("FORMATMESSAGE",Token.KEYWORD2); - tsqlKeywords.add("FULLTEXTCATALOGPROPERTY",Token.KEYWORD2); - tsqlKeywords.add("FULLTEXTSERVICEPROPERTY",Token.KEYWORD2); - tsqlKeywords.add("GETANSINULL",Token.KEYWORD2); - tsqlKeywords.add("GETDATE",Token.KEYWORD2); - tsqlKeywords.add("HOST_ID",Token.KEYWORD2); - tsqlKeywords.add("HOST_NAME",Token.KEYWORD2); - tsqlKeywords.add("IDENT_INCR",Token.KEYWORD2); - tsqlKeywords.add("IDENT_SEED",Token.KEYWORD2); -// tsqlKeywords.add("IDENTITY",Token.KEYWORD2); - tsqlKeywords.add("IDENTITY_INSERT",Token.KEYWORD2); - tsqlKeywords.add("INDEX_COL",Token.KEYWORD2); - tsqlKeywords.add("INDEXPROPERTY",Token.KEYWORD2); - tsqlKeywords.add("IS_MEMBER",Token.KEYWORD2); - tsqlKeywords.add("IS_SRVROLEMEMBER",Token.KEYWORD2); - tsqlKeywords.add("ISDATE",Token.KEYWORD2); - tsqlKeywords.add("ISNULL",Token.KEYWORD2); - tsqlKeywords.add("ISNUMERIC",Token.KEYWORD2); - tsqlKeywords.add("LEFT",Token.KEYWORD2); - tsqlKeywords.add("LEN",Token.KEYWORD2); - tsqlKeywords.add("LOG",Token.KEYWORD2); - tsqlKeywords.add("LOG10",Token.KEYWORD2); - tsqlKeywords.add("LOWER",Token.KEYWORD2); - tsqlKeywords.add("LTRIM",Token.KEYWORD2); - tsqlKeywords.add("MONTH",Token.KEYWORD2); -// tsqlKeywords.add("NCHAR",Token.KEYWORD2); - tsqlKeywords.add("NEWID",Token.KEYWORD2); - tsqlKeywords.add("NULLIF",Token.KEYWORD2); - tsqlKeywords.add("OBJECT_ID",Token.KEYWORD2); - tsqlKeywords.add("OBJECT_NAME",Token.KEYWORD2); - tsqlKeywords.add("OBJECTPROPERTY",Token.KEYWORD2); - tsqlKeywords.add("PARSENAME",Token.KEYWORD2); - tsqlKeywords.add("PATINDEX",Token.KEYWORD2); - tsqlKeywords.add("PERMISSIONS",Token.KEYWORD2); - tsqlKeywords.add("PI",Token.KEYWORD2); - tsqlKeywords.add("POWER",Token.KEYWORD2); - tsqlKeywords.add("QUOTENAME",Token.KEYWORD2); - tsqlKeywords.add("RADIANS",Token.KEYWORD2); - tsqlKeywords.add("RAND",Token.KEYWORD2); - tsqlKeywords.add("REPLACE",Token.KEYWORD2); - tsqlKeywords.add("REPLICATE",Token.KEYWORD2); - tsqlKeywords.add("REVERSE",Token.KEYWORD2); - tsqlKeywords.add("RIGHT",Token.KEYWORD2); - tsqlKeywords.add("ROUND",Token.KEYWORD2); - tsqlKeywords.add("RTRIM",Token.KEYWORD2); - tsqlKeywords.add("SESSION_USER",Token.KEYWORD2); - tsqlKeywords.add("SIGN",Token.KEYWORD2); - tsqlKeywords.add("SIN",Token.KEYWORD2); - tsqlKeywords.add("SOUNDEX",Token.KEYWORD2); - tsqlKeywords.add("SPACE",Token.KEYWORD2); - tsqlKeywords.add("SQRT",Token.KEYWORD2); - tsqlKeywords.add("SQUARE",Token.KEYWORD2); - tsqlKeywords.add("STATS_DATE",Token.KEYWORD2); - tsqlKeywords.add("STR",Token.KEYWORD2); - tsqlKeywords.add("STUFF",Token.KEYWORD2); - tsqlKeywords.add("SUBSTRING",Token.KEYWORD2); - tsqlKeywords.add("SUSER_ID",Token.KEYWORD2); - tsqlKeywords.add("SUSER_NAME",Token.KEYWORD2); - tsqlKeywords.add("SUSER_SID",Token.KEYWORD2); - tsqlKeywords.add("SUSER_SNAME",Token.KEYWORD2); - tsqlKeywords.add("SYSTEM_USER",Token.KEYWORD2); - tsqlKeywords.add("TAN",Token.KEYWORD2); - tsqlKeywords.add("TEXTPTR",Token.KEYWORD2); - tsqlKeywords.add("TEXTVALID",Token.KEYWORD2); - tsqlKeywords.add("TYPEPROPERTY",Token.KEYWORD2); - tsqlKeywords.add("UNICODE",Token.KEYWORD2); - tsqlKeywords.add("UPPER",Token.KEYWORD2); - tsqlKeywords.add("USER_ID",Token.KEYWORD2); - tsqlKeywords.add("USER_NAME",Token.KEYWORD2); - tsqlKeywords.add("USER",Token.KEYWORD2); - tsqlKeywords.add("YEAR",Token.KEYWORD2); - } - - private static void addOperators() - { - tsqlKeywords.add("ALL",Token.KEYWORD1); - tsqlKeywords.add("AND",Token.KEYWORD1); - tsqlKeywords.add("ANY",Token.KEYWORD1); - tsqlKeywords.add("BETWEEN",Token.KEYWORD1); - tsqlKeywords.add("CROSS",Token.KEYWORD1); - tsqlKeywords.add("EXISTS",Token.KEYWORD1); - tsqlKeywords.add("IN",Token.KEYWORD1); - tsqlKeywords.add("INTERSECT",Token.KEYWORD1); - tsqlKeywords.add("JOIN",Token.KEYWORD1); - tsqlKeywords.add("LIKE",Token.KEYWORD1); - tsqlKeywords.add("NOT",Token.KEYWORD1); - tsqlKeywords.add("NULL",Token.KEYWORD1); - tsqlKeywords.add("OR",Token.KEYWORD1); - tsqlKeywords.add("OUTER",Token.KEYWORD1); - tsqlKeywords.add("SOME",Token.KEYWORD1); - } - - private static void addSystemStoredProcedures() - { - tsqlKeywords.add("sp_add_agent_parameter",Token.KEYWORD3); - tsqlKeywords.add("sp_add_agent_profile",Token.KEYWORD3); - tsqlKeywords.add("sp_add_alert",Token.KEYWORD3); - tsqlKeywords.add("sp_add_category",Token.KEYWORD3); - tsqlKeywords.add("sp_add_data_file_recover_suspect_db",Token.KEYWORD3); - tsqlKeywords.add("sp_add_job",Token.KEYWORD3); - tsqlKeywords.add("sp_add_jobschedule",Token.KEYWORD3); - tsqlKeywords.add("sp_add_jobserver",Token.KEYWORD3); - tsqlKeywords.add("sp_add_jobstep",Token.KEYWORD3); - tsqlKeywords.add("sp_add_log_file_recover_suspect_db",Token.KEYWORD3); - tsqlKeywords.add("sp_add_notification",Token.KEYWORD3); - tsqlKeywords.add("sp_add_operator",Token.KEYWORD3); - tsqlKeywords.add("sp_add_targetservergroup",Token.KEYWORD3); - tsqlKeywords.add("sp_add_targetsvrgrp_member",Token.KEYWORD3); - tsqlKeywords.add("sp_addalias",Token.KEYWORD3); - tsqlKeywords.add("sp_addapprole",Token.KEYWORD3); - tsqlKeywords.add("sp_addarticle",Token.KEYWORD3); - tsqlKeywords.add("sp_adddistpublisher",Token.KEYWORD3); - tsqlKeywords.add("sp_adddistributiondb",Token.KEYWORD3); - tsqlKeywords.add("sp_adddistributor",Token.KEYWORD3); - tsqlKeywords.add("sp_addextendedproc",Token.KEYWORD3); - tsqlKeywords.add("sp_addgroup",Token.KEYWORD3); - tsqlKeywords.add("sp_addlinkedserver",Token.KEYWORD3); - tsqlKeywords.add("sp_addlinkedsrvlogin",Token.KEYWORD3); - tsqlKeywords.add("sp_addlinkedsrvlogin",Token.KEYWORD3); - tsqlKeywords.add("sp_addlogin",Token.KEYWORD3); - tsqlKeywords.add("sp_addmergearticle",Token.KEYWORD3); - tsqlKeywords.add("sp_addmergefilter",Token.KEYWORD3); - tsqlKeywords.add("sp_addmergepublication",Token.KEYWORD3); - tsqlKeywords.add("sp_addmergepullsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_addmergepullsubscription_agent",Token.KEYWORD3); - tsqlKeywords.add("sp_addmergesubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_addmessage",Token.KEYWORD3); - tsqlKeywords.add("sp_addpublication",Token.KEYWORD3); - tsqlKeywords.add("sp_addpublication_snapshot",Token.KEYWORD3); - tsqlKeywords.add("sp_addpublisher70",Token.KEYWORD3); - tsqlKeywords.add("sp_addpullsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_addpullsubscription_agent",Token.KEYWORD3); - tsqlKeywords.add("sp_addremotelogin",Token.KEYWORD3); - tsqlKeywords.add("sp_addrole",Token.KEYWORD3); - tsqlKeywords.add("sp_addrolemember",Token.KEYWORD3); - tsqlKeywords.add("sp_addserver",Token.KEYWORD3); - tsqlKeywords.add("sp_addsrvrolemember",Token.KEYWORD3); - tsqlKeywords.add("sp_addsubscriber",Token.KEYWORD3); - tsqlKeywords.add("sp_addsubscriber_schedule",Token.KEYWORD3); - tsqlKeywords.add("sp_addsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_addsynctriggers",Token.KEYWORD3); - tsqlKeywords.add("sp_addtabletocontents",Token.KEYWORD3); - tsqlKeywords.add("sp_addtask",Token.KEYWORD3); - tsqlKeywords.add("sp_addtype",Token.KEYWORD3); - tsqlKeywords.add("sp_addumpdevice",Token.KEYWORD3); - tsqlKeywords.add("sp_adduser",Token.KEYWORD3); - tsqlKeywords.add("sp_altermessage",Token.KEYWORD3); - tsqlKeywords.add("sp_apply_job_to_targets",Token.KEYWORD3); - tsqlKeywords.add("sp_approlepassword",Token.KEYWORD3); - tsqlKeywords.add("sp_article_validation",Token.KEYWORD3); - tsqlKeywords.add("sp_articlecolumn",Token.KEYWORD3); - tsqlKeywords.add("sp_articlefilter",Token.KEYWORD3); - tsqlKeywords.add("sp_articlesynctranprocs",Token.KEYWORD3); - tsqlKeywords.add("sp_articleview",Token.KEYWORD3); - tsqlKeywords.add("sp_attach_db",Token.KEYWORD3); - tsqlKeywords.add("sp_attach_single_file_db",Token.KEYWORD3); - tsqlKeywords.add("sp_autostats",Token.KEYWORD3); - tsqlKeywords.add("sp_bindefault",Token.KEYWORD3); - tsqlKeywords.add("sp_bindrule",Token.KEYWORD3); - tsqlKeywords.add("sp_bindsession",Token.KEYWORD3); - tsqlKeywords.add("sp_browsereplcmds",Token.KEYWORD3); - tsqlKeywords.add("sp_catalogs",Token.KEYWORD3); - tsqlKeywords.add("sp_certify_removable",Token.KEYWORD3); - tsqlKeywords.add("sp_change_agent_parameter",Token.KEYWORD3); - tsqlKeywords.add("sp_change_agent_profile",Token.KEYWORD3); - tsqlKeywords.add("sp_change_subscription_properties",Token.KEYWORD3); - tsqlKeywords.add("sp_change_users_login",Token.KEYWORD3); - tsqlKeywords.add("sp_changearticle",Token.KEYWORD3); - tsqlKeywords.add("sp_changedbowner",Token.KEYWORD3); - tsqlKeywords.add("sp_changedistpublisher",Token.KEYWORD3); - tsqlKeywords.add("sp_changedistributiondb",Token.KEYWORD3); - tsqlKeywords.add("sp_changedistributor_password",Token.KEYWORD3); - tsqlKeywords.add("sp_changedistributor_property",Token.KEYWORD3); - tsqlKeywords.add("sp_changegroup",Token.KEYWORD3); - tsqlKeywords.add("sp_changemergearticle",Token.KEYWORD3); - tsqlKeywords.add("sp_changemergefilter",Token.KEYWORD3); - tsqlKeywords.add("sp_changemergepublication",Token.KEYWORD3); - tsqlKeywords.add("sp_changemergepullsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_changemergesubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_changeobjectowner",Token.KEYWORD3); - tsqlKeywords.add("sp_changepublication",Token.KEYWORD3); - tsqlKeywords.add("sp_changesubscriber",Token.KEYWORD3); - tsqlKeywords.add("sp_changesubscriber_schedule",Token.KEYWORD3); - tsqlKeywords.add("sp_changesubstatus",Token.KEYWORD3); - tsqlKeywords.add("sp_check_for_sync_trigger",Token.KEYWORD3); - tsqlKeywords.add("sp_column_privileges",Token.KEYWORD3); - tsqlKeywords.add("sp_column_privileges_ex",Token.KEYWORD3); - tsqlKeywords.add("sp_columns",Token.KEYWORD3); - tsqlKeywords.add("sp_columns_ex",Token.KEYWORD3); - tsqlKeywords.add("sp_configure",Token.KEYWORD3); - tsqlKeywords.add("sp_create_removable",Token.KEYWORD3); - tsqlKeywords.add("sp_createorphan",Token.KEYWORD3); - tsqlKeywords.add("sp_createstats",Token.KEYWORD3); - tsqlKeywords.add("sp_cursor",Token.KEYWORD3); - tsqlKeywords.add("sp_cursor_list",Token.KEYWORD3); - tsqlKeywords.add("sp_cursorclose",Token.KEYWORD3); - tsqlKeywords.add("sp_cursorexecute",Token.KEYWORD3); - tsqlKeywords.add("sp_cursorfetch",Token.KEYWORD3); - tsqlKeywords.add("sp_cursoropen",Token.KEYWORD3); - tsqlKeywords.add("sp_cursoroption",Token.KEYWORD3); - tsqlKeywords.add("sp_cursorprepare",Token.KEYWORD3); - tsqlKeywords.add("sp_cursorunprepare",Token.KEYWORD3); - tsqlKeywords.add("sp_cycle_errorlog",Token.KEYWORD3); - tsqlKeywords.add("sp_databases",Token.KEYWORD3); - tsqlKeywords.add("sp_datatype_info",Token.KEYWORD3); - tsqlKeywords.add("sp_dbcmptlevel",Token.KEYWORD3); - tsqlKeywords.add("sp_dbfixedrolepermission",Token.KEYWORD3); - tsqlKeywords.add("sp_dboption",Token.KEYWORD3); - tsqlKeywords.add("sp_defaultdb",Token.KEYWORD3); - tsqlKeywords.add("sp_defaultlanguage",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_alert",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_backuphistory",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_category",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_job",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_jobschedule",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_jobserver",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_jobstep",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_notification",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_operator",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_targetserver",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_targetservergroup",Token.KEYWORD3); - tsqlKeywords.add("sp_delete_targetsvrgrp_member",Token.KEYWORD3); - tsqlKeywords.add("sp_deletemergeconflictrow",Token.KEYWORD3); - tsqlKeywords.add("sp_denylogin",Token.KEYWORD3); - tsqlKeywords.add("sp_depends",Token.KEYWORD3); - tsqlKeywords.add("sp_describe_cursor",Token.KEYWORD3); - tsqlKeywords.add("sp_describe_cursor_columns",Token.KEYWORD3); - tsqlKeywords.add("sp_describe_cursor_tables",Token.KEYWORD3); - tsqlKeywords.add("sp_detach_db",Token.KEYWORD3); - tsqlKeywords.add("sp_drop_agent_parameter",Token.KEYWORD3); - tsqlKeywords.add("sp_drop_agent_profile",Token.KEYWORD3); - tsqlKeywords.add("sp_dropalias",Token.KEYWORD3); - tsqlKeywords.add("sp_dropapprole",Token.KEYWORD3); - tsqlKeywords.add("sp_droparticle",Token.KEYWORD3); - tsqlKeywords.add("sp_dropdevice",Token.KEYWORD3); - tsqlKeywords.add("sp_dropdistpublisher",Token.KEYWORD3); - tsqlKeywords.add("sp_dropdistributiondb",Token.KEYWORD3); - tsqlKeywords.add("sp_dropdistributor",Token.KEYWORD3); - tsqlKeywords.add("sp_dropextendedproc",Token.KEYWORD3); - tsqlKeywords.add("sp_dropgroup",Token.KEYWORD3); - tsqlKeywords.add("sp_droplinkedsrvlogin",Token.KEYWORD3); - tsqlKeywords.add("sp_droplinkedsrvlogin",Token.KEYWORD3); - tsqlKeywords.add("sp_droplogin",Token.KEYWORD3); - tsqlKeywords.add("sp_dropmergearticle",Token.KEYWORD3); - tsqlKeywords.add("sp_dropmergefilter",Token.KEYWORD3); - tsqlKeywords.add("sp_dropmergepublication",Token.KEYWORD3); - tsqlKeywords.add("sp_dropmergepullsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_dropmergesubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_dropmessage",Token.KEYWORD3); - tsqlKeywords.add("sp_droporphans",Token.KEYWORD3); - tsqlKeywords.add("sp_droppublication",Token.KEYWORD3); - tsqlKeywords.add("sp_droppullsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_dropremotelogin",Token.KEYWORD3); - tsqlKeywords.add("sp_droprole",Token.KEYWORD3); - tsqlKeywords.add("sp_droprolemember",Token.KEYWORD3); - tsqlKeywords.add("sp_dropserver",Token.KEYWORD3); - tsqlKeywords.add("sp_dropsrvrolemember",Token.KEYWORD3); - tsqlKeywords.add("sp_dropsubscriber",Token.KEYWORD3); - tsqlKeywords.add("sp_dropsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_droptask",Token.KEYWORD3); - tsqlKeywords.add("sp_droptype",Token.KEYWORD3); - tsqlKeywords.add("sp_dropuser",Token.KEYWORD3); - tsqlKeywords.add("sp_dropwebtask",Token.KEYWORD3); - tsqlKeywords.add("sp_dsninfo",Token.KEYWORD3); - tsqlKeywords.add("sp_dumpparamcmd",Token.KEYWORD3); - tsqlKeywords.add("sp_enumcodepages",Token.KEYWORD3); - tsqlKeywords.add("sp_enumcustomresolvers",Token.KEYWORD3); - tsqlKeywords.add("sp_enumdsn",Token.KEYWORD3); - tsqlKeywords.add("sp_enumfullsubscribers",Token.KEYWORD3); - tsqlKeywords.add("sp_execute",Token.KEYWORD3); - tsqlKeywords.add("sp_executesql",Token.KEYWORD3); - tsqlKeywords.add("sp_expired_subscription_cleanup",Token.KEYWORD3); - tsqlKeywords.add("sp_fkeys",Token.KEYWORD3); - tsqlKeywords.add("sp_foreignkeys",Token.KEYWORD3); - tsqlKeywords.add("sp_fulltext_catalog",Token.KEYWORD3); - tsqlKeywords.add("sp_fulltext_column",Token.KEYWORD3); - tsqlKeywords.add("sp_fulltext_database",Token.KEYWORD3); - tsqlKeywords.add("sp_fulltext_service",Token.KEYWORD3); - tsqlKeywords.add("sp_fulltext_table",Token.KEYWORD3); - tsqlKeywords.add("sp_generatefilters",Token.KEYWORD3); - tsqlKeywords.add("sp_get_distributor",Token.KEYWORD3); - tsqlKeywords.add("sp_getbindtoken",Token.KEYWORD3); - tsqlKeywords.add("sp_getmergedeletetype",Token.KEYWORD3); - tsqlKeywords.add("sp_grant_publication_access",Token.KEYWORD3); - tsqlKeywords.add("sp_grantdbaccess",Token.KEYWORD3); - tsqlKeywords.add("sp_grantlogin",Token.KEYWORD3); - tsqlKeywords.add("sp_help",Token.KEYWORD3); - tsqlKeywords.add("sp_help_agent_default",Token.KEYWORD3); - tsqlKeywords.add("sp_help_agent_parameter",Token.KEYWORD3); - tsqlKeywords.add("sp_help_agent_profile",Token.KEYWORD3); - tsqlKeywords.add("sp_help_alert",Token.KEYWORD3); - tsqlKeywords.add("sp_help_category",Token.KEYWORD3); - tsqlKeywords.add("sp_help_downloadlist",Token.KEYWORD3); - tsqlKeywords.add("sp_help_fulltext_catalogs",Token.KEYWORD3); - tsqlKeywords.add("sp_help_fulltext_catalogs_cursor",Token.KEYWORD3); - tsqlKeywords.add("sp_help_fulltext_columns",Token.KEYWORD3); - tsqlKeywords.add("sp_help_fulltext_columns_cursor",Token.KEYWORD3); - tsqlKeywords.add("sp_help_fulltext_tables",Token.KEYWORD3); - tsqlKeywords.add("sp_help_fulltext_tables_cursor",Token.KEYWORD3); - tsqlKeywords.add("sp_help_job",Token.KEYWORD3); - tsqlKeywords.add("sp_help_jobhistory",Token.KEYWORD3); - tsqlKeywords.add("sp_help_jobschedule",Token.KEYWORD3); - tsqlKeywords.add("sp_help_jobserver",Token.KEYWORD3); - tsqlKeywords.add("sp_help_jobstep",Token.KEYWORD3); - tsqlKeywords.add("sp_help_notification",Token.KEYWORD3); - tsqlKeywords.add("sp_help_operator",Token.KEYWORD3); - tsqlKeywords.add("sp_help_publication_access",Token.KEYWORD3); - tsqlKeywords.add("sp_help_targetserver",Token.KEYWORD3); - tsqlKeywords.add("sp_help_targetservergroup",Token.KEYWORD3); - tsqlKeywords.add("sp_helparticle",Token.KEYWORD3); - tsqlKeywords.add("sp_helparticlecolumns",Token.KEYWORD3); - tsqlKeywords.add("sp_helpconstraint",Token.KEYWORD3); - tsqlKeywords.add("sp_helpdb",Token.KEYWORD3); - tsqlKeywords.add("sp_helpdbfixedrole",Token.KEYWORD3); - tsqlKeywords.add("sp_helpdevice",Token.KEYWORD3); - tsqlKeywords.add("sp_helpdistpublisher",Token.KEYWORD3); - tsqlKeywords.add("sp_helpdistributiondb",Token.KEYWORD3); - tsqlKeywords.add("sp_helpdistributor",Token.KEYWORD3); - tsqlKeywords.add("sp_helpextendedproc",Token.KEYWORD3); - tsqlKeywords.add("sp_helpfile",Token.KEYWORD3); - tsqlKeywords.add("sp_helpfilegroup",Token.KEYWORD3); - tsqlKeywords.add("sp_helpgroup",Token.KEYWORD3); - tsqlKeywords.add("sp_helphistory",Token.KEYWORD3); - tsqlKeywords.add("sp_helpindex",Token.KEYWORD3); - tsqlKeywords.add("sp_helplanguage",Token.KEYWORD3); - tsqlKeywords.add("sp_helplinkedsrvlogin",Token.KEYWORD3); - tsqlKeywords.add("sp_helplogins",Token.KEYWORD3); - tsqlKeywords.add("sp_helpmergearticle",Token.KEYWORD3); - tsqlKeywords.add("sp_helpmergearticleconflicts",Token.KEYWORD3); - tsqlKeywords.add("sp_helpmergeconflictrows",Token.KEYWORD3); - tsqlKeywords.add("sp_helpmergedeleteconflictrows",Token.KEYWORD3); - tsqlKeywords.add("sp_helpmergefilter",Token.KEYWORD3); - tsqlKeywords.add("sp_helpmergepublication",Token.KEYWORD3); - tsqlKeywords.add("sp_helpmergepullsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_helpmergesubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_helpntgroup",Token.KEYWORD3); - tsqlKeywords.add("sp_helppublication",Token.KEYWORD3); - tsqlKeywords.add("sp_helppullsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_helpremotelogin",Token.KEYWORD3); - tsqlKeywords.add("sp_helpreplicationdboption",Token.KEYWORD3); - tsqlKeywords.add("sp_helprole",Token.KEYWORD3); - tsqlKeywords.add("sp_helprolemember",Token.KEYWORD3); - tsqlKeywords.add("sp_helprotect",Token.KEYWORD3); - tsqlKeywords.add("sp_helpserver",Token.KEYWORD3); - tsqlKeywords.add("sp_helpsort",Token.KEYWORD3); - tsqlKeywords.add("sp_helpsrvrole",Token.KEYWORD3); - tsqlKeywords.add("sp_helpsrvrolemember",Token.KEYWORD3); - tsqlKeywords.add("sp_helpsubscriberinfo",Token.KEYWORD3); - tsqlKeywords.add("sp_helpsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_helpsubscription_properties",Token.KEYWORD3); - tsqlKeywords.add("sp_helptask",Token.KEYWORD3); - tsqlKeywords.add("sp_helptext",Token.KEYWORD3); - tsqlKeywords.add("sp_helptrigger",Token.KEYWORD3); - tsqlKeywords.add("sp_helpuser",Token.KEYWORD3); - tsqlKeywords.add("sp_indexes",Token.KEYWORD3); - tsqlKeywords.add("sp_indexoption",Token.KEYWORD3); - tsqlKeywords.add("sp_link_publication",Token.KEYWORD3); - tsqlKeywords.add("sp_linkedservers",Token.KEYWORD3); - tsqlKeywords.add("sp_lock",Token.KEYWORD3); - tsqlKeywords.add("sp_makewebtask",Token.KEYWORD3); - tsqlKeywords.add("sp_manage_jobs_by_login",Token.KEYWORD3); - tsqlKeywords.add("sp_mergedummyupdate",Token.KEYWORD3); - tsqlKeywords.add("sp_mergesubscription_cleanup",Token.KEYWORD3); - tsqlKeywords.add("sp_monitor",Token.KEYWORD3); - tsqlKeywords.add("sp_msx_defect",Token.KEYWORD3); - tsqlKeywords.add("sp_msx_enlist",Token.KEYWORD3); - tsqlKeywords.add("sp_OACreate",Token.KEYWORD3); - tsqlKeywords.add("sp_OADestroy",Token.KEYWORD3); - tsqlKeywords.add("sp_OAGetErrorInfo",Token.KEYWORD3); - tsqlKeywords.add("sp_OAGetProperty",Token.KEYWORD3); - tsqlKeywords.add("sp_OAMethod",Token.KEYWORD3); - tsqlKeywords.add("sp_OASetProperty",Token.KEYWORD3); - tsqlKeywords.add("sp_OAStop",Token.KEYWORD3); - tsqlKeywords.add("sp_password",Token.KEYWORD3); - tsqlKeywords.add("sp_pkeys",Token.KEYWORD3); - tsqlKeywords.add("sp_post_msx_operation",Token.KEYWORD3); - tsqlKeywords.add("sp_prepare",Token.KEYWORD3); - tsqlKeywords.add("sp_primarykeys",Token.KEYWORD3); - tsqlKeywords.add("sp_processmail",Token.KEYWORD3); - tsqlKeywords.add("sp_procoption",Token.KEYWORD3); - tsqlKeywords.add("sp_publication_validation",Token.KEYWORD3); - tsqlKeywords.add("sp_purge_jobhistory",Token.KEYWORD3); - tsqlKeywords.add("sp_purgehistory",Token.KEYWORD3); - tsqlKeywords.add("sp_reassigntask",Token.KEYWORD3); - tsqlKeywords.add("sp_recompile",Token.KEYWORD3); - tsqlKeywords.add("sp_refreshsubscriptions",Token.KEYWORD3); - tsqlKeywords.add("sp_refreshview",Token.KEYWORD3); - tsqlKeywords.add("sp_reinitmergepullsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_reinitmergesubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_reinitpullsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_reinitsubscription",Token.KEYWORD3); - tsqlKeywords.add("sp_remoteoption",Token.KEYWORD3); - tsqlKeywords.add("sp_remove_job_from_targets",Token.KEYWORD3); - tsqlKeywords.add("sp_removedbreplication",Token.KEYWORD3); - tsqlKeywords.add("sp_rename",Token.KEYWORD3); - tsqlKeywords.add("sp_renamedb",Token.KEYWORD3); - tsqlKeywords.add("sp_replcmds",Token.KEYWORD3); - tsqlKeywords.add("sp_replcounters",Token.KEYWORD3); - tsqlKeywords.add("sp_repldone",Token.KEYWORD3); - tsqlKeywords.add("sp_replflush",Token.KEYWORD3); - tsqlKeywords.add("sp_replication_agent_checkup",Token.KEYWORD3); - tsqlKeywords.add("sp_replicationdboption",Token.KEYWORD3); - tsqlKeywords.add("sp_replsetoriginator",Token.KEYWORD3); - tsqlKeywords.add("sp_replshowcmds",Token.KEYWORD3); - tsqlKeywords.add("sp_repltrans",Token.KEYWORD3); - tsqlKeywords.add("sp_reset_connection",Token.KEYWORD3); - tsqlKeywords.add("sp_resync_targetserver",Token.KEYWORD3); - tsqlKeywords.add("sp_revoke_publication_access",Token.KEYWORD3); - tsqlKeywords.add("sp_revokedbaccess",Token.KEYWORD3); - tsqlKeywords.add("sp_revokelogin",Token.KEYWORD3); - tsqlKeywords.add("sp_runwebtask",Token.KEYWORD3); - tsqlKeywords.add("sp_script_synctran_commands",Token.KEYWORD3); - tsqlKeywords.add("sp_scriptdelproc",Token.KEYWORD3); - tsqlKeywords.add("sp_scriptinsproc",Token.KEYWORD3); - tsqlKeywords.add("sp_scriptmappedupdproc",Token.KEYWORD3); - tsqlKeywords.add("sp_scriptupdproc",Token.KEYWORD3); - tsqlKeywords.add("sp_sdidebug",Token.KEYWORD3); - tsqlKeywords.add("sp_server_info",Token.KEYWORD3); - tsqlKeywords.add("sp_serveroption",Token.KEYWORD3); - tsqlKeywords.add("sp_serveroption",Token.KEYWORD3); - tsqlKeywords.add("sp_setapprole",Token.KEYWORD3); - tsqlKeywords.add("sp_setnetname",Token.KEYWORD3); - tsqlKeywords.add("sp_spaceused",Token.KEYWORD3); - tsqlKeywords.add("sp_special_columns",Token.KEYWORD3); - tsqlKeywords.add("sp_sproc_columns",Token.KEYWORD3); - tsqlKeywords.add("sp_srvrolepermission",Token.KEYWORD3); - tsqlKeywords.add("sp_start_job",Token.KEYWORD3); - tsqlKeywords.add("sp_statistics",Token.KEYWORD3); - tsqlKeywords.add("sp_stop_job",Token.KEYWORD3); - tsqlKeywords.add("sp_stored_procedures",Token.KEYWORD3); - tsqlKeywords.add("sp_subscription_cleanup",Token.KEYWORD3); - tsqlKeywords.add("sp_table_privileges",Token.KEYWORD3); - tsqlKeywords.add("sp_table_privileges_ex",Token.KEYWORD3); - tsqlKeywords.add("sp_table_validation",Token.KEYWORD3); - tsqlKeywords.add("sp_tableoption",Token.KEYWORD3); - tsqlKeywords.add("sp_tables",Token.KEYWORD3); - tsqlKeywords.add("sp_tables_ex",Token.KEYWORD3); - tsqlKeywords.add("sp_unbindefault",Token.KEYWORD3); - tsqlKeywords.add("sp_unbindrule",Token.KEYWORD3); - tsqlKeywords.add("sp_unprepare",Token.KEYWORD3); - tsqlKeywords.add("sp_update_agent_profile",Token.KEYWORD3); - tsqlKeywords.add("sp_update_alert",Token.KEYWORD3); - tsqlKeywords.add("sp_update_category",Token.KEYWORD3); - tsqlKeywords.add("sp_update_job",Token.KEYWORD3); - tsqlKeywords.add("sp_update_jobschedule",Token.KEYWORD3); - tsqlKeywords.add("sp_update_jobstep",Token.KEYWORD3); - tsqlKeywords.add("sp_update_notification",Token.KEYWORD3); - tsqlKeywords.add("sp_update_operator",Token.KEYWORD3); - tsqlKeywords.add("sp_update_targetservergroup",Token.KEYWORD3); - tsqlKeywords.add("sp_updatestats",Token.KEYWORD3); - tsqlKeywords.add("sp_updatetask",Token.KEYWORD3); - tsqlKeywords.add("sp_validatelogins",Token.KEYWORD3); - tsqlKeywords.add("sp_validname",Token.KEYWORD3); - tsqlKeywords.add("sp_who",Token.KEYWORD3); - tsqlKeywords.add("xp_cmdshell",Token.KEYWORD3); - tsqlKeywords.add("xp_deletemail",Token.KEYWORD3); - tsqlKeywords.add("xp_enumgroups",Token.KEYWORD3); - tsqlKeywords.add("xp_findnextmsg",Token.KEYWORD3); - tsqlKeywords.add("xp_findnextmsg",Token.KEYWORD3); - tsqlKeywords.add("xp_grantlogin",Token.KEYWORD3); - tsqlKeywords.add("xp_logevent",Token.KEYWORD3); - tsqlKeywords.add("xp_loginconfig",Token.KEYWORD3); - tsqlKeywords.add("xp_logininfo",Token.KEYWORD3); - tsqlKeywords.add("xp_msver",Token.KEYWORD3); - tsqlKeywords.add("xp_readmail",Token.KEYWORD3); - tsqlKeywords.add("xp_revokelogin",Token.KEYWORD3); - tsqlKeywords.add("xp_sendmail",Token.KEYWORD3); - tsqlKeywords.add("xp_sprintf",Token.KEYWORD3); - tsqlKeywords.add("xp_sqlinventory",Token.KEYWORD3); - tsqlKeywords.add("xp_sqlmaint",Token.KEYWORD3); - tsqlKeywords.add("xp_sqltrace",Token.KEYWORD3); - tsqlKeywords.add("xp_sscanf",Token.KEYWORD3); - tsqlKeywords.add("xp_startmail",Token.KEYWORD3); - tsqlKeywords.add("xp_stopmail",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_addnewqueue",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_deletequeuedefinition",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_destroyqueue",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_enumqueuedefname",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_enumqueuehandles",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_eventclassrequired",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_flushqueryhistory",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_generate_event",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getappfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getconnectionidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getcpufilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getdbidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getdurationfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_geteventfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_geteventnames",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getevents",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_gethostfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_gethpidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getindidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getntdmfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getntnmfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getobjidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getqueueautostart",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getqueuedestination",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getqueueproperties",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getreadfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getserverfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getseverityfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getspidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getsysobjectsfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_gettextfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getuserfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_getwritefilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_loadqueuedefinition",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_pausequeue",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_restartqueue",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_savequeuedefinition",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setappfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setconnectionidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setcpufilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setdbidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setdurationfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_seteventclassrequired",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_seteventfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_sethostfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_sethpidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setindidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setntdmfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setntnmfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setobjidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setqueryhistory",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setqueueautostart",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setqueuecreateinfo",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setqueuedestination",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setreadfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setserverfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setseverityfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setspidfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setsysobjectsfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_settextfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setuserfilter",Token.KEYWORD3); - tsqlKeywords.add("xp_trace_setwritefilter",Token.KEYWORD3); - } - - private static void addSystemTables() - { - tsqlKeywords.add("backupfile",Token.KEYWORD3); - tsqlKeywords.add("backupmediafamily",Token.KEYWORD3); - tsqlKeywords.add("backupmediaset",Token.KEYWORD3); - tsqlKeywords.add("backupset",Token.KEYWORD3); - tsqlKeywords.add("MSagent_parameters",Token.KEYWORD3); - tsqlKeywords.add("MSagent_profiles",Token.KEYWORD3); - tsqlKeywords.add("MSarticles",Token.KEYWORD3); - tsqlKeywords.add("MSdistpublishers",Token.KEYWORD3); - tsqlKeywords.add("MSdistribution_agents",Token.KEYWORD3); - tsqlKeywords.add("MSdistribution_history",Token.KEYWORD3); - tsqlKeywords.add("MSdistributiondbs",Token.KEYWORD3); - tsqlKeywords.add("MSdistributor",Token.KEYWORD3); - tsqlKeywords.add("MSlogreader_agents",Token.KEYWORD3); - tsqlKeywords.add("MSlogreader_history",Token.KEYWORD3); - tsqlKeywords.add("MSmerge_agents",Token.KEYWORD3); - tsqlKeywords.add("MSmerge_contents",Token.KEYWORD3); - tsqlKeywords.add("MSmerge_delete_conflicts",Token.KEYWORD3); - tsqlKeywords.add("MSmerge_genhistory",Token.KEYWORD3); - tsqlKeywords.add("MSmerge_history",Token.KEYWORD3); - tsqlKeywords.add("MSmerge_replinfo",Token.KEYWORD3); - tsqlKeywords.add("MSmerge_subscriptions",Token.KEYWORD3); - tsqlKeywords.add("MSmerge_tombstone",Token.KEYWORD3); - tsqlKeywords.add("MSpublication_access",Token.KEYWORD3); - tsqlKeywords.add("Mspublications",Token.KEYWORD3); - tsqlKeywords.add("Mspublisher_databases",Token.KEYWORD3); - tsqlKeywords.add("MSrepl_commands",Token.KEYWORD3); - tsqlKeywords.add("MSrepl_errors",Token.KEYWORD3); - tsqlKeywords.add("Msrepl_originators",Token.KEYWORD3); - tsqlKeywords.add("MSrepl_transactions",Token.KEYWORD3); - tsqlKeywords.add("MSrepl_version",Token.KEYWORD3); - tsqlKeywords.add("MSreplication_objects",Token.KEYWORD3); - tsqlKeywords.add("MSreplication_subscriptions",Token.KEYWORD3); - tsqlKeywords.add("MSsnapshot_agents",Token.KEYWORD3); - tsqlKeywords.add("MSsnapshot_history",Token.KEYWORD3); - tsqlKeywords.add("MSsubscriber_info",Token.KEYWORD3); - tsqlKeywords.add("MSsubscriber_schedule",Token.KEYWORD3); - tsqlKeywords.add("MSsubscription_properties",Token.KEYWORD3); - tsqlKeywords.add("MSsubscriptions",Token.KEYWORD3); - tsqlKeywords.add("restorefile",Token.KEYWORD3); - tsqlKeywords.add("restorefilegroup",Token.KEYWORD3); - tsqlKeywords.add("restorehistory",Token.KEYWORD3); - tsqlKeywords.add("sysalerts",Token.KEYWORD3); - tsqlKeywords.add("sysallocations",Token.KEYWORD3); - tsqlKeywords.add("sysaltfiles",Token.KEYWORD3); - tsqlKeywords.add("sysarticles",Token.KEYWORD3); - tsqlKeywords.add("sysarticleupdates",Token.KEYWORD3); - tsqlKeywords.add("syscacheobjects",Token.KEYWORD3); - tsqlKeywords.add("syscategories",Token.KEYWORD3); - tsqlKeywords.add("syscharsets",Token.KEYWORD3); - tsqlKeywords.add("syscolumns",Token.KEYWORD3); - tsqlKeywords.add("syscomments",Token.KEYWORD3); - tsqlKeywords.add("sysconfigures",Token.KEYWORD3); - tsqlKeywords.add("sysconstraints",Token.KEYWORD3); - tsqlKeywords.add("syscurconfigs",Token.KEYWORD3); - tsqlKeywords.add("sysdatabases",Token.KEYWORD3); - tsqlKeywords.add("sysdatabases",Token.KEYWORD3); - tsqlKeywords.add("sysdepends",Token.KEYWORD3); - tsqlKeywords.add("sysdevices",Token.KEYWORD3); - tsqlKeywords.add("sysdownloadlist",Token.KEYWORD3); - tsqlKeywords.add("sysfilegroups",Token.KEYWORD3); - tsqlKeywords.add("sysfiles",Token.KEYWORD3); - tsqlKeywords.add("sysforeignkeys",Token.KEYWORD3); - tsqlKeywords.add("sysfulltextcatalogs",Token.KEYWORD3); - tsqlKeywords.add("sysindexes",Token.KEYWORD3); - tsqlKeywords.add("sysindexkeys",Token.KEYWORD3); - tsqlKeywords.add("sysjobhistory",Token.KEYWORD3); - tsqlKeywords.add("sysjobs",Token.KEYWORD3); - tsqlKeywords.add("sysjobschedules",Token.KEYWORD3); - tsqlKeywords.add("sysjobservers",Token.KEYWORD3); - tsqlKeywords.add("sysjobsteps",Token.KEYWORD3); - tsqlKeywords.add("syslanguages",Token.KEYWORD3); - tsqlKeywords.add("syslockinfo",Token.KEYWORD3); - tsqlKeywords.add("syslogins",Token.KEYWORD3); - tsqlKeywords.add("sysmembers",Token.KEYWORD3); - tsqlKeywords.add("sysmergearticles",Token.KEYWORD3); - tsqlKeywords.add("sysmergepublications",Token.KEYWORD3); - tsqlKeywords.add("sysmergeschemachange",Token.KEYWORD3); - tsqlKeywords.add("sysmergesubscriptions",Token.KEYWORD3); - tsqlKeywords.add("sysmergesubsetfilters",Token.KEYWORD3); - tsqlKeywords.add("sysmessages",Token.KEYWORD3); - tsqlKeywords.add("sysnotifications",Token.KEYWORD3); - tsqlKeywords.add("sysobjects",Token.KEYWORD3); - tsqlKeywords.add("sysobjects",Token.KEYWORD3); - tsqlKeywords.add("sysoledbusers",Token.KEYWORD3); - tsqlKeywords.add("sysoperators",Token.KEYWORD3); - tsqlKeywords.add("sysperfinfo",Token.KEYWORD3); - tsqlKeywords.add("syspermissions",Token.KEYWORD3); - tsqlKeywords.add("sysprocesses",Token.KEYWORD3); - tsqlKeywords.add("sysprotects",Token.KEYWORD3); - tsqlKeywords.add("syspublications",Token.KEYWORD3); - tsqlKeywords.add("sysreferences",Token.KEYWORD3); - tsqlKeywords.add("sysremotelogins",Token.KEYWORD3); - tsqlKeywords.add("sysreplicationalerts",Token.KEYWORD3); - tsqlKeywords.add("sysservers",Token.KEYWORD3); - tsqlKeywords.add("sysservers",Token.KEYWORD3); - tsqlKeywords.add("syssubscriptions",Token.KEYWORD3); - tsqlKeywords.add("systargetservergroupmembers",Token.KEYWORD3); - tsqlKeywords.add("systargetservergroups",Token.KEYWORD3); - tsqlKeywords.add("systargetservers",Token.KEYWORD3); - tsqlKeywords.add("systaskids",Token.KEYWORD3); - tsqlKeywords.add("systypes",Token.KEYWORD3); - tsqlKeywords.add("sysusers",Token.KEYWORD3); - } - - private static KeywordMap tsqlKeywords; -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/TeXTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/TeXTokenMarker.java deleted file mode 100644 index bfb748cabf1..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/TeXTokenMarker.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * TeXTokenMarker.java - TeX/LaTeX/AMS-TeX token marker - * Copyright (C) 1998 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; - -/** - * TeX token marker. - * - * @author Slava Pestov - * @version $Id$ - */ -public class TeXTokenMarker extends TokenMarker -{ - // public members - public static final byte BDFORMULA = Token.INTERNAL_FIRST; - public static final byte EDFORMULA = (byte)(Token.INTERNAL_FIRST + 1); - - public byte markTokensImpl(byte token, Segment line, int lineIndex) - { - char[] array = line.array; - int offset = line.offset; - int lastOffset = offset; - int length = line.count + offset; - boolean backslash = false; -loop: for(int i = offset; i < length; i++) - { - int i1 = (i+1); - - char c = array[i]; - // if a backslash is followed immediately - // by a non-alpha character, the command at - // the non-alpha char. If we have a backslash, - // some text, and then a non-alpha char, - // the command ends before the non-alpha char. - if(Character.isLetter(c)) - { - backslash = false; - } - else - { - if(backslash) - { - // \<non alpha> - // we skip over this character, - // hence the `continue' - backslash = false; - if(token == Token.KEYWORD2 || token == EDFORMULA) - token = Token.KEYWORD2; - addToken(i1 - lastOffset,token); - lastOffset = i1; - if(token == Token.KEYWORD1) - token = Token.NULL; - continue; - } - else - { - //\blah<non alpha> - // we leave the character in - // the stream, and it's not - // part of the command token - if(token == BDFORMULA || token == EDFORMULA) - token = Token.KEYWORD2; - addToken(i - lastOffset,token); - if(token == Token.KEYWORD1) - token = Token.NULL; - lastOffset = i; - } - } - switch(c) - { - case '%': - if(backslash) - { - backslash = false; - break; - } - addToken(i - lastOffset,token); - addToken(length - i,Token.COMMENT1); - lastOffset = length; - break loop; - case '\\': - backslash = true; - if(token == Token.NULL) - { - token = Token.KEYWORD1; - addToken(i - lastOffset,Token.NULL); - lastOffset = i; - } - break; - case '$': - backslash = false; - if(token == Token.NULL) // singe $ - { - token = Token.KEYWORD2; - addToken(i - lastOffset,Token.NULL); - lastOffset = i; - } - else if(token == Token.KEYWORD1) // \...$ - { - token = Token.KEYWORD2; - addToken(i - lastOffset,Token.KEYWORD1); - lastOffset = i; - } - else if(token == Token.KEYWORD2) // $$aaa - { - if(i - lastOffset == 1 && array[i-1] == '$') - { - token = BDFORMULA; - break; - } - token = Token.NULL; - addToken(i1 - lastOffset,Token.KEYWORD2); - lastOffset = i1; - } - else if(token == BDFORMULA) // $$aaa$ - { - token = EDFORMULA; - } - else if(token == EDFORMULA) // $$aaa$$ - { - token = Token.NULL; - addToken(i1 - lastOffset,Token.KEYWORD2); - lastOffset = i1; - } - break; - } - } - if(lastOffset != length) - addToken(length - lastOffset,token == BDFORMULA - || token == EDFORMULA ? Token.KEYWORD2 : - token); - return (token != Token.KEYWORD1 ? token : Token.NULL); - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/Test.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/Test.java deleted file mode 100644 index 45ad77835b9..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/Test.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.astron.util.gui; - -import java.awt.*; -import java.awt.event.*; -//import com.sun.java.swing.*; -import javax.swing.*; - -public class Test extends JFrame -{ - String[] data = {"This text is partially obscured by the JScrollPaneEx", "one blablablabla dddddddddd", "two blabla ajshdflkajsdhf", "free", "four"}; - JListEx list = new JListEx(data); - //ImageIcon image = new ImageIcon("e:\\Projects\\SwingEx\\codeguruwm.gif"); - ImageIcon image = new ImageIcon("e:\\Projects\\SwingEx\\hiero.jpg"); - JButton BnTest = new JButton("Test"); - - public Test() - { - try - { - jbInit(); - } - catch(Exception e) - { - e.printStackTrace(); - } - } - - public static void main(String[] args) - { - Test test = new Test(); - test.pack(); - test.setVisible(true); - } - - private void jbInit() throws Exception - { - BnTest.setToolTipText("Test Button"); - list.setDataTips(true); - list.setBackgroundImage(image); - list.setScrollableBackground(false); - getContentPane().setLayout(new BorderLayout()); - getContentPane().add(list, BorderLayout.CENTER); - getContentPane().add(BnTest, BorderLayout.SOUTH); - this.setTitle("SwingEx Test"); - this.addWindowListener(new java.awt.event.WindowAdapter() - { - public void windowClosing(WindowEvent e) - { - this_windowClosing(e); - } - }); - } - - void this_windowClosing(WindowEvent e) - { - setVisible(false); - dispose(); - System.exit(0); - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/TestJTreeEx.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/TestJTreeEx.java deleted file mode 100644 index ff347133aac..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/TestJTreeEx.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.astron.util.gui; - -import java.awt.*; -import java.awt.event.*; -import javax.swing.JFrame; - -/** - * Title: LOFARSim - * Description: - * Copyright: Copyright (c) 2001 - * Company: ASTRON - * @author Robbert Dam - * @version 1.0 - */ - -/** Test for JTreeEx. Needs an image: image/tb1.jpg */ -public class TestJTreeEx extends JFrame { - public TestJTreeEx() { - getContentPane().setLayout(new BorderLayout()); - addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent we) { - System.exit(0); - } - }); - //get the image - Image i = Toolkit.getDefaultToolkit().createImage("images/tb1.jpg"); - //make the tree - JTreeEx bkgTree = new JTreeEx(); - bkgTree.setBackground(i); - getContentPane().add(bkgTree, BorderLayout.CENTER); - setSize(300,300); - setVisible(true); - } - - public static void main(String[] args) { - new TestJTreeEx(); - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/TextAreaDefaults.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/TextAreaDefaults.java deleted file mode 100644 index 0b574c58e20..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/TextAreaDefaults.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * TextAreaDefaults.java - Encapsulates default values for various settings - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ - -package org.astron.util.gui; - -import javax.swing.JPopupMenu; -import java.awt.Color; - -/** - * Encapsulates default settings for a text area. This can be passed - * to the constructor once the necessary fields have been filled out. - * The advantage of doing this over calling lots of set() methods after - * creating the text area is that this method is faster. - */ -public class TextAreaDefaults -{ - private static TextAreaDefaults DEFAULTS; - - public InputHandler inputHandler; - public SyntaxDocument document; - public boolean editable; - - public boolean caretVisible; - public boolean caretBlinks; - public boolean blockCaret; - public int electricScroll; - - public int cols; - public int rows; - public SyntaxStyle[] styles; - public Color caretColor; - public Color selectionColor; - public Color lineHighlightColor; - public boolean lineHighlight; - public Color bracketHighlightColor; - public boolean bracketHighlight; - public Color eolMarkerColor; - public boolean eolMarkers; - public boolean paintInvalid; - - public JPopupMenu popup; - - /** - * Returns a new TextAreaDefaults object with the default values filled - * in. - */ - public static TextAreaDefaults getDefaults() - { - if(DEFAULTS == null) - { - DEFAULTS = new TextAreaDefaults(); - - DEFAULTS.inputHandler = new DefaultInputHandler(); - DEFAULTS.inputHandler.addDefaultKeyBindings(); - DEFAULTS.document = new SyntaxDocument(); - DEFAULTS.editable = true; - - DEFAULTS.caretVisible = true; - DEFAULTS.caretBlinks = true; - DEFAULTS.electricScroll = 3; - - DEFAULTS.cols = 80; - DEFAULTS.rows = 25; - DEFAULTS.styles = SyntaxUtilities.getDefaultSyntaxStyles(); - DEFAULTS.caretColor = Color.red; - DEFAULTS.selectionColor = new Color(0xccccff); - DEFAULTS.lineHighlightColor = new Color(0xe0e0e0); - DEFAULTS.lineHighlight = true; - DEFAULTS.bracketHighlightColor = Color.black; - DEFAULTS.bracketHighlight = true; - DEFAULTS.eolMarkerColor = new Color(0x009999); - DEFAULTS.eolMarkers = true; - DEFAULTS.paintInvalid = true; - } - - return DEFAULTS; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/TextAreaPainter.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/TextAreaPainter.java deleted file mode 100644 index 3fa520e4502..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/TextAreaPainter.java +++ /dev/null @@ -1,692 +0,0 @@ -/* - * TextAreaPainter.java - Paints the text area - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.ToolTipManager; -import javax.swing.text.*; -import javax.swing.JComponent; -import java.awt.event.MouseEvent; -import java.awt.*; - -/** - * The text area repaint manager. It performs double buffering and paints - * lines of text. - * @author Slava Pestov - * @version $Id$ - */ -public class TextAreaPainter extends JComponent implements TabExpander -{ - /** - * Creates a new repaint manager. This should be not be called - * directly. - */ - public TextAreaPainter(JEditTextArea textArea, TextAreaDefaults defaults) - { - this.textArea = textArea; - - setAutoscrolls(true); - setDoubleBuffered(true); - setOpaque(true); - - ToolTipManager.sharedInstance().registerComponent(this); - - currentLine = new Segment(); - currentLineIndex = -1; - - setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR)); - - setFont(new Font("Monospaced",Font.PLAIN,14)); - setForeground(Color.black); - setBackground(Color.white); - - blockCaret = defaults.blockCaret; - styles = defaults.styles; - cols = defaults.cols; - rows = defaults.rows; - caretColor = defaults.caretColor; - selectionColor = defaults.selectionColor; - lineHighlightColor = defaults.lineHighlightColor; - lineHighlight = defaults.lineHighlight; - bracketHighlightColor = defaults.bracketHighlightColor; - bracketHighlight = defaults.bracketHighlight; - paintInvalid = defaults.paintInvalid; - eolMarkerColor = defaults.eolMarkerColor; - eolMarkers = defaults.eolMarkers; - } - - /** - * Returns if this component can be traversed by pressing the - * Tab key. This returns false. - */ - public final boolean isManagingFocus() - { - return false; - } - - /** - * Returns the syntax styles used to paint colorized text. Entry <i>n</i> - * will be used to paint tokens with id = <i>n</i>. - * @see org.gjt.sp.jedit.syntax.Token - */ - public final SyntaxStyle[] getStyles() - { - return styles; - } - - /** - * Sets the syntax styles used to paint colorized text. Entry <i>n</i> - * will be used to paint tokens with id = <i>n</i>. - * @param styles The syntax styles - * @see org.gjt.sp.jedit.syntax.Token - */ - public final void setStyles(SyntaxStyle[] styles) - { - this.styles = styles; - repaint(); - } - - /** - * Returns the caret color. - */ - public final Color getCaretColor() - { - return caretColor; - } - - /** - * Sets the caret color. - * @param caretColor The caret color - */ - public final void setCaretColor(Color caretColor) - { - this.caretColor = caretColor; - invalidateSelectedLines(); - } - - /** - * Returns the selection color. - */ - public final Color getSelectionColor() - { - return selectionColor; - } - - /** - * Sets the selection color. - * @param selectionColor The selection color - */ - public final void setSelectionColor(Color selectionColor) - { - this.selectionColor = selectionColor; - invalidateSelectedLines(); - } - - /** - * Returns the line highlight color. - */ - public final Color getLineHighlightColor() - { - return lineHighlightColor; - } - - /** - * Sets the line highlight color. - * @param lineHighlightColor The line highlight color - */ - public final void setLineHighlightColor(Color lineHighlightColor) - { - this.lineHighlightColor = lineHighlightColor; - invalidateSelectedLines(); - } - - /** - * Returns true if line highlight is enabled, false otherwise. - */ - public final boolean isLineHighlightEnabled() - { - return lineHighlight; - } - - /** - * Enables or disables current line highlighting. - * @param lineHighlight True if current line highlight should be enabled, - * false otherwise - */ - public final void setLineHighlightEnabled(boolean lineHighlight) - { - this.lineHighlight = lineHighlight; - invalidateSelectedLines(); - } - - /** - * Returns the bracket highlight color. - */ - public final Color getBracketHighlightColor() - { - return bracketHighlightColor; - } - - /** - * Sets the bracket highlight color. - * @param bracketHighlightColor The bracket highlight color - */ - public final void setBracketHighlightColor(Color bracketHighlightColor) - { - this.bracketHighlightColor = bracketHighlightColor; - invalidateLine(textArea.getBracketLine()); - } - - /** - * Returns true if bracket highlighting is enabled, false otherwise. - * When bracket highlighting is enabled, the bracket matching the - * one before the caret (if any) is highlighted. - */ - public final boolean isBracketHighlightEnabled() - { - return bracketHighlight; - } - - /** - * Enables or disables bracket highlighting. - * When bracket highlighting is enabled, the bracket matching the - * one before the caret (if any) is highlighted. - * @param bracketHighlight True if bracket highlighting should be - * enabled, false otherwise - */ - public final void setBracketHighlightEnabled(boolean bracketHighlight) - { - this.bracketHighlight = bracketHighlight; - invalidateLine(textArea.getBracketLine()); - } - - /** - * Returns true if the caret should be drawn as a block, false otherwise. - */ - public final boolean isBlockCaretEnabled() - { - return blockCaret; - } - - /** - * Sets if the caret should be drawn as a block, false otherwise. - * @param blockCaret True if the caret should be drawn as a block, - * false otherwise. - */ - public final void setBlockCaretEnabled(boolean blockCaret) - { - this.blockCaret = blockCaret; - invalidateSelectedLines(); - } - - /** - * Returns the EOL marker color. - */ - public final Color getEOLMarkerColor() - { - return eolMarkerColor; - } - - /** - * Sets the EOL marker color. - * @param eolMarkerColor The EOL marker color - */ - public final void setEOLMarkerColor(Color eolMarkerColor) - { - this.eolMarkerColor = eolMarkerColor; - repaint(); - } - - /** - * Returns true if EOL markers are drawn, false otherwise. - */ - public final boolean getEOLMarkersPainted() - { - return eolMarkers; - } - - /** - * Sets if EOL markers are to be drawn. - * @param eolMarkers True if EOL markers should be drawn, false otherwise - */ - public final void setEOLMarkersPainted(boolean eolMarkers) - { - this.eolMarkers = eolMarkers; - repaint(); - } - - /** - * Returns true if invalid lines are painted as red tildes (~), - * false otherwise. - */ - public boolean getInvalidLinesPainted() - { - return paintInvalid; - } - - /** - * Sets if invalid lines are to be painted as red tildes. - * @param paintInvalid True if invalid lines should be drawn, false otherwise - */ - public void setInvalidLinesPainted(boolean paintInvalid) - { - this.paintInvalid = paintInvalid; - } - - /** - * Adds a custom highlight painter. - * @param highlight The highlight - */ - public void addCustomHighlight(Highlight highlight) - { - highlight.init(textArea,highlights); - highlights = highlight; - } - - /** - * Highlight interface. - */ - public interface Highlight - { - /** - * Called after the highlight painter has been added. - * @param textArea The text area - * @param next The painter this one should delegate to - */ - void init(JEditTextArea textArea, Highlight next); - - /** - * This should paint the highlight and delgate to the - * next highlight painter. - * @param gfx The graphics context - * @param line The line number - * @param y The y co-ordinate of the line - */ - void paintHighlight(Graphics gfx, int line, int y); - - /** - * Returns the tool tip to display at the specified - * location. If this highlighter doesn't know what to - * display, it should delegate to the next highlight - * painter. - * @param evt The mouse event - */ - String getToolTipText(MouseEvent evt); - } - - /** - * Returns the tool tip to display at the specified location. - * @param evt The mouse event - */ - public String getToolTipText(MouseEvent evt) - { - if(highlights != null) - return highlights.getToolTipText(evt); - else - return null; - } - - /** - * Returns the font metrics used by this component. - */ - public FontMetrics getFontMetrics() - { - return fm; - } - - /** - * Sets the font for this component. This is overridden to update the - * cached font metrics and to recalculate which lines are visible. - * @param font The font - */ - public void setFont(Font font) - { - super.setFont(font); - fm = Toolkit.getDefaultToolkit().getFontMetrics(font); - textArea.recalculateVisibleLines(); - } - - /** - * Repaints the text. - * @param g The graphics context - */ - public void paint(Graphics gfx) - { - tabSize = fm.charWidth(' ') * ((Integer)textArea - .getDocument().getProperty( - PlainDocument.tabSizeAttribute)).intValue(); - - Rectangle clipRect = gfx.getClipBounds(); - - gfx.setColor(getBackground()); - gfx.fillRect(clipRect.x,clipRect.y,clipRect.width,clipRect.height); - - // We don't use yToLine() here because that method doesn't - // return lines past the end of the document - int height = fm.getHeight(); - int firstLine = textArea.getFirstLine(); - int firstInvalid = firstLine + clipRect.y / height; - // Because the clipRect's height is usually an even multiple - // of the font height, we subtract 1 from it, otherwise one - // too many lines will always be painted. - int lastInvalid = firstLine + (clipRect.y + clipRect.height - 1) / height; - - try - { - TokenMarker tokenMarker = textArea.getDocument() - .getTokenMarker(); - int x = textArea.getHorizontalOffset(); - - for(int line = firstInvalid; line <= lastInvalid; line++) - { - paintLine(gfx,tokenMarker,line,x); - } - - if(tokenMarker != null && tokenMarker.isNextLineRequested()) - { - int h = clipRect.y + clipRect.height; - repaint(0,h,getWidth(),getHeight() - h); - } - } - catch(Exception e) - { - System.err.println("Error repainting line" - + " range {" + firstInvalid + "," - + lastInvalid + "}:"); - e.printStackTrace(); - } - } - - /** - * Marks a line as needing a repaint. - * @param line The line to invalidate - */ - public final void invalidateLine(int line) - { - repaint(0,textArea.lineToY(line) + fm.getMaxDescent() + fm.getLeading(), - getWidth(),fm.getHeight()); - } - - /** - * Marks a range of lines as needing a repaint. - * @param firstLine The first line to invalidate - * @param lastLine The last line to invalidate - */ - public final void invalidateLineRange(int firstLine, int lastLine) - { - repaint(0,textArea.lineToY(firstLine) + fm.getMaxDescent() + fm.getLeading(), - getWidth(),(lastLine - firstLine + 1) * fm.getHeight()); - } - - /** - * Repaints the lines containing the selection. - */ - public final void invalidateSelectedLines() - { - invalidateLineRange(textArea.getSelectionStartLine(), - textArea.getSelectionEndLine()); - } - - /** - * Implementation of TabExpander interface. Returns next tab stop after - * a specified point. - * @param x The x co-ordinate - * @param tabOffset Ignored - * @return The next tab stop after <i>x</i> - */ - public float nextTabStop(float x, int tabOffset) - { - int offset = textArea.getHorizontalOffset(); - int ntabs = ((int)x - offset) / tabSize; - return (ntabs + 1) * tabSize + offset; - } - - /** - * Returns the painter's preferred size. - */ - public Dimension getPreferredSize() - { - Dimension dim = new Dimension(); - dim.width = fm.charWidth('w') * cols; - dim.height = fm.getHeight() * rows; - return dim; - } - - - /** - * Returns the painter's minimum size. - */ - public Dimension getMinimumSize() - { - return getPreferredSize(); - } - - // package-private members - int currentLineIndex; - Token currentLineTokens; - Segment currentLine; - - // protected members - protected JEditTextArea textArea; - - protected SyntaxStyle[] styles; - protected Color caretColor; - protected Color selectionColor; - protected Color lineHighlightColor; - protected Color bracketHighlightColor; - protected Color eolMarkerColor; - - protected boolean blockCaret; - protected boolean lineHighlight; - protected boolean bracketHighlight; - protected boolean paintInvalid; - protected boolean eolMarkers; - protected int cols; - protected int rows; - - protected int tabSize; - protected FontMetrics fm; - - protected Highlight highlights; - - protected void paintLine(Graphics gfx, TokenMarker tokenMarker, - int line, int x) - { - Font defaultFont = getFont(); - Color defaultColor = getForeground(); - - currentLineIndex = line; - int y = textArea.lineToY(line); - - if(line < 0 || line >= textArea.getLineCount()) - { - if(paintInvalid) - { - paintHighlight(gfx,line,y); - styles[Token.INVALID].setGraphicsFlags(gfx,defaultFont); - gfx.drawString("~",0,y + fm.getHeight()); - } - } - else if(tokenMarker == null) - { - paintPlainLine(gfx,line,defaultFont,defaultColor,x,y); - } - else - { - paintSyntaxLine(gfx,tokenMarker,line,defaultFont, - defaultColor,x,y); - } - } - - protected void paintPlainLine(Graphics gfx, int line, Font defaultFont, - Color defaultColor, int x, int y) - { - paintHighlight(gfx,line,y); - textArea.getLineText(line,currentLine); - - gfx.setFont(defaultFont); - gfx.setColor(defaultColor); - - y += fm.getHeight(); - x = Utilities.drawTabbedText(currentLine,x,y,gfx,this,0); - - if(eolMarkers) - { - gfx.setColor(eolMarkerColor); - gfx.drawString(".",x,y); - } - } - - protected void paintSyntaxLine(Graphics gfx, TokenMarker tokenMarker, - int line, Font defaultFont, Color defaultColor, int x, int y) - { - textArea.getLineText(currentLineIndex,currentLine); - currentLineTokens = tokenMarker.markTokens(currentLine, - currentLineIndex); - - paintHighlight(gfx,line,y); - - gfx.setFont(defaultFont); - gfx.setColor(defaultColor); - y += fm.getHeight(); - x = SyntaxUtilities.paintSyntaxLine(currentLine, - currentLineTokens,styles,this,gfx,x,y); - - if(eolMarkers) - { - gfx.setColor(eolMarkerColor); - gfx.drawString(".",x,y); - } - } - - protected void paintHighlight(Graphics gfx, int line, int y) - { - if(line >= textArea.getSelectionStartLine() - && line <= textArea.getSelectionEndLine()) - paintLineHighlight(gfx,line,y); - - if(highlights != null) - highlights.paintHighlight(gfx,line,y); - - if(bracketHighlight && line == textArea.getBracketLine()) - paintBracketHighlight(gfx,line,y); - - if(line == textArea.getCaretLine()) - paintCaret(gfx,line,y); - } - - protected void paintLineHighlight(Graphics gfx, int line, int y) - { - int height = fm.getHeight(); - y += fm.getLeading() + fm.getMaxDescent(); - - int selectionStart = textArea.getSelectionStart(); - int selectionEnd = textArea.getSelectionEnd(); - - if(selectionStart == selectionEnd) - { - if(lineHighlight) - { - gfx.setColor(lineHighlightColor); - gfx.fillRect(0,y,getWidth(),height); - } - } - else - { - gfx.setColor(selectionColor); - - int selectionStartLine = textArea.getSelectionStartLine(); - int selectionEndLine = textArea.getSelectionEndLine(); - int lineStart = textArea.getLineStartOffset(line); - - int x1, x2; - if(textArea.isSelectionRectangular()) - { - int lineLen = textArea.getLineLength(line); - x1 = textArea._offsetToX(line,Math.min(lineLen, - selectionStart - textArea.getLineStartOffset( - selectionStartLine))); - x2 = textArea._offsetToX(line,Math.min(lineLen, - selectionEnd - textArea.getLineStartOffset( - selectionEndLine))); - if(x1 == x2) - x2++; - } - else if(selectionStartLine == selectionEndLine) - { - x1 = textArea._offsetToX(line, - selectionStart - lineStart); - x2 = textArea._offsetToX(line, - selectionEnd - lineStart); - } - else if(line == selectionStartLine) - { - x1 = textArea._offsetToX(line, - selectionStart - lineStart); - x2 = getWidth(); - } - else if(line == selectionEndLine) - { - x1 = 0; - x2 = textArea._offsetToX(line, - selectionEnd - lineStart); - } - else - { - x1 = 0; - x2 = getWidth(); - } - - // "inlined" min/max() - gfx.fillRect(x1 > x2 ? x2 : x1,y,x1 > x2 ? - (x1 - x2) : (x2 - x1),height); - } - - } - - protected void paintBracketHighlight(Graphics gfx, int line, int y) - { - int position = textArea.getBracketPosition(); - if(position == -1) - return; - y += fm.getLeading() + fm.getMaxDescent(); - int x = textArea._offsetToX(line,position); - gfx.setColor(bracketHighlightColor); - // Hack!!! Since there is no fast way to get the character - // from the bracket matching routine, we use ( since all - // brackets probably have the same width anyway - gfx.drawRect(x,y,fm.charWidth('(') - 1, - fm.getHeight() - 1); - } - - protected void paintCaret(Graphics gfx, int line, int y) - { - if(textArea.isCaretVisible()) - { - int offset = textArea.getCaretPosition() - - textArea.getLineStartOffset(line); - int caretX = textArea._offsetToX(line,offset); - int caretWidth = ((blockCaret || - textArea.isOverwriteEnabled()) ? - fm.charWidth('w') : 1); - y += fm.getLeading() + fm.getMaxDescent(); - int height = fm.getHeight(); - - gfx.setColor(caretColor); - - if(textArea.isOverwriteEnabled()) - { - gfx.fillRect(caretX,y + height - 1, - caretWidth,1); - } - else - { - gfx.drawRect(caretX,y,caretWidth - 1,height - 1); - } - } - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/TextUtilities.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/TextUtilities.java deleted file mode 100644 index 177992d081f..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/TextUtilities.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * TextUtilities.java - Utility functions used by the text area classes - * Copyright (C) 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.*; - -/** - * Class with several utility functions used by the text area component. - * @author Slava Pestov - * @version $Id$ - */ -public class TextUtilities -{ - /** - * Returns the offset of the bracket matching the one at the - * specified offset of the document, or -1 if the bracket is - * unmatched (or if the character is not a bracket). - * @param doc The document - * @param offset The offset - * @exception BadLocationException If an out-of-bounds access - * was attempted on the document text - */ - public static int findMatchingBracket(Document doc, int offset) - throws BadLocationException - { - if(doc.getLength() == 0) - return -1; - char c = doc.getText(offset,1).charAt(0); - char cprime; // c` - corresponding character - boolean direction; // true = back, false = forward - - switch(c) - { - case '(': cprime = ')'; direction = false; break; - case ')': cprime = '('; direction = true; break; - case '[': cprime = ']'; direction = false; break; - case ']': cprime = '['; direction = true; break; - case '{': cprime = '}'; direction = false; break; - case '}': cprime = '{'; direction = true; break; - default: return -1; - } - - int count; - - // How to merge these two cases is left as an exercise - // for the reader. - - // Go back or forward - if(direction) - { - // Count is 1 initially because we have already - // `found' one closing bracket - count = 1; - - // Get text[0,offset-1]; - String text = doc.getText(0,offset); - - // Scan backwards - for(int i = offset - 1; i >= 0; i--) - { - // If text[i] == c, we have found another - // closing bracket, therefore we will need - // two opening brackets to complete the - // match. - char x = text.charAt(i); - if(x == c) - count++; - - // If text[i] == cprime, we have found a - // opening bracket, so we return i if - // --count == 0 - else if(x == cprime) - { - if(--count == 0) - return i; - } - } - } - else - { - // Count is 1 initially because we have already - // `found' one opening bracket - count = 1; - - // So we don't have to + 1 in every loop - offset++; - - // Number of characters to check - int len = doc.getLength() - offset; - - // Get text[offset+1,len]; - String text = doc.getText(offset,len); - - // Scan forwards - for(int i = 0; i < len; i++) - { - // If text[i] == c, we have found another - // opening bracket, therefore we will need - // two closing brackets to complete the - // match. - char x = text.charAt(i); - - if(x == c) - count++; - - // If text[i] == cprime, we have found an - // closing bracket, so we return i if - // --count == 0 - else if(x == cprime) - { - if(--count == 0) - return i + offset; - } - } - } - - // Nothing found - return -1; - } - - /** - * Locates the start of the word at the specified position. - * @param line The text - * @param pos The position - */ - public static int findWordStart(String line, int pos, String noWordSep) - { - char ch = line.charAt(pos - 1); - - if(noWordSep == null) - noWordSep = ""; - boolean selectNoLetter = (!Character.isLetterOrDigit(ch) - && noWordSep.indexOf(ch) == -1); - - int wordStart = 0; - for(int i = pos - 1; i >= 0; i--) - { - ch = line.charAt(i); - if(selectNoLetter ^ (!Character.isLetterOrDigit(ch) && - noWordSep.indexOf(ch) == -1)) - { - wordStart = i + 1; - break; - } - } - - return wordStart; - } - - /** - * Locates the end of the word at the specified position. - * @param line The text - * @param pos The position - */ - public static int findWordEnd(String line, int pos, String noWordSep) - { - char ch = line.charAt(pos); - - if(noWordSep == null) - noWordSep = ""; - boolean selectNoLetter = (!Character.isLetterOrDigit(ch) - && noWordSep.indexOf(ch) == -1); - - int wordEnd = line.length(); - for(int i = pos; i < line.length(); i++) - { - ch = line.charAt(i); - if(selectNoLetter ^ (!Character.isLetterOrDigit(ch) && - noWordSep.indexOf(ch) == -1)) - { - wordEnd = i; - break; - } - } - return wordEnd; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/Token.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/Token.java deleted file mode 100644 index ecaf959828f..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/Token.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Token.java - Generic token - * Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -/** - * A linked list of tokens. Each token has three fields - a token - * identifier, which is a byte value that can be looked up in the - * array returned by <code>SyntaxDocument.getColors()</code> - * to get a color value, a length value which is the length of the - * token in the text, and a pointer to the next token in the list. - * - * @author Slava Pestov - * @version $Id$ - */ -public class Token -{ - /** - * Normal text token id. This should be used to mark - * normal text. - */ - public static final byte NULL = 0; - - /** - * Comment 1 token id. This can be used to mark a comment. - */ - public static final byte COMMENT1 = 1; - - /** - * Comment 2 token id. This can be used to mark a comment. - */ - public static final byte COMMENT2 = 2; - - - /** - * Literal 1 token id. This can be used to mark a string - * literal (eg, C mode uses this to mark "..." literals) - */ - public static final byte LITERAL1 = 3; - - /** - * Literal 2 token id. This can be used to mark an object - * literal (eg, Java mode uses this to mark true, false, etc) - */ - public static final byte LITERAL2 = 4; - - /** - * Label token id. This can be used to mark labels - * (eg, C mode uses this to mark ...: sequences) - */ - public static final byte LABEL = 5; - - /** - * Keyword 1 token id. This can be used to mark a - * keyword. This should be used for general language - * constructs. - */ - public static final byte KEYWORD1 = 6; - - /** - * Keyword 2 token id. This can be used to mark a - * keyword. This should be used for preprocessor - * commands, or variables. - */ - public static final byte KEYWORD2 = 7; - - /** - * Keyword 3 token id. This can be used to mark a - * keyword. This should be used for data types. - */ - public static final byte KEYWORD3 = 8; - - /** - * Operator token id. This can be used to mark an - * operator. (eg, SQL mode marks +, -, etc with this - * token type) - */ - public static final byte OPERATOR = 9; - - /** - * Invalid token id. This can be used to mark invalid - * or incomplete tokens, so the user can easily spot - * syntax errors. - */ - public static final byte INVALID = 10; - - /** - * The total number of defined token ids. - */ - public static final byte ID_COUNT = 11; - - /** - * The first id that can be used for internal state - * in a token marker. - */ - public static final byte INTERNAL_FIRST = 100; - - /** - * The last id that can be used for internal state - * in a token marker. - */ - public static final byte INTERNAL_LAST = 126; - - /** - * The token type, that along with a length of 0 - * marks the end of the token list. - */ - public static final byte END = 127; - - /** - * The length of this token. - */ - public int length; - - /** - * The id of this token. - */ - public byte id; - - /** - * The next token in the linked list. - */ - public Token next; - - /** - * Creates a new token. - * @param length The length of the token - * @param id The id of the token - */ - public Token(int length, byte id) - { - this.length = length; - this.id = id; - } - - /** - * Returns a string representation of this token. - */ - public String toString() - { - return "[id=" + id + ",length=" + length + "]"; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/TokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/TokenMarker.java deleted file mode 100644 index d84c0a96396..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/TokenMarker.java +++ /dev/null @@ -1,343 +0,0 @@ -/* - * TokenMarker.java - Generic token marker - * Copyright (C) 1998, 1999 Slava Pestov - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ -package org.astron.util.gui; -import javax.swing.text.Segment; -import java.util.*; - -/** - * A token marker that splits lines of text into tokens. Each token carries - * a length field and an indentification tag that can be mapped to a color - * for painting that token.<p> - * - * For performance reasons, the linked list of tokens is reused after each - * line is tokenized. Therefore, the return value of <code>markTokens</code> - * should only be used for immediate painting. Notably, it cannot be - * cached. - * - * @author Slava Pestov - * @version $Id$ - * - * @see org.gjt.sp.jedit.syntax.Token - */ -public abstract class TokenMarker -{ - /** - * A wrapper for the lower-level <code>markTokensImpl</code> method - * that is called to split a line up into tokens. - * @param line The line - * @param lineIndex The line number - */ - public Token markTokens(Segment line, int lineIndex) - { - if(lineIndex >= length) - { - throw new IllegalArgumentException("Tokenizing invalid line: " - + lineIndex); - } - - lastToken = null; - - LineInfo info = lineInfo[lineIndex]; - LineInfo prev; - if(lineIndex == 0) - prev = null; - else - prev = lineInfo[lineIndex - 1]; - - byte oldToken = info.token; - byte token = markTokensImpl(prev == null ? - Token.NULL : prev.token,line,lineIndex); - - info.token = token; - - /* - * This is a foul hack. It stops nextLineRequested - * from being cleared if the same line is marked twice. - * - * Why is this necessary? It's all JEditTextArea's fault. - * When something is inserted into the text, firing a - * document event, the insertUpdate() method shifts the - * caret (if necessary) by the amount inserted. - * - * All caret movement is handled by the select() method, - * which eventually pipes the new position to scrollTo() - * and calls repaint(). - * - * Note that at this point in time, the new line hasn't - * yet been painted; the caret is moved first. - * - * scrollTo() calls offsetToX(), which tokenizes the line - * unless it is being called on the last line painted - * (in which case it uses the text area's painter cached - * token list). What scrollTo() does next is irrelevant. - * - * After scrollTo() has done it's job, repaint() is - * called, and eventually we end up in paintLine(), whose - * job is to paint the changed line. It, too, calls - * markTokens(). - * - * The problem was that if the line started a multiline - * token, the first markTokens() (done in offsetToX()) - * would set nextLineRequested (because the line end - * token had changed) but the second would clear it - * (because the line was the same that time) and therefore - * paintLine() would never know that it needed to repaint - * subsequent lines. - * - * This bug took me ages to track down, that's why I wrote - * all the relevant info down so that others wouldn't - * duplicate it. - */ - if(!(lastLine == lineIndex && nextLineRequested)) - nextLineRequested = (oldToken != token); - - lastLine = lineIndex; - - addToken(0,Token.END); - - return firstToken; - } - - /** - * An abstract method that splits a line up into tokens. It - * should parse the line, and call <code>addToken()</code> to - * add syntax tokens to the token list. Then, it should return - * the initial token type for the next line.<p> - * - * For example if the current line contains the start of a - * multiline comment that doesn't end on that line, this method - * should return the comment token type so that it continues on - * the next line. - * - * @param token The initial token type for this line - * @param line The line to be tokenized - * @param lineIndex The index of the line in the document, - * starting at 0 - * @return The initial token type for the next line - */ - protected abstract byte markTokensImpl(byte token, Segment line, - int lineIndex); - - /** - * Returns if the token marker supports tokens that span multiple - * lines. If this is true, the object using this token marker is - * required to pass all lines in the document to the - * <code>markTokens()</code> method (in turn).<p> - * - * The default implementation returns true; it should be overridden - * to return false on simpler token markers for increased speed. - */ - public boolean supportsMultilineTokens() - { - return true; - } - - /** - * Informs the token marker that lines have been inserted into - * the document. This inserts a gap in the <code>lineInfo</code> - * array. - * @param index The first line number - * @param lines The number of lines - */ - public void insertLines(int index, int lines) - { - if(lines <= 0) - return; - length += lines; - ensureCapacity(length); - int len = index + lines; - System.arraycopy(lineInfo,index,lineInfo,len, - lineInfo.length - len); - - for(int i = index + lines - 1; i >= index; i--) - { - lineInfo[i] = new LineInfo(); - } - } - - /** - * Informs the token marker that line have been deleted from - * the document. This removes the lines in question from the - * <code>lineInfo</code> array. - * @param index The first line number - * @param lines The number of lines - */ - public void deleteLines(int index, int lines) - { - if (lines <= 0) - return; - int len = index + lines; - length -= lines; - System.arraycopy(lineInfo,len,lineInfo, - index,lineInfo.length - len); - } - - /** - * Returns the number of lines in this token marker. - */ - public int getLineCount() - { - return length; - } - - /** - * Returns true if the next line should be repainted. This - * will return true after a line has been tokenized that starts - * a multiline token that continues onto the next line. - */ - public boolean isNextLineRequested() - { - return nextLineRequested; - } - - // protected members - - /** - * The first token in the list. This should be used as the return - * value from <code>markTokens()</code>. - */ - protected Token firstToken; - - /** - * The last token in the list. New tokens are added here. - * This should be set to null before a new line is to be tokenized. - */ - protected Token lastToken; - - /** - * An array for storing information about lines. It is enlarged and - * shrunk automatically by the <code>insertLines()</code> and - * <code>deleteLines()</code> methods. - */ - protected LineInfo[] lineInfo; - - /** - * The number of lines in the model being tokenized. This can be - * less than the length of the <code>lineInfo</code> array. - */ - protected int length; - - /** - * The last tokenized line. - */ - protected int lastLine; - - /** - * True if the next line should be painted. - */ - protected boolean nextLineRequested; - - /** - * Creates a new <code>TokenMarker</code>. This DOES NOT create - * a lineInfo array; an initial call to <code>insertLines()</code> - * does that. - */ - protected TokenMarker() - { - lastLine = -1; - } - - /** - * Ensures that the <code>lineInfo</code> array can contain the - * specified index. This enlarges it if necessary. No action is - * taken if the array is large enough already.<p> - * - * It should be unnecessary to call this under normal - * circumstances; <code>insertLine()</code> should take care of - * enlarging the line info array automatically. - * - * @param index The array index - */ - protected void ensureCapacity(int index) - { - if(lineInfo == null) - lineInfo = new LineInfo[index + 1]; - else if(lineInfo.length <= index) - { - LineInfo[] lineInfoN = new LineInfo[(index + 1) * 2]; - System.arraycopy(lineInfo,0,lineInfoN,0, - lineInfo.length); - lineInfo = lineInfoN; - } - } - - /** - * Adds a token to the token list. - * @param length The length of the token - * @param id The id of the token - */ - protected void addToken(int length, byte id) - { - if(id >= Token.INTERNAL_FIRST && id <= Token.INTERNAL_LAST) - throw new InternalError("Invalid id: " + id); - - if(length == 0 && id != Token.END) - return; - - if(firstToken == null) - { - firstToken = new Token(length,id); - lastToken = firstToken; - } - else if(lastToken == null) - { - lastToken = firstToken; - firstToken.length = length; - firstToken.id = id; - } - else if(lastToken.next == null) - { - lastToken.next = new Token(length,id); - lastToken = lastToken.next; - } - else - { - lastToken = lastToken.next; - lastToken.length = length; - lastToken.id = id; - } - } - - /** - * Inner class for storing information about tokenized lines. - */ - public class LineInfo - { - /** - * Creates a new LineInfo object with token = Token.NULL - * and obj = null. - */ - public LineInfo() - { - } - - /** - * Creates a new LineInfo object with the specified - * parameters. - */ - public LineInfo(byte token, Object obj) - { - this.token = token; - this.obj = obj; - } - - /** - * The id of the last token of the line. - */ - public byte token; - - /** - * This is for use by the token marker implementations - * themselves. It can be used to store anything that - * is an object and that needs to exist on a per-line - * basis. - */ - public Object obj; - } -} diff --git a/support/tools/BaseSimGUI/src/org/astron/util/gui/XMLTokenMarker.java b/support/tools/BaseSimGUI/src/org/astron/util/gui/XMLTokenMarker.java deleted file mode 100644 index c23c26bf5e6..00000000000 --- a/support/tools/BaseSimGUI/src/org/astron/util/gui/XMLTokenMarker.java +++ /dev/null @@ -1,191 +0,0 @@ -package org.astron.util.gui; - -/* - * XMLTokenMarker.java - XML token marker - * Copyright (C) 1998, 1999 Slava Pestov - * Copyright (C) 2001 Tom Bradford - * - * You may use and modify this package for any purpose. Redistribution is - * permitted, in both source and binary form, provided that this notice - * remains intact in all source distributions of this package. - */ - -import javax.swing.text.Segment; - -/** - * XML Token Marker Rewrite - * - * @author Tom Bradford - * @version $Id$ - */ -public class XMLTokenMarker extends TokenMarker { - public XMLTokenMarker() { - } - - public byte markTokensImpl(byte token, Segment line, int lineIndex) { - char[] array = line.array; - int offset = line.offset; - int lastOffset = offset; - int length = line.count + offset; - - // Ugly hack to handle multi-line tags - boolean sk1 = token == Token.KEYWORD1; - - for ( int i = offset; i < length; i++ ) { - int ip1 = i+1; - char c = array[i]; - switch ( token ) { - case Token.NULL: // text - switch ( c ) { - case '<': - addToken(i-lastOffset, token); - lastOffset = i; - if ( SyntaxUtilities.regionMatches(false, line, ip1, "!--") ) { - i += 3; - token = Token.COMMENT1; - } - else if ( array[ip1] == '!' ) { - i += 1; - token = Token.COMMENT2; - } - else if ( array[ip1] == '?' ) { - i += 1; - token = Token.KEYWORD3; - } - else - token = Token.KEYWORD1; - break; - - case '&': - addToken(i - lastOffset, token); - lastOffset = i; - token = Token.LABEL; - break; - } - break; - - case Token.KEYWORD1: // tag - switch ( c ) { - case '>': - addToken(ip1-lastOffset, token); - lastOffset = ip1; - token = Token.NULL; - sk1 = false; - break; - - case ' ': - case '\t': - addToken(i-lastOffset, token); - lastOffset = i; - token = Token.KEYWORD2; - sk1 = false; - break; - - default: - if ( sk1 ) { - token = Token.KEYWORD2; - sk1 = false; - } - break; - } - break; - - case Token.KEYWORD2: // attribute - switch ( c ) { - case '>': - addToken(ip1-lastOffset, token); - lastOffset = ip1; - token = Token.NULL; - break; - - case '/': - addToken(i-lastOffset, token); - lastOffset = i; - token = Token.KEYWORD1; - break; - - case '=': - addToken(i-lastOffset, token); - lastOffset = i; - token = Token.OPERATOR; - } - break; - - case Token.OPERATOR: // equal for attribute - switch ( c ) { - case '\"': - case '\'': - addToken(i-lastOffset, token); - lastOffset = i; - if ( c == '\"' ) - token = Token.LITERAL1; - else - token = Token.LITERAL2; - break; - } - break; - - case Token.LITERAL1: - case Token.LITERAL2: // strings - if ( ( token == Token.LITERAL1 && c == '\"' ) - || ( token == Token.LITERAL2 && c == '\'' ) ) { - addToken(ip1-lastOffset, token); - lastOffset = ip1; - token = Token.KEYWORD1; - } - break; - - case Token.LABEL: // entity - if ( c == ';' ) { - addToken(ip1-lastOffset, token); - lastOffset = ip1; - token = Token.NULL; - break; - } - break; - - case Token.COMMENT1: // Inside a comment - if ( SyntaxUtilities.regionMatches(false, line, i, "-->") ) { - addToken((i+3)-lastOffset, token); - lastOffset = i+3; - token = Token.NULL; - } - break; - - case Token.COMMENT2: // Inside a declaration - if ( SyntaxUtilities.regionMatches(false, line, i, ">") ) { - addToken(ip1-lastOffset, token); - lastOffset = ip1; - token = Token.NULL; - } - break; - - case Token.KEYWORD3: // Inside a processor instruction - if ( SyntaxUtilities.regionMatches(false, line, i, "?>") ) { - addToken((i+2)-lastOffset, token); - lastOffset = i+2; - token = Token.NULL; - } - break; - - default: - throw new InternalError("Invalid state: " + token); - } - } - - switch ( token ) { - case Token.LABEL: - addToken(length-lastOffset, Token.INVALID); - token = Token.NULL; - break; - - default: - addToken(length-lastOffset, token); - break; - } - - return token; - } -} - - diff --git a/support/tools/BaseSimGUI/template.xml b/support/tools/BaseSimGUI/template.xml deleted file mode 100644 index d3b3cee142a..00000000000 --- a/support/tools/BaseSimGUI/template.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE basesim SYSTEM "basesim.dtd"> -<basesim> - <simul name="mySimul"> - - <!-- WorkHolder definition; only one WH per Simul --> - <workholder name="wh1"> - <dataholder name = "dh1" type="in"/> - <dataholder name = "dh2" type="out"/> - </workholder> - - </simul> -</basesim> diff --git a/support/tools/TreeBrowser/description_init.html b/support/tools/TreeBrowser/description_init.html deleted file mode 100644 index c239246c2d2..00000000000 --- a/support/tools/TreeBrowser/description_init.html +++ /dev/null @@ -1,7 +0,0 @@ -<html> -<head> -<title> Package Page </title> -</head> -<body> -</body> -</html> diff --git a/support/tools/TreeBrowser/images/ftv2blank.png b/support/tools/TreeBrowser/images/ftv2blank.png deleted file mode 100644 index 493c3c0b615ade5b22027bde773faf2c0e076d66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+uU|?XJc1_Tofq{XkB*-tAfst{_-*q6V z64!{5;QX|b^2DN4hV;xdqk_D21tUEZJ)^~O?tBak45}a%&iT2ysd*&~p*g9EDGKhM zZVJJ<iA5#BiDjup3Sp^53PyScia)N$1v4-(h<Lg<hE&{2wm8txAaC%X-f02@6GMfK W(dnZ88X*P-1_n=8KbLh*2~7Znm@q5= diff --git a/support/tools/TreeBrowser/images/ftv2doc.png b/support/tools/TreeBrowser/images/ftv2doc.png deleted file mode 100644 index 48bce1d78f021aceeb2ddc57026ebad0b7d7a9ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1214 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4rT@hhD3q7R0alSh5(-s*Z)8M|Nk-n|B3nM zPbAEr!O+su!oa}r|NsAZhBStJh8%_zhE#?khIod2h609EhCBv6hIEEZhBS~_42%q5 zaDbJ8fuVv?7>u|45Mp?0`LNu94Z;VBgH<swFo48NehM-4JbhUH#qLr01CDTp09$b| z*0q0B4pIxkAoU<|ka`gPLfo1`;inLT3IhW}kJgWJ1_ogU4_;v~AEfrj4<QByCJ;-Q zA;DW5?2ai63=GW2{*<3Q@~8a4kw4`iSrA@P?7<LlMU=tdiYSAMmpDj>K?R~2%mxu1 zKZO{6xQR2cLGAkBCeASDrx1gH7eb7~OB~Dxxfg^DehD#z%KrfS`~Uy{{~dk_F~}YN zQ+|V87_1It7f3%e%ou+Bgs9h0{ZS55&+$u$!658Mc}Uog@(GN8%Pqrxl%u%w!QXn2 z+dvp(A2J4o2RlfDfdT9%m_3Y_MHvJb{+6%#Da6q53xYvzgxNXamk@(YWJC=}KS(>s zZS3g}!C?hrGd%cPAJ5>%P{&{h_5(<b2_pkT$S)xV9tH-64gZB0T;yYFGUUQ*Kz;z> zJHF0PwZaUbIPmZiXK?TmXUJd_W?<0&R|bkhhW=Q7hHVGIR)FFw=a&#T&Oquw>J=Cn zz-h~kNq_-_O@2edN&*^IF298s=1vR;yPJbSgh7IlfdS@jkQ-t6$N?9IiC*FicaDoP zO!X3H_*(1%O4|QHcIX|1$SvT$-T<<#B*-rq<o^Hv|AW;)*&~YT-TwXp0|NtRfk$L9 z0|Vb-5N14{zaoW!fg!@v#WAE}&fE*$d<PUbTm$X&cl?(X7ZJJKSG9Pua0x?i_!IGq zz9J8m`Z!GYoV*y!&Ga!-C~DRe=R=E@^{V&<{(TzEbXaZXBYp9mOFIrtit;>M)oo|? av0HAJIh$aOu22>z(mY-LT-G@yGywn@wg5N) diff --git a/support/tools/TreeBrowser/images/ftv2folderclosed.png b/support/tools/TreeBrowser/images/ftv2folderclosed.png deleted file mode 100644 index d6d063440cbf13c4128dacd96661b6fce58abf26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=U+rW?*294=L1TU|<jm@CkAK4+aMg9B620 zU|?WqU}$i9=kSn$fq}6k$S;_|;n|HekiHVvh?3y^w370~qEv?T%rv8dymSR4Jrg~n z#c}R@3=9mlo-U3d6}Ni(4sx{^2skVEl=J^)cG|1`gE2Mt{i3t~|92U$eHZm@1KX_+ zZOeoiIvkjTnVM!@4|GypS5>y)?W@X4anIt1pNvHM<2`r2RZdViYnJxJ!F$W?+fT*b ziB%~4oF<xksC!Y~&w!L=1=|9+E?2b8SavUVuIkx;_m43z5Eh-0u(y$$fq{X+)78&q Iol`;+07G$Q8vp<R diff --git a/support/tools/TreeBrowser/images/ftv2folderopen.png b/support/tools/TreeBrowser/images/ftv2folderopen.png deleted file mode 100644 index bbe2c913cf493ee37ad8e3a5132382138d93ac92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=U+rW?*294=L1TU|<jp@CkAK4+0GT|NlR5 z;6Ot|0|Ns?14F|kqn@V>3=E7VL4Lsu4$p3+fwY#mMwA5Sr<If^7Ns(zXQmky<fSVZ z>6z#mEsk^NV_;yY@pN$vskqhJ>&Vw+AmAF$@l{SY_}Vdv>%9`!*)GW~*m&<hhn0e& zz@q%m|NeJNHgIK$G}^FfB_6%(oOy7|>YoK`nosTiy`+1cn%g!X{uhTOer>K@A@y2( zsauGfpVp&uQ*C!`NSWL^o4dHMx%B#{<r6+B%>6BP>9zCEzn^%QXo{S^<-W#+fq{X+ M)78&qol`;+02~`<LI3~& diff --git a/support/tools/TreeBrowser/images/ftv2lastnode.png b/support/tools/TreeBrowser/images/ftv2lastnode.png deleted file mode 100644 index e7b9ba90cb0cf71c8ce662956bfee7d64cf60fa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+rW?*3SX*Rscz`$S-;1lBd|NnmmqCrDL zgT&<p6Brm67)yfuf*Bm1-ADtOTH+c}5}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Yh2e zfk6$V!Z|-TH#M(>Av7m7F-5`M(@h~bH?gQBII%3XNFgk>NWn<YAd@lQ{wx~<1B0-q pi(^Q|t>gp=g9H9N%q%C2<rq|!Gjs@?GPVV|*VEO{Wt~$(69BbdHFf|1 diff --git a/support/tools/TreeBrowser/images/ftv2mlastnode.png b/support/tools/TreeBrowser/images/ftv2mlastnode.png deleted file mode 100644 index 09ceb6adb01054ce799ad20c0e818ab9272f2df2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+sW?*1EeE3Ku0|NtRfKQ0)|Ns9R8X6cF z7;NHp>o71dFqQ=Q1v5B2yO9P`Ug8>25}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Yh2e zfkD~R#WAGfR&s&@HwTA;09QhbV9&yZ3TzWjuGktNaEhrjk&z)+oN3pAJDDdK7#J8l MUHx3vIVCg!0ORy6RsaA1 diff --git a/support/tools/TreeBrowser/images/ftv2mnode.png b/support/tools/TreeBrowser/images/ftv2mnode.png deleted file mode 100644 index 3254c05112199fbc80aad313611c58a5b388792d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+rW?*3SX*Rscz`&pq;1l9{;J^U}yr7|> zA$XtMOa=x9#*!evU<QY0H_|{RmAFQf1m~xflqVLYGNfmw85QKED;VjS=ou}JbLV4V zV9@e(aSW-rm7K6Z?*W@r3DfeR5Vr4m3Jo6*Cf)Jz^15^9&Iu(0(;2reN-}J(WLIDH ReHt^!A)c;&F6*2UngA?OGfe;h diff --git a/support/tools/TreeBrowser/images/ftv2node.png b/support/tools/TreeBrowser/images/ftv2node.png deleted file mode 100644 index c9f06a57f4cfe0f9851cc1aacd7245f741b53ad1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+rW?*3SX*Rscz`$S-;1lBd|NnmmqCrDL zgT&<p6Brm67)yfuf*Bm1-ADtOTH+c}5}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Yh2e zfk6$V!Z|-TH#M(>Av7m7F-5`M(@h~bH?gQBII%3XNFgk>NWn<YAd@lQ{wx~<1B0li ri(^Q|t>gp=g9H9N%q$&YJ%<<=^nw^3{c^Q>2y(HftDnm{r-UW|J~lV1 diff --git a/support/tools/TreeBrowser/images/ftv2plastnode.png b/support/tools/TreeBrowser/images/ftv2plastnode.png deleted file mode 100644 index 0b07e00913d8069ebbb51bd7fd6d70d8bba88f75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+sW?*1EeE3Ku0|NtRfKQ0)|Ns9R8X6cF z7;NHp>o71dFqQ=Q1v5B2yO9P`Ug8>25}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Yh2e zfkDI5#WAGfR&s&@HwT9SN2B0`Mka|wmgEeL2?<O_l3T^NoFWwrbr=}(4l*5j`nGgA Q0|Nttr>mdKI;Vst0C@~7wg3PC diff --git a/support/tools/TreeBrowser/images/ftv2pnode.png b/support/tools/TreeBrowser/images/ftv2pnode.png deleted file mode 100644 index 2001b797ba2b98a4127f1d3efca64aef08bf6d51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+rW?*3SX*Rscz`&pq;1l9{;J^U}yr7|> zA$XtMOa=x9#*!evU<QY0H_|{RmAFQf1m~xflqVLYGNfmw85QKED;VjS=ou}JbLV4V zU@-7>aSW-rm7K6Z?*W?=Tb`N)<D*9*U8f%0<7E-B6L#sD?djP$d$x2W%QCiLYb$1k XUD@pVt4_=3gPh~(>gTe~DWM4f<d-p4 diff --git a/support/tools/TreeBrowser/images/ftv2vertline.png b/support/tools/TreeBrowser/images/ftv2vertline.png deleted file mode 100644 index b330f3a33c0085c183ff39fc56b1b274160c1da0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+rW?*3SX*Rscz`$S-;1lBd|NnmmqCrDL zgT&<p6Brm67)yfuf*Bm1-ADtOTH+c}5}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Yh2e zfk6$V!Z|-TH#M(>Av7m7F-5`M(@h~bH?gQBII%3XNFgk>NWn<YAd@lQ{wx~<0|URO li(^Q|t>gp=g9HB2Yz&Gb49lL{ys!ef)zj6_Wt~$(69DWxH7Ec8 diff --git a/support/tools/TreeBrowser/images/lofar_back.gif b/support/tools/TreeBrowser/images/lofar_back.gif deleted file mode 100644 index ca049ecb69833d050dde28cf937bcfacbc03d2f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13792 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 JVP;~m1_0$OP}Kkc diff --git a/support/tools/TreeBrowser/images/openordner.png b/support/tools/TreeBrowser/images/openordner.png deleted file mode 100644 index 48bce1d78f021aceeb2ddc57026ebad0b7d7a9ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1214 zcmeAS@N?(olHy`uVBq!ia0y~yU=RXf4rT@hhD3q7R0alSh5(-s*Z)8M|Nk-n|B3nM zPbAEr!O+su!oa}r|NsAZhBStJh8%_zhE#?khIod2h609EhCBv6hIEEZhBS~_42%q5 zaDbJ8fuVv?7>u|45Mp?0`LNu94Z;VBgH<swFo48NehM-4JbhUH#qLr01CDTp09$b| z*0q0B4pIxkAoU<|ka`gPLfo1`;inLT3IhW}kJgWJ1_ogU4_;v~AEfrj4<QByCJ;-Q zA;DW5?2ai63=GW2{*<3Q@~8a4kw4`iSrA@P?7<LlMU=tdiYSAMmpDj>K?R~2%mxu1 zKZO{6xQR2cLGAkBCeASDrx1gH7eb7~OB~Dxxfg^DehD#z%KrfS`~Uy{{~dk_F~}YN zQ+|V87_1It7f3%e%ou+Bgs9h0{ZS55&+$u$!658Mc}Uog@(GN8%Pqrxl%u%w!QXn2 z+dvp(A2J4o2RlfDfdT9%m_3Y_MHvJb{+6%#Da6q53xYvzgxNXamk@(YWJC=}KS(>s zZS3g}!C?hrGd%cPAJ5>%P{&{h_5(<b2_pkT$S)xV9tH-64gZB0T;yYFGUUQ*Kz;z> zJHF0PwZaUbIPmZiXK?TmXUJd_W?<0&R|bkhhW=Q7hHVGIR)FFw=a&#T&Oquw>J=Cn zz-h~kNq_-_O@2edN&*^IF298s=1vR;yPJbSgh7IlfdS@jkQ-t6$N?9IiC*FicaDoP zO!X3H_*(1%O4|QHcIX|1$SvT$-T<<#B*-rq<o^Hv|AW;)*&~YT-TwXp0|NtRfk$L9 z0|Vb-5N14{zaoW!fg!@v#WAE}&fE*$d<PUbTm$X&cl?(X7ZJJKSG9Pua0x?i_!IGq zz9J8m`Z!GYoV*y!&Ga!-C~DRe=R=E@^{V&<{(TzEbXaZXBYp9mOFIrtit;>M)oo|? av0HAJIh$aOu22>z(mY-LT-G@yGywn@wg5N) diff --git a/support/tools/TreeBrowser/index.html b/support/tools/TreeBrowser/index.html deleted file mode 100644 index 93efc4e6ce6..00000000000 --- a/support/tools/TreeBrowser/index.html +++ /dev/null @@ -1,9 +0,0 @@ -<html> -<frameset cols = "20%,80%"> - <frame name="treeview" src ="dep/finddep-pkg.html" /> - <frameset rows = "10%,90%"> - <frame name="links" src ="links_init.html" /> - <frame name="description" src ="scripts/makepage.php?name=LOFAR" /> - </frameset> -</frameset> -</html> diff --git a/support/tools/TreeBrowser/links_init.html b/support/tools/TreeBrowser/links_init.html deleted file mode 100644 index 270f2d61d6b..00000000000 --- a/support/tools/TreeBrowser/links_init.html +++ /dev/null @@ -1,7 +0,0 @@ -<html> -<head> -<title> Links Page </title> -</head> -<body> -</body> -</html> \ No newline at end of file diff --git a/support/tools/TreeBrowser/scripts/make_links.php b/support/tools/TreeBrowser/scripts/make_links.php deleted file mode 100644 index 4725f21ed08..00000000000 --- a/support/tools/TreeBrowser/scripts/make_links.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php -$name = $_REQUEST["name"]; -$realname= str_replace("~","/",$name); -$isUsed=file_exists("../dep/".$name.".used.html"); -$isUses=file_exists("../dep/".$name.".uses.html"); -$isFlat=file_exists("../dep/".$name.".flat.html"); -?> - -<html> -<head> -<link href="../../docxxhtml/doxygen.css" rel="stylesheet" type="text/css"> -<title> Links Page </title> -</head> -<body> -<center> -<b>Package -<?php -echo $realname; -?> -</b> -<?php -if ($isUsed) { -?> - -- <a href="../dep/<?php echo $name;?>.used.html" title="(shows in a - recursive way the packages where <?php echo $realname;?> is used)" - target="depend"> Used</a> -<?php -} else { -?> - -- Not Used -<?php -} -?> -<?php -if ($isUses) { -?> - -- <a href="../dep/<?php echo $name;?>.uses.html" title="(shows in a - recursive way the packages used by <?php echo $realname;?>)" - target="depend"> Uses</a> -<?php -} else { -?> - -- No Uses -<?php -} -?> -<?php -if ($isFlat) { -?> - -- <a href="../dep/<?php echo $name;?>.flat.html" title="(shows the - packages used by <?php echo $realname;?>)" target="depend"> Flat</a> -<?php -} -?> - --- <a href="http://svn.astron.nl/CDash/index.php?project=LOFAR" - target="_blank">Build results</a> -</center> -</body> -</html> - - - - - - diff --git a/support/tools/TreeBrowser/scripts/makepage.php b/support/tools/TreeBrowser/scripts/makepage.php deleted file mode 100644 index 1ebc5f00a0f..00000000000 --- a/support/tools/TreeBrowser/scripts/makepage.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php -$name = $_REQUEST["name"]; -$realname = str_replace("~","/",$name); -$docname = "group__" .str_replace("_","__",end(explode('~',$name))). ".html"; -?> -<html> -<head> -<title> Package Page </title> -</head> -<body bgcolor="#FFFFFF"> - -<script type="text/JavaScript" language="Javascript1.2"> -var jname= '<?php echo $name; ?>'; -var u_id="../scripts/make_links.php?name="+jname; -window.open(u_id,"links"); -</script> - -<?php -if (file_exists("../../docxxhtml/".$docname)) { -?> -<script type="text/JavaScript" language="Javascript1.2"> -var docname= '../../docxxhtml/<?php echo $docname; ?>'; -window.open(docname,"description"); -</script> -<?php -} else { -?> -<center> -<h3> No doxygen documentation for -<?php -echo $realname; -?> - available yet. -</h3> -</center> - -<?php - } -?> -</body> -</html> diff --git a/support/tools/wrapexec/AUTHORS b/support/tools/wrapexec/AUTHORS deleted file mode 100644 index 898de278eff..00000000000 --- a/support/tools/wrapexec/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ - -Author: Klaas Jan Wierenga, wierenga@astron.nl, klaas.jan.wierenga@ordina.nl - diff --git a/support/tools/wrapexec/COPYING b/support/tools/wrapexec/COPYING deleted file mode 100644 index 60549be514a..00000000000 --- a/support/tools/wrapexec/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) 19yy <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/support/tools/wrapexec/ChangeLog b/support/tools/wrapexec/ChangeLog deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/support/tools/wrapexec/INSTALL b/support/tools/wrapexec/INSTALL deleted file mode 100644 index b42a17ac464..00000000000 --- a/support/tools/wrapexec/INSTALL +++ /dev/null @@ -1,182 +0,0 @@ -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. diff --git a/support/tools/wrapexec/Makefile.am b/support/tools/wrapexec/Makefile.am deleted file mode 100644 index 62f90964f10..00000000000 --- a/support/tools/wrapexec/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -SUBDIRS = config src bin # test - -EXTRA_DIST = depcomp diff --git a/support/tools/wrapexec/NEWS b/support/tools/wrapexec/NEWS deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/support/tools/wrapexec/README b/support/tools/wrapexec/README deleted file mode 100644 index 1a4c77bb3c1..00000000000 --- a/support/tools/wrapexec/README +++ /dev/null @@ -1,37 +0,0 @@ - - - wrapexec - ======== - - -wrapexec is a tool to run an existing binary under the control of another program such as -ddd, valgrind, time, etc. for debugging or profiling purposes. This is handy when your program -is execed or forked by an application over which you have no control, meaning you cannot control -how and with what arguments your program is started. In this case wrapexec can make your program -look like it was still the same, but run it under the control of a debugging or profiling tool. - -Usage: - -To find out what tools you can use run wrapexec without arguments: - - [user@machine test] wrapexec - Usage: wrapexec /path/to/program_to_wrap <toolname>. - Example: wrapexec ./mytest ddd - <toolname> can be one of: - ddd - strace - valgrind - time - none - -To wrap an existing binary such as mytestprogram, do 'wrapexec mytestprogram strace'. -The wrapexec program prevents you from wrapping the same binary twice. In order to wrap -the binary for a different tool you must unwrap it using 'unwrapexec mytestprogram' and -then wrap it with the new tool. - -To customize how wrapexec runs your program under the control of the tool you can copy -/etc/wrapexec.cfg (from your installation directory) to $HOME/.wrapexec.cfg. The wrapexec -program will then only read your copy of the configuration file and ignore the standard -system installed configuration file. - -I hope this is a useful tool for you. diff --git a/support/tools/wrapexec/acconfig.h b/support/tools/wrapexec/acconfig.h deleted file mode 100644 index 225d5955471..00000000000 --- a/support/tools/wrapexec/acconfig.h +++ /dev/null @@ -1,2 +0,0 @@ -#undef PACKAGE -#undef VERSION diff --git a/support/tools/wrapexec/bin/Makefile.am b/support/tools/wrapexec/bin/Makefile.am deleted file mode 100644 index 0a11b7d66e1..00000000000 --- a/support/tools/wrapexec/bin/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ - -noinst_SCRIPTS = wrapexec.in unwrapexec.in -nodist_bin_SCRIPTS = wrapexec unwrapexec -EXTRA_DIST = wrapexec.in unwrapexec.in - -wrapexec: $(srcdir)/wrapexec.in - sed -e 's%INSTALL_BINDIR%$(bindir)%' < $(srcdir)/wrapexec.in > wrapexec.in.1 - sed -e 's%INSTALL_SYSCONFDIR%$(sysconfdir)%' < wrapexec.in.1 > wrapexec - chmod +x wrapexec - -unwrapexec: $(srcdir)/unwrapexec.in - sed -e 's%INSTALL_BINDIR%$(bindir)%' < $(srcdir)/unwrapexec.in > unwrapexec - chmod +x unwrapexec - -distclean-local: - rm -f wrapexec unwrapexec diff --git a/support/tools/wrapexec/bin/unwrapexec.in b/support/tools/wrapexec/bin/unwrapexec.in deleted file mode 100644 index 618bd4ec870..00000000000 --- a/support/tools/wrapexec/bin/unwrapexec.in +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh - -# -# Path to the wrapexec_wrapper binary -# -wrapexec_wrapper=INSTALL_BINDIR/wrapexec_wrapper - -# -# Test for correct usage -# -if test $# -ne 1; then - echo "Usage: unwrapexec /path/to/wrapped_program" - echo "Example: unwrapexec ./mytest" - exit 1; -fi - -# -# Copy arguments -# -program=$1 -shift - -# -# Test if program exists -# -if test ! -x $program; then - echo "unwrapexec: error: program '$program' not found." - exit 1; -fi - -# -# Test whether the program has indeed been wrapped -# -wrapexec_inode=`ls -iL $wrapexec_wrapper 2> /dev/null | cut -d\ -f1` -program_inode=`ls -iL $program 2> /dev/null | cut -d\ -f1` -if test $program_inode -eq $wrapexec_inode; then - program_wrap_name=`ls -1 $program.wrap_* 2> /dev/null` - if test "$program_wrap_name" = ""; then - echo "unwrapexec: error: no wrapped binary '$program.wrap_*' found." - exit 1; - fi - rm $program - mv $program_wrap_name $program -else - echo "unwrapexec: error: program not wrapped." - exit 1; -fi - diff --git a/support/tools/wrapexec/bin/wrapexec.in b/support/tools/wrapexec/bin/wrapexec.in deleted file mode 100644 index bb8191950be..00000000000 --- a/support/tools/wrapexec/bin/wrapexec.in +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh - -# -# Path to the wrapexec_wrapper binary -# -wrapexec_wrapper=INSTALL_BINDIR/wrapexec_wrapper - -# -# Find config file -# -if test -f $HOME/.wrapexec.cfg; then - conffile=$HOME/.wrapexec.cfg; -else - if test -f INSTALL_SYSCONFDIR/wrapexec.cfg; then - conffile=INSTALL_SYSCONFDIR/wrapexec.cfg; - else - echo "wrapexec: error: Could not find configuration file in '$HOME/.wrapexec.cfg'" - echo "or INSTALL_SYSCONFDIR/wrapexec.cfg" - exit 1 - fi -fi - -# -# Test for correct usage -# -if test $# -ne 2; then - echo "Usage: wrapexec /path/to/program_to_wrap <toolname>." - echo "Example: wrapexec ./mytest ddd" - echo "<toolname> can be one of:" - tools=`grep "^\[.*" $conffile | sed -e 's/^\[//' | sed 's/\]$//' ` - for t in $tools; do - echo -e " \t$t"; - done; - exit 1; -fi - -# -# Copy arguments -# -program=$1 -shift -toolname=$1 -shift - -# -# Test whether the program has already been wrapped by comparing inodes -# -wrapexec_inode=`ls -iL $wrapexec_wrapper | cut -c1-8` -program_inode=`ls -iL $program | cut -c1-8` -if test $program_inode -eq $wrapexec_inode; then - existing_toolname=`ls -1 $program.wrap_* | cut -d_ -f2` - echo "wrapexec: error: program '$program' already wrapped by '$existing_toolname'" - exit 1; -fi - -# -# Wrap! -# -mv $program $program.wrap_$toolname -ln -s $wrapexec_wrapper $program - diff --git a/support/tools/wrapexec/bootstrap b/support/tools/wrapexec/bootstrap deleted file mode 100755 index 4ae15422199..00000000000 --- a/support/tools/wrapexec/bootstrap +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -aclocal \ -&& automake --gnu --add-missing --copy \ -&& autoconf diff --git a/support/tools/wrapexec/config/Config.cc b/support/tools/wrapexec/config/Config.cc deleted file mode 100644 index 5b913cd541e..00000000000 --- a/support/tools/wrapexec/config/Config.cc +++ /dev/null @@ -1,489 +0,0 @@ -/* Config Class - Author: adv (Andrew Marchenko), 03.08.2000 - Modify: adv (Andrew Marchenko), 27.09.2000 - <adv@adv.org.ua> - <t9r@mail.ru> */ - -#include <algorithm> -#include "Config.h" - -int S_count(const std::string& s, char c); - - -Value::Value(void) -{ - next = 0; - type = TYPE_EMPTY; -} - -void -Value::set(std::string str, int bl, int key = TYPE_VARIABLE) -{ - value = str; - type = key; - block = bl; -} - -std::string& -Value::get(void) -{ - return value; -} - -const char* -Value::sget(void) -{ - return value.c_str(); -} - -int -Value::is_keyword(void) -{ - return (type == TYPE_KEYWORD) ? 1 : 0; -} - -int -Value::is_block(void) -{ - return (type == TYPE_BLOCK) ? 1 : 0; -} - -int -Value::get_block_id(void) -{ - return block; -} - -int -Value::get_type(void) -{ - return type; -} - -/* ---------------------------------------- */ - -Config::Config(void) -{ - init(DEF_CONFIG, '=', 1); -} - -Config::Config(const char* name, int col = 1) -{ - init(name, '=', col); -} - -Config::Config(char delim, int col = 1) -{ - init(DEF_CONFIG, delim, col); -} - -Config::Config(const char* name, char delim, int col = 1) -{ - init(name, delim, col); -} - -int -Config::init(const char* name, char delim, int col) -{ - delimiter = delim; - vcol = col; - if (vcol < 1) - vcol = 1; - - svalue = 0; - - open_config_file(name); - read_config_file(); - close_config_file(); - - return 0; -} - - -Config::~Config(void) -{ - if (vstart != 0) - { - while (vstart->next) - { - svalue = vstart->next; - delete vstart; - vstart = svalue; - } - } -} - -int -Config::open_config_file(const char* name) -{ - file.open(name); - if (!file) - throw "File Open Error"; - - return 0; -} - -int -Config::close_config_file(void) -{ - file.close(); - - return 0; -} - - -const char* -Config::operator()(const char* name, int col = 1) -{ - return value(name, col); -} - -const char* -Config::operator()(const char* block, const char* name, int col = 1) -{ - return value(block, name, col); -} - -const char* -Config::value(const char* block, const char* name, int col = 1) -{ - if (name == NULL || col < 1) - return NULL; - - svalue = vstart; - - int block_id = 0; - block_id = search_block(block); - - while (svalue->next) - { - if (block_id != svalue->get_block_id()) - break; - - if (!(svalue->get()).compare(name) && svalue->is_keyword()) - return search_value(col); - - svalue = svalue->next; - } - - return NULL; -} - -const char* -Config::value(const char* name, int col = 1) -{ - if (name == NULL || col < 1) - return NULL; - - svalue = vstart; - - while (svalue->next) - { - if (!(svalue->get()).compare(name) && svalue->is_keyword()) - return search_value(col); - - svalue = svalue->next; - } - - return NULL; -} - -const char* -Config::search_value(int col) -{ - for (int i = 0; i < col; i++) - { - svalue = svalue->next; - if (svalue->next == NULL || svalue->is_keyword()) - return NULL; - } - - return svalue->sget(); -} - - -const char* -Config::_ivalue(const char* block, const char* name, int index, int col) -{ - if (index < 1 || col < 1) - return NULL; - - svalue = vstart; - - int block_id = 0; - if (block) - block_id = search_block(block); - - int count = 0; - while (svalue->next) - { - if (block) - if (block_id != svalue->get_block_id()) - break; - - if (name) - { - /* If keyword's value is found */ - if (svalue->is_keyword() && !(svalue->get()).compare(name) ) - count++; - } - else - { - /* If keyword is found */ - if (svalue->is_keyword() ) - count++; - } - - /* Searching specified value */ - if (count == index) - return search_value(col); - - svalue = svalue->next; - } - - return NULL; -} - -int -Config::search_block(const char* block) -{ - int block_id = 0; - - while (svalue->next) - { - if (!(svalue->get()).compare(block) && svalue->is_block()) - { - block_id = svalue->get_block_id(); - break; - } - svalue = svalue->next; - } - - return block_id; -} - -/* - * Return value of variable by index - */ -const char* -Config::ivalue(int index, int col = 1) -{ - return _ivalue(NULL, NULL, index, col); -} - -/* - * Return value of variable by index in block - */ -const char* -Config::ivalue(const char* block, int index, int col = 1) -{ - return _ivalue(block, NULL, index, col); -} - -/* - * Return value of variable by index in block - */ -const char* -Config::ivalue(const char* block, const char* name, int index, int col = 1) -{ - return _ivalue(block, name, index, col); -} - - - -const char* -Config::keyword(int index) -{ - if (index < 1) - return NULL; - - svalue = vstart; - - int count = 0; - while (svalue->next) - { - if (svalue->is_keyword()) - count++; - - if (count == index) - return svalue->sget(); - - svalue = svalue->next; - } - - return NULL; -} - -const char* -Config::block(int index) -{ - if (index < 1) - return NULL; - - svalue = vstart; - - int count = 0; - while (svalue->next) - { - if (svalue->is_block()) - count++; - - if (count == index) - return svalue->sget(); - - svalue = svalue->next; - } - - return NULL; -} - - -int -Config::read_config_file(void) -{ - std::string str, str_buf; - int block_no = 0; - - int append = 0; - while (1) - { - if (svalue == 0) - { - svalue = new Value; - vstart = svalue; - } - else if (svalue->get_type() != TYPE_EMPTY) - { - svalue->next = new Value; - svalue = svalue->next; - } - - if (getline(file, str_buf) == 0) - break; - - str_buf += '#'; - str_buf = str_buf.substr(0, str_buf.find('#')); - S_trunc(str_buf); - - if (append) - str += str_buf; - else - str = str_buf; - - append = 0; - - int pos = str.length(); - if (pos <= 2) - continue; - S_trunc(str); - - if (str[str.length() - 1] == '\\') - { - int last = str.length() - 1; - str.replace(last, 1, ""); - append = 1; - continue; - } - - - if (str.length() <= 2 || str[0] == '\r') - continue; - - if (str[0] == '[' && str[str.length() - 1] == ']') - { - pos = str.length() - 1; - str.replace(pos, 1, ""); - str.replace(0, 1, ""); - - block_no++; - svalue->set(str, block_no, TYPE_BLOCK); - continue; - } - - int is_delim = str.find(delimiter); - if (is_delim == -1) - continue; - - if (str[0] == delimiter) - continue; - - str_buf = str.substr(0, str.find(delimiter)); - - S_trunc(str_buf); - svalue->set(str_buf, block_no, TYPE_KEYWORD); - - int col= S_count(str, delimiter); - - if (col > vcol) - col = vcol; - - pos = 0; - for (int i = 0; i < col; i++) - { - svalue->next = new Value; - svalue = svalue->next; - - pos = str.find(delimiter, pos + 1); - str_buf = str.substr(pos + 1); - - - if (i < col - 1) - { - str_buf += ':'; - str_buf = str_buf.substr(0, str_buf.find(delimiter)); - } - - S_trunc(str_buf); - svalue->set(str_buf, block_no); - } - } - - return 0; -} - -int -S_count(const std::string& s, char c) -{ - int n = 0; - std::string::const_iterator i = find(s.begin(), s.end(), c); - - while (i != s.end()) - { - ++n; - i = find(i + 1, s.end(), c); - } - - return n; -} - -void -Config::S_trunc(std::string& str) -{ - int pos = str.length(); - if (pos <= 0) - return; - - int count = 0; - while (isspace(str[pos - 1])) - { - pos--; - count++; - } - str.replace(pos, count, ""); - - count = 0; - pos = 0; - while (isspace(str[pos])) - { - pos++; - count++; - } - str.replace(0, count, ""); - - if (str[0] == '"' && str[str.length() - 1] == '"') - { - pos = str.length() - 1; - str.replace(pos, 1, ""); - str.replace(0, 1, ""); - } -} diff --git a/support/tools/wrapexec/config/Config.h b/support/tools/wrapexec/config/Config.h deleted file mode 100644 index ef2231c3158..00000000000 --- a/support/tools/wrapexec/config/Config.h +++ /dev/null @@ -1,79 +0,0 @@ -/* Header file for 'Config Class' - Author: adv (Andrew Marchenko), 03.08.2000 - <adv@adv.org.ua> - <t9r@mail.ru> */ - -#include <fstream> -#include <string> - -#define DEF_CONFIG "config.cfg" - -enum ValType -{ - TYPE_EMPTY, - TYPE_VARIABLE, - TYPE_KEYWORD, - TYPE_BLOCK -}; - -class Value -{ - std::string value; - int type; - int block; - - public: - Value* next; - - Value(void); - - void set(std::string str, int bl, int key = TYPE_VARIABLE); - std::string& get(void); - const char* sget(void); - - int is_keyword(void); - int is_block(void); - int get_block_id(void); - int get_type(void); -}; - - -class Config -{ - std::ifstream file; - char delimiter; - int vcol; - - Value* svalue, *vstart; - - int open_config_file(const char* name); - int close_config_file(void); - int read_config_file(void); - - void S_trunc(std::string& str); - - int search_block(const char* block); - const char* search_value(int col); - -public: - Config(void); - Config(const char* name, int col = 1); - Config(char delim, int col = 1); - Config(const char* name, char delim, int col = 1); - int init(const char* name, char delim, int col); - - ~Config(void); - - const char* value(const char* name, int col = 1); - const char* value(const char* block, const char* name, int col = 1); - const char* operator()(const char* name, int col = 1); - const char* operator()(const char* block, const char* name, int col = 1); - - const char* _ivalue(const char* block, const char* name, int index, int col); - const char* ivalue(int index, int col = 1); - const char* ivalue(const char* block, int index, int col = 1); - const char* ivalue(const char* block, const char* name, int index, int col = 1); - - const char* keyword(int index); - const char* block(int index); -}; diff --git a/support/tools/wrapexec/config/Makefile.am b/support/tools/wrapexec/config/Makefile.am deleted file mode 100644 index b6bff8e2a6e..00000000000 --- a/support/tools/wrapexec/config/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ - -noinst_LIBRARIES = libconfig.a -libconfig_a_SOURCES = Config.cc Config.h diff --git a/support/tools/wrapexec/src/ArgList.cc b/support/tools/wrapexec/src/ArgList.cc deleted file mode 100644 index 23347101fec..00000000000 --- a/support/tools/wrapexec/src/ArgList.cc +++ /dev/null @@ -1,140 +0,0 @@ -#include <ArgList.h> - -#include <stdio.h> -#include <stdlib.h> -#include <iostream> -#include <string> -#include <algorithm> -#include <cctype> - -ArgList::ArgList(const char* s) : m_args(s), m_argv_string(""), m_argv(0) -{ -} - -ArgList::ArgList(string s) : m_args(s), m_argv_string(""), m_argv(0) -{ -} - -ArgList::ArgList(int argc, char** argv) : m_argv_string(""), m_argv(0) -{ -#ifdef DEBUG - fprintf(stderr, "ArgList ctor: argc = %d\n", argc); -#endif - - m_args.erase(); - - for (int i = 0; i < argc; i++) - { -#ifdef DEBUG - fprintf(stderr, "argv[%d] = %s\n", i, argv[i]); -#endif - - if (i < argc - 1) m_args += string(argv[i]) + string(" "); - else m_args += string(argv[i]); - } -} - -ArgList::~ArgList() -{ - if (m_argv) free(m_argv); -} - -string ArgList::as_string() -{ - return m_args; -} - -int ArgList::get_argc() -{ - int begin = 0; - int end = -1; - - // count number of arguments - int argc = 0; - while (((end = m_args.find_first_of(' ', begin)) >= 0) && (begin != end)) - { - argc++; - begin = end + 1; - } - if (end != m_args.length()) argc++; - - return argc; -} - -const char** ArgList::get_argv() -{ - int begin = 0; - int end = -1; - m_argv_string = m_args; - - // count number of arguments - int argc = 0; - while (((end = m_argv_string.find(' ', begin)) >= 0) && (begin != end)) - { - argc++; - begin = end + 1; - } - if (end != m_argv_string.length()) argc++; - -#ifdef DEBUG - cerr << "m_argv_string = " << m_argv_string << "; get_argv; argc = " << argc << endl; -#endif - - // reallocate argv array - m_argv = (char**)realloc(m_argv, (argc + 1) * sizeof(char*)); - m_argv[argc] = 0; - - // assign to argv arguments - begin = 0; - end = -1; - int i=0; -#ifdef DEBUG - cerr << "m_argv_string.length() = " << m_argv_string.length() << endl; -#endif - while (((end = m_argv_string.find_first_of(' ', begin)) >= 0) && (begin != end)) - { - m_argv_string[end] = '\0'; -#ifdef DEBUG - cerr << "begin = " << begin << endl; -#endif - m_argv[i] = &m_argv_string[begin]; - begin = end + 1; - i++; - } - if (end != m_args.length()) m_argv[argc - 1] = &m_argv_string[begin]; - - return (const char**)m_argv; -} - -void ArgList::substitute(const char* pattern, const string& replacement) -{ - int begin = 0; - int end = 0; - - if (m_args.length() == 0) return; - -#ifdef DEBUG - cerr << "m_args = " << m_args << endl; - cerr << "pattern = " << pattern << endl; - cerr << "replacement = " << replacement << endl; -#endif - - while ((begin = m_args.find(pattern)) >= 0) - { - end = begin + strlen(pattern); - if (end > m_args.length()) end = m_args.length(); - -#ifdef DEBUG - fprintf(stderr, "begin = %d\n", begin); - fprintf(stderr, "end = %d\n", end); - fprintf(stderr, "replacementlength = %d\n", replacement.length()); -#endif - - m_args.replace(begin, end - begin, replacement); - } - -#ifdef DEBUG - cerr << "result m_args = " << m_args << endl; - cerr << "m_args length = " << m_args.length() << endl; -#endif -} diff --git a/support/tools/wrapexec/src/ArgList.h b/support/tools/wrapexec/src/ArgList.h deleted file mode 100644 index 22d35f182e5..00000000000 --- a/support/tools/wrapexec/src/ArgList.h +++ /dev/null @@ -1,30 +0,0 @@ - - -#ifndef ARGLIST_H -#define ARGLIST_H - -#include <vector> -#include <string> - -class ArgList -{ - public: - ArgList(const char* s); - ArgList(string s); - ArgList(int argc, char** argv); - ~ArgList(); - - void substitute(const char* pattern, const string& replacement); - - string as_string(); - int get_argc(); - const char** get_argv(); - - private: - string m_args; - - string m_argv_string; - char** m_argv; -}; - -#endif diff --git a/support/tools/wrapexec/src/Argv.cc b/support/tools/wrapexec/src/Argv.cc deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/support/tools/wrapexec/src/Makefile.am b/support/tools/wrapexec/src/Makefile.am deleted file mode 100644 index 63f3a5a9e24..00000000000 --- a/support/tools/wrapexec/src/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ - -INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/config - -AM_CFLAGS = # -DDEBUG -AM_CPPFLAGS = # -DDEBUG - -bin_PROGRAMS = wrapexec_wrapper -wrapexec_wrapper_SOURCES = wrapexec.cc ArgList.cc ArgList.h -nodist_wrapexec_wrapper_SOURCES = wrapexec_paths.h -wrapexec_wrapper_LDADD = $(top_builddir)/config/libconfig.a - -wrapexec_paths.h: $(srcdir)/wrapexec_paths.h.in - sed -e 's%WRAPEXEC_CFG_PATH_PLACEHOLDER%$(sysconfdir)%' < $(srcdir)/wrapexec_paths.h.in > wrapexec_paths.h -wrapexec.cc: wrapexec_paths.h - -noinst_DATA = wrapexec.cfg.in -nodist_sysconf_DATA = wrapexec.cfg - -EXTRA_DIST = wrapexec.cfg.in wrapexec_paths.h.in - -wrapexec.cfg: $(srcdir)/wrapexec.cfg.in - cp $(srcdir)/wrapexec.cfg.in wrapexec.cfg - -distclean-local: - rm -f wrapexec.cfg - rm -f wrapexec_paths.h diff --git a/support/tools/wrapexec/src/wrapexec.cc b/support/tools/wrapexec/src/wrapexec.cc deleted file mode 100644 index bdcdc17826f..00000000000 --- a/support/tools/wrapexec/src/wrapexec.cc +++ /dev/null @@ -1,374 +0,0 @@ -/* wrapexec.c: run a binary under the control of some tool such as valgrind or - * gdb without the knowledge of the invoking program (e.g. shell or glish). - * This is useful to debug and profile programs that are invoked as - * part of some framework which doesn't support starting those binaries - * under gdb or valgrind control. - * - * Scenario: - * One wants to run binary "analysis" under valgrind control. To do this - * you create a symbolic link from analysis.wrap_valgrind to the wrapexec binary: - * e.g. ln -s /usr/local/bin/wrapexec analysis. Now you change the invokation of the - * program from "analysis" to "analysis.wrap_valgrind". Now the correct binary analysis - * will be started under the control of valgrind. - * - * Copyright (C) 2000,2001,2002 - * ASTRON (Netherlands Foundation for Research in Astronomy) - * P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * $Id$ - * - * $Log$ - * Revision 1.2 2003/01/14 14:26:03 wierenga - * %[BugId: 158]% - * - * Now uses $HOME/.wrapexec.cfg instead of $HOME/.wrapexec - * - * wrapexec script checks for existence of system or user configuration file. - * - * Fixed problem with extracting inode from 'ls -iL' output. - * - * Revision 1.1 2003/01/08 10:03:56 wierenga - * %[BugId: 158]% - * - * This is the initial implementation of the wrapexec tool. - * - * - */ - -#include <Config.h> -#include <glob.h> -#include <ArgList.h> - -#include <stdio.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/param.h> -#include <signal.h> -#include <errno.h> -#include <string.h> -#include <stdlib.h> -#include <iostream> - -#include <wrapexec_paths.h> - -#define CONFIG_PATH_LEN 512 -#define CONFIG_ARG_LEN 512 - -string substitute(const char* subst_in, int argc, char** argv) -{ - ArgList a(subst_in); - ArgList allargs(argc, argv); - ArgList optionargs(argc-1, &argv[1]); - -#ifdef DEBUG - fprintf(stderr, "allargs = %s\n", allargs.as_string().c_str()); -#endif - - a.substitute("%%", allargs.as_string()); - -#ifdef DEBUG - fprintf(stderr, "optionargs = %s\n", optionargs.as_string().c_str()); -#endif - - a.substitute("%*", optionargs.as_string()); - -#ifdef DEBUG - fprintf(stderr, "substitute individual args\n"); -#endif - - char acpid[10]; - sprintf(acpid, "%d", getpid()); - a.substitute("%pid", string(acpid)); - -#ifdef DEBUG - cerr << "%pid = " << string(acpid) << endl; -#endif - - for (int i = 0; i < argc; i++) - { - char pat[8]; - sprintf(pat, "%%%d", i); - a.substitute(pat, argv[i]); - } - - return a.as_string(); -} - -Config* config_read_file() -{ - string cfgname; - Config* cfg = 0; - - // - // Construct path to config file - // - if (getenv("HOME")) - { - // construct the config file name - cfgname = string(getenv("HOME")) + string("/.wrapexec.cfg"); - - // try to read the config file - try { cfg = new Config(cfgname.c_str()); } - catch (const char* s) - { - delete cfg; - cfg = 0; - - // failed to read $HOME/.wrapexec.cfg - // now read $(datadir)/wrapexec.cfg - cfgname = string(WRAPEXEC_CFG_PATH); - try { cfg = new Config(cfgname.c_str()); } - catch (const char* s) - { - delete cfg; - cfg = 0; - } - } - } - - return cfg; -} - -bool config_find_tool_section(Config* cfg, const string& name) -{ - bool result = false; - int i = 1; - - if (!cfg) return false; - - // - // Find app name in configuration - // - while(cfg->block(i)) - { -#ifdef DEBUG - printf("block %d = %s\n", i, cfg->block(i)); -#endif - if (string(cfg->block(i)) == name) - { - result = true; - break; - } - i++; - } - - return result; -} - -string extract_tool_name(const char* path) -{ - string result = string(path); - int pos; - - // - // Get the name of the wrapper app - // - pos = result.find_last_of('_'); - if (pos < 0) - { - result = ""; - } - else - { - result = result.substr(pos+1); - } - - return result; -} - -string extract_program_name(const char* path) -{ - string result = string(path); - - // - // Get position of last '/' and last _ - // - int slash = result.find_last_of('/'); - int uscore = result.find_last_of('_'); - if (slash < 0 || uscore < 0) - { - result = ""; - } - else - { - result = result.substr(slash+1,uscore); - } - - return result; -} - -int main(int argc, char* argv[]) -{ - Config* cfg = 0; - - cfg = config_read_file(); - if (!cfg) - { - cerr << "wrapexec_wrapper: error: could not read configuration file from '" - << WRAPEXEC_CFG_PATH << "' or " << "'$HOME/.wrapexec.cfg'" << endl; - exit(1); - } - - // - // Determine path to the binary - // - string apppath; - char *cwd = getcwd(NULL, 0); - if ('/' == *argv[0]) - { - apppath = string(argv[0]); - } - else - { - apppath = string(cwd) + string("/") + string(argv[0]); - } - free(cwd); - - // - // Find a wrapper link, e.g. binary.wrap_valgrind - // - glob_t globbuf; - globbuf.gl_offs = 0; - int globerr = 0; - string searchstring = apppath + string(".wrap_*"); - -#ifdef DEBUG - cerr << "globpattern = " << searchstring << endl; -#endif - - if ((globerr = glob(searchstring.c_str(), - GLOB_ERR | GLOB_MARK | GLOB_DOOFFS, NULL, &globbuf)) < 0) - { - switch(globerr) - { - case GLOB_NOSPACE: - fprintf(stderr, "Error: out of memory while searching for wrapper link.\n"); - break; - case GLOB_ABORTED: - fprintf(stderr, "Error: read error while searching for wrapper link.\n"); - break; - case GLOB_NOMATCH: - fprintf(stderr, "Error: no wrapper links found.\n"); - break; - default: - fprintf(stderr, "Error: unknown error while searching for wrapper links.\n"); - break; - } - exit(1); - } - - if (0 == globbuf.gl_pathv[0]) - { - fprintf(stderr, "Error: could not find wrapper link. Searched for '%s'\n", - searchstring.c_str()); - exit(1); - } - - // absolute path to the real binary is in gl_pathv[0] - string programname = string(globbuf.gl_pathv[0]); - if ("" == programname) - { - cerr << "Error: could not find program name." << endl; - exit(1); - } - argv[0] = strdup(programname.c_str()); - - // extract the tool name from the first matching file name - string toolname = extract_tool_name(globbuf.gl_pathv[0]); - if ("" == toolname) - { - cerr << "Error: could not find wrapper tool name." << endl; - exit(1); - } - - // free the glob buffer - globfree(&globbuf); - - // check if the tool section exists - if (!config_find_tool_section(cfg, toolname)) - { - cerr << "Error: could not find section for tool '" << toolname - << "' in configuration file." << endl; - exit(1); - } - - // read tool definition from the selected tool section of the configuration file - const char* init = cfg->value(toolname.c_str(), "init"); - const char* tool = cfg->value(toolname.c_str(), "tool"); - const char* toolstdout = cfg->value(toolname.c_str(), "stdout"); - const char* toolstderr = cfg->value(toolname.c_str(), "stderr"); - const char* toolargs = cfg->value(toolname.c_str(), "toolargs"); - - string sinit; - string stoolargs; - - // substitute variables in the 'init' option - if (init) - { - sinit = substitute(init, argc, argv); - } - - // assign default value for 'toolargs' if needed - if (!toolargs) - { - toolargs="%%"; - } - -#ifdef DEBUG - fprintf(stderr, "substitute toolargs\n"); -#endif - - // substitute variables in the 'toolargs' option - stoolargs = substitute(toolargs, argc, argv); - -#ifdef DEBUG - cerr << "toolargs = " << stoolargs << endl; -#endif - -#ifdef DEBUG - // print final values - if (init) cerr << "init = " << sinit << endl; - if (tool) cerr << "tool = " << tool << endl; - if (toolargs) cerr << "toolargs = " << stoolargs << endl; -#endif - - if (sinit.size() > 0) - { - cerr << "ShellExec: " << sinit.c_str() << endl; - system(sinit.c_str()); - } - - if (tool) stoolargs.insert(0, string(tool) + string(" ")); - - ArgList toolarglist(stoolargs); - char** tal = (char**)toolarglist.get_argv(); - - // still needed to free this memory - free(argv[0]); - -#ifdef DEBUG - cerr << "Execing: " << stoolargs << endl; -#endif - - if (execvp(tal[0], &tal[0]) < 0) - { - perror("execvp"); - exit(1); - } - - return 1; -} diff --git a/support/tools/wrapexec/src/wrapexec.cfg.in b/support/tools/wrapexec/src/wrapexec.cfg.in deleted file mode 100644 index b3bdc76c05a..00000000000 --- a/support/tools/wrapexec/src/wrapexec.cfg.in +++ /dev/null @@ -1,50 +0,0 @@ -# -# wrapexec configuration file -# -# Each section defines the options for a single tool. All options are optional :-). -# The possible options are: -# -# [toolname] -# init="echo %* > /tmp/e.%pid" # These commands are executed using the shell -# # prior to running the tool. -# tool=/path/to/tool/binary # The path to the tool binary (may be empty). -# toolargs="-tool -options %%" # options that should be passed to the tool -# toolstdout=/path/to/output/file # (NOT IMPLEMENTED YET) tool stdout is redirected to this file -# toolstderr=/path/to/output/file # (NOT IMPLEMENTED YET) tool stderr is redirected to this file -# -# The following expansions are carried out on the 'init' and 'toolargs' options. -# -# %% is expanded to all arguments of the wrapped program, e.g. "/bin/echo /tmp/testfile" -# %* is expanded to all but the first argument (program name), e.g. "/tmp/testfile" -# %pid is expanded to the PID of the wrapexec binary (which is execed to become the tool binary) -# %0 is expanded to the program name -# %1 is expanded to the first positional argument -# %n is expanded to the n-th positional argument -# - -[ddd] -init=\ - echo file %0 >> /tmp/ddd.%pid \ - && echo break main >> /tmp/ddd.%pid \ - && echo run %* > /tmp/ddd.%pid -tool=/usr/bin/ddd -toolargs=-x /tmp/ddd.%pid %0 - -[strace] -tool=/usr/bin/strace -toolstdout=/tmp/strace.stdout -toolstderr=/tmp/strace.stderr -toolargs=-f -ff -ostrace.log %% - -[valgrind] -tool=/usr/local/bin/valgrind -toolargs=--cachesim=yes --show-reachable=yes --gdb-attach=yes %% - -[time] -tool=/usr/bin/time -toolargs=--output=time.log %% - -[none] -# intentionally left empty - - diff --git a/support/tools/wrapexec/src/wrapexec_paths.h.in b/support/tools/wrapexec/src/wrapexec_paths.h.in deleted file mode 100644 index 43326635c62..00000000000 --- a/support/tools/wrapexec/src/wrapexec_paths.h.in +++ /dev/null @@ -1,2 +0,0 @@ - -#define WRAPEXEC_CFG_PATH "WRAPEXEC_CFG_PATH_PLACEHOLDER/wrapexec.cfg" -- GitLab