changeset 13511:51e16c7a5685

remove unmaintained 'graal visualizer'
author Bernhard Urban <bernhard.urban@jku.at>
date Sat, 04 Jan 2014 02:08:33 +0200
parents 294962c0f3f7
children 8085ce95b6f5
files mx/mx_graal.py visualizer/BatikSVGProxy/build.xml visualizer/BatikSVGProxy/manifest.mf visualizer/BatikSVGProxy/nbproject/build-impl.xml visualizer/BatikSVGProxy/nbproject/genfiles.properties visualizer/BatikSVGProxy/nbproject/project.properties visualizer/BatikSVGProxy/nbproject/project.xml visualizer/BatikSVGProxy/nbproject/suite.properties visualizer/BatikSVGProxy/src/com/sun/hotspot/igv/svg/BatikSVG.java visualizer/BatikSVGProxy/src/com/sun/hotspot/igv/svg/Bundle.properties visualizer/BatikSVGProxy/src/com/sun/hotspot/igv/svg/layer.xml visualizer/BatikSVGProxy/src/com/sun/hotspot/igv/svg/package-info.java visualizer/Bytecodes/build.xml visualizer/Bytecodes/manifest.mf visualizer/Bytecodes/nbproject/build-impl.xml visualizer/Bytecodes/nbproject/genfiles.properties visualizer/Bytecodes/nbproject/platform.properties visualizer/Bytecodes/nbproject/project.properties visualizer/Bytecodes/nbproject/project.xml visualizer/Bytecodes/nbproject/suite.properties visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/Bundle.properties visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeNode.java visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewAction.java visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewTopComponent.form visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewTopComponent.java visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewTopComponentSettings.xml visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewTopComponentWstcref.xml visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/MethodNode.java visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/SelectBytecodesAction.java visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/SelectBytecodesCookie.java visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/bytecode.png visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/link.png visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/method.png visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/layer.xml visualizer/ControlFlowEditor/build.xml visualizer/ControlFlowEditor/manifest.mf visualizer/ControlFlowEditor/nbproject/build-impl.xml visualizer/ControlFlowEditor/nbproject/genfiles.properties visualizer/ControlFlowEditor/nbproject/platform.properties visualizer/ControlFlowEditor/nbproject/project.properties visualizer/ControlFlowEditor/nbproject/project.xml visualizer/ControlFlowEditor/nbproject/suite.properties visualizer/ControlFlowEditor/src/META-INF/services/com.oracle.graal.visualizer.editor.CompilationViewerFactory visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/Bundle.properties visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/CfgCompilationViewer.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/CfgCompilationViewerFactory.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/CfgEditorContext.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/AbstractCfgEditorAction.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/Bundle.properties visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HideEdgesAction.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HierarchicalCompoundLayoutAction.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HierarchicalNodeLayoutAction.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ShowEdgesAction.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/CfgScene.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/EdgeSwitchWidget.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/EdgeWidget.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/LoopClusterWidget.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/NodeWidget.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/SelectionWidget.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/SymmetricAnchor.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/layout/HierarchicalCompoundLayout.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/layout/HierarchicalNodeLayout.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/Icons.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/arrangebfs.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/arrangehier.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/arrangeloop.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/autosize_selection.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/bezierrouter.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/cfg.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/cfg32.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/cluster.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/color.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/combine.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/combine_disabled.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/disk.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/fanrouter.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/hideedges.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/hideedges_disabled.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/manhattanrouter.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/showedges.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/showedges_disabled.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/split.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/split_disabled.gif visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/layer.xml visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/CfgEdge.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/CfgEdgeImpl.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/CfgEnv.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/CfgNode.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/CfgNodeImpl.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/LoopInfo.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CFGOptionsCategory.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CFGOptionsPanel.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CFGOptionsPanelController.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CfgPreferences.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CfgPreferencesDefaults.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/ColorChooserButton.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/FlagsEditorPanel.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/FlagsSetting.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/FontChooserDialog.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/visual/BezierWidget.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/visual/PolylineRouter.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/visual/PolylineRouterV2.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/visual/SplineConnectionWidget.java visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/visual/WidgetCollisionCollector.java visualizer/Data/build.xml visualizer/Data/manifest.mf visualizer/Data/nbproject/build-impl.xml visualizer/Data/nbproject/genfiles.properties visualizer/Data/nbproject/platform.properties visualizer/Data/nbproject/project.properties visualizer/Data/nbproject/project.xml visualizer/Data/nbproject/suite.properties visualizer/Data/src/at/ssw/visualizer/model/bc/Bytecodes.java visualizer/Data/src/at/ssw/visualizer/model/cfg/BasicBlock.java visualizer/Data/src/at/ssw/visualizer/model/cfg/ControlFlowGraph.java visualizer/Data/src/at/ssw/visualizer/model/cfg/IRInstruction.java visualizer/Data/src/at/ssw/visualizer/model/cfg/State.java visualizer/Data/src/at/ssw/visualizer/model/cfg/StateEntry.java visualizer/Data/src/at/ssw/visualizer/model/interval/ChildInterval.java visualizer/Data/src/at/ssw/visualizer/model/interval/Interval.java visualizer/Data/src/at/ssw/visualizer/model/interval/IntervalList.java visualizer/Data/src/at/ssw/visualizer/model/interval/Range.java visualizer/Data/src/at/ssw/visualizer/model/interval/UsePosition.java visualizer/Data/src/at/ssw/visualizer/model/nc/NativeMethod.java visualizer/Data/src/at/ssw/visualizer/modelimpl/bc/BytecodesImpl.java visualizer/Data/src/at/ssw/visualizer/modelimpl/cfg/BasicBlockImpl.java visualizer/Data/src/at/ssw/visualizer/modelimpl/cfg/IRInstructionImpl.java visualizer/Data/src/at/ssw/visualizer/modelimpl/cfg/StateEntryImpl.java visualizer/Data/src/at/ssw/visualizer/modelimpl/cfg/StateImpl.java visualizer/Data/src/at/ssw/visualizer/modelimpl/interval/ChildIntervalImpl.java visualizer/Data/src/at/ssw/visualizer/modelimpl/interval/IntervalImpl.java visualizer/Data/src/at/ssw/visualizer/modelimpl/interval/IntervalListImpl.java visualizer/Data/src/at/ssw/visualizer/modelimpl/interval/RangeImpl.java visualizer/Data/src/at/ssw/visualizer/modelimpl/interval/UsePositionImpl.java visualizer/Data/src/at/ssw/visualizer/modelimpl/nc/NativeMethodImpl.java visualizer/Data/src/com/sun/hotspot/igv/data/AbstractFolderElement.java visualizer/Data/src/com/sun/hotspot/igv/data/Bundle.properties visualizer/Data/src/com/sun/hotspot/igv/data/ChangedEvent.java visualizer/Data/src/com/sun/hotspot/igv/data/ChangedEventProvider.java visualizer/Data/src/com/sun/hotspot/igv/data/ChangedListener.java visualizer/Data/src/com/sun/hotspot/igv/data/ControllableChangedListener.java visualizer/Data/src/com/sun/hotspot/igv/data/Event.java visualizer/Data/src/com/sun/hotspot/igv/data/Folder.java visualizer/Data/src/com/sun/hotspot/igv/data/FolderElement.java visualizer/Data/src/com/sun/hotspot/igv/data/GraphDocument.java visualizer/Data/src/com/sun/hotspot/igv/data/Group.java visualizer/Data/src/com/sun/hotspot/igv/data/InputBlock.java visualizer/Data/src/com/sun/hotspot/igv/data/InputBlockEdge.java visualizer/Data/src/com/sun/hotspot/igv/data/InputBytecode.java visualizer/Data/src/com/sun/hotspot/igv/data/InputEdge.java visualizer/Data/src/com/sun/hotspot/igv/data/InputGraph.java visualizer/Data/src/com/sun/hotspot/igv/data/InputMethod.java visualizer/Data/src/com/sun/hotspot/igv/data/InputNode.java visualizer/Data/src/com/sun/hotspot/igv/data/Pair.java visualizer/Data/src/com/sun/hotspot/igv/data/Properties.java visualizer/Data/src/com/sun/hotspot/igv/data/Property.java visualizer/Data/src/com/sun/hotspot/igv/data/Source.java visualizer/Data/src/com/sun/hotspot/igv/data/serialization/Parser.java visualizer/Data/src/com/sun/hotspot/igv/data/serialization/Printer.java visualizer/Data/src/com/sun/hotspot/igv/data/serialization/XMLParser.java visualizer/Data/src/com/sun/hotspot/igv/data/serialization/XMLWriter.java visualizer/Data/src/com/sun/hotspot/igv/data/serialization/graphdocument.xsd visualizer/Data/src/com/sun/hotspot/igv/data/services/GraphViewer.java visualizer/Data/src/com/sun/hotspot/igv/data/services/GroupCallback.java visualizer/Data/src/com/sun/hotspot/igv/data/services/InputGraphProvider.java visualizer/Data/src/com/sun/hotspot/igv/data/services/Scheduler.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/ChangedEventTest.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/ControllableChangedListenerTest.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/GroupTest.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/InputGraphTest.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/InputMethodTest.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/PairTest.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/PropertiesTest.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/PropertyTest.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/SourceTest.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/Util.java visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/serialization/ParserTest.java visualizer/Difference/build.xml visualizer/Difference/manifest.mf visualizer/Difference/nbproject/build-impl.xml visualizer/Difference/nbproject/genfiles.properties visualizer/Difference/nbproject/platform.properties visualizer/Difference/nbproject/project.properties visualizer/Difference/nbproject/project.xml visualizer/Difference/nbproject/suite.properties visualizer/Difference/src/com/sun/hotspot/igv/difference/Bundle.properties visualizer/Difference/src/com/sun/hotspot/igv/difference/Difference.java visualizer/Draw2DLibrary/build.xml visualizer/Draw2DLibrary/manifest.mf visualizer/Draw2DLibrary/nbproject/build-impl.xml visualizer/Draw2DLibrary/nbproject/genfiles.properties visualizer/Draw2DLibrary/nbproject/platform.properties visualizer/Draw2DLibrary/nbproject/project.properties visualizer/Draw2DLibrary/nbproject/project.xml visualizer/Draw2DLibrary/nbproject/suite.properties visualizer/Draw2DLibrary/release/modules/ext/org.eclipse.draw2d_3.1.0.jar visualizer/Draw2DLibrary/src/org/eclipse/draw2d/Bundle.properties visualizer/Editor/build.xml visualizer/Editor/manifest.mf visualizer/Editor/nbproject/build-impl.xml visualizer/Editor/nbproject/genfiles.properties visualizer/Editor/nbproject/project.properties visualizer/Editor/nbproject/project.xml visualizer/Editor/nbproject/suite.properties visualizer/Editor/src/META-INF/services/com.sun.hotspot.igv.data.services.GraphViewer visualizer/Editor/src/com/oracle/graal/visualizer/editor/Bundle.properties visualizer/Editor/src/com/oracle/graal/visualizer/editor/CompilationViewer.java visualizer/Editor/src/com/oracle/graal/visualizer/editor/CompilationViewerFactory.java visualizer/Editor/src/com/oracle/graal/visualizer/editor/DiagramViewModel.java visualizer/Editor/src/com/oracle/graal/visualizer/editor/EditorTopComponent.form visualizer/Editor/src/com/oracle/graal/visualizer/editor/EditorTopComponent.java visualizer/Editor/src/com/oracle/graal/visualizer/editor/GraphViewerImplementation.java visualizer/Editor/src/com/oracle/graal/visualizer/editor/NodeQuickSearch.java visualizer/Editor/src/com/oracle/graal/visualizer/editor/SplitCompilationViewer.java visualizer/Editor/src/com/oracle/graal/visualizer/editor/SplitCompilationViewerFactory.java visualizer/Editor/src/com/oracle/graal/visualizer/editor/layer.xml visualizer/Filter/build.xml visualizer/Filter/manifest.mf visualizer/Filter/nbproject/build-impl.xml visualizer/Filter/nbproject/genfiles.properties visualizer/Filter/nbproject/platform.properties visualizer/Filter/nbproject/project.properties visualizer/Filter/nbproject/project.xml visualizer/Filter/nbproject/suite.properties visualizer/Filter/src/com/sun/hotspot/igv/filter/AbstractFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/Bundle.properties visualizer/Filter/src/com/sun/hotspot/igv/filter/ColorFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/CombineFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/ConnectionFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/CustomFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/EdgeColorIndexFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/EditFilterDialog.form visualizer/Filter/src/com/sun/hotspot/igv/filter/EditFilterDialog.java visualizer/Filter/src/com/sun/hotspot/igv/filter/Filter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/FilterChain.java visualizer/Filter/src/com/sun/hotspot/igv/filter/FilterChainProvider.java visualizer/Filter/src/com/sun/hotspot/igv/filter/FilterSetting.java visualizer/Filter/src/com/sun/hotspot/igv/filter/GradientColorFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/RemoveFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/RemoveInputsFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/RemoveSelfLoopsFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/SplitFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/UnconnectedSlotFilter.java visualizer/Filter/src/com/sun/hotspot/igv/filter/helper.js visualizer/Filter/src/com/sun/hotspot/igv/filter/layer.xml visualizer/FilterWindow/build.xml visualizer/FilterWindow/manifest.mf visualizer/FilterWindow/nbproject/build-impl.xml visualizer/FilterWindow/nbproject/genfiles.properties visualizer/FilterWindow/nbproject/project.properties visualizer/FilterWindow/nbproject/project.xml visualizer/FilterWindow/nbproject/suite.properties visualizer/FilterWindow/src/META-INF/services/com.sun.hotspot.igv.filter.FilterChainProvider visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/Bundle.properties visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/CheckListView.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/CheckNode.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/CheckNodeListModel.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/CheckRenderer.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterChainProviderImplementation.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterNode.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterTopComponent.form visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterTopComponent.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterTopComponentSettings.xml visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterTopComponentWstcref.xml visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/Bundle.properties visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/FilterAction.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/MoveFilterDownAction.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/MoveFilterUpAction.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/NewFilterAction.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/RemoveFilterAction.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/RemoveFilterSettingsAction.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/SaveFilterSettingsAction.java visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/customRightTopWsmode.xml visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/add.png visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/delete.png visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/down.png visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/minus.png visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/plus.png visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/up.png visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/layer.xml visualizer/Graal/build.xml visualizer/Graal/manifest.mf visualizer/Graal/nbproject/build-impl.xml visualizer/Graal/nbproject/genfiles.properties visualizer/Graal/nbproject/project.properties visualizer/Graal/nbproject/project.xml visualizer/Graal/nbproject/suite.properties visualizer/Graal/src/com/sun/hotspot/igv/graal/Bundle.properties visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/GraalCFGFilter.java visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/GraalColoringFilter.java visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/GraalEdgeColorFilter.java visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/beginend.filter visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/callgraph.filter visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/cfg.filter visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/color.filter visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/edgeColor.filter visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/framestatelocks.filter visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/noframestate.filter visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/probability.filter visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/slots.filter visualizer/Graal/src/com/sun/hotspot/igv/graal/layer.xml visualizer/Graph/build.xml visualizer/Graph/manifest.mf visualizer/Graph/nbproject/build-impl.xml visualizer/Graph/nbproject/genfiles.properties visualizer/Graph/nbproject/platform.properties visualizer/Graph/nbproject/project.properties visualizer/Graph/nbproject/project.xml visualizer/Graph/nbproject/suite.properties visualizer/Graph/src/com/sun/hotspot/igv/graph/AndSelector.java visualizer/Graph/src/com/sun/hotspot/igv/graph/Bundle.properties visualizer/Graph/src/com/sun/hotspot/igv/graph/Connection.java visualizer/Graph/src/com/sun/hotspot/igv/graph/Diagram.java visualizer/Graph/src/com/sun/hotspot/igv/graph/Figure.java visualizer/Graph/src/com/sun/hotspot/igv/graph/InputSlot.java visualizer/Graph/src/com/sun/hotspot/igv/graph/InvertSelector.java visualizer/Graph/src/com/sun/hotspot/igv/graph/MatcherSelector.java visualizer/Graph/src/com/sun/hotspot/igv/graph/OrSelector.java visualizer/Graph/src/com/sun/hotspot/igv/graph/OutputSlot.java visualizer/Graph/src/com/sun/hotspot/igv/graph/PredecessorSelector.java visualizer/Graph/src/com/sun/hotspot/igv/graph/Selector.java visualizer/Graph/src/com/sun/hotspot/igv/graph/Slot.java visualizer/Graph/src/com/sun/hotspot/igv/graph/SuccessorSelector.java visualizer/Graph/src/com/sun/hotspot/igv/graph/services/DiagramProvider.java visualizer/HierarchicalLayout/build.xml visualizer/HierarchicalLayout/manifest.mf visualizer/HierarchicalLayout/nbproject/build-impl.xml visualizer/HierarchicalLayout/nbproject/genfiles.properties visualizer/HierarchicalLayout/nbproject/platform.properties visualizer/HierarchicalLayout/nbproject/project.properties visualizer/HierarchicalLayout/nbproject/project.xml visualizer/HierarchicalLayout/nbproject/suite.properties visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/Bundle.properties visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/Edge.java visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/Graph.java visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/HierarchicalLayoutManager.java visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/Node.java visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/Timing.java visualizer/Layout/build.xml visualizer/Layout/manifest.mf visualizer/Layout/nbproject/build-impl.xml visualizer/Layout/nbproject/genfiles.properties visualizer/Layout/nbproject/platform.properties visualizer/Layout/nbproject/project.properties visualizer/Layout/nbproject/project.xml visualizer/Layout/nbproject/suite.properties visualizer/Layout/src/com/sun/hotspot/igv/layout/Bundle.properties visualizer/Layout/src/com/sun/hotspot/igv/layout/LayoutGraph.java visualizer/Layout/src/com/sun/hotspot/igv/layout/LayoutManager.java visualizer/Layout/src/com/sun/hotspot/igv/layout/Link.java visualizer/Layout/src/com/sun/hotspot/igv/layout/Port.java visualizer/Layout/src/com/sun/hotspot/igv/layout/Vertex.java visualizer/LogViewer/build.xml visualizer/LogViewer/manifest.mf visualizer/LogViewer/nbproject/build-impl.xml visualizer/LogViewer/nbproject/genfiles.properties visualizer/LogViewer/nbproject/project.properties visualizer/LogViewer/nbproject/project.xml visualizer/LogViewer/nbproject/suite.properties visualizer/LogViewer/src/META-INF/services/com.oracle.graal.visualizer.editor.CompilationViewerFactory visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/Bundle.properties visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/LogCompilationViewer.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/LogCompilationViewerFactory.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/layer.xml visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/LogLine.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/LogModel.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/LogParser.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/Method.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/Node.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/Scope.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/Filter.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/FilterManager.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/FullTextFilter.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/MethodFilter.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/NodeFilter.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/ScopeFilter.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/io/FileLine.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/io/ProgressMonitor.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/io/SeekableFile.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/io/SeekableFileReader.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/BookmarkDialog.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/BookmarkableLogViewer.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/ImportLogErrorDialog.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/LogScene.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/actions/ImportLogAction.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/arrow_down.png visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/arrow_up.png visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/bookmark_back.png visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/bookmark_forward.png visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/bookmark_list.png visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/import_log.png visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/loading.gif visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/model/LogTableModel.java visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/model/TableLine.java visualizer/OutlineView/build.xml visualizer/OutlineView/manifest.mf visualizer/OutlineView/nbproject/build-impl.xml visualizer/OutlineView/nbproject/genfiles.properties visualizer/OutlineView/nbproject/platform.properties visualizer/OutlineView/nbproject/project.properties visualizer/OutlineView/nbproject/project.xml visualizer/OutlineView/nbproject/suite.properties visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/Bundle.properties visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/CompilationNode.java visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/OutlineTopComponent.form visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/OutlineTopComponent.java visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/actions/ImportAction.java visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/actions/RemoveAction.java visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/actions/RemoveAllAction.java visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/actions/SaveAllAction.java visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/actions/SaveAsAction.java visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/import.png visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/leaf_node.gif visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/node.gif visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/remove.png visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/removeall.png visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/save.png visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/saveall.gif visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/layer.xml visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/server/Bundle.properties visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/server/Client.java visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/server/Server.java visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/server/ServerCallback.java visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/server/ServerPanel.java visualizer/SelectionCoordinator/src/com/sun/hotspot/igv/selectioncoordinator/Bundle.properties visualizer/SelectionCoordinator/src/com/sun/hotspot/igv/selectioncoordinator/SelectionCoordinator.java visualizer/Settings/build.xml visualizer/Settings/manifest.mf visualizer/Settings/nbproject/build-impl.xml visualizer/Settings/nbproject/genfiles.properties visualizer/Settings/nbproject/platform.properties visualizer/Settings/nbproject/project.properties visualizer/Settings/nbproject/project.xml visualizer/Settings/nbproject/suite.properties visualizer/Settings/src/com/sun/hotspot/igv/settings/Bundle.properties visualizer/Settings/src/com/sun/hotspot/igv/settings/Settings.java visualizer/Settings/src/com/sun/hotspot/igv/settings/ViewOptionsCategory.java visualizer/Settings/src/com/sun/hotspot/igv/settings/ViewOptionsPanelController.java visualizer/Settings/src/com/sun/hotspot/igv/settings/ViewPanel.form visualizer/Settings/src/com/sun/hotspot/igv/settings/ViewPanel.java visualizer/Settings/src/com/sun/hotspot/igv/settings/layer.xml visualizer/Settings/src/com/sun/hotspot/igv/settings/settings.png visualizer/SharedActions/build.xml visualizer/SharedActions/manifest.mf visualizer/SharedActions/nbproject/build-impl.xml visualizer/SharedActions/nbproject/genfiles.properties visualizer/SharedActions/nbproject/project.properties visualizer/SharedActions/nbproject/project.xml visualizer/SharedActions/nbproject/suite.properties visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/Bundle.properties visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ExportSVGAction.java visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ExportSVGCookie.java visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ShowAllAction.java visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ZoomCookie.java visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ZoomInAction.java visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ZoomOutAction.java visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/images/autosize.gif visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/images/export.png visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/images/zoomin.gif visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/images/zoomout.gif visualizer/SnapshotsView/build.xml visualizer/SnapshotsView/manifest.mf visualizer/SnapshotsView/nbproject/build-impl.xml visualizer/SnapshotsView/nbproject/genfiles.properties visualizer/SnapshotsView/nbproject/platform.properties visualizer/SnapshotsView/nbproject/project.properties visualizer/SnapshotsView/nbproject/project.xml visualizer/SnapshotsView/nbproject/suite.properties visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/Bundle.properties visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/SnapshotTopComponent.form visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/SnapshotTopComponent.java visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/actions/NextSnapshotAction.java visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/actions/PrevSnapshotAction.java visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/belowExplorerWsmode.xml visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/images/next_snapshot.png visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/images/prev_snapshot.png visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/layer.xml visualizer/Util/build.xml visualizer/Util/manifest.mf visualizer/Util/nbproject/build-impl.xml visualizer/Util/nbproject/genfiles.properties visualizer/Util/nbproject/platform.properties visualizer/Util/nbproject/project.properties visualizer/Util/nbproject/project.xml visualizer/Util/nbproject/suite.properties visualizer/Util/src/com/oracle/graal/visualizer/util/LookupUtils.java visualizer/Util/src/com/sun/hotspot/igv/util/BoundedZoomAction.java visualizer/Util/src/com/sun/hotspot/igv/util/Bundle.properties visualizer/Util/src/com/sun/hotspot/igv/util/ColorIcon.java visualizer/Util/src/com/sun/hotspot/igv/util/CompilationViewModel.java visualizer/Util/src/com/sun/hotspot/igv/util/DoubleClickAction.java visualizer/Util/src/com/sun/hotspot/igv/util/DoubleClickHandler.java visualizer/Util/src/com/sun/hotspot/igv/util/ExtendedSatelliteComponent.java visualizer/Util/src/com/sun/hotspot/igv/util/ExtendedSelectAction.java visualizer/Util/src/com/sun/hotspot/igv/util/PropertiesSheet.java visualizer/Util/src/com/sun/hotspot/igv/util/RangeSlider.java visualizer/Util/src/com/sun/hotspot/igv/util/RangeSliderModel.java visualizer/View/build.xml visualizer/View/manifest.mf visualizer/View/nbproject/build-impl.xml visualizer/View/nbproject/genfiles.properties visualizer/View/nbproject/platform.properties visualizer/View/nbproject/project.properties visualizer/View/nbproject/project.xml visualizer/View/nbproject/suite.properties visualizer/View/src/META-INF/services/com.oracle.graal.visualizer.editor.CompilationViewerFactory visualizer/View/src/com/sun/hotspot/igv/view/Bundle.properties visualizer/View/src/com/sun/hotspot/igv/view/actions/Bundle.properties visualizer/View/src/com/sun/hotspot/igv/view/actions/ExpandPredecessorsAction.java visualizer/View/src/com/sun/hotspot/igv/view/actions/ExpandSuccessorsAction.java visualizer/View/src/com/sun/hotspot/igv/view/actions/ExtractAction.java visualizer/View/src/com/sun/hotspot/igv/view/actions/HideAction.java visualizer/View/src/com/sun/hotspot/igv/view/actions/MouseOverAction.java visualizer/View/src/com/sun/hotspot/igv/view/actions/PredSuccAction.java visualizer/View/src/com/sun/hotspot/igv/view/images/blocks.gif visualizer/View/src/com/sun/hotspot/igv/view/images/expand.gif visualizer/View/src/com/sun/hotspot/igv/view/images/extract.gif visualizer/View/src/com/sun/hotspot/igv/view/images/hide.gif visualizer/View/src/com/sun/hotspot/igv/view/images/overview.png visualizer/View/src/com/sun/hotspot/igv/view/images/pan_mode.png visualizer/View/src/com/sun/hotspot/igv/view/images/predsucc.gif visualizer/View/src/com/sun/hotspot/igv/view/images/selection_mode.png visualizer/View/src/com/sun/hotspot/igv/view/images/zoom_in.png visualizer/View/src/com/sun/hotspot/igv/view/images/zoom_out.png visualizer/View/src/com/sun/hotspot/igv/view/layer.xml visualizer/View/src/com/sun/hotspot/igv/view/scene/CustomizablePanWidgetAction.java visualizer/View/src/com/sun/hotspot/igv/view/scene/DiagramScene.java visualizer/View/src/com/sun/hotspot/igv/view/scene/GraphCompilationViewer.java visualizer/View/src/com/sun/hotspot/igv/view/scene/GraphCompilationViewerFactory.java visualizer/View/src/com/sun/hotspot/igv/view/widgets/FigureWidget.java visualizer/View/src/com/sun/hotspot/igv/view/widgets/InputSlotWidget.java visualizer/View/src/com/sun/hotspot/igv/view/widgets/LineWidget.java visualizer/View/src/com/sun/hotspot/igv/view/widgets/OutputSlotWidget.java visualizer/View/src/com/sun/hotspot/igv/view/widgets/SlotWidget.java visualizer/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties visualizer/branding/core/core.jar/org/netbeans/core/startup/frame.gif visualizer/branding/core/core.jar/org/netbeans/core/startup/frame32.gif visualizer/branding/core/core.jar/org/netbeans/core/startup/frame48.gif visualizer/branding/core/core.jar/org/netbeans/core/startup/splash.gif visualizer/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties visualizer/build.xml visualizer/nbproject/build-impl.xml visualizer/nbproject/genfiles.properties visualizer/nbproject/platform.properties visualizer/nbproject/platform.xml visualizer/nbproject/project.properties visualizer/nbproject/project.xml
diffstat 547 files changed, 0 insertions(+), 36651 deletions(-) [+]
line wrap: on
line diff
--- a/mx/mx_graal.py	Sat Jan 04 02:03:51 2014 +0200
+++ b/mx/mx_graal.py	Sat Jan 04 02:08:33 2014 +0200
@@ -1128,14 +1128,6 @@
 
     dacapo(['100', 'eclipse', '-esa'])
 
-def gv(args):
-    """run the Graal Visualizer"""
-    with open(join(_graal_home, '.graal_visualizer.log'), 'w') as fp:
-        mx.logv('[Graal Visualizer log is in ' + fp.name + ']')
-        if not exists(join(_graal_home, 'visualizer', 'build.xml')):
-            mx.logv('[This initial execution may take a while as the NetBeans platform needs to be downloaded]')
-        mx.run(['ant', '-f', join(_graal_home, 'visualizer', 'build.xml'), '-l', fp.name, 'run'])
-
 def igv(args):
     """run the Ideal Graph Visualizer"""
     with open(join(_graal_home, '.ideal_graph_visualizer.log'), 'w') as fp:
@@ -1517,7 +1509,6 @@
         'specjbb2013': [specjbb2013, '[VM options] [-- [SPECjbb2013 options]]'],
         'specjbb2005': [specjbb2005, '[VM options] [-- [SPECjbb2005 options]]'],
         'gate' : [gate, '[-options]'],
-        'gv' : [gv, ''],
         'bench' : [bench, '[-resultfile file] [all(default)|dacapo|specjvm2008|bootstrap]'],
         'unittest' : [unittest, '[VM options] [filters...]', _unittestHelpSuffix],
         'longunittest' : [longunittest, '[VM options] [filters...]', _unittestHelpSuffix],
--- a/visualizer/BatikSVGProxy/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.svg" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.svg.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/BatikSVGProxy/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.svg
-OpenIDE-Module-Layer: com/sun/hotspot/igv/svg/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/svg/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/BatikSVGProxy/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.svg-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/BatikSVGProxy/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=ebcf0422
-nbproject/build-impl.xml.script.CRC32=42ef3ff6
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.47.1
--- a/visualizer/BatikSVGProxy/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/BatikSVGProxy/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.svg</code-name-base>
-            <suite-component/>
-            <module-dependencies/>
-            <public-packages>
-                <package>com.sun.hotspot.igv.svg</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/BatikSVGProxy/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/BatikSVGProxy/src/com/sun/hotspot/igv/svg/BatikSVG.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.svg;
-
-import java.awt.Graphics2D;
-import java.io.Writer;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import org.w3c.dom.DOMImplementation;
-
-/**
- * Utility class
- * @author Thomas Wuerthinger
- */
-public class BatikSVG {
-
-    private BatikSVG() {
-    }
-
-    private static Constructor SVGGraphics2DConstructor;
-    private static Method streamMethod;
-    private static Method createDefaultMethod;
-    private static Method getDOMImplementationMethod;
-    private static Method setEmbeddedFontsOnMethod;
-    private static Class<?> classSVGGraphics2D;
-
-    /**
-     * Creates a graphics object that allows to be exported to SVG data using the {@link #printToStream(Graphics2D, Writer, boolean) printToStream} method.
-     * @return the newly created Graphics2D object or null if the library does not exist
-     */
-    public static Graphics2D createGraphicsObject() {
-        try {
-            if (SVGGraphics2DConstructor == null) {
-                ClassLoader cl = BatikSVG.class.getClassLoader();
-                Class<?> classGenericDOMImplementation = cl.loadClass("org.apache.batik.dom.GenericDOMImplementation");
-                Class<?> classSVGGeneratorContext = cl.loadClass("org.apache.batik.svggen.SVGGeneratorContext");
-                classSVGGraphics2D = cl.loadClass("org.apache.batik.svggen.SVGGraphics2D");
-                getDOMImplementationMethod = classGenericDOMImplementation.getDeclaredMethod("getDOMImplementation", new Class[0]);
-                createDefaultMethod = classSVGGeneratorContext.getDeclaredMethod("createDefault", new Class[]{org.w3c.dom.Document.class});
-                setEmbeddedFontsOnMethod = classSVGGeneratorContext.getDeclaredMethod("setEmbeddedFontsOn", new Class[]{boolean.class});
-                streamMethod = classSVGGraphics2D.getDeclaredMethod("stream", Writer.class, boolean.class);
-                SVGGraphics2DConstructor = classSVGGraphics2D.getConstructor(classSVGGeneratorContext, boolean.class);
-            }
-            DOMImplementation dom = (DOMImplementation) getDOMImplementationMethod.invoke(null);
-            org.w3c.dom.Document document = dom.createDocument("http://www.w3.org/2000/svg", "svg", null);
-            Object ctx = createDefaultMethod.invoke(null, document);
-            setEmbeddedFontsOnMethod.invoke(ctx, true);
-            Graphics2D svgGenerator = (Graphics2D) SVGGraphics2DConstructor.newInstance(ctx, true);
-            return svgGenerator;
-        } catch (ClassNotFoundException e) {
-            return null;
-        } catch (NoSuchMethodException e) {
-            return null;
-        } catch (IllegalAccessException e) {
-            return null;
-        } catch (InvocationTargetException e) {
-            return null;
-        } catch (InstantiationException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Serializes a graphics object to a stream in SVG format.
-     * @param svgGenerator the graphics object. Only graphics objects created by the {@link #createGraphicsObject() createGraphicsObject} method are valid.
-     * @param stream the stream to which the data is written
-     * @param useCSS whether to use CSS styles in the SVG output
-     */
-    public static void printToStream(Graphics2D svgGenerator, Writer stream, boolean useCSS) {
-        assert classSVGGraphics2D != null;
-        assert classSVGGraphics2D.isInstance(svgGenerator);
-        try {
-            streamMethod.invoke(svgGenerator, stream, useCSS);
-        } catch (IllegalAccessException e) {
-            assert false;
-        } catch (InvocationTargetException e) {
-            assert false;
-        }
-    }
-}
--- a/visualizer/BatikSVGProxy/src/com/sun/hotspot/igv/svg/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=BatikSVGProxy
--- a/visualizer/BatikSVGProxy/src/com/sun/hotspot/igv/svg/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
-<filesystem>
-</filesystem>
--- a/visualizer/BatikSVGProxy/src/com/sun/hotspot/igv/svg/package-info.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-/**
- * This package is used to proxy the SVG export functionality of the BatikSVG library. Reflection is used such that the
- * library is optional and need not be present at build time.
- */
-package com.sun.hotspot.igv.svg;
-
--- a/visualizer/Bytecodes/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.bytecodes" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.bytecodes.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Bytecodes/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.bytecodes
-OpenIDE-Module-Layer: com/sun/hotspot/igv/bytecodes/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/bytecodes/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Bytecodes/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.bytecodes-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Bytecodes/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=1dee290d
-build.xml.script.CRC32=d594034f
-build.xml.stylesheet.CRC32=79c3b980
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=1dee290d
-nbproject/build-impl.xml.script.CRC32=b4dab126
-nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
--- a/visualizer/Bytecodes/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/Bytecodes/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/Bytecodes/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.bytecodes</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.graph</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.jdesktop.layout</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.16.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.explorer</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.34.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.nodes</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.20.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.14.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.6.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.39.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages/>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Bytecodes/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-CTL_BytecodeViewAction=Bytecode
-CTL_BytecodeViewTopComponent=Bytecode
-CTL_SelectBytecodesAction=Select nodes
-HINT_BytecodeViewTopComponent=Shows the bytecode associated with the displayed graph.
-OpenIDE-Module-Name=Bytecodes
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeNode.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.bytecodes;
-
-import com.sun.hotspot.igv.data.InputBytecode;
-import com.sun.hotspot.igv.data.InputGraph;
-import com.sun.hotspot.igv.data.InputNode;
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.Properties.StringPropertyMatcher;
-import java.awt.Image;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import javax.swing.Action;
-import org.openide.nodes.AbstractNode;
-import org.openide.nodes.Children;
-import org.openide.nodes.Node;
-import org.openide.util.ImageUtilities;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class BytecodeNode extends AbstractNode {
-
-    private Set<InputNode> nodes;
-
-    public BytecodeNode(InputBytecode bytecode, InputGraph graph, String bciValue) {
-
-        super(Children.LEAF);
-        String displayName = bytecode.getBci() + " " + bytecode.getName() + " " + bytecode.getOperands();
-
-        bciValue = bytecode.getBci() + " " + bciValue;
-        bciValue = bciValue.trim();
-
-        Properties.PropertySelector<InputNode> selector = new Properties.PropertySelector<>(graph.getNodes());
-        StringPropertyMatcher matcher = new StringPropertyMatcher("bci", bciValue);
-        List<InputNode> nodeList = selector.selectMultiple(matcher);
-        if (nodeList.size() > 0) {
-            nodes = new LinkedHashSet<>();
-            for (InputNode n : nodeList) {
-                nodes.add(n);
-            }
-            displayName += " (" + nodes.size() + " nodes)";
-        }
-        
-        if (bytecode.getComment() != null) {
-            displayName += " // " + bytecode.getComment();
-        }
-        
-        this.setDisplayName(displayName);
-    }
-
-    @Override
-    public Image getIcon(int i) {
-        if (nodes != null) {
-            return ImageUtilities.loadImage("com/sun/hotspot/igv/bytecodes/images/link.png");
-        } else {
-            return ImageUtilities.loadImage("com/sun/hotspot/igv/bytecodes/images/bytecode.png");
-        }
-    }
-
-    @Override
-    public Image getOpenedIcon(int i) {
-        return getIcon(i);
-    }
-
-    @Override
-    public Action[] getActions(boolean b) {
-        return new Action[]{(Action) SelectBytecodesAction.findObject(SelectBytecodesAction.class, true)};
-    }
-
-    @Override
-    public Action getPreferredAction() {
-        return (Action) SelectBytecodesAction.findObject(SelectBytecodesAction.class, true);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public <T extends Node.Cookie> T getCookie(Class<T> aClass) {
-        if (aClass == SelectBytecodesCookie.class && nodes != null) {
-            return (T) (new SelectBytecodesCookie(nodes));
-        }
-        return super.getCookie(aClass);
-    }
-}
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.bytecodes;
-
-import java.awt.event.ActionEvent;
-import javax.swing.AbstractAction;
-import org.openide.util.NbBundle;
-import org.openide.windows.TopComponent;
-
-/**
- * @author Thomas Wuerthinger
- */
-public class BytecodeViewAction extends AbstractAction {
-
-    public BytecodeViewAction() {
-        super(NbBundle.getMessage(BytecodeViewAction.class, "CTL_BytecodeViewAction"));
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent evt) {
-        TopComponent win = BytecodeViewTopComponent.findInstance();
-        win.open();
-        win.requestActive();
-    }
-}
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewTopComponent.form	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.3" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout>
-    <DimensionLayout dim="0">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <EmptySpace min="0" pref="400" max="32767" attributes="0"/>
-      </Group>
-    </DimensionLayout>
-    <DimensionLayout dim="1">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <EmptySpace min="0" pref="300" max="32767" attributes="0"/>
-      </Group>
-    </DimensionLayout>
-  </Layout>
-</Form>
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewTopComponent.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.bytecodes;
-
-import com.sun.hotspot.igv.data.Group;
-import com.sun.hotspot.igv.data.InputGraph;
-import com.sun.hotspot.igv.data.services.InputGraphProvider;
-import java.awt.BorderLayout;
-import java.io.Serializable;
-import javax.swing.SwingUtilities;
-import org.openide.ErrorManager;
-import org.openide.explorer.ExplorerManager;
-import org.openide.explorer.ExplorerUtils;
-import org.openide.explorer.view.BeanTreeView;
-import org.openide.util.*;
-import org.openide.windows.TopComponent;
-import org.openide.windows.WindowManager;
-
-/**
- * @author Thomas Wuerthinger
- */
-final class BytecodeViewTopComponent extends TopComponent implements ExplorerManager.Provider, LookupListener {
-
-    private static BytecodeViewTopComponent instance;
-    private static final String PREFERRED_ID = "BytecodeViewTopComponent";
-    private ExplorerManager manager;
-    private BeanTreeView treeView;
-    private Lookup.Result result = null;
-    private MethodNode rootNode;
-
-    private BytecodeViewTopComponent() {
-        initComponents();
-        setName(NbBundle.getMessage(BytecodeViewTopComponent.class, "CTL_BytecodeViewTopComponent"));
-        setToolTipText(NbBundle.getMessage(BytecodeViewTopComponent.class, "HINT_BytecodeViewTopComponent"));
-
-        manager = new ExplorerManager();
-        rootNode = new MethodNode(null, null, "");
-        manager.setRootContext(rootNode);
-
-        setLayout(new BorderLayout());
-
-        treeView = new BeanTreeView();
-        treeView.setRootVisible(false);
-        this.add(BorderLayout.CENTER, treeView);
-        associateLookup(ExplorerUtils.createLookup(manager, getActionMap()));
-    }
-
-    /** This method is called from within the constructor to
-     * initialize the form.
-     * WARNING: Do NOT modify this code. The content of this method is
-     * always regenerated by the Form Editor.
-     */
-    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
-    private void initComponents() {
-
-        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
-        this.setLayout(layout);
-        layout.setHorizontalGroup(
-            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(0, 400, Short.MAX_VALUE)
-        );
-        layout.setVerticalGroup(
-            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(0, 300, Short.MAX_VALUE)
-        );
-    }// </editor-fold>//GEN-END:initComponents
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    // End of variables declaration//GEN-END:variables
-
-    /**
-     * Gets default instance. Do not use directly: reserved for *.settings files only,
-     * i.e. deserialization routines; otherwise you could get a non-deserialized instance.
-     * To obtain the singleton instance, use {@link #findInstance}.
-     */
-    public static synchronized BytecodeViewTopComponent getDefault() {
-        if (instance == null) {
-            instance = new BytecodeViewTopComponent();
-        }
-        return instance;
-    }
-
-    /**
-     * Obtain the BytecodeViewTopComponent instance. Never call {@link #getDefault} directly!
-     */
-    public static synchronized BytecodeViewTopComponent findInstance() {
-        TopComponent win = WindowManager.getDefault().findTopComponent(PREFERRED_ID);
-        if (win == null) {
-            ErrorManager.getDefault().log(ErrorManager.WARNING, "Cannot find BytecodeView component. It will not be located properly in the window system.");
-            return getDefault();
-        }
-        if (win instanceof BytecodeViewTopComponent) {
-            return (BytecodeViewTopComponent) win;
-        }
-        ErrorManager.getDefault().log(ErrorManager.WARNING, "There seem to be multiple components with the '" + PREFERRED_ID + "' ID. That is a potential source of errors and unexpected behavior.");
-        return getDefault();
-    }
-
-    @Override
-    public int getPersistenceType() {
-        return TopComponent.PERSISTENCE_ALWAYS;
-    }
-
-    @Override
-    public void componentOpened() {
-        Lookup.Template<InputGraphProvider> tpl = new Lookup.Template<>(InputGraphProvider.class);
-        result = Utilities.actionsGlobalContext().lookup(tpl);
-        result.addLookupListener(this);
-    }
-
-    @Override
-    public void componentClosed() {
-        result.removeLookupListener(this);
-        result = null;
-    }
-
-    @Override
-    public Object writeReplace() {
-        return new ResolvableHelper();
-    }
-
-    @Override
-    protected String preferredID() {
-        return PREFERRED_ID;
-    }
-
-    @Override
-    public ExplorerManager getExplorerManager() {
-        return manager;
-    }
-
-    @Override
-    public void requestActive() {
-        super.requestActive();
-        this.treeView.requestFocus();
-    }
-
-    @Override
-    public boolean requestFocus(boolean temporary) {
-        this.treeView.requestFocus();
-        return super.requestFocus(temporary);
-    }
-
-    @Override
-    protected boolean requestFocusInWindow(boolean temporary) {
-        this.treeView.requestFocus();
-        return super.requestFocusInWindow(temporary);
-    }
-
-    @Override
-    public void resultChanged(LookupEvent lookupEvent) {
-        final InputGraphProvider p = null; // TODO(tw): FIXME //.getLast(InputGraphProvider.class);//)Utilities.actionsGlobalContext().lookup(InputGraphProvider.class);
-        if (p != null) {
-            SwingUtilities.invokeLater(new Runnable() {
-                @Override
-                public void run() {
-                    InputGraph graph = p.getGraph();
-                    if (graph != null) {
-                        Group g = graph.getGroup();
-                        rootNode.update(graph, g.getMethod());
-                    }
-                }
-            });
-        }
-    }
-
-    final static class ResolvableHelper implements Serializable {
-
-        private static final long serialVersionUID = 1L;
-
-        public Object readResolve() {
-            return BytecodeViewTopComponent.getDefault();
-        }
-    }
-}
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewTopComponentSettings.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE settings PUBLIC "-//NetBeans//DTD Session settings 1.0//EN" "http://www.netbeans.org/dtds/sessionsettings-1_0.dtd">
-<settings version="1.0">
-    <module name="com.sun.hotspot.igv.bytecodes" spec="1.0"/>
-    <instanceof class="org.openide.windows.TopComponent"/>
-    <instanceof class="com.sun.hotspot.igv.bytecodes.BytecodeViewTopComponent"/>
-    <instance class="com.sun.hotspot.igv.bytecodes.BytecodeViewTopComponent" method="getDefault"/>
-</settings>
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/BytecodeViewTopComponentWstcref.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE tc-ref PUBLIC "-//NetBeans//DTD Top Component in Mode Properties 2.0//EN" "http://www.netbeans.org/dtds/tc-ref2_0.dtd">
-<tc-ref version="2.0" >
-    <module name="com.sun.hotspot.igv.bytecodes" spec="1.0"/>
-    <tc-id id="BytecodeViewTopComponent"/>
-    <state opened="true"/>
-</tc-ref>
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/MethodNode.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.bytecodes;
-
-import com.sun.hotspot.igv.data.InputBytecode;
-import com.sun.hotspot.igv.data.InputGraph;
-import com.sun.hotspot.igv.data.InputMethod;
-import java.awt.Image;
-import org.openide.nodes.AbstractNode;
-import org.openide.nodes.Children;
-import org.openide.nodes.Node;
-import org.openide.util.ImageUtilities;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class MethodNode extends AbstractNode {
-
-    private static class MethodNodeChildren extends Children.Keys<InputBytecode> {
-
-        private InputMethod method;
-        private InputGraph graph;
-        private String bciString;
-
-        public MethodNodeChildren(InputMethod method, InputGraph graph, String bciString) {
-            this.method = method;
-            this.bciString = bciString;
-            this.graph = graph;
-        }
-
-        @Override
-        protected Node[] createNodes(InputBytecode bc) {
-            if (bc.getInlined() == null) {
-                return new Node[]{new BytecodeNode(bc, graph, bciString)};
-            } else {
-                return new Node[]{new BytecodeNode(bc, graph, bciString), new MethodNode(bc.getInlined(), graph, bc.getBci() + " " + bciString)};
-            }
-        }
-
-        @Override
-        public void addNotify() {
-            if (method != null) {
-                setKeys(method.getBytecodes());
-            }
-        }
-
-        public void setMethod(InputMethod method, InputGraph graph) {
-            this.method = method;
-            this.graph = graph;
-            addNotify();
-        }
-    }
-
-    /** Creates a new instance of MethodNode */
-    public MethodNode(InputMethod method, InputGraph graph, String bciString) {
-        super((method != null && method.getBytecodes().size() == 0) ? Children.LEAF : new MethodNodeChildren(method, graph, bciString));
-        if (method != null) {
-            this.setDisplayName(method.getName());
-        }
-    }
-
-    @Override
-    public Image getIcon(int i) {
-        return ImageUtilities.loadImage("com/sun/hotspot/igv/bytecodes/images/method.png");
-    }
-
-    @Override
-    public Image getOpenedIcon(int i) {
-        return getIcon(i);
-    }
-
-    public void update(InputGraph graph, InputMethod method) {
-        ((MethodNodeChildren) this.getChildren()).setMethod(method, graph);
-        if (method != null) {
-            this.setDisplayName(method.getName());
-        }
-
-    }
-}
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/SelectBytecodesAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.bytecodes;
-
-import com.sun.hotspot.igv.data.services.InputGraphProvider;
-import org.openide.nodes.Node;
-import org.openide.util.HelpCtx;
-import org.openide.util.NbBundle;
-import org.openide.util.actions.CookieAction;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public final class SelectBytecodesAction extends CookieAction {
-
-    @Override
-    protected void performAction(Node[] activatedNodes) {
-        SelectBytecodesCookie c = activatedNodes[0].getCookie(SelectBytecodesCookie.class);
-        InputGraphProvider p = null; // TODO: fixme LookupHistory.getLast(InputGraphProvider.class);//Utilities.actionsGlobalContext().lookup(InputGraphProvider.class);
-        if (p != null) {
-            p.setSelectedNodes(c.getNodes());
-        }
-    }
-
-    @Override
-    protected int mode() {
-        return CookieAction.MODE_EXACTLY_ONE;
-    }
-
-    @Override
-    public String getName() {
-        return NbBundle.getMessage(SelectBytecodesAction.class, "CTL_SelectBytecodesAction");
-    }
-
-    @Override
-    protected Class[] cookieClasses() {
-        return new Class[]{
-            SelectBytecodesCookie.class
-        };
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-        putValue("noIconInMenu", Boolean.TRUE);
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-}
-
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/SelectBytecodesCookie.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.bytecodes;
-
-import com.sun.hotspot.igv.data.InputNode;
-import java.util.Collections;
-import java.util.Set;
-import org.openide.nodes.Node;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class SelectBytecodesCookie implements Node.Cookie {
-
-    private Set<InputNode> nodes;
-
-    /** Creates a new instance of SelectBytecodesCookie */
-    public SelectBytecodesCookie(Set<InputNode> nodes) {
-        this.nodes = nodes;
-    }
-
-    public Set<InputNode> getNodes() {
-        return Collections.unmodifiableSet(nodes);
-    }
-}
Binary file visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/bytecode.png has changed
Binary file visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/link.png has changed
Binary file visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/images/method.png has changed
--- a/visualizer/Bytecodes/src/com/sun/hotspot/igv/bytecodes/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
-<filesystem>
-    <folder name="Actions">
-        <folder name="Edit">
-            <file name="com-sun-hotspot-igv-bytecodes-SelectBytecodesAction.instance"/>
-        </folder>
-        <folder name="Window">
-            <file name="com-sun-hotspot-igv-bytecodes-BytecodeViewAction.instance"/>
-        </folder>
-    </folder>
-    <folder name="Menu">
-        <folder name="Window">
-            <file name="BytecodeViewAction.shadow">
-                <attr name="originalFile" stringvalue="Actions/Window/com-sun-hotspot-igv-bytecodes-BytecodeViewAction.instance"/>
-            </file>
-        </folder>
-    </folder>
-    <folder name="Windows2">
-        <folder name="Components">
-            <file name="BytecodeViewTopComponent.settings" url="BytecodeViewTopComponentSettings.xml"/>
-        </folder>
-        <folder name="Modes">
-            <folder name="customRightTopMode">
-                <file name="BytecodeViewTopComponent.wstcref" url="BytecodeViewTopComponentWstcref.xml"/>
-            </folder>
-        </folder>
-    </folder>
-</filesystem>
--- a/visualizer/ControlFlowEditor/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="at.ssw.visualizer.cfg" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project at.ssw.visualizer.cfg.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/ControlFlowEditor/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: at.ssw.visualizer.cfg
-OpenIDE-Module-Layer: at/ssw/visualizer/cfg/layer.xml
-OpenIDE-Module-Localizing-Bundle: at/ssw/visualizer/cfg/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/ControlFlowEditor/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="at.ssw.visualizer.cfg-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/ControlFlowEditor/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=d86dea19
-build.xml.script.CRC32=ec651852
-build.xml.stylesheet.CRC32=a56c6a5b@2.47.1
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=d86dea19
-nbproject/build-impl.xml.script.CRC32=d9cb852b
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.47.1
--- a/visualizer/ControlFlowEditor/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-cluster.path=\
-    ${nbplatform.active.dir}/ide:\
-    ${nbplatform.active.dir}/platform
-disabled.modules=\
-    com.jcraft.jsch,\
-    com.jcraft.jzlib,\
-    org.apache.commons.codec,\
-    org.apache.commons.httpclient,\
-    org.apache.commons.io,\
-    org.apache.commons.lang,\
-    org.apache.commons.logging,\
-    org.apache.ws.commons.util,\
-    org.apache.xml.resolver,\
-    org.apache.xmlrpc,\
-    org.eclipse.core.contenttype,\
-    org.eclipse.core.jobs,\
-    org.eclipse.core.net,\
-    org.eclipse.core.runtime,\
-    org.eclipse.core.runtime.compatibility.auth,\
-    org.eclipse.equinox.app,\
-    org.eclipse.equinox.common,\
-    org.eclipse.equinox.preferences,\
-    org.eclipse.equinox.registry,\
-    org.eclipse.equinox.security,\
-    org.eclipse.jgit,\
-    org.eclipse.mylyn.bugzilla.core,\
-    org.eclipse.mylyn.commons.core,\
-    org.eclipse.mylyn.commons.net,\
-    org.eclipse.mylyn.commons.xmlrpc,\
-    org.eclipse.mylyn.tasks.core,\
-    org.mozilla.rhino.patched,\
-    org.netbeans.api.debugger,\
-    org.netbeans.api.java.classpath,\
-    org.netbeans.api.xml,\
-    org.netbeans.core.browser,\
-    org.netbeans.core.execution,\
-    org.netbeans.core.ide,\
-    org.netbeans.core.io.ui,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.nativeaccess,\
-    org.netbeans.core.osgi,\
-    org.netbeans.lib.cvsclient,\
-    org.netbeans.lib.terminalemulator,\
-    org.netbeans.libs.antlr3.runtime,\
-    org.netbeans.libs.bytelist,\
-    org.netbeans.libs.commons_net,\
-    org.netbeans.libs.freemarker,\
-    org.netbeans.libs.git,\
-    org.netbeans.libs.ini4j,\
-    org.netbeans.libs.jaxb,\
-    org.netbeans.libs.jsr223,\
-    org.netbeans.libs.junit4,\
-    org.netbeans.libs.jvyamlb,\
-    org.netbeans.libs.lucene,\
-    org.netbeans.libs.smack,\
-    org.netbeans.libs.svnClientAdapter,\
-    org.netbeans.libs.svnClientAdapter.javahl,\
-    org.netbeans.libs.svnClientAdapter.svnkit,\
-    org.netbeans.libs.swingx,\
-    org.netbeans.libs.xerces,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.bugtracking,\
-    org.netbeans.modules.bugtracking.bridge,\
-    org.netbeans.modules.bugzilla,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.csl.api,\
-    org.netbeans.modules.css.editor,\
-    org.netbeans.modules.css.lib,\
-    org.netbeans.modules.css.visual,\
-    org.netbeans.modules.db,\
-    org.netbeans.modules.db.core,\
-    org.netbeans.modules.db.dataview,\
-    org.netbeans.modules.db.drivers,\
-    org.netbeans.modules.db.kit,\
-    org.netbeans.modules.db.metadata.model,\
-    org.netbeans.modules.db.mysql,\
-    org.netbeans.modules.db.sql.editor,\
-    org.netbeans.modules.db.sql.visualeditor,\
-    org.netbeans.modules.dbapi,\
-    org.netbeans.modules.defaults,\
-    org.netbeans.modules.derby,\
-    org.netbeans.modules.dlight.nativeexecution,\
-    org.netbeans.modules.dlight.terminal,\
-    org.netbeans.modules.editor.bookmarks,\
-    org.netbeans.modules.editor.bracesmatching,\
-    org.netbeans.modules.editor.codetemplates,\
-    org.netbeans.modules.editor.completion,\
-    org.netbeans.modules.editor.guards,\
-    org.netbeans.modules.editor.indent.project,\
-    org.netbeans.modules.editor.kit,\
-    org.netbeans.modules.editor.macros,\
-    org.netbeans.modules.editor.structure,\
-    org.netbeans.modules.extbrowser,\
-    org.netbeans.modules.extexecution,\
-    org.netbeans.modules.extexecution.destroy,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.git,\
-    org.netbeans.modules.glassfish.common,\
-    org.netbeans.modules.gototest,\
-    org.netbeans.modules.gsf.codecoverage,\
-    org.netbeans.modules.gsf.testrunner,\
-    org.netbeans.modules.html,\
-    org.netbeans.modules.html.editor,\
-    org.netbeans.modules.html.editor.lib,\
-    org.netbeans.modules.html.lexer,\
-    org.netbeans.modules.html.parser,\
-    org.netbeans.modules.html.validation,\
-    org.netbeans.modules.httpserver,\
-    org.netbeans.modules.hudson,\
-    org.netbeans.modules.hudson.git,\
-    org.netbeans.modules.hudson.mercurial,\
-    org.netbeans.modules.hudson.subversion,\
-    org.netbeans.modules.hudson.tasklist,\
-    org.netbeans.modules.ide.kit,\
-    org.netbeans.modules.image,\
-    org.netbeans.modules.javascript.editing,\
-    org.netbeans.modules.javascript.hints,\
-    org.netbeans.modules.javascript.kit,\
-    org.netbeans.modules.javascript.refactoring,\
-    org.netbeans.modules.jellytools.ide,\
-    org.netbeans.modules.jumpto,\
-    org.netbeans.modules.keyring.impl,\
-    org.netbeans.modules.languages,\
-    org.netbeans.modules.languages.diff,\
-    org.netbeans.modules.languages.manifest,\
-    org.netbeans.modules.languages.yaml,\
-    org.netbeans.modules.lexer.nbbridge,\
-    org.netbeans.modules.localhistory,\
-    org.netbeans.modules.mercurial,\
-    org.netbeans.modules.netbinox,\
-    org.netbeans.modules.parsing.api,\
-    org.netbeans.modules.parsing.lucene,\
-    org.netbeans.modules.print.editor,\
-    org.netbeans.modules.project.ant,\
-    org.netbeans.modules.project.libraries,\
-    org.netbeans.modules.projectui,\
-    org.netbeans.modules.projectui.buildmenu,\
-    org.netbeans.modules.projectuiapi,\
-    org.netbeans.modules.properties,\
-    org.netbeans.modules.properties.syntax,\
-    org.netbeans.modules.refactoring.api,\
-    org.netbeans.modules.schema2beans,\
-    org.netbeans.modules.server,\
-    org.netbeans.modules.servletapi,\
-    org.netbeans.modules.spellchecker,\
-    org.netbeans.modules.spellchecker.apimodule,\
-    org.netbeans.modules.spellchecker.bindings.htmlxml,\
-    org.netbeans.modules.spellchecker.bindings.properties,\
-    org.netbeans.modules.spellchecker.dictionary_en,\
-    org.netbeans.modules.spellchecker.kit,\
-    org.netbeans.modules.spi.actions,\
-    org.netbeans.modules.subversion,\
-    org.netbeans.modules.swing.validation,\
-    org.netbeans.modules.target.iterator,\
-    org.netbeans.modules.tasklist.kit,\
-    org.netbeans.modules.tasklist.projectint,\
-    org.netbeans.modules.tasklist.todo,\
-    org.netbeans.modules.tasklist.ui,\
-    org.netbeans.modules.terminal,\
-    org.netbeans.modules.usersguide,\
-    org.netbeans.modules.utilities,\
-    org.netbeans.modules.utilities.project,\
-    org.netbeans.modules.versioning,\
-    org.netbeans.modules.versioning.indexingbridge,\
-    org.netbeans.modules.versioning.system.cvss.installer,\
-    org.netbeans.modules.versioning.util,\
-    org.netbeans.modules.web.client.tools.api,\
-    org.netbeans.modules.web.common,\
-    org.netbeans.modules.web.indent,\
-    org.netbeans.modules.xml,\
-    org.netbeans.modules.xml.axi,\
-    org.netbeans.modules.xml.catalog,\
-    org.netbeans.modules.xml.core,\
-    org.netbeans.modules.xml.jaxb.api,\
-    org.netbeans.modules.xml.lexer,\
-    org.netbeans.modules.xml.multiview,\
-    org.netbeans.modules.xml.retriever,\
-    org.netbeans.modules.xml.schema.completion,\
-    org.netbeans.modules.xml.schema.model,\
-    org.netbeans.modules.xml.tax,\
-    org.netbeans.modules.xml.text,\
-    org.netbeans.modules.xml.tools,\
-    org.netbeans.modules.xml.wsdl.model,\
-    org.netbeans.modules.xml.xam,\
-    org.netbeans.modules.xml.xdm,\
-    org.netbeans.modules.xsl,\
-    org.netbeans.spi.debugger.ui,\
-    org.netbeans.spi.editor.hints,\
-    org.netbeans.spi.navigator,\
-    org.netbeans.spi.palette,\
-    org.netbeans.spi.tasklist,\
-    org.netbeans.spi.viewmodel,\
-    org.netbeans.swing.dirchooser,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.options,\
-    org.openide.util.enumerations
-## Not disabled because of NetBeans bug 206347:
-## Applications not using OSGi don't start on NbP 7.1
-#   org.netbeans.core.netigso,\
-#   org.netbeans.libs.felix,\
-#   org.netbeans.libs.osgi,\
-nbplatform.active=default
--- a/visualizer/ControlFlowEditor/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/ControlFlowEditor/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>at.ssw.visualizer.cfg</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.oracle.graal.visualizer.editor</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.oracle.graal.visualizer.sharedactions</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.eclipse.draw2d</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.jdesktop.layout</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.4.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.api.visual</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>2.9.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.options.api</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.5</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.projectapi</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.40.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.actions</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.6.1.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.awt</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.11.1.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.dialogs</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.5</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.loaders</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.5</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.nodes</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.2.0.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.9.0.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.3.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.16</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>at.ssw.visualizer.cfg</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/ControlFlowEditor/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/ControlFlowEditor/src/META-INF/services/com.oracle.graal.visualizer.editor.CompilationViewerFactory	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-at.ssw.visualizer.cfg.CfgCompilationViewerFactory
\ No newline at end of file
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=ControlFlowEditor
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/CfgCompilationViewer.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package at.ssw.visualizer.cfg;
-
-import at.ssw.visualizer.cfg.action.*;
-import at.ssw.visualizer.cfg.graph.CfgScene;
-import at.ssw.visualizer.cfg.graph.EdgeWidget;
-import at.ssw.visualizer.cfg.graph.NodeWidget;
-import at.ssw.visualizer.cfg.model.CfgEdge;
-import at.ssw.visualizer.cfg.model.CfgNode;
-import at.ssw.visualizer.cfg.preferences.CfgPreferences;
-import at.ssw.visualizer.cfg.preferences.FlagsSetting;
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-import com.oracle.graal.visualizer.editor.CompilationViewer;
-import com.sun.hotspot.igv.data.InputGraph;
-import java.awt.Color;
-import java.awt.Component;
-import java.beans.PropertyChangeEvent;
-import javax.swing.*;
-import javax.swing.border.Border;
-import org.netbeans.api.visual.widget.Widget;
-import org.openide.awt.Toolbar;
-import org.openide.util.Lookup;
-import org.openide.util.actions.SystemAction;
-import org.openide.util.lookup.Lookups;
-
-class CfgCompilationViewer implements CompilationViewer {
-
-    private CfgScene scene;
-    private JScrollPane jScrollPane;
-    private ControlFlowGraph cfg;
-    private JComponent myView;
-
-    public CfgCompilationViewer(InputGraph cfg) {
-        this.cfg = cfg;
-
-       // setIcon(ImageUtilities.loadImage("at/ssw/visualizer/cfg/icons/cfg.gif"));
-//        setName(cfg.getParent().getShortName());
-//        setToolTipText(cfg.getCompilation().getMethod() + " - " + cfg.getName());
-        // TODO(tw): Add title.
-
-        //panel setup
-        this.jScrollPane = new JScrollPane();
-        this.jScrollPane.setOpaque(true);
-        this.jScrollPane.setBorder(BorderFactory.createEmptyBorder());
-        this.jScrollPane.setViewportBorder(BorderFactory.createEmptyBorder());
-        this.scene = new CfgScene(jScrollPane, cfg);
-        this.myView = scene.createView();
-        this.jScrollPane.setViewportView(myView);
-        jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
-        jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
-        jScrollPane.getVerticalScrollBar().setEnabled(true);
-        jScrollPane.getHorizontalScrollBar().setEnabled(true);
-
-        //setup enviroment,register listeners
-        // TODO(tw): Add to lookup.
-//        selection = new Selection();
-//        selection.put(cfg);
-//        selection.put(scene);
-//        selection.addChangeListener(scene);
-
-        scene.validate();
-        scene.applyLayout();
-    }
-
-    public void propertyChange(PropertyChangeEvent evt) {
-        if (this.scene != null) {
-
-            String propName = evt.getPropertyName();
-            CfgPreferences prefs = CfgPreferences.getInstance();
-            switch (propName) {
-                case CfgPreferences.PROP_BACKGROUND_COLOR:
-                    scene.setBackground(prefs.getBackgroundColor());
-                    scene.revalidate();
-                    break;
-                case CfgPreferences.PROP_NODE_COLOR:
-                    for (NodeWidget nw : scene.getNodeWidgets()) {
-                        //only change the node color if its not a custom color
-                        if (!nw.isNodeColorCustomized()) {
-                            nw.setNodeColor(prefs.getNodeColor(), false);
-                        }
-                    }
-                    break;
-                case CfgPreferences.PROP_EDGE_COLOR:
-                    for (CfgEdge e : scene.getEdges()) {
-                        if (!e.isBackEdge() && !e.isXhandler()) {
-                            EdgeWidget w = (EdgeWidget) scene.findWidget(e);
-                            w.setLineColor(prefs.getEdgeColor());
-                        }
-                    }
-                    break;
-                case CfgPreferences.PROP_BACK_EDGE_COLOR:
-                    for (CfgEdge e : scene.getEdges()) {
-                        if (e.isBackEdge()) {
-                            EdgeWidget w = (EdgeWidget) scene.findWidget(e);
-                            w.setLineColor(prefs.getBackedgeColor());
-                        }
-                    }
-                    break;
-                case CfgPreferences.PROP_EXCEPTION_EDGE_COLOR:
-                    for (CfgEdge e : scene.getEdges()) {
-                        if (e.isXhandler()) {
-                            EdgeWidget w = (EdgeWidget) scene.findWidget(e);
-                            w.setLineColor(prefs.getExceptionEdgeColor());
-                        }
-                    }
-                    break;
-                case CfgPreferences.PROP_BORDER_COLOR:
-                    for (CfgNode n : scene.getNodes()) {
-                        NodeWidget nw = (NodeWidget) scene.findWidget(n);
-                        nw.setBorderColor(prefs.getBorderColor());
-                    }
-                    break;
-                case CfgPreferences.PROP_TEXT_FONT:
-                    for (CfgNode n : scene.getNodes()) {
-                        NodeWidget nw = (NodeWidget) scene.findWidget(n);
-                        nw.adjustFont(prefs.getTextFont());
-                    }
-                    break;
-                case CfgPreferences.PROP_TEXT_COLOR:
-                    for (CfgNode n : scene.getNodes()) {
-                        NodeWidget nw = (NodeWidget) scene.findWidget(n);
-                        nw.setForeground(prefs.getTextColor());
-                    }
-                    break;
-                case CfgPreferences.PROP_FLAGS:
-                    FlagsSetting fs = CfgPreferences.getInstance().getFlagsSetting();
-                    for (CfgNode n : scene.getNodes()) {
-                        NodeWidget nw = (NodeWidget) scene.findWidget(n);
-                        Color nodeColor = fs.getColor(n.getBasicBlock().getFlags());
-                        if (nodeColor != null) {
-                            nw.setNodeColor(nodeColor, true);
-                        } else {
-                            nw.setNodeColor(CfgPreferences.getInstance().getNodeColor(), false);
-                        }
-                    }
-                    break;
-                case CfgPreferences.PROP_SELECTION_COLOR_BG:
-                case CfgPreferences.PROP_SELECTION_COLOR_FG:
-                    for (CfgNode n : scene.getNodes()) {
-                        Widget w = scene.findWidget(n);
-                        w.revalidate();
-                    }
-                    break;
-            }
-            scene.validate();
-        }
-
-    }
-
-    /*@Override
-    public Component getToolBarComponent() {
-        Toolbar tb = new Toolbar("CfgToolbar");
-
-        tb.setBorder((Border) UIManager.get("Nb.Editor.Toolbar.border"));
-
-        //zoomin/zoomout buttons
-        tb.add(SystemAction.get(ZoominAction.class).getToolbarPresenter());
-        tb.add(SystemAction.get(ZoomoutAction.class).getToolbarPresenter());
-        tb.addSeparator();
-
-        //router buttons
-        ButtonGroup routerButtons = new ButtonGroup();
-        UseDirectLineRouterAction direct = SystemAction.get(UseDirectLineRouterAction.class);
-        UseBezierRouterAction bezier = SystemAction.get(UseBezierRouterAction.class);
-        JToggleButton button = (JToggleButton) direct.getToolbarPresenter();
-        button.getModel().setGroup(routerButtons);
-        button.setSelected(true);
-        tb.add(button);
-        button = (JToggleButton) bezier.getToolbarPresenter();
-        button.getModel().setGroup(routerButtons);
-        tb.add(button);
-        tb.addSeparator();
-
-        //layout buttons
-        tb.add(SystemAction.get(HierarchicalNodeLayoutAction.class).getToolbarPresenter());
-        tb.add(SystemAction.get(HierarchicalCompoundLayoutAction.class).getToolbarPresenter());
-
-        tb.addSeparator();
-        tb.add(SystemAction.get(ShowAllAction.class).getToolbarPresenter());
-        tb.addSeparator();
-
-        //cluster button
-        tb.add(SystemAction.get(SwitchLoopClustersAction.class).getToolbarPresenter());
-        tb.addSeparator();
-
-        //show/hide edge button
-        tb.add(SystemAction.get(ShowEdgesAction.class).getToolbarPresenter());
-        tb.add(SystemAction.get(HideEdgesAction.class).getToolbarPresenter());
-        tb.addSeparator();
-
-        //color button       
-        JComponent colorButton = SystemAction.get(ColorAction.class).getToolbarPresenter();
-        scene.addCfgEventListener((CfgEventListener) colorButton);
-        tb.add(colorButton);
-
-        //export button           
-        tb.add(SystemAction.get(ExportAction.class).getToolbarPresenter());
-        tb.doLayout();
-
-        return tb;
-    }*/
-
-    @Override
-    public Lookup getLookup() {
-        return Lookups.fixed(scene);
-    }
-
-    @Override
-    public Component getComponent() {
-        return jScrollPane;
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/CfgCompilationViewerFactory.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
-package at.ssw.visualizer.cfg;
-
-import com.oracle.graal.visualizer.editor.CompilationViewer;
-import com.oracle.graal.visualizer.editor.CompilationViewerFactory;
-import com.oracle.graal.visualizer.editor.DiagramViewModel;
-import com.oracle.graal.visualizer.editor.SplitCompilationViewerFactory;
-import com.sun.hotspot.igv.data.InputGraph;
-
-public class CfgCompilationViewerFactory extends SplitCompilationViewerFactory {
-
-    @Override
-    public String getName() {
-        return "CFG";
-    }
-
-    @Override
-    protected CompilationViewer createViewer(InputGraph graph) {
-        return new CfgCompilationViewer(graph);
-    }
-
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/CfgEditorContext.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-
-package at.ssw.visualizer.cfg;
-
-public abstract class CfgEditorContext {
-      
-    public static final int LAYOUT_HIERARCHICALNODELAYOUT = 1;
-    public static final int LAYOUT_HIERARCHICALCOMPOUNDLAYOUT = 2;
-       
-    public static final int MAX_AUTOEDGESVISIBLE = 8;            
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/AbstractCfgEditorAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-package at.ssw.visualizer.cfg.action;
-
-
-import at.ssw.visualizer.cfg.graph.CfgScene;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JMenuItem;
-import org.openide.util.Utilities;
-import org.openide.util.actions.CallableSystemAction;
-
-/**
- * The common superclass of all concrete actions related to the CFG visualizer.
- *
- * @author Bernhard Stiftner
- * @author Rumpfhuber Stefan
- */
-public abstract class AbstractCfgEditorAction extends CallableSystemAction {
-
-    CfgScene topComponent = null;
-    
-    public AbstractCfgEditorAction() {        
-        setEnabled(false);
-
-    }
-       
-    protected CfgScene getEditor() {
-        return Utilities.actionsGlobalContext().lookup(CfgScene.class);
-    }
-    
-    @Override
-    public JMenuItem getMenuPresenter() {
-        return new JMenuItem(this);
-    }
-
-   
-    @Override
-    public JComponent getToolbarPresenter() {
-        JButton b = new JButton(this);
-        if (getIcon() != null) {
-            b.setText(null);
-            b.setToolTipText(getName());
-        }
-        return b;
-    }
-
-   
-    @Override
-    public JMenuItem getPopupPresenter() {       
-        return new JMenuItem(this);
-    }
-    
-   
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-CTL_SomeAction=test
-CTL_SomeAction2=test
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HideEdgesAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package at.ssw.visualizer.cfg.action;
-
-
-import at.ssw.visualizer.cfg.graph.CfgScene;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.List;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "at.ssw.visualizer.cfg.action.HideEdges", category = "View")
-@ActionRegistration(displayName = "Hide Edges", iconBase="at/ssw/visualizer/cfg/icons/hideedges.gif")
-@ActionReference(path = "CompilationViewer/CFG/Actions", position = 180)
-public class HideEdgesAction implements ActionListener {
-
-    private List<CfgScene> scenes;
-    
-    public HideEdgesAction(List<CfgScene> scenes) {
-        this.scenes = scenes;
-    }
-    
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        for (CfgScene scene : scenes) {
-             scene.setSelectedEdgesVisibility(false);
-        }
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HierarchicalCompoundLayoutAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package at.ssw.visualizer.cfg.action;
-
-import at.ssw.visualizer.cfg.CfgEditorContext;
-import at.ssw.visualizer.cfg.graph.CfgScene;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.List;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-
-
-@ActionID(id = "at.ssw.visualizer.cfg.action.HierarchicalCompoundLayout", category = "View")
-@ActionRegistration(displayName = "Compound Layout", iconBase="at/ssw/visualizer/cfg/icons/arrangeloop.gif")
-@ActionReference(path = "CompilationViewer/CFG/Actions", position = 150)
-public class HierarchicalCompoundLayoutAction implements ActionListener {
-    List<CfgScene> scenes;
-    
-    public HierarchicalCompoundLayoutAction(List<CfgScene> scenes) {
-        this.scenes = scenes;
-    }
-    
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        for (CfgScene s : scenes) {
-            s.setSceneLayout(CfgEditorContext.LAYOUT_HIERARCHICALCOMPOUNDLAYOUT);
-        }
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HierarchicalNodeLayoutAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package at.ssw.visualizer.cfg.action;
-
-import at.ssw.visualizer.cfg.CfgEditorContext;
-import at.ssw.visualizer.cfg.graph.CfgScene;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.List;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-
-
-@ActionID(id = "at.ssw.visualizer.cfg.action.HierarchicalNodeLayout", category = "View")
-@ActionRegistration(displayName = "Layout", iconBase="at/ssw/visualizer/cfg/icons/arrangehier.gif")
-@ActionReference(path = "CompilationViewer/CFG/Actions", position = 160)
-public class HierarchicalNodeLayoutAction implements ActionListener {
-    List<CfgScene> scenes;
-    
-    public HierarchicalNodeLayoutAction(List<CfgScene> scenes) {
-        this.scenes = scenes;
-    }
-    
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        for (CfgScene s : scenes) {
-            s.setSceneLayout(CfgEditorContext.LAYOUT_HIERARCHICALNODELAYOUT);
-        }
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ShowEdgesAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package at.ssw.visualizer.cfg.action;
-
-import at.ssw.visualizer.cfg.graph.CfgScene;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.List;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-
-
-@ActionID(id = "ShowEdges", category = "View")
-@ActionRegistration(displayName = "Show Edges", iconBase="at/ssw/visualizer/cfg/icons/showedges.gif")
-@ActionReference(path = "CompilationViewer/CFG/Actions", position = 170)
-public class ShowEdgesAction implements ActionListener {
-
-    private List<CfgScene> scenes;
-    
-    public ShowEdgesAction(List<CfgScene> scenes) {
-        this.scenes = scenes;
-    }
-    
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        for (CfgScene scene : scenes) {
-             scene.setSelectedEdgesVisibility(true);
-        }
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/CfgScene.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,836 +0,0 @@
-package at.ssw.visualizer.cfg.graph;
-
-import at.ssw.visualizer.cfg.model.CfgEdge;
-import at.ssw.visualizer.cfg.CfgEditorContext;
-import at.ssw.visualizer.cfg.action.HideEdgesAction;
-import at.ssw.visualizer.cfg.action.ShowEdgesAction;
-import at.ssw.visualizer.cfg.graph.layout.HierarchicalCompoundLayout;
-import at.ssw.visualizer.cfg.graph.layout.HierarchicalNodeLayout;
-import at.ssw.visualizer.cfg.model.CfgEnv;
-import at.ssw.visualizer.cfg.model.CfgNode;
-import at.ssw.visualizer.cfg.model.LoopInfo;
-import at.ssw.visualizer.cfg.preferences.CfgPreferences;
-import at.ssw.visualizer.cfg.visual.PolylineRouter;
-import at.ssw.visualizer.cfg.visual.PolylineRouterV2;
-import at.ssw.visualizer.cfg.visual.WidgetCollisionCollector;
-import at.ssw.visualizer.model.cfg.BasicBlock;
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-import com.oracle.graal.visualizer.sharedactions.ZoomCookie;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.RenderingHints;
-import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.prefs.PreferenceChangeEvent;
-import java.util.prefs.PreferenceChangeListener;
-import java.util.prefs.Preferences;
-import javax.swing.AbstractAction;
-import javax.swing.JComponent;
-import javax.swing.JMenu;
-import javax.swing.JPopupMenu;
-import javax.swing.JScrollPane;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.event.EventListenerList;
-import org.netbeans.api.visual.action.ActionFactory;
-import org.netbeans.api.visual.action.MoveProvider;
-import org.netbeans.api.visual.action.PopupMenuProvider;
-import org.netbeans.api.visual.action.RectangularSelectDecorator;
-import org.netbeans.api.visual.action.RectangularSelectProvider;
-import org.netbeans.api.visual.action.WidgetAction;
-import org.netbeans.api.visual.anchor.Anchor;
-import org.netbeans.api.visual.anchor.AnchorFactory;
-import org.netbeans.api.visual.graph.GraphScene;
-import org.netbeans.api.visual.graph.layout.GraphLayout;
-import org.netbeans.api.visual.layout.LayoutFactory;
-import org.netbeans.api.visual.layout.SceneLayout;
-import org.netbeans.api.visual.router.Router;
-import org.netbeans.api.visual.router.Router.*;
-import org.netbeans.api.visual.router.RouterFactory;
-import org.netbeans.api.visual.widget.ConnectionWidget;
-import org.netbeans.api.visual.widget.LayerWidget;
-import org.netbeans.api.visual.widget.Widget;
-import org.openide.util.NbPreferences;
-import org.openide.util.actions.SystemAction;
-
-public final class CfgScene extends GraphScene<CfgNode, CfgEdge> implements ChangeListener, ZoomCookie {
-
-    private LayerWidget mainLayer = new LayerWidget(this);
-    private LayerWidget connectionLayer = new LayerWidget(this);
-    private LayerWidget interractionLayer = new LayerWidget(this);
-    private LayerWidget clusterLayer = new LayerWidget(this);
-    private Set<CfgNode> selectedNodes = Collections.<CfgNode>emptySet();
-    private Map<Integer, LoopClusterWidget> loopidx2clusterwidget = new HashMap<>();
-    private Map<CfgNode, EdgeSwitchWidget> inputSwitches = new HashMap<>();
-    private Map<CfgNode, EdgeSwitchWidget> outputSwitches = new HashMap<>();
-    private WidgetAction moveAction = ActionFactory.createMoveAction(ActionFactory.createFreeMoveStrategy(), this.createMoveProvider());
-    private SceneLayout sceneLayout;
-    private CfgEnv env;
-    private int currentLayout = -1;
-    private JScrollPane scrollPane;
-    private WidgetAction contextPopupAction = this.createContextMenuAction(this);
-    private List<NodeWidget> nodeWidgets = null;
-    private boolean loopClustersVisible = true;
-    private static String PREFERENCE_LOOP_CLUSTER = "loopClusters";
-    private static String PREFERENCE_ROUTER = "router";
-    private static String PREFERENCE_LAYOUT = "layout";
-
-    public static Preferences getPreferences() {
-        return NbPreferences.forModule(CfgScene.class);
-    }
-    private final PreferenceChangeListener preferenceChangeListener = new PreferenceChangeListener() {
-        @Override
-        public void preferenceChange(PreferenceChangeEvent evt) {
-            if (evt.getKey().equals(PREFERENCE_ROUTER)) {
-                setUseBezierRouter(Boolean.parseBoolean(evt.getNewValue()));
-            } else if (evt.getKey().equals(PREFERENCE_LOOP_CLUSTER)) {
-                setLoopWidgets(Boolean.parseBoolean(evt.getNewValue()));
-            }
-        }
-    };
-
-    public CfgScene(final JScrollPane scrollPane, final ControlFlowGraph cfg) {
-        addChild(clusterLayer);
-        addChild(mainLayer);
-        addChild(interractionLayer);
-        addChild(connectionLayer);
-        this.scrollPane = scrollPane;
-        this.loadModel(new CfgEnv(cfg));
-        this.getInputBindings().setZoomActionModifiers(0);
-        this.getActions().addAction(ActionFactory.createMouseCenteredZoomAction(1.1));
-        this.getActions().addAction(ActionFactory.createPanAction());
-        this.getActions().addAction(ActionFactory.createRectangularSelectAction(
-                this.createSelectDecorator(this),
-                interractionLayer,
-                this.createRectangularSelectProvider()));
-        this.getActions().addAction(this.contextPopupAction);
-        this.addSceneListener(createSceneListener(this));
-        this.validate();
-
-        getPreferences().addPreferenceChangeListener(preferenceChangeListener);
-        this.loadDefaults();
-    }
-
-    private void loadModel(CfgEnv cfgenv) {
-        this.env = cfgenv;
-        for (CfgNode n : env.getNodes()) {
-            addNode(n);
-        }
-        for (CfgEdge e : env.getEdges()) {
-            addEdge(e);
-            setEdgeSource(e, e.getSourceNode());
-            setEdgeTarget(e, e.getTargetNode());
-        }
-        this.stackLoops(cfgenv.getLoopMap());
-        this.autoHideEdges();
-    }
-
-    public void loadDefaults() {
-        CfgPreferences prefs = CfgPreferences.getInstance();
-        this.setBackground(prefs.getBackgroundColor());
-        setUseBezierRouter(getPreferences().getBoolean(PREFERENCE_ROUTER, true));
-        setLoopWidgets(getPreferences().getBoolean(PREFERENCE_LOOP_CLUSTER, true));
-        setSceneLayout(getPreferences().getInt(PREFERENCE_LAYOUT, CfgEditorContext.LAYOUT_HIERARCHICALNODELAYOUT));
-    }
-
-    //sets the parent Widget of all LoopClusterWidgets
-    private void stackLoops(Map<CfgNode, LoopInfo> map) {
-        this.clusterLayer.removeChildren();
-
-        Set<LoopInfo> cache = new HashSet<>();
-        for (LoopInfo info : map.values()) {
-            if (cache.contains(info)) {
-                continue;
-            }
-            LoopClusterWidget widget = this.loopidx2clusterwidget.get(info.getLoopIndex());
-            LoopInfo parent = info.getParent();
-            while (parent != null) {
-                LoopClusterWidget parentWidget = this.loopidx2clusterwidget.get(parent.getLoopIndex());
-                assert parentWidget != null;
-                if (widget.getParentWidget() != null) {
-                    widget.removeFromParent();
-                }
-                parentWidget.addChild(widget);
-                widget = parentWidget;
-                parent = parent.getParent();
-            }
-            widget.removeFromParent();
-            this.clusterLayer.addChild(widget);//parent == null => parent is clusterlayer
-        }
-    }
-
-    //hide in|output edges 
-    private void autoHideEdges() {
-        for (CfgNode n : this.getNodes()) {
-            int fanin = n.getInputEdges().length;
-            int fanout = n.getOutputEdges().length;
-            if (fanin > CfgEditorContext.MAX_AUTOEDGESVISIBLE) {
-                assert (inputSwitches.containsKey(n));
-                if (this.inputSwitches.containsKey(n)) {
-                    EdgeSwitchWidget esw = this.inputSwitches.get(n);
-                    esw.changeEdgeVisibility(false);
-                }
-            }
-            if (fanout > CfgEditorContext.MAX_AUTOEDGESVISIBLE) {
-                if (this.outputSwitches.containsKey(n)) {
-                    EdgeSwitchWidget esw = this.outputSwitches.get(n);
-                    esw.changeEdgeVisibility(false);
-                }
-            }
-        }
-
-    }
-
-    //apply current cfggraphscene layout  
-    public void applyLayout() {
-        this.sceneLayout.invokeLayoutImmediately();
-    }
-
-    //returns a Set with the currently selected Nodes    
-    public Set<CfgNode> getSelectedNodes() {
-        return Collections.<CfgNode>unmodifiableSet(selectedNodes);
-    }
-
-    public Map<Integer, LoopClusterWidget> getLoopidx2clusterwidget() {
-        return loopidx2clusterwidget;
-    }
-
-    /**
-     * Sets the color of the currently selected Nodes If the supplied color is null the default color will be used
-     */
-    public void setSelectedNodesColor(Color color) {
-        if (color == null) { //set default color
-            CfgPreferences prefs = CfgPreferences.getInstance();
-            boolean customized = false;
-            for (CfgNode n : this.selectedNodes) {
-                color = null;
-                color = prefs.getFlagsSetting().getColor(n.getBasicBlock().getFlags());
-                customized = (color != null);
-                NodeWidget nw = (NodeWidget) this.findWidget(n);
-                nw.setNodeColor((customized) ? color : prefs.getNodeColor(), customized);
-            }
-        } else {
-            for (CfgNode n : this.selectedNodes) {
-                NodeWidget nw = (NodeWidget) this.findWidget(n);
-                nw.setNodeColor(color, true);
-            }
-        }
-        this.validate();
-    }
-
-    public void setSelectedEdgesVisibility(boolean visible) {
-        for (CfgNode n : this.selectedNodes) {
-            EdgeSwitchWidget in = this.inputSwitches.get(n);
-            EdgeSwitchWidget out = this.outputSwitches.get(n);
-            if (in != null) {
-                in.changeEdgeVisibility(visible);
-            }
-            if (out != null) {
-                out.changeEdgeVisibility(visible);
-            }
-        }
-        this.validate();
-    }
-
-    public EdgeSwitchWidget getInputSwitch(CfgNode n) {
-        return this.inputSwitches.get(n);
-    }
-
-    public EdgeSwitchWidget getOutputSwitch(CfgNode n) {
-        return this.outputSwitches.get(n);
-    }
-
-    public CfgEnv getCfgEnv() {
-        return env;
-    }
-
-    public boolean isLoopClusterVisible() {
-        return loopClustersVisible;
-    }
-
-    public void setLoopWidgets(boolean visible) {
-        for (Widget w : this.loopidx2clusterwidget.values()) {
-            w.setVisible(visible);
-            w.revalidate();
-        }
-        this.loopClustersVisible = visible;
-        this.validate();
-        getPreferences().putBoolean(PREFERENCE_LOOP_CLUSTER, visible);
-    }
-    
-    private void setUseBezierRouter(boolean value) {
-        Router router;
-        if (value) {
-            router = new PolylineRouterV2(new WidgetCollisionCollector() {
-                @Override
-                public void collectCollisions(List<Widget> collisions) {
-                    collisions.addAll(getNodeWidgets());
-                }
-            });
-        } else {
-            router = RouterFactory.createDirectRouter();
-        }
-
-        for (CfgEdge e : this.getEdges()) {
-            EdgeWidget ew = (EdgeWidget) this.findWidget(e);
-            ew.setRouter(router);
-        }
-        this.validate();
-        getPreferences().putBoolean(PREFERENCE_ROUTER, value);
-    }
-
-    public Collection<NodeWidget> getNodeWidgets() {
-        if (nodeWidgets != null && nodeWidgets.size() == this.getNodes().size()) {
-            return nodeWidgets;
-        }
-
-        List<NodeWidget> widgets = new ArrayList<>();
-        for (CfgNode n : this.getNodes()) {
-            NodeWidget w = (NodeWidget) this.findWidget(n);
-            widgets.add(w);
-        }
-
-        nodeWidgets = Collections.unmodifiableList(widgets);
-        return widgets;
-    }
-
-    public void setSceneLayout(int newLayout) {
-
-        GraphLayout<CfgNode, CfgEdge> graphLayout = null;
-
-        switch (newLayout) {
-            case CfgEditorContext.LAYOUT_HIERARCHICALNODELAYOUT:
-                graphLayout = new HierarchicalNodeLayout(this);
-                break;
-
-            case CfgEditorContext.LAYOUT_HIERARCHICALCOMPOUNDLAYOUT:
-                graphLayout = new HierarchicalCompoundLayout(this);
-                break;
-        }
-
-        this.currentLayout = newLayout;
-        if (graphLayout != null) {
-            this.sceneLayout = LayoutFactory.createSceneGraphLayout(this, graphLayout);
-        }
-        
-        getPreferences().putInt(PREFERENCE_LAYOUT, newLayout);
-        sceneLayout.invokeLayoutImmediately();
-    }
-
-    @Override
-    protected void attachEdgeSourceAnchor(CfgEdge edge, CfgNode oldSourceNode, CfgNode sourceNode) {
-        Anchor sourceAnchor;
-        EdgeWidget edgeWidget = (EdgeWidget) findWidget(edge);
-        Widget sourceWidget = findWidget(sourceNode);
-
-        if (edge.isSymmetric()) {
-            sourceAnchor = new SymmetricAnchor(sourceWidget, true, true);
-        } else {
-            sourceAnchor = AnchorFactory.createRectangularAnchor(sourceWidget);
-        }
-        edgeWidget.setSourceAnchor(sourceAnchor);
-    }
-
-    @Override
-    protected void attachEdgeTargetAnchor(CfgEdge edge, CfgNode oldtarget, CfgNode targetNode) {
-        Anchor targetAnchor;
-        ConnectionWidget edgeWidget = (ConnectionWidget) findWidget(edge);
-        Widget targetWidget = findWidget(targetNode);
-
-        if (edge.isSymmetric()) {
-            targetAnchor = new SymmetricAnchor(targetWidget, true, false);
-        } else {
-            targetAnchor = AnchorFactory.createRectangularAnchor(targetWidget);
-        }
-        edgeWidget.setTargetAnchor(targetAnchor);
-    }
-
-    @Override
-    protected Widget attachEdgeWidget(CfgEdge edge) {
-        EdgeWidget widget = new EdgeWidget(this, edge);
-        connectionLayer.addChild(widget);
-        attachSourceSwitchWidget(edge);
-        attachTargetSwitchWidget(edge);
-        return widget;
-    }
-
-    @Override
-    protected Widget attachNodeWidget(CfgNode node) {
-        this.nodeWidgets = null;
-
-        NodeWidget nw = new NodeWidget(this, node);
-        WidgetAction.Chain actions = nw.getActions();
-        actions.addAction(this.contextPopupAction);
-        actions.addAction(this.moveAction);
-        actions.addAction(this.createObjectHoverAction());
-
-        if (node.isLoopMember()) {
-            LoopClusterWidget loopWidget = this.attachLoopMember(node);
-            loopWidget.addMember(nw);
-        }
-        mainLayer.addChild(nw);
-        return nw;
-    }
-
-    private LoopClusterWidget attachLoopMember(CfgNode node) {
-        LoopClusterWidget lw = this.loopidx2clusterwidget.get(node.getLoopIndex());
-        if (lw == null) {
-            lw = new LoopClusterWidget(this, node.getLoopDepth(), node.getLoopIndex());
-            this.loopidx2clusterwidget.put(node.getLoopIndex(), lw);
-            this.clusterLayer.addChild(lw);
-        }
-        return lw;
-    }
-
-    private boolean detachLoopMember(CfgNode node, NodeWidget nodeWidget) {
-        LoopClusterWidget rm = this.loopidx2clusterwidget.get(node.getLoopIndex());
-        if (rm == null) {
-            return false;//not added
-        }
-        if (rm.removeMember(nodeWidget)) {
-            if (rm.getMembers().isEmpty()) {
-                this.loopidx2clusterwidget.remove(rm.getLoopIndex());
-                List<Widget> childs = new ArrayList<>(rm.getChildren());
-                for (Widget w : childs) {//append stacked loopwidgets
-                    w.removeFromParent();
-                    rm.getParentWidget().addChild(w);
-                }
-                rm.removeFromParent();
-            }
-            return true;
-        }
-        return false;
-    }
-
-    //this function is not invoked by any class  of the module
-    //however to ensure that the edge switches are treatet corretly
-    //when a future version removes nodes it was implemented too.
-    @Override
-    protected void detachNodeWidget(CfgNode node, Widget nodeWidget) {
-        if (node.isLoopMember() && nodeWidget instanceof NodeWidget) {
-            this.detachLoopMember(node, (NodeWidget) nodeWidget);
-        }
-        super.detachNodeWidget(node, nodeWidget);
-        assert nodeWidget.getParentWidget() == null;
-        if (this.inputSwitches.containsKey(node)) {
-            EdgeSwitchWidget esw = this.inputSwitches.remove(node);
-            this.connectionLayer.removeChild(esw);
-        }
-        if (this.outputSwitches.containsKey(node)) {
-            EdgeSwitchWidget esw = this.outputSwitches.remove(node);
-            this.connectionLayer.removeChild(esw);
-        }
-    }
-
-    protected EdgeSwitchWidget attachSourceSwitchWidget(CfgEdge e) {
-        CfgNode sourceNode = e.getSourceNode();
-        NodeWidget sourceWidget = (NodeWidget) this.findWidget(sourceNode);
-        EdgeSwitchWidget out = outputSwitches.get(sourceNode);
-        if (out == null) {
-            out = new EdgeSwitchWidget(this, sourceWidget, true);
-            this.connectionLayer.addChild(out);
-            outputSwitches.put(sourceNode, out);
-        }
-        return out;
-    }
-
-    protected EdgeSwitchWidget attachTargetSwitchWidget(CfgEdge e) {
-        CfgNode targetNode = e.getTargetNode();
-        NodeWidget targetWidget = (NodeWidget) this.findWidget(targetNode);
-        EdgeSwitchWidget in = inputSwitches.get(targetNode);
-        if (in == null) {
-            in = new EdgeSwitchWidget(this, targetWidget, false);
-            this.connectionLayer.addChild(in);
-            inputSwitches.put(targetNode, in);
-        }
-        return in;
-    }
-
-    //resets the selection state of all NodeWidgets
-    private void cleanNodeSelection() {
-        if (!this.selectedNodes.isEmpty()) {
-            this.userSelectionSuggested(Collections.<CfgNode>emptySet(), false);
-            this.selectedNodes = Collections.<CfgNode>emptySet();
-            this.validate();
-        }
-    }
-
-    //sets the scene & global node selection
-    public void setNodeSelection(Set<CfgNode> newSelection) {
-        this.setSceneSelection(newSelection);
-        this.updateGlobalSelection();
-    }
-
-    //sets the scene selection
-    private void setSceneSelection(Set<CfgNode> newSelection) {
-        if (newSelection.equals(selectedNodes)) {
-            return;
-        }
-
-        this.selectedNodes = newSelection;
-
-        Set<Object> selectedObjects = new HashSet<>();
-
-        for (CfgNode n : newSelection) {
-            selectedObjects.addAll(this.findNodeEdges(n, true, true));
-        }
-        selectedObjects.addAll(newSelection);
-
-        //if the selection gets updated from a change in the block view
-        //the scene will be centered
-        if (selectionUpdating) {
-            this.centerSelection();
-        }
-
-        this.userSelectionSuggested(selectedObjects, false);
-        this.validate();
-    }
-
-    //updates selection of Block View
-    public void updateGlobalSelection() {
-        // TODO(tw): Add selection management.
-//        Selection selection = SelectionManager.getDefault().getCurSelection();
-//        ArrayList<BasicBlock> newBlocks = new ArrayList<BasicBlock>();
-//        for (CfgNode n : this.selectedNodes) {
-//            newBlocks.add(n.getBasicBlock());
-//        }
-//        BasicBlock[] curBlocks = newBlocks.toArray(new BasicBlock[newBlocks.size()]);     
-//        selection.put(curBlocks);
-    }
-    private boolean selectionUpdating = false;
-
-    //change of blockview selection   
-    public void stateChanged(ChangeEvent event) {
-        if (selectionUpdating) {
-            return;
-        }
-
-        selectionUpdating = true;
-
-        Object source = event.getSource();
-//        if(source instanceof Selection){
-//            Selection selection=(Selection) source;
-//            Set<CfgNode> newSelection = new HashSet<CfgNode>();
-//            BasicBlock[] newBlocks = selection.get(BasicBlock[].class);                  
-//            if (newBlocks != null) {
-//                for(BasicBlock b : newBlocks){
-//                    for(CfgNode n : this.getNodes()){
-//                        if(n.getBasicBlock() == b) newSelection.add(n);
-//                    }
-//                }
-//                this.setSceneSelection(newSelection);                               
-//            } 
-//        }       
-        selectionUpdating = false;
-        // TODO(tw): Add selection management.
-    }
-
-    //centers the viewport on the currently selected nodewidgets
-    private void centerSelection() {
-        Point sceneCenter = null;
-        Collection<CfgNode> nodes = this.selectedNodes;
-        if (nodes.size() == 0) {
-            nodes = this.getNodes();
-        }
-
-        for (CfgNode n : nodes) {
-            if (sceneCenter == null) {
-                sceneCenter = this.findWidget(n).getLocation();
-                continue;
-            }
-            Point location = this.findWidget(n).getLocation();
-            sceneCenter.x = (location.x + sceneCenter.x) / 2;
-            sceneCenter.y = (location.y + sceneCenter.y) / 2;
-        }
-
-        JComponent view = this.getView();
-        if (view != null) {
-            Rectangle viewBounds = view.getVisibleRect();
-
-            Point viewCenter = this.convertSceneToView(sceneCenter);
-
-            view.scrollRectToVisible(new Rectangle(
-                    viewCenter.x - viewBounds.width / 2,
-                    viewCenter.y - viewBounds.height / 2,
-                    viewBounds.width,
-                    viewBounds.height));
-        }
-    }
-
-    public void zoomScene() {
-        JScrollPane pane = scrollPane;
-        Rectangle prefBounds = this.getPreferredBounds();
-        Dimension viewDim = pane.getViewportBorderBounds().getSize();
-
-        double realwidth = (double) prefBounds.width * this.getZoomFactor();
-        double realheight = (double) prefBounds.height * this.getZoomFactor();
-
-        double zoomX = (double) viewDim.width / realwidth;
-        double zoomY = (double) viewDim.height / realheight;
-        double zoomFactor = Math.min(zoomX, zoomY);
-        this.setZoomFactor(zoomFactor * 0.9);
-    }
-
-    //Enables Antialiasing
-    @Override
-    public void paintChildren() {
-        Object anti = getGraphics().getRenderingHint(RenderingHints.KEY_ANTIALIASING);
-        Object textAnti = getGraphics().getRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING);
-
-        getGraphics().setRenderingHint(
-                RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
-        getGraphics().setRenderingHint(
-                RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
-
-        super.paintChildren();
-
-        getGraphics().setRenderingHint(RenderingHints.KEY_ANTIALIASING, anti);
-        getGraphics().setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, textAnti);
-    }
-
-    //select provider for node selection
-    private RectangularSelectProvider createRectangularSelectProvider() {
-        return new RectangularSelectProvider() {
-
-            public void performSelection(Rectangle rectangle) {
-                HashSet<CfgNode> set = new HashSet<>();
-
-                //change to a rectangle with (x,offsetY) at the top left
-                if (rectangle.width < 0) {
-                    rectangle.x = rectangle.x + rectangle.width;
-                    rectangle.width *= -1;
-                }
-                if (rectangle.height < 0) {
-                    rectangle.y = rectangle.y + rectangle.height;
-                    rectangle.height *= -1;
-                }
-
-                for (NodeWidget n : getNodeWidgets()) {
-                    Point p = n.getLocation();
-                    if (p != null && rectangle.contains(p)) {
-                        set.add(n.getNodeModel());
-                    }
-                }
-                setNodeSelection(set);
-            }
-        };
-    }
-
-    //select decorator for node selection
-    private RectangularSelectDecorator createSelectDecorator(final CfgScene scene) {
-        return new RectangularSelectDecorator() {
-
-            public Widget createSelectionWidget() {
-                scene.cleanNodeSelection();//unselected all nodes
-                scene.revalidate();
-                return new SelectionWidget(getScene());
-            }
-        };
-    }
-
-    private MoveProvider createMoveProvider() {
-        return new MoveProvider() {
-
-            private HashMap<Widget, Point> originals = new HashMap<>();
-            private Point original = null;
-
-            public void movementStarted(Widget widget) {
-                originals.clear();
-                NodeWidget nw = (NodeWidget) widget;
-                if (selectedNodes.contains(nw.getNodeModel())) {//move current selection
-                    for (CfgNode n : selectedNodes) {
-                        Widget w = findWidget(n);
-                        originals.put(w, w.getLocation());
-                    }
-                } else {//a newly-selected node will be moved               
-                    CfgNode n = nw.getNodeModel();
-                    HashSet<CfgNode> selectedNode = new HashSet<>(1);
-                    selectedNode.add(n);
-                    setNodeSelection(selectedNode);
-                    originals.put(widget, widget.getPreferredLocation());
-                    widget.revalidate();
-                    validate();
-
-                }
-            }
-
-            public void movementFinished(Widget widget) {
-                NodeWidget nw = (NodeWidget) widget;
-                if (selectedNodes.contains(nw.getNodeModel())) {
-                    return;//to be able to move the current selection
-                }
-
-                HashSet<CfgNode> selectedNode = new HashSet<>(1);
-                selectedNode.add(nw.getNodeModel());
-                setNodeSelection(selectedNode);
-                originals.clear();
-                original = null;
-
-            }
-
-            public Point getOriginalLocation(Widget widget) {
-                if (original == null) {
-                    original = widget.getLocation();
-                }
-
-                return original;
-            }
-            //todo : find a cache algorithm which only routes edges
-            //which are intersected by bounds of the moved rectangle
-
-            public void setNewLocation(Widget widget, Point location) {
-                Point org = getOriginalLocation(widget);
-                int dx = location.x - org.x;
-                int dy = location.y - org.y;
-                for (Map.Entry<Widget, Point> entry : originals.entrySet()) {
-                    Point point = entry.getValue();
-                    entry.getKey().setPreferredLocation(new Point(point.x + dx, point.y + dy));
-                }
-                for (CfgEdge e : getEdges()) {
-                    EdgeWidget ew = (EdgeWidget) findWidget(e);
-                    if (ew.isVisible()) {
-                        ew.reroute();
-                    }
-                }
-            }
-        };
-    }
-
-    private WidgetAction createContextMenuAction(final CfgScene scene) {
-        return ActionFactory.createPopupMenuAction(new PopupMenuProvider() {
-
-            public JPopupMenu getPopupMenu(Widget widget, Point point) {
-                JPopupMenu menu = new JPopupMenu();
-                NodeWidget nw = null;
-                if (widget instanceof NodeWidget) {
-                    nw = (NodeWidget) widget;
-                    if (!selectedNodes.contains(nw.getNodeModel())) {
-                        HashSet<CfgNode> selectedNode = new HashSet<>(1);
-                        selectedNode.add(nw.getNodeModel());
-                        setNodeSelection(selectedNode);
-                    }
-                } else if (scene.getSelectedNodes().size() == 1) {
-                    nw = (NodeWidget) scene.findWidget(scene.getSelectedNodes().iterator().next());
-                }
-
-                if (nw != null) {
-                    CfgNode node = nw.getNodeModel();
-                    ArrayList<CfgNode> successors = new ArrayList<>();
-                    ArrayList<CfgNode> predecessors = new ArrayList<>();
-                    for (CfgEdge e : node.getOutputEdges()) {
-                        successors.add(e.getTargetNode());
-                    }
-                    for (CfgEdge e : node.getInputEdges()) {
-                        predecessors.add(e.getSourceNode());
-                    }
-
-                    if (predecessors.size() > 0) {
-                        Collections.sort(predecessors, new NodeNameComparator());
-                        JMenu predmenu = new JMenu("Go to predecessor");
-                        for (CfgNode n : predecessors) {
-                            GotoNodeAction action = new GotoNodeAction(n);
-                            predmenu.add(action);
-                        }
-                        menu.add(predmenu);
-                    }
-                    if (successors.size() > 0) {
-                        Collections.sort(successors, new NodeNameComparator());
-                        JMenu succmenu = new JMenu("Go to successor");
-                        for (CfgNode n : successors) {
-                            GotoNodeAction action = new GotoNodeAction(n);
-                            succmenu.add(action);
-                        }
-                        menu.add(succmenu);
-                    }
-                    if (successors.size() > 0 || predecessors.size() > 0) {
-                        menu.addSeparator();
-                    }
-                }
-
-                return menu;
-            }
-        });
-    }
-
-    @Override
-    public void zoomIn() {
-        this.setZoomFactor(this.getZoomFactor() * 1.1);
-        this.validate();
-    }
-
-    @Override
-    public void zoomOut() {
-        this.setZoomFactor(this.getZoomFactor() * 0.9);
-        this.validate();
-    }
-
-    @Override
-    public void showAll() {
-        this.zoomScene();
-        this.validate();
-    }
-
-    private class NodeNameComparator implements Comparator<CfgNode> {
-
-        public int compare(CfgNode node1, CfgNode node2) {
-            String name1 = node1.getBasicBlock().getName().substring(1);
-            String name2 = node2.getBasicBlock().getName().substring(1);
-            Integer blocknum1 = Integer.parseInt(name1);
-            Integer blocknum2 = Integer.parseInt(name2);
-            return blocknum1.compareTo(blocknum2);
-        }
-    }
-
-    private class GotoNodeAction extends AbstractAction {
-
-        CfgNode node;
-
-        GotoNodeAction(CfgNode node) {
-            super(node.getBasicBlock().getName());
-            this.node = node;
-        }
-
-        public void actionPerformed(ActionEvent e) {
-            Set<CfgNode> nodes = new HashSet<>(1);
-            nodes.add(node);
-            setNodeSelection(nodes);
-            centerSelection();
-        }
-    }
-
-    private SceneListener createSceneListener(final CfgScene scene) {
-        return new SceneListener() {
-
-            public void sceneRepaint() {
-            }
-
-            public void sceneValidating() {
-            }
-
-            public void sceneValidated() {
-                if (scene.isLoopClusterVisible()) { //update only if visible
-                    for (LoopClusterWidget cw : getLoopidx2clusterwidget().values()) {
-                        cw.updateClusterBounds();
-                    }
-                }
-                for (EdgeSwitchWidget esw : inputSwitches.values()) {
-                    esw.updatePosition();
-                }
-
-                for (EdgeSwitchWidget esw : outputSwitches.values()) {
-                    esw.updatePosition();
-                }
-            }
-        };
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/EdgeSwitchWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-package at.ssw.visualizer.cfg.graph;
-
-import at.ssw.visualizer.cfg.model.CfgEdge;
-import at.ssw.visualizer.cfg.model.CfgNode;
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Polygon;
-import java.awt.Rectangle;
-import java.awt.geom.AffineTransform;
-import java.util.ArrayList;
-import java.util.Collection;
-import org.netbeans.api.visual.action.ActionFactory;
-import org.netbeans.api.visual.action.SelectProvider;
-import org.netbeans.api.visual.action.TwoStateHoverProvider;
-import org.netbeans.api.visual.action.WidgetAction;
-import org.netbeans.api.visual.model.ObjectState;
-import org.netbeans.api.visual.widget.Widget;
-
-
-public class EdgeSwitchWidget extends Widget {
-    private final static Color color_enabled = Color.gray;
-    private final static Color color_hover = Color.lightGray; 
-    private float width=1;
-    private float height=1;
-    private CfgScene scene;
-    private NodeWidget nodeWidget;    
-    private boolean output;
-    private WidgetAction hoverAction;
-    private static final String TT_HIDE_EDGES = "Hide Edges";
-    private static final String TT_SHOW_EDGES = "Show Edges";   
-    private static SelectProvider selectProvider = createSelectProvider();
-     
-    
-    public EdgeSwitchWidget(final CfgScene scene, NodeWidget nodeWidget, boolean output) {        
-        super(scene);
-        this.scene = scene;   
-        this.output = output;
-        this.nodeWidget = nodeWidget;  
-  
-        this.getActions().addAction(ActionFactory.createSelectAction(selectProvider));
-        TwoStateHoverProvider ts = new TsHover(this);   
-        WidgetAction wa = ActionFactory.createHoverAction(ts);
-        this.hoverAction = wa;
-        this.getActions().addAction(wa);
-        scene.getActions().addAction(wa);
-        this.setToolTipText(TT_HIDE_EDGES);      
-        this.setForeground(color_enabled);
-        this.setState(ObjectState.createNormal());
-    }
-    
-    
-    @Override
-    protected Rectangle calculateClientArea() {
-       if (this.nodeWidget.getBounds() == null) return new Rectangle(0, 0, 1, 1);
-       int hw = (int) (this.width / 2);
-       int hh = (int) (this.height /2);
-       
-       return new Rectangle(-hw, -hh, 2*hw, 2*hh); 
-   }    
-     
-   
-    public void updatePosition() { 
-        if (this.nodeWidget.getBounds() != null) {   
-            this.width = nodeWidget.getBounds().width*9;
-            this.width /=10;
-            this.height = nodeWidget.getBounds().height/4;      
-            int offset=(int)(2 * (height / 3));
-                        
-            Rectangle bounds = nodeWidget.getBounds();
-            Point location = nodeWidget.getLocation();
-          
-            Point newLoc = new Point();           
-            newLoc.x = location.x;
-             
-            if(output) {               
-                newLoc.y = +location.y + bounds.height/2+offset;      
-            }else {            
-                newLoc.y = location.y - bounds.height/2-offset;
-            }          
-            this.setPreferredLocation(newLoc);           
-        }           
-    }
- 
-    private Collection<CfgEdge> getEdges(){
-        Collection<CfgEdge> edges;
-        CfgNode node = nodeWidget.getNodeModel();
-        if (output) {
-            edges = scene.findNodeEdges(node, true, false);
-        } else {
-            edges = scene.findNodeEdges(node, false, true);
-        }
-        return edges;
-    }
- 
-    //change visibility for all Edges
-    public void changeEdgeVisibility(boolean visible){
-        Collection<CfgEdge> edges = this.getEdges();  
-            
-        for(CfgEdge e: edges) {
-            EdgeWidget ew = (EdgeWidget) scene.findWidget(e);
-            if(visible != ew.isEdgeVisible()){              
-                ew.setEdgeVisible(visible);     
-                if(output){
-                    scene.getInputSwitch(e.getTargetNode()).updateStatus();
-                } else {
-                    scene.getOutputSwitch(e.getSourceNode()).updateStatus();
-                }              
-            }
-        }
-        if(visible)    
-            this.setToolTipText(TT_HIDE_EDGES); 
-        else 
-            this.setToolTipText(TT_SHOW_EDGES);
-   
-        this.setForeground(color_enabled);
-        this.bringToBack();
-        ObjectState os = this.getState();   
-        this.setState(os.deriveSelected(!visible));
-    }
-    
-    /**
-     *  Update the status of the switch to the current state of the edges
-     *  usually needed when the opposit switch changes the state
-     */
-    private void updateStatus(){
-        Collection<CfgEdge> edges = this.getEdges(); 
-        boolean hiddenFound=false;
-        for(CfgEdge e: edges) {
-            EdgeWidget ew = (EdgeWidget) scene.findWidget(e);
-            if(!ew.isVisible()) {
-                hiddenFound=true;
-                break;
-            }
-        }        
-        ObjectState os = this.getState();
-        if(os.isSelected() && !hiddenFound) {
-            this.setState(os.deriveSelected(false));
-            setToolTipText(TT_HIDE_EDGES);
-        } else if (!os.isSelected() && hiddenFound) {
-            this.setState(os.deriveSelected(true));
-            setToolTipText(TT_SHOW_EDGES); 
-        }
-        this.revalidate();
-    }
-    
-
-    public void startPreview() {        
-        ObjectState os = this.getState();
-        
-        for(CfgEdge e : getEdges()) {
-            EdgeWidget ew = (EdgeWidget) scene.findWidget(e);
-            if(!os.isSelected() || !ew.isVisible()){             
-                ObjectState edgeState = ew.getState();              
-                ew.setState(edgeState.deriveHighlighted(true));
-            }
-        }               
-    }
-    
-    public void endPreview(){       
-       for(CfgEdge e : getEdges()) {
-            EdgeWidget ew = (EdgeWidget) scene.findWidget(e);
-            ObjectState os = ew.getState();          
-            ew.setState(os.deriveHighlighted(false));
-        }      
-    }
-  
-    /**
-     * shows or hides the edges of the switch
-     */
-    public void switchEdges() { 
-        endPreview();
-        ObjectState os = this.getState();
-        Collection<CfgEdge> edges = this.getEdges(); 
-        ArrayList<CfgEdge> updates = new ArrayList<>();
-        boolean visible=os.isSelected();
-        this.setState(os.deriveSelected(!visible));     
-        for(CfgEdge e: edges) {
-            EdgeWidget ew = (EdgeWidget) scene.findWidget(e);
-                if(ew.isEdgeVisible() != visible){
-                    updates.add(e);
-                    ew.setEdgeVisible(visible);
-                    if(output){
-                        scene.getInputSwitch(e.getTargetNode()).updateStatus();
-                    } else {
-                        scene.getOutputSwitch(e.getSourceNode()).updateStatus();
-                    }      
-                }
-        }
-        if(visible)
-             this.setToolTipText(TT_HIDE_EDGES);    
-        else
-             this.setToolTipText(TT_SHOW_EDGES);    
-               
-        revalidate();   
-    }
-  
-  
-
- 
-    private class TsHover implements TwoStateHoverProvider {       
-        EdgeSwitchWidget tw;    
-       
-        TsHover(EdgeSwitchWidget tw) {
-            this.tw = tw;
-        }
-       
-        public void unsetHovering(Widget w) {
-            w.setForeground(color_enabled);  
-            ObjectState state = w.getState();          
-            w.setState(state.deriveWidgetHovered(false));           
-            w.bringToBack();
-            endPreview();
-        }
-
-        public void setHovering(Widget w) {        
-            ObjectState state = w.getState();          
-            w.setState(state.deriveWidgetHovered(true));          
-            w.setForeground(color_hover);
-            w.bringToFront();
-            nodeWidget.bringToFront();                
-            startPreview();
-        }
-    }
-    
-    @Override
-    public void paintWidget() {   
-        ObjectState os = this.getState();       
-        if(!os.isHovered() && !os.isSelected()) return; //all previewEdges visible and not hovering, 
-                                                        //no need to paint the switch         
-        float hw = width/2;    
-        Polygon pol = new Polygon();
-        pol.addPoint(0,(int) -height/2); 
-        pol.addPoint((int)hw,(int) height/2);
-        pol.addPoint((int)-hw,(int) height/2);  
-        Graphics2D gr = getGraphics();
-        gr.setColor(this.getForeground());
-        BasicStroke bs = new BasicStroke(2.0f, BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
-        gr.setStroke(bs);
-        AffineTransform previousTransform;
-        previousTransform = gr.getTransform ();
-        if(output) {
-            if(os.isSelected() ){//hidden
-                 gr.scale(1.0, -1.0);
-            }
-        } else { //input switch
-            if(os.isHovered() && !os.isSelected()){
-                 gr.scale(1.0, -1.0);
-            }     
-        }            
-        gr.fillPolygon(pol);
-        gr.setTransform(previousTransform);
-        
-    }
-    
-   
-    
-    //the constructor adds the hover WidgetAction to the scene
-    //the action is removed from the scene when the object gets destroyed
-    @Override
-    protected void finalize() throws Throwable { 
-        this.getScene().getActions().removeAction(hoverAction);
-        this.getActions().removeAction(hoverAction);
-    }
-    
-    @Override
-    public String toString(){
-        return "EDGESWITCH("+this.nodeWidget.getNodeModel().toString()+")";
-    }
-    
-    private static SelectProvider createSelectProvider() {
-        return new SelectProvider(){
-            public boolean isAimingAllowed(Widget arg0, Point arg1, boolean arg2) {
-                return false;
-            }
-            
-            public boolean isSelectionAllowed(Widget arg0, Point arg1, boolean arg2) {
-                return true;
-            }
-            
-            public void select(Widget w, Point arg1, boolean arg2) {              
-                if(w instanceof EdgeSwitchWidget){
-                    EdgeSwitchWidget tw = (EdgeSwitchWidget) w;                    
-                    tw.switchEdges();
-                }                                    
-            }
-        };
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/EdgeWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-package at.ssw.visualizer.cfg.graph;
-
-import at.ssw.visualizer.cfg.model.CfgEdge;
-import at.ssw.visualizer.cfg.preferences.CfgPreferences;
-import at.ssw.visualizer.cfg.visual.BezierWidget;
-import at.ssw.visualizer.cfg.visual.SplineConnectionWidget;
-import org.netbeans.api.visual.anchor.AnchorShapeFactory;
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Stroke;
-import org.netbeans.api.visual.anchor.AnchorShape;
-import org.netbeans.api.visual.model.ObjectState;
-
-//public class EdgeWidget extends BezierWidget {
-public class EdgeWidget extends SplineConnectionWidget {
-    
-    private boolean visible=true;//to store the visible state when entering the preview 
-    protected static final Stroke selectedStroke = new BasicStroke(3.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
-    protected static final Stroke defaultStroke = new BasicStroke(1.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
-    protected static final Stroke previewStroke = new BasicStroke(
-            0.5f,                      // Width
-            BasicStroke.CAP_SQUARE,    // End cap
-            BasicStroke.JOIN_MITER,    // Join style
-            10.0f,                     // Miter limit
-            new float[] {5.0f, 5.0f},  // Dash pattern
-            0.0f);              
-    
-    
-    
-    public EdgeWidget(CfgScene scene, CfgEdge edge) {
-        super(scene);       
-        Color lineColor;
-        CfgPreferences prefs = CfgPreferences.getInstance();
-        
-        if(edge.isBackEdge()) 
-            lineColor = prefs.getBackedgeColor();       
-        else if (edge.isXhandler())
-            lineColor = prefs.getExceptionEdgeColor();
-        else    
-            lineColor = prefs.getEdgeColor();
-        
-        setLineColor(lineColor);
-        AnchorShape as;
-        if(edge.isReflexive())//small Arrow
-            as = AnchorShapeFactory.createTriangleAnchorShape(6, true, false, 5);
-        else
-            as =AnchorShapeFactory.createTriangleAnchorShape(10, true, false, 9);
-    
-        setTargetAnchorShape(as);  
-        setToolTipText(edge.toString());              
-    }
- 
-    public CfgEdge getEdgeModel() {
-        CfgScene scene = (CfgScene) this.getScene();
-        return (CfgEdge) scene.findObject(this);
-    }
-    
-    public void setEdgeVisible(boolean visible) {
-        this.visible=visible;
-        this.setVisible(visible);
-        this.reroute();
-        this.revalidate();
-    }
-    
-    
-    public boolean isEdgeVisible(){
-        return visible;
-    }
-    
-        
-    @Override
-    public void notifyStateChanged(ObjectState oldState, ObjectState newState) {
-       setForeground (getLineColor());
-      
-       if(newState.isHighlighted() && !oldState.isHighlighted()){
-            this.setStroke(previewStroke);
-            this.setVisible(true);
-       } else {
-           if(newState.isSelected()){
-                this.setStroke(selectedStroke);
-           } else {
-                this.setStroke(defaultStroke);
-           }
-           if(this.isEdgeVisible()){
-                this.setVisible(true);
-           } else {
-                this.setVisible(false);
-           }
-       }       
-    }
-    
-    
-    @Override
-    public String toString(){
-        return "EdgeWidget[" + getEdgeModel().toString() + "]";
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/LoopClusterWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-package at.ssw.visualizer.cfg.graph;
-
-import at.ssw.visualizer.cfg.model.LoopInfo;
-import java.awt.Color;
-import java.awt.Rectangle;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import org.netbeans.api.visual.action.ActionFactory;
-import org.netbeans.api.visual.action.EditProvider;
-import org.netbeans.api.visual.border.BorderFactory;
-import org.netbeans.api.visual.widget.Widget;
-
-public class LoopClusterWidget extends Widget implements Comparable<LoopClusterWidget> {
-    private static final int INSET = 10;//min space between node members and cluster border
-    private static final int DASHSIZE = 10;  
-    private Color color = Color.BLUE;
-    private int loopIndex;
-    private int loopDepth; 
-    private CfgScene cfgscene;
-    private ArrayList<NodeWidget> members = new ArrayList<>();
-  
-    public LoopClusterWidget(CfgScene scene,  int loopdepth, final int loopindex) {
-        super(scene);
-        this.cfgscene = scene;
-        this.loopIndex = loopindex;
-        this.loopDepth = loopdepth;          
-        this.setBorder(BorderFactory.createDashedBorder(color, DASHSIZE, DASHSIZE/2, true));          
-        this.getActions().addAction(ActionFactory.createEditAction( new EditProvider() { //double click action
-            public void edit(Widget w) {
-                if(w instanceof LoopClusterWidget){                 
-                    for(LoopInfo info : cfgscene.getCfgEnv().getLoopMap().values()){
-                        if(info.getLoopIndex() == loopindex){              
-                            cfgscene.setNodeSelection(info.getMembers());                         
-                            break;
-                        }
-                    }   
-                }
-            }
-        }));
-               
-    }
-
-    public List<NodeWidget> getMembers() {
-        return members;
-    }
-
-    public int getLoopIndex() {
-        return loopIndex;
-    }
-    
-    public void addMember(NodeWidget nw) {
-        assert(!this.members.contains(nw));        
-        members.add(nw);       
-    }
-
-    public boolean removeMember(NodeWidget nw) {
-        if(this.members.contains(nw)){
-            members.remove(nw);       
-            return true;
-        }
-        return false;
-    }
-  
-    public void setrandomColor(){
-        if(this.loopDepth == 0 ) return; 
-        Random rand = new Random();
-        Color randColor = Color.getHSBColor(rand.nextFloat()%360,0.1f,1.0f);      
-        this.setBackground(randColor);
-    }
-    
-    //updates the bounds of the widget,
-    //and revalidates the widget if a membernode changed the scene position
-    public void updateClusterBounds(){      
-        Rectangle boundRect=null;
-        
-        for(NodeWidget nw : this.members){
-            if(boundRect==null){
-                boundRect = nw.convertLocalToScene(nw.getBounds());  
-            } else {
-                boundRect = boundRect.union(nw.convertLocalToScene(nw.getBounds()));
-            }  
-        }
-        if(boundRect==null) return;
-        for(Widget w : this.getChildren()) {
-            if(w instanceof LoopClusterWidget) {            
-                LoopClusterWidget lc = (LoopClusterWidget)w;
-                lc.updateClusterBounds();
-                boundRect = boundRect.union(w.convertLocalToScene(w.getBounds()));
-            }
-        }
-       
-        boundRect.grow(INSET, INSET);
-        this.setPreferredBounds(boundRect);               
-    }
-    
-    
-    public int compareTo(LoopClusterWidget o) {
-        return new Integer(this.loopDepth).compareTo(o.loopDepth);
-    }
-    
-    
-    @Override
-    public String toString(){
-        return "LoopCluster: [DEPTH "+this.loopDepth+ "] [INDEX "+this.loopIndex+"]";
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/NodeWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-package at.ssw.visualizer.cfg.graph;
-
-import at.ssw.visualizer.cfg.model.CfgNode;
-import at.ssw.visualizer.cfg.preferences.CfgPreferences;
-import java.awt.AlphaComposite;
-import java.awt.Color;
-import java.awt.Composite;
-import java.awt.Font;
-import java.awt.Graphics2D;
-import java.awt.Insets;
-import java.awt.Rectangle;
-import java.awt.font.FontRenderContext;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.Rectangle2D;
-import java.awt.geom.RoundRectangle2D;
-import org.netbeans.api.visual.border.BorderFactory;
-import org.netbeans.api.visual.model.ObjectState;
-import org.netbeans.api.visual.widget.Widget;
-
-
-public class NodeWidget extends Widget  {    
-    
-    
-    //basic block node dimension
-    private final int halfheight=12;
-    private final int halfwidth=17;
-      
-    private final int height=halfheight*2+1;  
-    private final int width=halfwidth*2+1;     
-    private final int arcHeight=(halfheight/4)*3;
-    private final int arcWidth = arcHeight; 
-    private final int FONT_MAXSIZE=18;
-    
-    private int borderWidth;
-    private boolean nodeColorCustomized;
-    private String text;
-    private Rectangle2D fontRect;
-    private Color nodeColor;
-    
-    protected static final Color HOVER_BACKGROUND = new Color(0xEEEEEE);
-    protected static final Color HOVER_FOREGROUND = new Color(0xCDCDCD);
-
-    public NodeWidget(CfgScene scene, CfgNode nodeModel ){        
-        super(scene);   
-        this.setToolTipText("<html>" + nodeModel.getDescription().replaceAll("\n", "<br>") + "</html>");
-        this.text = nodeModel.getBasicBlock().getName();   
-        this.borderWidth = nodeModel.getLoopDepth()+1;           
-        this.setBorder(BorderFactory.createRoundedBorder(arcWidth+borderWidth, arcHeight+borderWidth, borderWidth, borderWidth, Color.BLACK, Color.BLACK));
-        CfgPreferences prefs = CfgPreferences.getInstance();
-        Color color = prefs.getFlagsSetting().getColor(nodeModel.getBasicBlock().getFlags());
-        this.nodeColorCustomized = (color!=null);
-        this.nodeColor = (nodeColorCustomized) ? color : prefs.getNodeColor();
-        this.adjustFont(null);   
-    }
-
-    public void setBorderColor(Color color){ 
-        this.setBorder(BorderFactory.createRoundedBorder(arcWidth+borderWidth, arcHeight+borderWidth, borderWidth, borderWidth, color, color));
-    }
-    
-    public boolean isNodeColorCustomized() {    
-        return nodeColorCustomized;        
-    }
-    
-    //sets a customColor node color
-    public void setNodeColor(Color color, boolean customColor) {
-        this.nodeColorCustomized=customColor;
-        this.nodeColor=color;
-        this.revalidate();
-    }
-    
-    public Color getNodeColor() {
-        return this.nodeColor;
-    }
-    
-    public CfgNode getNodeModel() {
-        CfgScene scene = (CfgScene) this.getScene();
-        return (CfgNode) scene.findObject(this);    
-    }
-      
-   
-    @Override
-    public void notifyStateChanged(ObjectState oldState, ObjectState newState) {
-        if(!oldState.equals(newState))
-            this.revalidate();
-        if(!oldState.isSelected() && newState.isSelected())
-            this.bringToFront();
-    }
-       
-    @Override
-    protected Rectangle calculateClientArea() {       
-        return new Rectangle(-(halfwidth+1), -(1+halfheight), width+1, height+1);//add border
-    }
-
-    public void adjustFont(Font font){
-        if(font==null)
-            font = CfgPreferences.getInstance().getTextFont();
-        if(font.getSize()>FONT_MAXSIZE){
-            font = new Font(font.getFamily(), font.getStyle(), FONT_MAXSIZE);
-        }
-        int size=font.getSize();
-        int fontStyle = font.getStyle();
-        String fontName = font.getFamily();
-        FontRenderContext frc = new FontRenderContext(new AffineTransform(), false, false);
-        Rectangle2D bounds = font.getStringBounds(text, frc);
-        while(size > 1 && bounds.getWidth() > width) {
-            font = new Font(fontName, fontStyle, --size);
-            bounds = font.getStringBounds(text, frc);
-        }       
-        this.fontRect=bounds;
-        this.setFont(font);
-    }
-
-    @Override
-    protected void paintWidget() {     
-        Graphics2D gr = getGraphics(); 
-        gr.setColor(nodeColor); 
-        Insets borderInsets  = this.getBorder().getInsets();    
-        RoundRectangle2D.Float innerRect = new RoundRectangle2D.Float(-(halfwidth+1), -(halfheight+1), width+1, height+1,arcWidth-1, arcHeight-1);    
-        gr.fill(innerRect);
-        gr.setColor(getForeground()); 
-        gr.setFont(getFont());
-        float textX  = (float)( - fontRect.getCenterX());
-        float textY  = (float)( - fontRect.getCenterY());                   
-        gr.drawString(text, textX, textY); 
-            
-        RoundRectangle2D.Float outerRect = new RoundRectangle2D.Float(-(halfwidth+borderInsets.left + 1), -(halfheight+borderInsets.top + 1), 
-            width+borderInsets.left + borderInsets.right + 1, height + borderInsets.top + borderInsets.bottom + 1, 
-            arcWidth + borderWidth, arcHeight + borderWidth); 
-
-        ObjectState os =this.getState();
-        if(os.isSelected()){
-            Composite composite = gr.getComposite();
-            gr.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));                     
-            gr.setColor(CfgPreferences.getInstance().getSelectionColorForeground());
-            gr.fill(outerRect);
-            gr.setColor(CfgPreferences.getInstance().getSelectionColorBackground());            
-            gr.setComposite(composite);       
-        }  
-        if(os.isHovered()){
-            Composite composite = gr.getComposite();
-            gr.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
-            gr.setColor(HOVER_FOREGROUND);
-            gr.fill(outerRect); 
-            gr.setColor(HOVER_BACKGROUND);
-            gr.setComposite(composite);        
-        }       
-    }  
-    
-    @Override
-    public String toString() {
-        return "NodeWidget[" + getNodeModel().getBasicBlock().getName() + "]";
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/SelectionWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-package at.ssw.visualizer.cfg.graph;
-
-import at.ssw.visualizer.cfg.preferences.CfgPreferences;
-import java.awt.AlphaComposite;
-import java.awt.Composite;
-import java.awt.Graphics2D;
-import java.awt.Rectangle;
-import org.netbeans.api.visual.widget.Scene;
-import org.netbeans.api.visual.widget.Widget;
-
-
-public class SelectionWidget extends Widget {
-    public SelectionWidget(Scene scene) {
-        super(scene);
-    }
-    
-    public static void renderSelectedRect(Graphics2D gr, Rectangle rect) {
-        if (rect == null) {
-            return;
-        }
-        gr.setColor(CfgPreferences.getInstance().getSelectionColorBackground());
-        gr.fillRect(rect.x, rect.y, rect.width, rect.height);
-        gr.setColor(CfgPreferences.getInstance().getSelectionColorForeground());
-    }
-
-    public void renderSelectionRectangle(Graphics2D gr, Rectangle selectionRectangle) {
-        Composite composite = gr.getComposite();
-        gr.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
-       
-        renderSelectedRect(gr, selectionRectangle);
-        gr.setComposite(composite);
-    }
-    
-    @Override
-    public void paintWidget(){       
-        this.renderSelectionRectangle(this.getGraphics(), this.getBounds());
-    }
-
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/SymmetricAnchor.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-package at.ssw.visualizer.cfg.graph;
-
-import org.netbeans.api.visual.widget.Widget;
-import org.netbeans.api.visual.anchor.Anchor;
-import java.awt.*;
-
-
-/**
- * This Anchor can be used with symmetric edges to create parallel Edges.
- * Two Directed Edges are symmetric if they are connecting the same Nodes in different directions.
- * e.g.  Nodes (1, 2) Edges(a , b)  with (1)-a->(2)  ,  (2)-b->(1)  
- * Start-/End positions are calculated with a fixed offset to prevent edges from overlapping. 
- * If the edges are drawn as straight lines they will appear as parallel edges.
- */
-
-public final class SymmetricAnchor extends Anchor {
-    
-   private final static int OFFSET = 10;
-   private boolean includeBorders;  
-   private int offx;
-   private int offy;
-   
-   public SymmetricAnchor (Widget widget, boolean includeBorders, boolean source) {
-        super (widget);
-        this.includeBorders = includeBorders;        
-        if (source) {
-            offx = OFFSET;
-            offy = OFFSET;        
-        }
-        else {
-            offx = -OFFSET;
-            offy = -OFFSET;
-        }
-    }
-
-    public Result compute (Entry entry) {        
-        Point relatedLocation = //center of the widget 
-                getRelatedSceneLocation ();
-        Point oppositeLocation = //center of the widget
-                getOppositeSceneLocation (entry);
-
-        Widget widget = getRelatedWidget ();
-        Rectangle bounds = widget.getBounds ();
-        if (! includeBorders) {
-            Insets insets = widget.getBorder ().getInsets ();
-            bounds.x += insets.left;
-            bounds.y += insets.top;
-            bounds.width -= insets.left + insets.right;
-            bounds.height -= insets.top + insets.bottom;
-        }
-      
-        bounds = widget.convertLocalToScene (bounds);
-       
-        if (bounds.isEmpty ()  || relatedLocation.equals (oppositeLocation))
-            return new Anchor.Result (relatedLocation, Anchor.DIRECTION_ANY);
-
-        float dx  //distance  x-axis
-                = oppositeLocation.x - relatedLocation.x;
-        float dy  //distance y-axis  
-                = oppositeLocation.y - relatedLocation.y;
-       
-        
-        float ddx 
-                = Math.abs (dx) / (float) bounds.width;
-        float ddy = 
-                Math.abs (dy) / (float) bounds.height;
-
-        Anchor.Direction direction;
-      
-
-        if (ddx >= ddy) {
-            if(dx >= 0.0f){        
-                direction = Direction.RIGHT;
-                relatedLocation.y -= offy;
-            } else {
-                direction = Direction.LEFT;
-                relatedLocation.y += offy;
-            }         
-        } else {
-            if(dy >= 0.0f){
-                direction = Direction.BOTTOM;
-                relatedLocation.x += offx;
-            } else {
-                direction = Direction.TOP;
-                relatedLocation.x -= offx;            
-            }           
-        }
-        
-
-        float scale = 0.5f / Math.max (ddx, ddy);
-
-        float ex = scale * dx;
-        float ey = scale * dy;
-        
-        Point point = new Point (Math.round (relatedLocation.x + ex), Math.round (relatedLocation.y + ey));
-            
-         if(direction == Direction.RIGHT) {
-             int top = bounds.y;//-bounds.height;// left y of the widget
-             int bottom = bounds.y + bounds.height;// right y of the widget
-             if(point.y < top) {//above the widget
-                 int cor = top-point.y;
-                 point.x -= cor;
-                 point.y += cor;              
-             } else if ( point.y > bottom) {
-                 int cor = point.y-bottom;
-                 point.x -= cor;
-                 point.y -= cor;
-             }
-             
-         } else if (direction == Direction.LEFT) {
-             int top = bounds.y;//-bounds.height;// left y of the widget
-             int bottom = bounds.y + bounds.height;// right y of the widget
-                         
-           
-                        
-             if(point.y < top) {//above the widget
-                 int cor = top-point.y;
-                 point.x += cor;
-                 point.y += cor;
-             } else if ( point.y > bottom) {              
-                int cor = bottom-point.y;
-                point.x -= cor;
-                point.y += cor;
-             }
-            
-                      
-         } else if (direction == Direction.BOTTOM) {
-             int left = bounds.x;//-bounds.height;// left y of the widget
-             int right = bounds.x + bounds.width;// right y of the widget
-             if(point.x < left) {//above the widget
-                int cor = left-point.x;                
-                point.x += cor;
-                point.y -= cor;
-             } else if ( point.x > right) {
-                int cor = point.x- right;
-                point.x -= cor;
-                point.y -= cor;
-             }
-         
-         } else if (direction == Direction.TOP) {
-            int left = bounds.x;//-bounds.height;// left y of the widget
-            int right = bounds.x + bounds.width;// right y of the widget
-            if(point.x < left) {//above the widget
-                int cor = left-point.x;
-                point.x += cor;
-                point.y += cor;
-             } else if ( point.x > right) {
-                 int cor = point.x - right;
-                 point.x -= cor;
-                 point.y += cor;
-             }
-         
-         }          
-        
-        return new Anchor.Result (point, direction);
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/layout/HierarchicalCompoundLayout.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-package at.ssw.visualizer.cfg.graph.layout;
-
-import at.ssw.visualizer.cfg.graph.CfgScene;
-import at.ssw.visualizer.cfg.model.CfgEdge;
-import at.ssw.visualizer.cfg.model.CfgNode;
-import at.ssw.visualizer.cfg.model.LoopInfo;
-import java.awt.Point;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import org.eclipse.draw2d.geometry.Insets;
-import org.netbeans.api.visual.graph.layout.GraphLayout;
-import org.netbeans.api.visual.graph.layout.UniversalGraph;
-import org.eclipse.draw2d.graph.CompoundDirectedGraph;
-import org.eclipse.draw2d.graph.CompoundDirectedGraphLayout;
-import org.eclipse.draw2d.graph.Edge;
-import org.eclipse.draw2d.graph.EdgeList;
-import org.eclipse.draw2d.graph.Node;
-import org.eclipse.draw2d.graph.NodeList;
-import org.eclipse.draw2d.graph.Subgraph;
-import org.netbeans.api.visual.widget.Widget;
-
-public class HierarchicalCompoundLayout extends GraphLayout<CfgNode, CfgEdge> {
-           
-    private static final int TOP_BORDER = 20;
-    private static final int LEFT_BORDER = 20;
-    private int PADDING = 20;
-    private static final int INSET = 20;
-    private CfgScene scene;      
-       
-    public HierarchicalCompoundLayout(CfgScene scene){
-        this.scene = scene;         
-    }
-    
-    @Override
-    protected void performGraphLayout(UniversalGraph<CfgNode, CfgEdge> ug) {          
-        CompoundDirectedGraph dg = new CompoundDirectedGraph();
-        CompoundDirectedGraphLayout layout = new CompoundDirectedGraphLayout();
-        NodeList nodeList = dg.nodes;
-        EdgeList edgeList = dg.edges;
-                
-        Map<Integer, Subgraph> idx2graph = new HashMap<>();
-        Subgraph base = new Subgraph(0);
-        idx2graph.put(0, base);
-        base.insets=getInsets();
-        for(LoopInfo info : scene.getCfgEnv().getLoopMap().values()){           
-            Subgraph subg = new Subgraph(info.getLoopIndex());   
-            subg.insets=getInsets();
-            idx2graph.put(info.getLoopIndex(), subg);
-        }
-            
-        for(CfgNode n : scene.getCfgEnv().getNodes() ) {
-            Widget nodeWidget = scene.findWidget(n);
-            Node node = new Node(n);
-            node.width=nodeWidget.getBounds().width;
-            node.height = nodeWidget.getBounds().height;
-            node.setPadding(new Insets(PADDING, PADDING, PADDING, PADDING));          
-            Subgraph subg = idx2graph.get(n.getLoopIndex());
-            assert(subg != null);
-            node.setParent(subg);
-            subg.addMember(node);
-            nodeList.add(node);
-          
-        }             
-        nodeList.addAll(idx2graph.values());         
-        for(LoopInfo info : scene.getCfgEnv().getLoopMap().values()){
-            Subgraph subg = idx2graph.get(info.getLoopIndex());
-            if(info.getParent() != null){
-                Subgraph parentsubg = idx2graph.get(info.getParent().getLoopIndex());
-                Edge edge = new Edge(parentsubg, subg);
-                parentsubg.addMember(subg);
-                subg.setParent(parentsubg);              
-                edgeList.add(edge);     
-            }               
-        }   
-        for(CfgEdge e : scene.getCfgEnv().getEdges() ) {                      
-            if(e.isBackEdge()) continue;
-            Edge edge = new Edge(e, nodeList.getNode(e.getSourceNode().getNodeIndex()), nodeList.getNode(e.getTargetNode().getNodeIndex()));
-            edgeList.add(edge);
-        } 
-        layout.visit(dg);
-                
-        for(Object obj : dg.nodes){           
-            Node n = (Node) obj;
-            if(n.data instanceof CfgNode){
-                CfgNode cfgNode = (CfgNode) n.data;              
-                Point pos = new Point(n.x + LEFT_BORDER, n.y + TOP_BORDER);
-                Point scenepos = scene.convertLocalToScene(pos);
-                this.setResolvedNodeLocation(ug, cfgNode, scenepos); 
-            }
-        }      
-    }
-    
-    @Override
-    protected void performNodesLayout(UniversalGraph<CfgNode, CfgEdge> ug, Collection<CfgNode> collection) {        
-    }
-    
-    private Insets getInsets(){             
-        return new Insets(INSET, INSET, INSET, INSET);        
-    }
-
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/layout/HierarchicalNodeLayout.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-package at.ssw.visualizer.cfg.graph.layout;
-
-import at.ssw.visualizer.cfg.graph.CfgScene;
-import at.ssw.visualizer.cfg.model.CfgEdge;
-import at.ssw.visualizer.cfg.model.CfgNode;
-import java.awt.Point;
-import java.util.Collection;
-import org.netbeans.api.visual.graph.layout.GraphLayout;
-import org.netbeans.api.visual.graph.layout.UniversalGraph;
-import org.eclipse.draw2d.graph.DirectedGraph;
-import org.eclipse.draw2d.graph.DirectedGraphLayout;
-import org.eclipse.draw2d.graph.Edge;
-import org.eclipse.draw2d.graph.EdgeList;
-import org.eclipse.draw2d.graph.Node;
-import org.eclipse.draw2d.graph.NodeList;
-import org.netbeans.api.visual.widget.Widget;
-
-
-public class HierarchicalNodeLayout extends GraphLayout<CfgNode, CfgEdge> {
-           
-    private static final int TOP_BORDER = 20;
-    private static final int LEFT_BORDER = 40;    
-    
-    private CfgScene scene;  
-    
-    public HierarchicalNodeLayout(CfgScene scene){
-        this.scene = scene;      
-    }
-    
-    @Override
-    protected void performGraphLayout(UniversalGraph<CfgNode, CfgEdge> ug) {  
-        DirectedGraph dg = new DirectedGraph();
-        DirectedGraphLayout layout = new DirectedGraphLayout();
-       
-        NodeList nodeList = dg.nodes;
-        EdgeList edgeList = dg.edges;
-        
-        for(CfgNode n : scene.getCfgEnv().getNodes() ) {
-            Widget nodeWidget = scene.findWidget(n);
-            Node node = new Node(n);           
-            node.width=nodeWidget.getBounds().width;
-            node.height = nodeWidget.getBounds().height;         
-            nodeList.add(node);
-        }
-        
-        for(CfgEdge e : scene.getCfgEnv().getEdges() ) {
-            if(e.isBackEdge()) continue;
-            Edge edge = new Edge(e, nodeList.getNode(e.getSourceNode().getNodeIndex()), 
-                    nodeList.getNode(e.getTargetNode().getNodeIndex()));            
-            edgeList.add(edge);
-        }        
-      
-        layout.visit(dg);
-        
-        for(Object obj : dg.nodes){
-            Node n = (Node) obj;
-            CfgNode cfgNode  = (CfgNode) n.data;
-            Point pos = new Point(n.x + LEFT_BORDER , n.y + TOP_BORDER);
-            Point scenepos = scene.convertLocalToScene(pos);
-            setResolvedNodeLocation(ug, cfgNode, scenepos);              
-        }
-        
-    }
-
-    @Override
-    protected void performNodesLayout(UniversalGraph<CfgNode, CfgEdge> ug, Collection<CfgNode> collection) {        
-    }
-
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/Icons.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-package at.ssw.visualizer.cfg.icons;
-
-/**
- *
- * @author Christian Wimmer
- */
-public class Icons {
-    private static final String PATH = "at/ssw/visualizer/cfg/icons/";
-    
-    public static final String CFG = PATH + "cfg.gif";
-    
-    public static final String ICON_ZOOMIN = PATH + "zoomin.gif";
-    public static final String ICON_ZOOMOUT = PATH + "zoomout.gif";
-    public static final String ICON_DEFAULT = PATH + "arrangebfs.gif";
-
-    private Icons() {
-    }
-}
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/arrangebfs.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/arrangehier.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/arrangeloop.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/autosize_selection.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/bezierrouter.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/cfg.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/cfg32.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/cluster.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/color.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/combine.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/combine_disabled.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/disk.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/fanrouter.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/hideedges.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/hideedges_disabled.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/manhattanrouter.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/showedges.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/showedges_disabled.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/split.gif has changed
Binary file visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/icons/split_disabled.gif has changed
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
-<filesystem>
-    <folder name="OptionsDialog">
-        <file name="CFGOptions.instance">
-            <attr name="instanceClass" stringvalue="at.ssw.visualizer.cfg.preferences.CFGOptionsCategory"/>
-            <attr name="position" intvalue="1"/>
-        </file>              
-    </folder>   
-    <folder name="CompilationViewer">
-        <folder name="CFG">
-            <folder name="Actions">
-                <file name="com-oracle-graal-visualizer-cfg-RouterAction.instance">
-                    <attr name="displayName" stringvalue="Use bezier routing"/>
-                    <attr methodvalue="org.openide.awt.Actions.checkbox" name="instanceCreate"/>
-                    <attr name="iconBase" stringvalue="at/ssw/visualizer/cfg/icons/bezierrouter.gif"/>
-                    <attr name="preferencesNode" methodvalue="at.ssw.visualizer.cfg.graph.CfgScene.getPreferences"/>
-                    <attr name="preferencesKey" stringvalue="router"/>
-                </file>
-                <file name="com-oracle-graal-visualizer-cfg-LoopClusterAction.instance">
-                    <attr name="displayName" stringvalue="Show loop clusters"/>
-                    <attr methodvalue="org.openide.awt.Actions.checkbox" name="instanceCreate"/>
-                    <attr name="iconBase" stringvalue="at/ssw/visualizer/cfg/icons/cluster.gif"/>
-                    <attr name="preferencesNode" methodvalue="at.ssw.visualizer.cfg.graph.CfgScene.getPreferences"/>
-                    <attr name="preferencesKey" stringvalue="loopClusters"/>
-                </file>
-                <file name="com-oracle-graal-visualizer-sharedactions-ShowAllAction.shadow">
-                    <attr name="originalFile" stringvalue="Actions/View/com-oracle-graal-visualizer-sharedactions-ShowAllAction.instance"/>
-                </file>
-                <file name="com-oracle-graal-visualizer-sharedactions-ZoomInAction.shadow">
-                    <attr name="originalFile" stringvalue="Actions/View/com-oracle-graal-visualizer-sharedactions-ZoomInAction.instance"/>
-                </file>
-                <file name="com-oracle-graal-visualizer-sharedactions-ZoomOutAction.shadow">
-                    <attr name="originalFile" stringvalue="Actions/View/com-oracle-graal-visualizer-sharedactions-ZoomOutAction.instance"/>
-                </file>
-                <file name="com-oracle-graal-visualizer-sharedactions-ExportSVGAction.shadow">
-                    <attr name="originalFile" stringvalue="Actions/File/com-oracle-graal-visualizer-sharedactions-ExportSVGAction.instance"/>
-                </file>
-            </folder>
-        </folder>
-    </folder>
-</filesystem>
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/CfgEdge.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-package at.ssw.visualizer.cfg.model;
-
-public interface CfgEdge {
-    public CfgNode getSourceNode();
-    public CfgNode getTargetNode();
-    public boolean isXhandler();
-    public boolean isBackEdge();
-    public boolean isSymmetric();
-    public boolean isReflexive();
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/CfgEdgeImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-package at.ssw.visualizer.cfg.model;
-
-public class CfgEdgeImpl implements CfgEdge {   
-    private CfgNodeImpl sourceNode;
-    private CfgNodeImpl targetNode;
-    private boolean symmetric;
-    private boolean backedge;
-
-    public CfgEdgeImpl(CfgNodeImpl sourceNode, CfgNodeImpl targetNode) {
-        this.sourceNode = sourceNode;
-        this.targetNode = targetNode;
-    }
-   
-    public void setSymmetric(boolean symmetric){
-        this.symmetric = symmetric;
-    }
-    
-    public void setBackEdge(boolean isBackedge){
-        this.backedge = isBackedge;
-    }
-        
-    public CfgNode getSourceNode() {
-        return sourceNode;
-    }
-
-    public CfgNode getTargetNode() {
-        return targetNode;
-    }
-
-    public boolean isBackEdge() {
-        return this.backedge;
-    }
-
-    public boolean isSymmetric() {
-        return symmetric;
-    }
-
-    public boolean isReflexive() {
-        return sourceNode==targetNode;
-    }
-    
-    public boolean isXhandler() {
-        return sourceNode.getBasicBlock().getXhandlers().contains(targetNode.getBasicBlock());
-    }
-
-    @Override
-    public String toString(){
-        return this.sourceNode.getBasicBlock().getName() + "->" + targetNode.getBasicBlock().getName();
-    }  
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/CfgEnv.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,297 +0,0 @@
-package at.ssw.visualizer.cfg.model;
-
-import at.ssw.visualizer.model.cfg.BasicBlock;
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-
-
-/**
- * This is the container class for the data model,
- * it prepares creates nodes and edges for the CfgScene
- * from a ControlFlowGraph of the Compilation Model
- */
-public class CfgEnv {
-    private ControlFlowGraph cfg;    
-    private Map<CfgNode, LoopInfo> loopMap;//maps: LoopHeader --> LoopInfo
-    private CfgNodeImpl[] nodeArr;
-    private CfgEdgeImpl[] edgeArr;
-       
-    public CfgEnv(ControlFlowGraph cfg) {
-        this.cfg = cfg;        
-        int blockCount = cfg.getBasicBlocks().size();
-        CfgNodeImpl[] nodes = new CfgNodeImpl[blockCount];
-        Map<BasicBlock, CfgNodeImpl> block2nodeMap = new HashMap<>();
-        Map<CfgNodeImpl, Set<CfgEdgeImpl>> inputMap = new HashMap<>();
-        ArrayList<CfgEdgeImpl> allEdges = new ArrayList<>();
-        List<BasicBlock> blocks = cfg.getBasicBlocks();           
-        //create nodes
-        for(int idx=0 ; idx < blockCount ; idx++) {
-            BasicBlock b = blocks.get(idx);
-            
-            String description = "Name: " + b.getName() + "\n";
-            description += "BCI: [" + b.getFromBci() + "," + b.getToBci() + "]\n";
-            if (b.getLoopDepth() > 0) {
-                description += "Loop " + b.getLoopIndex() + " Depth " + b.getLoopDepth() + "\n";
-            }
-            description += "Predecessors: " + getBlockList(b.getPredecessors()) + "\n";
-            description += "Successors: " + getBlockList(b.getSuccessors()) + "\n";
-            description += "XHandlers: " + getBlockList(b.getXhandlers());
-            if (b.getDominator() != null) {
-                description += "\nDominator: " + b.getDominator().getName();
-            } 
-            nodes[idx] = new CfgNodeImpl(b, idx, description);
-            block2nodeMap.put(b, nodes[idx]);
-        }
-        
-        
-        //create edges
-        Set<String> cache = new HashSet<>();//avoids identical edges with same source and same target
-        for(int i = 0 ; i < blockCount ; i++) {
-            BasicBlock b = blocks.get(i);       
-            List<CfgEdgeImpl> outputEdges = new ArrayList<>();           
-            
-            Set<BasicBlock> successors = new HashSet<>();
-            successors.addAll(b.getSuccessors());
-            successors.addAll(b.getXhandlers());
-            for(BasicBlock sb : successors) {  
-                CfgNodeImpl succNode = block2nodeMap.get(sb);
-                CfgEdgeImpl edge = new CfgEdgeImpl(nodes[i], succNode);                
-                if(cache.contains(edge.toString())) 
-                    continue;
-                cache.add(edge.toString());
-                //check for symtric edges              
-                if(sb.getXhandlers().contains(b) || sb.getSuccessors().contains(b)) 
-                    edge.setSymmetric(true);
-                outputEdges.add(edge);                         
-            }
-            allEdges.addAll(outputEdges);
-            nodes[i].setOutputEdges(outputEdges.toArray(new CfgEdgeImpl[outputEdges.size()]));    
-        }
-
-        for(CfgEdgeImpl e: allEdges) {
-            //CfgNodeImpl src = (CfgNodeImpl) e.getSourceNode();
-            CfgNodeImpl tar = (CfgNodeImpl) e.getTargetNode();
-            Set<CfgEdgeImpl> set = inputMap.get(tar);
-            if( set == null) {
-                set = new HashSet<>();      
-                set.add(e);
-                inputMap.put(tar, set);
-            }
-            set.add(e);    
-        }
-        for(CfgNodeImpl n : nodes){
-            Set<CfgEdgeImpl> inputEdges = inputMap.get(n);
-            if(inputEdges == null) continue;
-            n.setInputEdges(inputEdges.toArray(new CfgEdgeImpl[inputEdges.size()]));
-        }    
-        CfgEdgeImpl[] edges = allEdges.toArray(new CfgEdgeImpl[allEdges.size()]);
-        this.edgeArr=edges;
-        this.nodeArr=nodes;       
-        CfgNodeImpl rootNode = nodeArr[0];                   
-        setNodeLevels(rootNode);       
-        indexLoops(rootNode); 
-                          
-    }
-    
-    
-    private String getBlockList(List<? extends BasicBlock> blocks) {
-        if (blocks.size() == 0) {
-            return "None";
-        }
-        StringBuilder sb = new StringBuilder();
-        String prefix = "";
-        for (BasicBlock b : blocks) {
-            sb.append(prefix).append(b.getName());
-            prefix = ", ";
-        }
-        return sb.toString();
-    }
- 
-    
-    public CfgNode[] getNodes(){
-        return this.nodeArr;
-    }
-    
-    public CfgEdge[] getEdges(){
-        return this.edgeArr;
-    }
-
-    public Map<CfgNode, LoopInfo> getLoopMap() {
-        return loopMap;
-    }
-
-    public void setLoopMap(Map<CfgNode, LoopInfo> loopMap) {
-        this.loopMap = loopMap;
-    }
- 
-    private void indexLoops(CfgNodeImpl rootNode){
-         LoopEnv env = new LoopEnv(Arrays.asList(nodeArr));
-         loopDetection(env, rootNode);
-         calcLoopDepth(env);      
-                
-         int loopIndex=1;
-          
-         for(LoopInfo info : env.loopMap.values()) {
-             info.setLoopIndex(loopIndex++);
-             info.setLoopDepth(info.getHeader().getLoopDepth());
-             for(CfgNode n : info.getMembers()){
-                if(n.getLoopDepth()>info.getLoopDepth()) continue;
-                CfgNodeImpl ni = (CfgNodeImpl) n;  
-                ni.setLoopDepth(info.getLoopDepth());
-                ni.setLoopIndex(info.getLoopIndex());
-             }
-         }
-         
-         for(LoopInfo info : env.loopMap.values()) {          
-            HashSet<CfgNode> members =  new HashSet<>(info.getMembers());         
-            members.remove(info.getHeader());//remove own header
-            for(CfgNode n: members){              
-                if(n.isLoopHeader()) {                   
-                    LoopInfo memberInfo = env.loopMap.get(n);
-                    if (info.getLoopDepth() == memberInfo.getLoopDepth()-1)
-                        memberInfo.setParent(info);
-                }                    
-            }
-         }
-         this.loopMap = env.loopMap; 
-    }
-
-    
-    private class LoopEnv {   
-        Set<CfgNodeImpl> allNodes;
-        Set<CfgNodeImpl> activeNodes; 
-        Set<CfgNodeImpl> visitedNodes;       
-        Map<CfgNode, LoopInfo> loopMap;
-        private int loopIndex=0;
-        
-        public LoopEnv(Collection<CfgNodeImpl> nodes){
-            allNodes = new HashSet<>(nodes); 
-            activeNodes = new HashSet<>(2 * allNodes.size());
-            visitedNodes = new HashSet<>(2 * allNodes.size());   
-            loopMap = new HashMap<>();
-        }  
-        
-        public int getLoopIndex(){         
-            return ++loopIndex;           
-        }    
-    }
-      
-  
-    private void loopDetection(LoopEnv env, CfgNodeImpl root) {  
-        for (CfgNodeImpl n : env.allNodes) {
-            n.setLoopHeader(false);
-            for (CfgEdge e : n.getInputEdges()) {
-                CfgEdgeImpl ei = (CfgEdgeImpl) e;        
-                ei.setBackEdge(false);       
-            }
-        }
-        visit(env, root, null);
-    }
-   
-
-    
-    private void visit(LoopEnv env, CfgNodeImpl n, CfgEdgeImpl e) {
-        if (env.activeNodes.contains(n)) {
-            // This node is b loop header!
-            n.setLoopHeader(true);
-            e.setBackEdge(true);
-        } else if (!env.visitedNodes.contains(n)) {
-            env.visitedNodes.add(n);
-            env.activeNodes.add(n);
-            
-            for (CfgEdge edge : n.getOutputEdges()) {               
-                if(!edge.getTargetNode().isOSR()) {
-                    CfgEdgeImpl ei = (CfgEdgeImpl) edge;
-                    CfgNodeImpl ni = (CfgNodeImpl) edge.getTargetNode();
-                    visit(env, ni, ei);
-                }
-            }
-            env.activeNodes.remove(n);
-        }
-    }
-    
-    
-    
-    private void calcLoopDepth(LoopEnv env) {
-        for (CfgNodeImpl n : env.allNodes) {
-            env.visitedNodes.clear();
-
-            if (n.isLoopHeader()) {
-                LoopInfo loop = new LoopInfo();
-                loop.setHeader(n);
-                n.setLoopIndex(env.getLoopIndex());
-                HashSet<CfgNode> members = new HashSet<>();
-                loop.setMembers(members);
-                members.add(n);               
-                env.loopMap.put(loop.getHeader(), loop);
-                int loopDepth = n.getLoopDepth() + 1;
-                loop.setLoopDepth(loopDepth);
-                n.setLoopDepth(loopDepth);
-                for (CfgEdge e : n.getInputEdges())  {
-                    if (e.isBackEdge() && !e.getSourceNode().isOSR()) {
-                        CfgNodeImpl src = (CfgNodeImpl) e.getSourceNode();
-                        backwardIteration(env, n, src, loop);               
-                        loop.getBackEdges().add(e);
-                    }
-                }
-            }
-        }
-    }
-  
-
-    private void backwardIteration(LoopEnv env, CfgNodeImpl endNode, CfgNodeImpl n, LoopInfo loop) {
-        if (endNode != n && !env.visitedNodes.contains(n)) {
-            env.visitedNodes.add(n);
-
-            for (CfgEdge e : n.getInputEdges()) {
-                if (!e.getSourceNode().isOSR()) {
-                    CfgNodeImpl src = (CfgNodeImpl) e.getSourceNode();
-                    backwardIteration(env, endNode, src, loop);
-                }
-            }
-            loop.getMembers().add(n); 
-            n.setLoopDepth(n.getLoopDepth() + 1);
-        }
-    }
-    
-    private void setNodeLevels(CfgNode rootNode){
-        Set<CfgNode> cache = new HashSet<>();
-        Queue<CfgNode> queue = new LinkedList<>();
-        queue.add(rootNode);
-        cache.add(rootNode);
-        int level=0;
-        int[] nodeCount = new int[2];
-        nodeCount[0]=1;
-        while(!queue.isEmpty()){           
-            CfgNodeImpl curNode = (CfgNodeImpl) queue.poll();
-            curNode.setLevel(level);                 
-            nodeCount[0]--;       
-            for(CfgEdge outEdge : curNode.getOutputEdges()) {
-                CfgNode succNode = outEdge.getTargetNode();
-                if(cache.contains(succNode)) continue;
-                cache.add(succNode);
-                queue.add(succNode);
-                nodeCount[1]++;
-            }
-            if(nodeCount[0]==0){
-                nodeCount[0]=nodeCount[1];
-                nodeCount[1]=0;
-                level++;
-            }
-        }               
-    }
-
-    public ControlFlowGraph getCfg() {
-        return cfg;
-    }
-
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/CfgNode.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-package at.ssw.visualizer.cfg.model;
-
-import at.ssw.visualizer.model.cfg.BasicBlock;
-
-
-public interface CfgNode {
-    //testers    
-    public boolean isOSR();
-    public boolean isRoot();
-    public boolean isLoopHeader();
-    public boolean isLoopMember();
-       
-    //getters
-    public int getLevel();
-    public int getLoopDepth();
-    public int getLoopIndex();
-    public int getNodeIndex();
-    public CfgEdge[] getInputEdges();
-    public CfgEdge[] getOutputEdges();
-    public BasicBlock getBasicBlock();
-    public String getDescription();
-   
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/CfgNodeImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-package at.ssw.visualizer.cfg.model;
-
-import at.ssw.visualizer.model.cfg.BasicBlock;
-import java.awt.Color;
-
-
-
-public class CfgNodeImpl implements CfgNode {
-    private int nodeIndex;
-    private BasicBlock basicBlock;
-    private int level;   
-    private int loopDepth=0;
-    private int loopIndex=0; 
-    private boolean osr=false;
-    private CfgNodeImpl dominator=null;
-    private CfgEdgeImpl[] inputEdges = new CfgEdgeImpl[0];
-    private CfgEdgeImpl[] outputEdges = new CfgEdgeImpl[0];
-    private String description;
-    private Color customColor=null;
-    private boolean loopHeader;
-       
-    public CfgNodeImpl(BasicBlock bb, int nodeIndex, String description) {
-        this.basicBlock = bb;
-        this.nodeIndex = nodeIndex;  
-        this.description = description;
-        
-        if (bb.getPredecessors().size() == 1) {
-            BasicBlock pred = bb.getPredecessors().get(0);
-            boolean isStd = pred.getPredecessors().size() == 0;
-            if (isStd) {
-                for (String s : bb.getFlags()) {
-                    if (s.equals("osr")) {
-                        osr = true;
-                        break;
-                    }
-                }
-            }
-        }   
-    }
-
-    public int getNodeIndex() {
-        return nodeIndex;
-    }
-    
-    
-    public void setDominator(CfgNodeImpl dominator) {
-        this.dominator = dominator;
-    }
-
-    public void setLevel(int level) {
-        this.level = level;
-    }
-
-    public void setLoopDepth(int loopDepth) {
-        this.loopDepth = loopDepth;
-    }
-
-    public void setLoopHeader(boolean loopHeader) {
-        this.loopHeader = loopHeader;
-    }
-
-    public void setLoopIndex(int loopIndex) {
-        this.loopIndex = loopIndex;
-    }
-
-    public void setNodeIndex(int nodeIndex) {
-        this.nodeIndex = nodeIndex;
-    }
-       
-    public boolean isRoot() {
-        return nodeIndex==0;
-    }
-
-    public boolean isLoopHeader() {
-        return loopHeader;
-    }
-
-    public boolean isLoopMember() {
-        return loopIndex > 0;
-    }
-
-    public int getLevel() {
-        return level;
-    }
-
-    public BasicBlock getBasicBlock() {
-        return basicBlock;
-    }
-    
-    public int getLoopDepth() {
-        return loopDepth;
-    }
-
-    public int getLoopIndex() {
-        return loopIndex;
-    }
-   
-    public boolean isOSR() {
-        return osr;
-    }
-    
-    @Override
-    public String toString(){
-        return basicBlock.getName();
-    }
-
-    public void setInputEdges(CfgEdgeImpl[] inputEdges){
-        this.inputEdges = inputEdges;
-    }
-    
-    
-    public void setOutputEdges(CfgEdgeImpl[] outputEdges){
-        this.outputEdges = outputEdges;
-    }
-     
-    public CfgEdge[] getInputEdges() {
-        return this.inputEdges;
-    }
-
-    public CfgEdge[] getOutputEdges() {
-        return outputEdges;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setColor(Color color) {
-        this.customColor=color;
-    }
-
-   
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/model/LoopInfo.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-package at.ssw.visualizer.cfg.model;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-
-public class LoopInfo {  
-    private CfgNode header;//the target node of the backedge
-    private int loopIndex; //index of the min cycleSet
-    private int loopDepth; //nested depth >=1 
-    private LoopInfo parent=null;  
-    private Set<CfgNode> members;
-    private List<CfgEdge> backEdges = new ArrayList<>();//dfs backEdge
-
-    protected void setLoopDepth(int depth) {
-        this.loopDepth=depth;
-    }
-
-    protected void setLoopIndex(int loopIndex) {
-        this.loopIndex = loopIndex;
-    }
-
-    public int getLoopDepth() {
-        return loopDepth;
-    }
-            
-    public Set<CfgNode> getMembers() {
-        return members;
-    }
-
-    protected void setMembers(Set<CfgNode> members) {
-        this.members = members;
-    }
-        
-    public int getLoopIndex() {
-        return loopIndex;
-    }
-
-    protected void setParent(LoopInfo parent) {
-        this.parent = parent;
-    }
-    
-    public LoopInfo getParent(){
-        return parent;
-    }
-    
-    public List<CfgEdge> getBackEdges() {
-        return backEdges;
-    }
-
-    public CfgNode getHeader() {
-        return header;
-    }
-
-    protected void setHeader(CfgNode header) {
-        this.header = header;
-    }
-
-    @Override
-    public String toString(){
-        return "Loop(" + header.toString()+ ")-->" + members.toString();
-    }
-
-    
-  
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CFGOptionsCategory.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-package at.ssw.visualizer.cfg.preferences;
-
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-import org.netbeans.spi.options.OptionsCategory;
-import org.netbeans.spi.options.OptionsPanelController;
-import org.openide.util.ImageUtilities;
-
-/**
- * Descriptor for the settings page displayed in the options dialog.
- *
- * @author Bernhard Stiftner
- */
-public class CFGOptionsCategory extends OptionsCategory {
-    
-    public OptionsPanelController create() {
-        return new CFGOptionsPanelController();
-    }
-
-    public String getCategoryName() {
-        return "Control Flow Graph";
-    }
-
-    @Override
-    public Icon getIcon() {
-        return new ImageIcon(ImageUtilities.loadImage("at/ssw/visualizer/cfg/icons/cfg32.gif"));
-    }
-
-    public String getTitle() {
-        return "CFG Visualizer";
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CFGOptionsPanel.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,482 +0,0 @@
-package at.ssw.visualizer.cfg.preferences;
-
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.List;
-import javax.swing.AbstractAction;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.SwingConstants;
-
-/**
- * The actual component for changing the CFG visualizer settings.
- *
- * @author Bernhard Stiftner
- * @author Rumpfhuber Stefan
- */
-public class CFGOptionsPanel extends JPanel {
-
-    List<ConfigurationElement> elements = new ArrayList<>();
-
-    /** Creates a new instance of CFGOptionsPanel */
-    public CFGOptionsPanel() {
-        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
-        JPanel cfgPanel = new JPanel(new GridBagLayout());
-
-        // color/font settings
-        addColorChooser(cfgPanel, "Background color: ", new ColorChooser(CfgPreferences.PROP_BACKGROUND_COLOR){
-            @Override
-            public void apply() {
-                CfgPreferences.getInstance().setBackgroundColor(getColor());              
-            }
-
-            @Override
-            public void update() {
-               this.originalColor = CfgPreferences.getInstance().getBackgroundColor();
-               setColor(this.originalColor);
-            }
-            
-             public void reset() {
-                this.setColor(CfgPreferencesDefaults.DEFAULT_BACKGROUND_COLOR);
-            }
-            
-            
-           
-        });
-        addColorChooser(cfgPanel, "Back edge color: ", new ColorChooser(CfgPreferences.PROP_BACK_EDGE_COLOR){
-
-            @Override
-            public void apply() {               
-                CfgPreferences.getInstance().setBackedgeColor(getColor());                 
-            }
-
-            @Override
-            public void update() {
-                this.originalColor = CfgPreferences.getInstance().getBackedgeColor();
-                this.setColor(this.originalColor);
-
-            }
-
-            public void reset() {
-                this.setColor(CfgPreferencesDefaults.DEFAULT_BACKEDGE_COLOR);
-            }
-        });
-        addColorChooser(cfgPanel, "Edge color: ", new ColorChooser(CfgPreferences.PROP_EDGE_COLOR){
-
-            @Override
-            public void apply() {               
-                CfgPreferences.getInstance().setEdgeColor(getColor());  
-            }
-
-            @Override
-            public void update() {
-                this.originalColor = CfgPreferences.getInstance().getEdgeColor(); 
-                setColor(this.originalColor);
-            }
-            
-            public void reset() {
-                this.setColor(CfgPreferencesDefaults.DEFAULT_EDGE_COLOR);
-            }
-            
-        });
-        addColorChooser(cfgPanel, "Exception edge color: ", new ColorChooser(CfgPreferences.PROP_EXCEPTION_EDGE_COLOR){
-
-            @Override
-            public void apply() {             
-                CfgPreferences.getInstance().setExceptionEdgeColor(getColor());  
-            }
-
-            @Override
-            public void update() {
-                this.originalColor = CfgPreferences.getInstance().getExceptionEdgeColor();
-                setColor(this.originalColor);
-                
-            }
-            
-            public void reset() {
-                this.setColor(CfgPreferencesDefaults.DEFAULT_EXCEPTIONEDGE_COLOR);
-            }
-        });
-        addColorChooser(cfgPanel, "Node color: ", new ColorChooser(CfgPreferences.PROP_NODE_COLOR){
-
-            @Override
-            public void apply() {
-               CfgPreferences.getInstance().setNodeColor(getColor());  
-            }
-
-            @Override
-            public void update() {
-                this.originalColor = CfgPreferences.getInstance().getNodeColor();
-                setColor(this.originalColor);
-                
-            }
-            
-            public void reset() {
-                this.setColor(CfgPreferencesDefaults.DEFAUT_NODE_COLOR);
-            }
-        });
-        addColorChooser(cfgPanel, "Text color: ", new ColorChooser(CfgPreferences.PROP_TEXT_COLOR){
-
-            @Override
-            public void apply() {
-               CfgPreferences.getInstance().setTextColor(getColor());  
-            }
-
-            @Override
-            public void update() {
-               this.originalColor = CfgPreferences.getInstance().getTextColor();
-               
-            }
-            
-            public void reset() {
-                this.setColor(CfgPreferencesDefaults.DEFAULT_TEXT_COLOR);
-            }
-        });     
-        addColorChooser(cfgPanel, "Border color: ", new ColorChooser(CfgPreferences.PROP_BORDER_COLOR){
-
-            @Override
-            public void apply() {
-                CfgPreferences.getInstance().setBorderColor(getColor());  
-            }
-
-            @Override
-            public void update() {
-                this.originalColor = CfgPreferences.getInstance().getBorderColor();
-                setColor(this.originalColor);
-                
-            }
-            public void reset() {
-                this.setColor(CfgPreferencesDefaults.DEFAULT_BORDER_COLOR);
-            }
-        });
-        addColorChooser(cfgPanel, "Selected Nodes color: ", new ColorChooser(CfgPreferences.PROP_SELECTION_COLOR_FG){
-
-            @Override
-            public void apply() {
-                CfgPreferences.getInstance().setSelectionColorForeground(getColor());  
-            }
-
-            @Override
-            public void update() {
-                this.originalColor = CfgPreferences.getInstance().getSelectionColorForeground();
-                setColor(this.originalColor);
-            }
-            
-            public void reset() {
-                this.setColor(CfgPreferencesDefaults.DEFAULT_SELECTION_COLOR_FOREGROUND);
-            }
-        });
-        addColorChooser(cfgPanel, "Selection Rect color: ", new ColorChooser(CfgPreferences.PROP_SELECTION_COLOR_BG){
-
-            @Override
-            public void apply() {
-                CfgPreferences.getInstance().setSelectionColorBackground(getColor());
-            }
-
-            @Override
-            public void update() {
-                this.originalColor = CfgPreferences.getInstance().getSelectionColorBackground();
-                setColor(this.originalColor);
-            }
-            
-            public void reset() {
-                this.setColor(CfgPreferencesDefaults.DEFAULT_SELECTION_COLOR_BACKGROUND);
-            }
-        });
-        addFontChooser(cfgPanel, "Text font: ", new FontChooser(CfgPreferences.PROP_TEXT_FONT){
-
-            @Override
-            public void apply() {
-                CfgPreferences.getInstance().setTextFont(getSelectedFont());                
-            }
-
-            @Override
-            public void update() {
-                this.originalFont = CfgPreferences.getInstance().getTextFont();
-                this.setSelectedFont(originalFont);
-                
-            }
-            
-            public void reset() {
-                this.setSelectedFont(CfgPreferencesDefaults.DEFAULT_TEXT_FONT);
-            }
-        });
-
-        // flags editor
-        addFlagsEditor(cfgPanel, "Flags: ");
-        add(cfgPanel);
-
-        // add update button
-        Box hBox = new Box(BoxLayout.X_AXIS);
-        hBox.add(new JButton(new ResetAction()));
-        hBox.add(Box.createHorizontalGlue());
-        add(hBox);
-
-        add(Box.createVerticalGlue());
-    }
-    
-    public void update() {
-        for (ConfigurationElement e : elements) {          
-            e.update();
-        }
-    }
-
-    public void cancel() {
-        for (ConfigurationElement e : elements) {
-            e.update();
-        }
-    }
-
-    public void applyChanges() {
-        for (ConfigurationElement e : elements) {
-            if(e.isChanged())
-                e.apply();
-        }
-    }
-
-    public boolean isDataValid() {
-        return true;
-    }
-
-    public boolean isChanged() {
-        for (ConfigurationElement e : elements) {
-            if (e.isChanged()) {
-                return true;
-            }
-        }
-        return false;
-    }
-    
-    public void loadDefault() {
-        for (ConfigurationElement e : elements) {
-            e.reset();
-        }
-    }
-
-    private void addColorChooser(JComponent c, String displayName, ColorChooser chooser) {
-        GridBagLayout layout = (GridBagLayout)c.getLayout();
-        GridBagConstraints constraints = new GridBagConstraints();
-        constraints.insets = new Insets(3, 3, 3, 3);
-        constraints.weightx = 0.0;
-        constraints.fill = GridBagConstraints.NONE;
-        constraints.anchor = GridBagConstraints.EAST;
-        JLabel label = new JLabel(displayName, JLabel.TRAILING);
-        layout.setConstraints(label, constraints);
-        c.add(label);
-        constraints.anchor = GridBagConstraints.WEST;
-        constraints.gridwidth = GridBagConstraints.REMAINDER;
-        layout.setConstraints(chooser, constraints);
-        c.add(chooser);
-        elements.add(chooser);
-        label.setLabelFor(chooser);
-    }
-
-   
-
-    private void addFontChooser(JComponent c, String displayName, FontChooser chooser) {
-        GridBagLayout layout = (GridBagLayout)c.getLayout();
-        GridBagConstraints constraints = new GridBagConstraints();
-        constraints.insets = new Insets(3, 3, 3, 3);
-        constraints.weightx = 0.0;
-        constraints.fill = GridBagConstraints.NONE;
-        constraints.anchor = GridBagConstraints.EAST;
-        JLabel label = new JLabel(displayName, JLabel.TRAILING);
-        layout.setConstraints(label, constraints);
-        c.add(label);
-        constraints.insets = new Insets(3, 3, 3, 1);
-        constraints.weightx = 1.0;
-        constraints.fill = GridBagConstraints.HORIZONTAL;
-        constraints.anchor = GridBagConstraints.CENTER;
-        layout.setConstraints(chooser.getPreview(), constraints);
-        c.add(chooser.getPreview());
-        constraints.insets = new Insets(3, 1, 3, 3);
-        constraints.weightx = 0.0;
-        constraints.fill = GridBagConstraints.NONE;
-        constraints.anchor = GridBagConstraints.EAST;
-        constraints.gridwidth = GridBagConstraints.REMAINDER;
-        layout.setConstraints(chooser.getButton(), constraints);
-        c.add(chooser.getButton());
-        elements.add(chooser);
-        label.setLabelFor(chooser.getButton());
-    }
-
-    private void addFlagsEditor(JComponent c, String displayName) {
-        GridBagLayout layout = (GridBagLayout)c.getLayout();
-        GridBagConstraints constraints = new GridBagConstraints();
-        constraints.insets = new Insets(3, 3, 3, 3);
-        constraints.weightx = 0.0;
-        constraints.fill = GridBagConstraints.NONE;
-        constraints.anchor = GridBagConstraints.NORTHEAST;
-        FlagsEditor flagsEditor = new FlagsEditor();
-        JLabel flagsLabel = new JLabel(displayName, JLabel.TRAILING);
-        flagsLabel.setVerticalAlignment(SwingConstants.TOP);
-        layout.setConstraints(flagsLabel, constraints);
-        c.add(flagsLabel);
-        constraints.weightx = 1.0;
-        constraints.weighty = 1.0;
-        constraints.fill = GridBagConstraints.BOTH;
-        constraints.anchor = GridBagConstraints.CENTER;
-        constraints.gridwidth = GridBagConstraints.REMAINDER;
-        layout.setConstraints(flagsEditor, constraints);
-        c.add(flagsEditor);
-        elements.add(flagsEditor);
-        flagsLabel.setLabelFor(flagsEditor);
-    }
-
-    
-    
-
-    interface ConfigurationElement {
-
-        public boolean isChanged();
-        
-        //apply changes to preferences
-        public void apply();
-        
-        //optain current value from preferences
-        public void update();
-        
-        //reset to default value
-        public void reset();
-        
-    }
-    
-    abstract class ColorChooser extends ColorChooserButton implements ConfigurationElement {
-
-        Color originalColor;//the color before any change
-        String propertyName;
-
-        public ColorChooser(String propertyName) {
-            this.propertyName = propertyName;
-        }
-        
-        public boolean isChanged() {
-            return !originalColor.equals(getColor());
-        }
-        
-        
-        public abstract void apply();
-        public abstract void update();
-
-    }
-    
-
-    abstract class FontChooser implements ConfigurationElement, ActionListener {
-
-        Font originalFont;
-        Font selectedFont;
-        String propertyName;
-        JTextField preview;
-        JButton button;
-
-        public FontChooser(String propertyName) {
-            this.propertyName = propertyName;
-            preview = new JTextField("");
-            preview.setEditable(false);
-            button = new JButton("...");
-            button.setMargin(new Insets(0, 0, 0, 0));
-            button.addActionListener(this);
-        }
-
-        public boolean isChanged() {
-            return !originalFont.equals(selectedFont);
-        }
-        
-        public abstract void apply();
-        
-        public abstract void update();
-        
-        public abstract void reset();
-
-        public JTextField getPreview() {
-            return preview;
-        }
-
-        public JButton getButton() {
-            return button;
-        };
-
-        public Font getSelectedFont() {
-            return selectedFont;
-        }
-
-        public void setSelectedFont(Font f) {
-            selectedFont = f;
-            preview.setText(fontToString(f));
-            preview.revalidate();
-        }
-
-        public void actionPerformed(ActionEvent e) {
-            setSelectedFont(FontChooserDialog.show(selectedFont));
-        }
-
-        public String fontToString(Font font) {
-            StringBuffer sb = new StringBuffer();
-            sb.append(font.getName());
-            sb.append(" ");
-            sb.append(font.getSize());
-            if (font.isBold()) {
-                sb.append(" bold");
-            }
-            if (font.isItalic()) {
-                sb.append(" italic");
-            }
-            return sb.toString();
-        }
-
-    }
-
-    class FlagsEditor extends FlagsEditorPanel implements ConfigurationElement {
-
-        FlagsSetting originalFlags;
-
-        public FlagsEditor() {
-            super(null);    
-        }
-
-        public boolean isChanged() {
-            return !originalFlags.getFlagString().equals(getFlagString());
-        }
-
-        public void apply() {
-            CfgPreferences.getInstance().setFlagsSetting(new FlagsSetting(getFlagString()));
-            update();
-        }
-
-        public void update() {
-            originalFlags = CfgPreferences.getInstance().getFlagsSetting();
-            setFlagString(originalFlags.getFlagString());
-        }
-
-        public void reset() {
-            FlagsSetting defaultFlags = new FlagsSetting(CfgPreferencesDefaults.DEFAULT_FLAGSTRING);
-            setFlagString(defaultFlags.getFlagString());
-            colorButton.setColor(getParent().getBackground());            
-        }
-
-    }
-
-    class ResetAction extends AbstractAction {
-
-        public ResetAction() {
-            super("Reset");
-        }
-
-        public void actionPerformed(ActionEvent e) {
-            CFGOptionsPanel.this.loadDefault();           
-        }
-
-    }
-
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CFGOptionsPanelController.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-package at.ssw.visualizer.cfg.preferences;
-
-import java.beans.PropertyChangeListener;
-import javax.swing.JComponent;
-import org.netbeans.spi.options.OptionsPanelController;
-import org.openide.util.HelpCtx;
-import org.openide.util.Lookup;
-
-/**
- * Controller for the settings page displayed in the options dialog.
- *
- * @author Bernhard Stiftner
- */
-public class CFGOptionsPanelController extends OptionsPanelController {
-
-    CFGOptionsPanel optionsPanel;
-
-    
-    public void update() {
-        getOptionsPanel().update();       
-    }
-
-    public void applyChanges() {
-        getOptionsPanel().applyChanges();
-    }
-
-    public void cancel() {
-        getOptionsPanel().cancel();
-    }
-
-    public boolean isValid() {
-        return getOptionsPanel().isDataValid();
-    }
-
-    public boolean isChanged() {
-        return getOptionsPanel().isChanged();
-    }
-
-    public JComponent getComponent(Lookup masterLookup) {
-        return getOptionsPanel();
-    }
-
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-    
-    public void addPropertyChangeListener(PropertyChangeListener l) {
-        getOptionsPanel().addPropertyChangeListener(l);
-    }
-
-    //todo: investigate - who removes the changelistener ?
-    public void removePropertyChangeListener(PropertyChangeListener l) {
-        getOptionsPanel().removePropertyChangeListener(l);
-    }
-
-    private CFGOptionsPanel getOptionsPanel() {
-        if (optionsPanel == null) {
-            optionsPanel = new CFGOptionsPanel();
-        }
-        return optionsPanel;
-    }
-
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CfgPreferences.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +0,0 @@
-package at.ssw.visualizer.cfg.preferences;
-
-import java.awt.Color;
-import java.awt.Font;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.prefs.Preferences;
-import javax.swing.event.EventListenerList;
-import org.openide.util.NbPreferences;
-
-/**
- * Replacement for old CFGSettings to remove dependency on deprecated SystemOption package
- * 
- * @author Rumpfhuber Stefan
- */
-public class CfgPreferences  {
-    public static final String PROP_FLAGS = "flagsPreference";
-    public static final String PROP_TEXT_FONT = "textFontPreference";
-    public static final String PROP_TEXT_COLOR = "textColorPreference";
-    public static final String PROP_NODE_COLOR = "nodeColorPreference";
-    public static final String PROP_EDGE_COLOR = "edgeColorPreference";
-    public static final String PROP_BORDER_COLOR = "borderColorPreference";
-    public static final String PROP_BACK_EDGE_COLOR = "backEdgeColorPreference";
-    public static final String PROP_BACKGROUND_COLOR = "backgroundColorPreference";
-    public static final String PROP_SELECTION_COLOR_FG = "selectionColorFgPreference";
-    public static final String PROP_SELECTION_COLOR_BG = "selectionColorBgPreference";
-    public static final String PROP_EXCEPTION_EDGE_COLOR = "exceptionEdgeColorPreference";
-    
-    private static final String PROP_FONTNAME = "_FontFamily";
-    private static final String PROP_FONTSIZE = "_FontSize";
-    private static final String PROP_FONTSTYLE = "_FontStyle";
-    
-    protected static final String nodeName = "CfgPreferences";
-      
-    private static CfgPreferences instance = new CfgPreferences();
-    private EventListenerList listenerList;
-       
-    private FlagsSetting flagsSetting;
-    private Color node_color; 
-    private Color background_color; 
-    private Color backedge_color; 
-    private Color edge_color;
-    private Color border_color;
-    private Color exceptionEdgeColor;
-    private Color text_color;
-    private Font  text_font;
-    private Color selection_color_fg;
-    private Color selection_color_bg;
-    
-    
-    private  CfgPreferences(){        
-        listenerList = new EventListenerList();       
-        init();           
-    }
-    
-    public static CfgPreferences getInstance(){
-        return instance;
-    }
-
-    protected final Preferences getPreferences() {
-        return NbPreferences.forModule(this.getClass()).node("options").node(nodeName);
-    }
-    
-    
-    protected void init(){
-        Preferences prefs = this.getPreferences();
-        String flagString = prefs.get(PROP_FLAGS, CfgPreferencesDefaults.DEFAULT_FLAGSTRING);
-        flagsSetting = new FlagsSetting(flagString);
-        node_color = this.getColorProperty(PROP_NODE_COLOR, CfgPreferencesDefaults.DEFAUT_NODE_COLOR);
-        background_color = this.getColorProperty(PROP_BACKGROUND_COLOR, CfgPreferencesDefaults.DEFAULT_BACKGROUND_COLOR); 
-        backedge_color = this.getColorProperty(PROP_BACK_EDGE_COLOR, CfgPreferencesDefaults.DEFAULT_BACKEDGE_COLOR); 
-        edge_color = this.getColorProperty(PROP_EDGE_COLOR, CfgPreferencesDefaults.DEFAULT_EDGE_COLOR);
-        selection_color_fg= this.getColorProperty(PROP_SELECTION_COLOR_FG, CfgPreferencesDefaults.DEFAULT_SELECTION_COLOR_FOREGROUND);
-        border_color = this.getColorProperty(PROP_BORDER_COLOR, CfgPreferencesDefaults.DEFAULT_BORDER_COLOR);
-        exceptionEdgeColor = this.getColorProperty(PROP_EXCEPTION_EDGE_COLOR, CfgPreferencesDefaults.DEFAULT_EXCEPTIONEDGE_COLOR);
-        text_color= this.getColorProperty(PROP_TEXT_COLOR, CfgPreferencesDefaults.DEFAULT_TEXT_COLOR);
-        selection_color_bg = this.getColorProperty(PROP_SELECTION_COLOR_BG, CfgPreferencesDefaults.DEFAULT_SELECTION_COLOR_BACKGROUND);
-        selection_color_fg = this.getColorProperty(PROP_SELECTION_COLOR_FG, CfgPreferencesDefaults.DEFAULT_SELECTION_COLOR_FOREGROUND);
-        text_font = this.getFontProperty(PROP_TEXT_FONT, CfgPreferencesDefaults.DEFAULT_TEXT_FONT);     
-    }
-         
-    private void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
-        Object[] listeners = listenerList.getListenerList();   
-       
-        PropertyChangeEvent event = new PropertyChangeEvent(this, propertyName, oldValue, newValue);
-        for (int i = listeners.length - 2; i >= 0; i -= 2) {
-            if (listeners[i] == PropertyChangeListener.class) {
-                ((PropertyChangeListener) listeners[i+1]).propertyChange(event);
-            }
-        }
-    }
-    
-    private Font getFontProperty(String propName, Font defaultFont){
-        Preferences prefs = this.getPreferences();
-        String fontName = prefs.get(propName+PROP_FONTNAME, defaultFont.getFamily());
-        int fontSize = prefs.getInt(propName+PROP_FONTSIZE, defaultFont.getSize());
-        int fontStyle = prefs.getInt(propName+PROP_FONTSTYLE, defaultFont.getStyle());                
-        return new Font(fontName, fontStyle, fontSize);   
-    }
-       
-    private Color getColorProperty(String propName, Color defaultColor){
-        Preferences prefs = this.getPreferences();
-        int srgb = prefs.getInt(propName, defaultColor.getRGB());
-        if(srgb == defaultColor.getRGB())
-            return defaultColor;
-        return new Color(srgb);
-    }
-     
-    public Color getBackedgeColor() {
-        return backedge_color;
-    }
-  
-    public Color getBackgroundColor() {
-        return background_color;
-    }
-
-    public Color getBorderColor() {
-        return border_color;
-    }
- 
-    public Color getEdgeColor() {
-        return edge_color;
-    }
-
-    public Color getExceptionEdgeColor() {
-        return exceptionEdgeColor;
-    }
-   
-    public Color getNodeColor() {
-        return node_color;
-    }
-
-    public Color getSelectionColorForeground() {
-        return selection_color_fg;
-    }
-    
-    public Color getSelectionColorBackground() {
-        return selection_color_bg;
-    }
-
-    public Color getTextColor() {
-        return text_color;
-    }
-
-    public Font getTextFont() {
-        return text_font;
-    }
-
-    public FlagsSetting getFlagsSetting() {
-        return flagsSetting;
-    }
-    
-    
-    public void setFlagsSetting(FlagsSetting flagsSetting) {
-        FlagsSetting old = this.getFlagsSetting();
-        this.flagsSetting = flagsSetting;
-        Preferences prefs = getPreferences();
-        firePropertyChange(PROP_FLAGS, old, flagsSetting);
-        prefs.put(PROP_FLAGS, flagsSetting.getFlagString());
-    }
-    
-
-    public void setTextFont(Font text_font) {
-        Font old = this.getTextFont();
-        Preferences prefs = getPreferences();
-        this.text_font = text_font;
-        firePropertyChange(PROP_TEXT_FONT, old, text_font);
-        prefs.put(PROP_TEXT_FONT + PROP_FONTNAME , text_font.getFamily());
-        prefs.putInt(PROP_TEXT_FONT + PROP_FONTSIZE, text_font.getSize());
-        prefs.putInt(PROP_TEXT_FONT + PROP_FONTSTYLE, text_font.getStyle());   
-    }
-    
-   public void setBackedgeColor(Color backedge_color) {
-        Color old = this.getBackedgeColor();        
-        this.backedge_color = backedge_color;
-        firePropertyChange(PROP_BACK_EDGE_COLOR, old, backedge_color);
-        getPreferences().putInt(PROP_BACK_EDGE_COLOR, backedge_color.getRGB());        
-    }
-
-    public void setBackgroundColor(Color bg_color) {
-        Color old = this.getBackgroundColor();
-        background_color = bg_color;
-        firePropertyChange(PROP_BACKGROUND_COLOR, old, bg_color );
-        getPreferences().putInt(PROP_BACKGROUND_COLOR, bg_color.getRGB());      
-    }
-
-    public void setBorderColor(Color border_color) {
-        Color old = getBorderColor();      
-        this.border_color = border_color;
-        firePropertyChange(PROP_BORDER_COLOR, old, border_color );
-        getPreferences().putInt(PROP_BORDER_COLOR, border_color.getRGB());       
-    }
-
-    public void setEdgeColor(Color edge_color) {
-        Color old = getEdgeColor();     
-        this.edge_color = edge_color;
-        firePropertyChange(PROP_EDGE_COLOR, old, edge_color);
-        getPreferences().putInt(PROP_EDGE_COLOR, edge_color.getRGB());      
-    }
-    
-    public void setNodeColor(Color node_color) {
-        Color old = getNodeColor();      
-        this.node_color = node_color;
-        firePropertyChange(PROP_NODE_COLOR, old, node_color);
-        getPreferences().putInt(PROP_NODE_COLOR, node_color.getRGB());
-        
-    }
-    
-    public void setSelectionColorForeground(Color selection_color) {
-         Color old = this.getSelectionColorForeground();   
-         this.selection_color_fg = selection_color;
-         firePropertyChange(PROP_SELECTION_COLOR_FG, old, selection_color);
-         getPreferences().putInt(PROP_SELECTION_COLOR_FG, selection_color.getRGB());       
-    }
-    
-    public void setSelectionColorBackground(Color selection_color) {
-         Color old = this.getSelectionColorBackground();   
-         this.selection_color_bg = selection_color;
-         firePropertyChange(PROP_SELECTION_COLOR_BG, old, selection_color);
-         getPreferences().putInt(PROP_SELECTION_COLOR_BG, selection_color.getRGB());       
-    }
-    
-    public void setTextColor(Color text_color) {
-         Color old = this.getTextColor();       
-         this.text_color = text_color;
-         firePropertyChange(PROP_TEXT_COLOR, old, text_color);
-         getPreferences().putInt(PROP_TEXT_COLOR, text_color.getRGB());     
-    }
-    
-    public void setExceptionEdgeColor(Color exceptionEdgeColor) {
-        Color old = this.getExceptionEdgeColor();  
-        this.exceptionEdgeColor = exceptionEdgeColor;
-        firePropertyChange(PROP_EXCEPTION_EDGE_COLOR, old, exceptionEdgeColor);
-        getPreferences().putInt(PROP_EXCEPTION_EDGE_COLOR, exceptionEdgeColor.getRGB());       
-    }
-
-   
-
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CfgPreferencesDefaults.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-package at.ssw.visualizer.cfg.preferences;
-
-import java.awt.Color;
-import java.awt.Font;
-
-/**
- * Default Configuration for options panel
- * 
- * @author Rumpfhuber Stefan
- */
-public final class CfgPreferencesDefaults {    
-    public static final String DEFAULT_FLAGSTRING = "std(224,224,128);osr(224,224,0);ex(128,128,224);sr(128,224,128);llh(224,128,128);lle(224,192,192);plh(128,224,128);bb(160,0,0);ces(192,192,192)";
-    public static final Color DEFAUT_NODE_COLOR = new Color(208, 208, 208);
-    public static final Color DEFAULT_BACKGROUND_COLOR =  new Color(255, 255, 255);
-    public static final Color DEFAULT_BACKEDGE_COLOR = new Color(160, 0, 0);
-    public static final Color DEFAULT_EDGE_COLOR = new Color(0, 0, 0);
-    public static final Color DEFAULT_SELECTION_COLOR_FOREGROUND = Color.BLUE;
-    public static final Color DEFAULT_SELECTION_COLOR_BACKGROUND = Color.BLUE;
-    public static final Color DEFAULT_BORDER_COLOR = new Color(0, 0, 0);
-    public static final Color DEFAULT_EXCEPTIONEDGE_COLOR = new Color(0, 0, 160);
-    public static final Color DEFAULT_TEXT_COLOR = new Color(0, 0, 0);
-    public static final Font  DEFAULT_TEXT_FONT = new Font("Dialog", Font.PLAIN, 18);
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/ColorChooserButton.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-package at.ssw.visualizer.cfg.preferences;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JColorChooser;
-
-/**
- * A color selection button. It will preview the currently selected color as
- * an icon. Clicking the button will bring up the JColorChooser dialog.
- *
- * @author Bernhard Stiftner
- */
-public class ColorChooserButton extends JButton implements ActionListener {
-
-    public static final Dimension ICON_SIZE = new Dimension(24, 8);
-
-    Color color;
-    boolean colorChooserEnabled = true; // bring up dialog when clicked?
-
-
-    public ColorChooserButton() {
-        this(Color.black);
-    }
-
-    public ColorChooserButton(Color defaultColor) {
-        setIcon(new ColorBoxIcon());
-        addActionListener(this);
-        color = defaultColor;
-        Dimension size = new Dimension(ICON_SIZE);
-        size.width += getInsets().left + getInsets().right;
-        size.height += getInsets().top + getInsets().bottom;
-        setPreferredSize(size);
-    }
-
-    public void setColor(Color newColor) {
-        color = newColor;
-        repaint();
-    }
-
-    public Color getColor() {
-        return color;
-    }
-
-    public boolean isColorChooserEnabled() {
-        return colorChooserEnabled;
-    }
-
-    public void setColorChooserEnabled(boolean enabled) {
-        this.colorChooserEnabled = enabled;
-    }
-
-    public void actionPerformed(ActionEvent e) {
-        if (!colorChooserEnabled) {
-            return;
-        }
-
-        Color c = JColorChooser.showDialog(this, "Choose color", color);
-        if (c != null) {
-            setColor(c);
-        }
-    }
-
-    class ColorBoxIcon implements Icon {
-
-        public int getIconWidth() {
-            return ICON_SIZE.width;
-        }
-
-        public int getIconHeight() {
-            return ICON_SIZE.height;
-        }
-
-        public void paintIcon(Component c, Graphics g, int x, int y) {
-            Color oldColor = g.getColor();
-            g.translate(x, y);
-
-            g.setColor(color);
-            g.fillRect(0, 0, ICON_SIZE.width, ICON_SIZE.height);
-
-            g.setColor(Color.black);
-            g.drawRect(0, 0, ICON_SIZE.width, ICON_SIZE.height);
-
-            g.translate(-x, -y);
-            g.setColor(oldColor);
-        }
-    }
-}
-
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/FlagsEditorPanel.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,247 +0,0 @@
-package at.ssw.visualizer.cfg.preferences;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.Enumeration;
-import java.util.StringTokenizer;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.DefaultListModel;
-import javax.swing.JButton;
-import javax.swing.JColorChooser;
-import javax.swing.JComponent;
-import javax.swing.JList;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.ListSelectionModel;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-
-/**
- *
- * @author Bernhard Stiftner
- * @author Rumpfhuber Stefan
- */
-public class FlagsEditorPanel extends JPanel implements ActionListener,
-        ListSelectionListener {
-
-    FlagListModel listModel;
-    JList list;
-    ColorChooserButton colorButton;
-    JButton newButton;
-    JButton removeButton;
-    JButton upButton;
-    JButton downButton;
-
-
-    /** Creates a new instance of FlagsEditorPanel */
-    public FlagsEditorPanel(String flagString) {
-        setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
-
-        listModel = new FlagListModel(flagString);
-        list = new JList(listModel);
-        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-        list.addListSelectionListener(this);
-        add(new JScrollPane(list));
-
-        add(Box.createHorizontalStrut(3));
-
-        Box buttonBox = new Box(BoxLayout.Y_AXIS);
-        buttonBox.add(colorButton = new ColorChooserButton());
-        buttonBox.add(newButton = new JButton("New..."));
-        buttonBox.add(removeButton = new JButton("Remove"));
-        buttonBox.add(upButton = new JButton("Up"));
-        buttonBox.add(downButton = new JButton("Down"));
-        buttonBox.add(Box.createVerticalGlue());
-        add(buttonBox);
-        layoutButtonContainer(buttonBox);
-
-        colorButton.setColorChooserEnabled(false);
-        colorButton.addActionListener(this);
-        newButton.addActionListener(this);
-        removeButton.addActionListener(this);
-        upButton.addActionListener(this);
-        downButton.addActionListener(this);
-
-        selectionChanged(-1); // no selection
-    }
-
-    /**
-     * Ugly helper to make a nice layout for vertically aligned buttons.
-     */
-    private static void layoutButtonContainer(JComponent buttonContainer) {
-        int width = 0;
-        int height = 0;
-
-        for (int i=0; i<buttonContainer.getComponentCount(); i++) {
-            Component c = buttonContainer.getComponent(i);
-            if (c instanceof JButton) {
-                JButton b = (JButton)c;
-                if (width < b.getPreferredSize().width) {
-                    width = b.getPreferredSize().width;
-                }
-                if (height < b.getPreferredSize().height) {
-                    height = b.getPreferredSize().height;
-                }
-            }
-        }
-
-        Dimension commonButtonSize = new Dimension(width, height);
-
-        for (int i=0; i<buttonContainer.getComponentCount(); i++) {
-            Component c = buttonContainer.getComponent(i);
-            if (c instanceof JButton) {
-                JButton b = (JButton)c;
-                b.setMinimumSize(commonButtonSize);
-                b.setPreferredSize(commonButtonSize);
-                b.setMaximumSize(commonButtonSize);
-            }
-        }
-
-    }
-
-    public String getFlagString() {
-        return listModel.getFlagString();
-    }
-
-    public void setFlagString(String flagString) {
-        listModel.setFlagString(flagString);
-    }
-    
-    public void actionPerformed(ActionEvent e) {
-        Object source = e.getSource();
-        if (source == colorButton) {
-            changeColor();
-        } else if (source == newButton) {
-            String s = JOptionPane.showInputDialog(this,
-                    "Type in the flag which should fill the block with a specific color");
-            if (s == null) {
-                return;
-            }
-            s = s.replace('(', ' ');
-            s = s.replace(';', ' ');
-            int index = list.getSelectedIndex()+1;
-            listModel.insertElementAt(new FlagListItem(s, Color.WHITE), index);
-        } else if (source == removeButton) {
-            listModel.removeElementAt(list.getSelectedIndex());
-        } else if (source == upButton) {
-            int index = list.getSelectedIndex();
-            if (index == 0) {
-                return;
-            }
-            Object o = listModel.getElementAt(index);
-            listModel.removeElementAt(index);
-            listModel.insertElementAt(o, index-1);
-        } else if (source == downButton) {
-            int index = list.getSelectedIndex();
-            if (index >= listModel.size()-1) {
-                return;
-            }
-            Object o = listModel.getElementAt(index);
-            listModel.removeElementAt(index);
-            listModel.insertElementAt(o, index+1);  
-        }
-    }
-
-    public void valueChanged(ListSelectionEvent e) {
-        if (e.getValueIsAdjusting()) {
-            return; // another event will be fired soon
-        }
-        selectionChanged(list.getSelectedIndex());
-    }
-
-    protected void selectionChanged(int index) { //index is -1 if there is no selection           
-        colorButton.setEnabled(index >= 0);
-        removeButton.setEnabled(index >= 0);
-        upButton.setEnabled(index > 0);
-        downButton.setEnabled(index >= 0 && index < listModel.getSize()-1);
-
-        if (index >= 0) {
-            FlagListItem item = (FlagListItem)listModel.elementAt(index);
-            colorButton.setColor(item.getColor());
-            list.setSelectedIndex(index);
-        } else {
-            colorButton.setColor(getBackground());
-        }
-    }
-
-    protected void changeColor() {
-        int selectedIndex = list.getSelectedIndex();
-        FlagListItem item = (FlagListItem)listModel.elementAt(selectedIndex);
-        Color c = JColorChooser.showDialog(this, "Choose color", item.getColor());
-
-        if (c != null) {
-            item.setColor(c);
-            colorButton.setColor(c);
-        }
-    }
-
-    class FlagListModel extends DefaultListModel {
-
-        public FlagListModel(String flagString) {
-            if (flagString != null) {
-                setFlagString(flagString);
-            }
-        }
-
-        public String getFlagString() {
-            StringBuffer sb = new StringBuffer();
-            Enumeration e = elements();
-            while (e.hasMoreElements()) {
-                FlagListItem item = (FlagListItem)e.nextElement();
-                sb.append(item.getFlagString());
-                Color c = item.getColor();
-                sb.append("(").append(c.getRed()).append(",").append(c.getGreen()).append(",").append(c.getBlue()).append(")");
-                if (e.hasMoreElements()) {
-                    sb.append(";");
-                }
-            }
-            return sb.toString();
-        }
-
-        public void setFlagString(String flagString) {
-            clear();
-            StringTokenizer st = new StringTokenizer(flagString, ";");
-            while (st.hasMoreTokens()) {
-                String s = st.nextToken();
-                String flag = s.split("\\(")[0];
-                Color color = FlagsSetting.toColor(s);
-                addElement(new FlagListItem(flag, color));
-            }
-        }
-
-    }
-
-    class FlagListItem {
-
-        Color color;
-        String flagString;
-
-        public FlagListItem(String flagString, Color color) {
-            this.flagString = flagString;
-            this.color = color;
-        }
-
-        public Color getColor() {
-            return color;
-        }
-
-        public String getFlagString() {
-            return flagString;
-        }
-
-        public void setColor(Color c) {
-            color = c;
-        }
-
-        @Override
-        public String toString() {
-            return flagString;
-        }
-    }
-
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/FlagsSetting.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-package at.ssw.visualizer.cfg.preferences;
-
-import java.awt.Color;
-import java.io.Serializable;
-import java.util.Hashtable;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class FlagsSetting implements Serializable {
-
-    private Hashtable<String, Color> flag2color;
-    private Hashtable<String, Integer> priority;
-    private String flagString;
-
-
-    public FlagsSetting(String flagString) {
-        this.flagString = flagString;
-        flag2color = new Hashtable<>();
-        priority = new Hashtable<>();
-        String[] flags = flagString.split(";");
-
-        int z = 0;
-        for(String s : flags) {
-            String flag = s.split("\\(")[0];
-            Color c = toColor(s);
-            flag2color.put(flag, c);
-            priority.put(flag, z);
-            z++;
-        }
-    }
-
-    public Color getColor(List<String> strings) {
-        int minPriority = Integer.MAX_VALUE;
-        Color result = null;
-
-        for(String s : strings) {
-            Color curColor = flag2color.get(s);
-            if(curColor != null) {
-                int curPriority = priority.get(s);
-                if(curPriority < minPriority) {
-                    minPriority = curPriority;
-                    result = curColor;
-                }
-            }
-        }
-
-        return result;
-    }
-
-    public static Color toColor(String s) {
-        String sArr[] = s.split("\\(");
-        String Color = sArr[1].substring(0, sArr[1].length() - 1);
-        String ColorArr[] = Color.split(",");
-        int r = Integer.parseInt(ColorArr[0]);
-        int g = Integer.parseInt(ColorArr[1]);
-        int b = Integer.parseInt(ColorArr[2]);
-        return new Color(r, g, b);
-    }
-
-    public String getFlagString() {
-        return flagString;
-    }
-      
-    @Override
-    public boolean equals(Object o) {
-        if(o==null) 
-            return false;
-        return this.toString().equals(o.toString());
-    }
-
-    @Override
-    public int hashCode() {
-        int hash = 7;
-        hash = 19 * hash + (this.flagString != null ? this.flagString.hashCode() : 0);
-        return hash;
-    }
-
-    @Override
-    public String toString(){
-        return "FlagSetting[" + flagString + "]";
-    }
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/FontChooserDialog.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-package at.ssw.visualizer.cfg.preferences;
-
-import java.awt.Font;
-import java.beans.PropertyEditor;
-import java.beans.PropertyEditorManager;
-import org.openide.DialogDescriptor;
-import org.openide.DialogDisplayer;
-
-/**
- *
- * @author Bernhard Stiftner
- */
-public class FontChooserDialog {
-
-    /*
-     * Displays a font selection dialog.
-     * @return The selected font, or the initial font if the user chose
-     * to bail out
-     */
-    public static Font show(Font initialFont) {
-        PropertyEditor pe = PropertyEditorManager.findEditor(Font.class);
-        if (pe == null) {
-            throw new RuntimeException("Could not find font editor component.");
-        }
-        pe.setValue(initialFont);
-        DialogDescriptor dd = new DialogDescriptor(
-                pe.getCustomEditor(),
-                "Choose Font");
-        DialogDisplayer.getDefault().createDialog(dd).setVisible(true);
-        if (dd.getValue() == DialogDescriptor.OK_OPTION) {
-            Font f = (Font)pe.getValue();
-            return f;
-        }
-        return initialFont;
-    }
-
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/visual/BezierWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,345 +0,0 @@
-package at.ssw.visualizer.cfg.visual;
-
-import org.netbeans.api.visual.widget.ConnectionWidget;
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.Shape;
-import java.awt.Stroke;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.CubicCurve2D;
-import java.awt.geom.GeneralPath;
-import java.awt.geom.Point2D;
-import java.util.List;
-import org.netbeans.api.visual.anchor.AnchorShape;
-import org.netbeans.api.visual.graph.GraphScene;
-import org.netbeans.api.visual.widget.Scene;
-import org.netbeans.api.visual.widget.Widget;
-
-
-/**
- *  In comparison to the default ConnectionWidget this class is able to connect 
- *  Widgets with a curve instead of a straight line sequence. Between two control
- *  points a curve is painted as cubic bezier curve the control points are 
- *  calculated automaticaly they depend on the position of the prior- and the 
- *  following control points.
- *  In conjunction with a suitable router the connection will be a straight line 
- *  or a curve depending on the amount and the position of the controlpoints. 
- *  Controlpoints supplied by the router, are treated as curve intersection points.
- *  For Reflexive edges the router doesn`t  need to supply controlpoints, they 
- *  get painted by this class automatically. If the router supplys more as 2 
- *  control points for a recursive edge the edge gets painted with the default
- *  curve approximation algorithm.
- */
-public class BezierWidget extends ConnectionWidget {
-    private static final double BEZIER_SCALE = 0.3;     
-    private static final double ENDPOINT_DEVIATION = 3;//curve endpoint approximation accuracy
-   
-    private GraphScene scene=null;
- 
-    public BezierWidget(Scene scene) {
-        super(scene);          
-    }
-    
-    public BezierWidget(GraphScene scene) {
-        super(scene);   
-        this.scene=scene;        
-    }
- 
-    
-    private boolean isReflexive(){
-        return getSourceAnchor().getRelatedWidget() == getTargetAnchor().getRelatedWidget();
-    }
-    
-    
-    @Override
-    protected Rectangle calculateClientArea() {              
-        Rectangle bounds = null;
-        if(this.getControlPoints().size()>0){           
-            for(Point p : this.getControlPoints()){
-              if(bounds==null)
-                  bounds = new Rectangle(p);
-              else
-                  bounds.add(p);
-            }
-            bounds.grow(5,5);         
-        }    
-        if(isReflexive()){
-            Widget related = this.getTargetAnchor().getRelatedWidget();
-            bounds = related.convertLocalToScene(related.getBounds());
-            bounds.grow(10, 10);
-        }
-        if(bounds==null)
-            bounds = super.calculateClientArea();
-           
-        return bounds;
-    }
-    
- 
-    
-    //returns prefered location for an edge -1 for left and 1 for right
-    private int edgeBalance(Widget nodeWidget) {   
-        if(scene == null)
-            return 1;
-        
-        Point nodeLocation = nodeWidget.getLocation();
-        int left = 0, right = 0;
-
-        Object node = scene.findObject(nodeWidget);
-    
-        for(Object e : scene.findNodeEdges(node, true, true)) {//inputedges
-            ConnectionWidget cw = (ConnectionWidget) scene.findWidget(e);
-            
-            if(cw != this) {                
-                Widget targetNodeWidget = cw.getTargetAnchor().getRelatedWidget();
-
-                Point location;
-                if(targetNodeWidget == nodeWidget) {
-                    Widget sourceNodeWidget = cw.getSourceAnchor().getRelatedWidget();
-                    location = sourceNodeWidget.getLocation();
-                } else {
-                    location = targetNodeWidget.getLocation();
-                }
-
-                if(location.x < nodeLocation.x)
-                    left++;
-                else 
-                    right++;
-            }
-        }    
-        if(left < right)
-            return -1;
-        else
-            return 1;
-    } 
-    
-    
-    
-    
-    /**
-     * if the edge is reflexive its painted as a cyclic edge
-     * if there are 2 controlpoints the connection is painted as a straight line from the source to the targetanchor
-     * if there are more as 2 controlpoints the connection path between 2 control points is painted as bezier curve
-     */
-       
-    @Override
-    protected void paintWidget () {  
-
-        List<Point> contrPoints = this.getControlPoints();
-        int listSize = contrPoints.size();
-                
-        Graphics2D gr = getGraphics ();
-        
-        if (listSize <= 2) {
-            if(isReflexive()) { //special case for reflexive connection widgets    
-                Widget related = this.getTargetAnchor().getRelatedWidget();
-                int position = this.edgeBalance(related);
-                Rectangle bounds = related.convertLocalToScene(related.getBounds());
-                gr.setColor (getLineColor()); 
-                Point first = new Point();
-                Point last = new Point();
-                double centerX = bounds.getCenterX();
-                first.x = (int) (centerX + bounds.width / 4);          
-                first.y = bounds.y + bounds.height;
-                last.x = first.x;
-                last.y = bounds.y;
-
-                gr.setStroke(this.getStroke());
-
-                double cutDistance = this.getTargetAnchorShape().getCutDistance();
-                double anchorAngle = Math.PI/-3.0;
-                double cutX = Math.abs(Math.cos(anchorAngle)*cutDistance); 
-                double cutY = Math.abs(Math.sin(anchorAngle)*cutDistance);
-                int ydiff=first.y-last.y; 
-                int endy = -ydiff;
-                double height=bounds.getHeight();
-                double cy = height/4.0;
-                double cx=bounds.getWidth()/5.0;
-                double dcx = cx*2;
-                GeneralPath gp = new GeneralPath();
-                gp.moveTo(0, 0);
-                gp.quadTo(0, cy, cx, cy);
-                gp.quadTo(dcx, cy, dcx, -height/2.0);
-                gp.quadTo(dcx, endy - cy, cy, -(cy+ydiff));
-                gp.quadTo(cutX*1.5, endy - cy, cutX, endy-cutY);   
-
-                AffineTransform af = new AffineTransform();           
-                AnchorShape anchorShape = this.getTargetAnchorShape();           
-
-                if(position < 0) {
-                    first.x = (int) (centerX - bounds.width / 4);        
-                    af.translate(first.x, first.y);
-                    af.scale(-1.0, 1.0);
-                    last.x = first.x;
-                } else {
-                    af.translate(first.x, first.y);
-                }
-                Shape s = gp.createTransformedShape(af);  
-                gr.draw(s);
-
-                if (last != null) {
-                    AffineTransform previousTransform = gr.getTransform ();
-                    gr.translate (last.x, last.y);  
-
-                    if(position < 0)
-                        gr.rotate(Math.PI - anchorAngle);
-                    else                  
-                        gr.rotate (anchorAngle);
-
-                    anchorShape.paint (gr, false);
-                    gr.setTransform (previousTransform);
-                }                                      
-                   
-            } else {
-                super.paintWidget();
-            }
-            return;
-        }
-           
-        //bezier curve... 
-        GeneralPath curvePath = new GeneralPath();
-        Point lastControlPoint = null;
-        double lastControlPointRotation = 0.0;
-       
-        Point prev = null;                 
-        for (int i = 0; i < listSize - 1; i++) {
-            Point cur = contrPoints.get(i);
-            Point next = contrPoints.get(i + 1);
-            Point nextnext = null;
-            if (i < listSize - 2) {
-                nextnext = contrPoints.get(i + 2);
-            }     
-            
-            double len = cur.distance(next);                
-            double scale = len * BEZIER_SCALE;     
-            Point bezierFrom = null;//first ControlPoint         
-            Point bezierTo = null;//second ControlPoint
-            
-            if (prev == null) {
-                //first point 
-                curvePath.moveTo(cur.x, cur.y);//startpoint
-                bezierFrom = cur;              
-            } else {            
-                bezierFrom = new Point(next.x - prev.x, next.y - prev.y);
-                bezierFrom = scaleVector(bezierFrom, scale);
-                bezierFrom.translate(cur.x, cur.y); 
-            }
-       
-            if (nextnext == null) {//next== last point (curve to)               
-                lastControlPoint=next;  
-                bezierTo = next;//set 2nd intermediate point to endpoint              
-                GeneralPath lastseg = this.subdivide(cur, bezierFrom, bezierTo, next);
-                if(lastseg != null)
-                    curvePath.append(lastseg, true);
-                break;                
-            } else {
-                bezierTo = new Point(cur.x - nextnext.x, cur.y - nextnext.y);
-                bezierTo = scaleVector(bezierTo, scale);
-                bezierTo.translate(next.x, next.y); 
-            }
-          
-            curvePath.curveTo(
-                    bezierFrom.x, bezierFrom.y,//controlPoint1
-                    bezierTo.x, bezierTo.y,//controlPoint2
-                    next.x,next.y
-            );        
-            prev = cur;
-        }
-        Point2D cur = curvePath.getCurrentPoint();
-        Point next = lastControlPoint;
-        
-        lastControlPointRotation = //anchor anchorAngle 
-            Math.atan2 (cur.getY() - next.y, cur.getX() - next.x);
-                         
-        Color previousColor = gr.getColor();
-        gr.setColor (getLineColor());    
-        Stroke s = this.getStroke();
-        gr.setStroke(s);
-        gr.setColor(this.getLineColor());
-        gr.draw(curvePath);
-                      
-        AffineTransform previousTransform = gr.getTransform ();    
-        gr.translate (lastControlPoint.x, lastControlPoint.y);       
-        gr.rotate (lastControlPointRotation);
-        AnchorShape targetAnchorShape = this.getTargetAnchorShape();           
-        targetAnchorShape.paint (gr, false);
-        gr.setTransform (previousTransform);
-       
-        //paint ControlPoints if enabled
-        if (isPaintControlPoints()) {
-            int last = listSize - 1;
-            for (int index = 0; index <= last; index ++) {
-                Point point = contrPoints.get (index);
-                previousTransform = gr.getTransform ();
-                gr.translate (point.x, point.y);
-                if (index == 0  ||  index == last)
-                    getEndPointShape().paint (gr);
-                else
-                    getControlPointShape().paint (gr);
-                gr.setTransform (previousTransform);
-            }
-           
-        }
-        gr.setColor(previousColor);
-    }
-    
-    
-    
-    private GeneralPath subdivide (Point b0, Point b1, Point b2, Point b3) {            
-        double cutDistance = getTargetAnchorShape().getCutDistance();
-        double minDistance = cutDistance - ENDPOINT_DEVIATION;
-        /**
-         * if the cutDistance is valid the last segment of the curve
-         * gets reduced by subdivision until the distance of the endpoint(epDistance) 
-         * satisfys the condition (cutDistance > epDistance > (cutDistance - ENDPOINT-DEVIATION)
-         */
-        if(cutDistance > minDistance && minDistance > 0 ) {
-            GeneralPath path = new GeneralPath(); 
-            
-            path.moveTo(b0.x, b0.y);
-            
-            CubicCurve2D.Double left = new CubicCurve2D.Double(
-                    b0.x, b0.y, 
-                    b1.x, b1.y,
-                    b2.x, b2.y, 
-                    b3.x, b3.y);
-            
-            CubicCurve2D right=new CubicCurve2D.Double();
-            left.subdivide(left, right);   
-            double distance = b3.distance(left.getP2());
-            //if the distance is bigger as the cutDistance the left segment is added
-            //and the right segment is divided again
-            while(distance>cutDistance){                    
-                path.append(left, true);
-                right.subdivide(left, right);
-                distance = b3.distance(left.getP2());
-                //if the devision removed to much the left segment is divided
-                while(distance < minDistance) {                            
-                    //changes the distance to ~ (distance+distance/2)
-                    left.subdivide(left, right);
-                    distance = b3.distance(left.getP2());
-                }
-            }                  
-            //append the last segment with (minDistance < distance < cutDistance)
-            //actually we should check if the a division happend, but this is very unlikly
-            path.append(left, true);         
-            return path;
-        }
-        return null;
-    }
-    
-  
-   
-    
-       
-    private static Point scaleVector(Point vector, double len) {
-        double scale = Math.sqrt(vector.x * vector.x + vector.y * vector.y);
-        if(scale==0.0) return vector;
-        scale = len / scale;          
-        return new Point(
-                Math.round(vector.x * (float)scale), 
-                Math.round(vector.y * (float)scale));
-    }
-     
-}    
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/visual/PolylineRouter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,360 +0,0 @@
-package at.ssw.visualizer.cfg.visual;
-
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.geom.Line2D;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import org.netbeans.api.visual.anchor.Anchor;
-import org.netbeans.api.visual.router.Router;
-import org.netbeans.api.visual.widget.ConnectionWidget;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- * Router Class with Collision Detection
- * 
- *
- * The returned path is a straight line there is no node widget between the source and the target node,
- * if there are nodewidgets in between it tries to find a path around those abstacles to avoid collisions.
- * The algorithm for the search of this path is limited by a fixed number of iterations defined in 
- * NUMER_OF_ITERATIONS to return a result in reasonable time. If the calculation exceeds this limit the 
- * path returned contains at least 1 collision with a nodewidget.  
- */
-
-public class PolylineRouter implements Router {
-    private static final float FACTOR = 0.70f;
-    
-    private static final int HEXPAND = 3;
-    private static final int VEXPAND = 3;
-    private static final int NUMBER_OF_ITERATIONS = 8;   
-    
-    WidgetCollisionCollector collector;
-    
-     
-    public PolylineRouter(WidgetCollisionCollector collector){
-        this.collector=collector;
-    }
-   
-  
-    public List<Point> routeConnection(final ConnectionWidget widget) {       
-        if(!widget.isVisible()) return Collections.<Point>emptyList();
-   
-        Anchor sourceAnchor = widget.getSourceAnchor();
-        Anchor targetAnchor = widget.getTargetAnchor();
-         
-        if(sourceAnchor == null || targetAnchor == null) 
-            return null;
-        
-        Point start = sourceAnchor.compute(widget.getSourceAnchorEntry()).getAnchorSceneLocation();
-        Point end =   targetAnchor.compute(widget.getTargetAnchorEntry()).getAnchorSceneLocation();
-        
-        Widget sourceWidget = sourceAnchor.getRelatedWidget();
-        Widget targetWidget = targetAnchor.getRelatedWidget();  
-        
-        
-        if(sourceWidget == targetWidget){//reflexive edges doesnt need any path      
-            return Collections.<Point>emptyList();
-        }
-           
-        List<Widget> nodeWidgets = new ArrayList<>();
-        
-        if(collector != null){
-            collector.collectCollisions(nodeWidgets);    
-            //source and target widget are not treatet as obstacle
-            nodeWidgets.remove(sourceWidget);
-            nodeWidgets.remove(targetWidget);
-        }
-                            
-        List<Point> controlPoints = optimize(nodeWidgets, widget, start, end); 
-              
-        //size==2 => straight line
-        //size==3 => ensures a collision between cp0 and cp2 therefore its not possible to simplify it
-        if(controlPoints.size() > 3)
-            controlPoints = simplify(nodeWidgets, controlPoints);
-        
-        return controlPoints;        
-    }   
-    
-    
-    private List<Point> simplify(Collection<Widget> nodeWidgets, List<Point> list) {        
-        List<Point> result = new ArrayList<>();
-        result.add( list.get(0) );//add startpoint
-        for (int i = 1; i < list.size(); i++) {
-            Point prev = list.get(i - 1);
-            for (int j = i; j < list.size(); j++) {
-                Point cur = list.get(j);
-                if (!intersects(nodeWidgets, prev, cur)) {
-                    i = j;
-                }               
-            }
-            result.add(list.get(i));
-        }      
-        return result;
-    }
-    
-    /**
-     * Computates the Anchorposition like the Rectangular anchor for a
-     * given widget as source/target and a controlpoint as opposit anchorposition
-     */
-     
-    private Point computateAnchorPosition(Widget relatedWidget, Point controlPoint) {
-        Rectangle bounds = relatedWidget.getBounds();
-        Point relatedLocation = relatedWidget.getLocation();//center of the widget
-       
-        if (bounds.isEmpty ()  || relatedLocation.equals (controlPoint))
-            return relatedLocation;
-
-        float dx = controlPoint.x - relatedLocation.x;
-        float dy = controlPoint.y - relatedLocation.y;
-
-        float ddx = Math.abs (dx) / (float) bounds.width;
-        float ddy = Math.abs (dy) / (float) bounds.height;
-
-        float scale = 0.5f / Math.max (ddx, ddy);
-
-        Point point = new Point (Math.round (relatedLocation.x + scale * dx), 
-                Math.round (relatedLocation.y + scale * dy));
-        return point;
-    }
-    
-   
-  
-    private List<Point> optimize(Collection<Widget> nodeWidgets, ConnectionWidget connWidget, Point start, Point end) {
-        
-        List<Point> list = new ArrayList<>();
-        list.add(start);
-        list.add(end);
-                           
-        boolean progress = true;
-        
-        for (int j = 0; progress && j < NUMBER_OF_ITERATIONS ; j++) {
-            progress = false;                  
-            List<Point> newList = new ArrayList<>();              
-            for (int i = 0; i < list.size() - 1 ; i++) {
-                Point cur = list.get(i);
-                Point next = list.get(i + 1);
-                newList.add(cur);
-                List<Point> intermediate = optimizeLine(nodeWidgets, cur, next);
-                if (intermediate != null && intermediate.size() > 0) { 
-                    progress = true;
-                    newList.addAll(intermediate);//insert new controlpoints between cur and next
-                } 
-            }            
-            newList.add(list.get(list.size()-1));//add endpoint of the polyline
-            list = newList;   
-            
-        }
-               
-        if(list.size() > 2) {          
-            Widget sourceNode = connWidget.getSourceAnchor().getRelatedWidget();
-            Widget targetNode = connWidget.getTargetAnchor().getRelatedWidget();
-            Rectangle sourceBounds = sourceNode.convertLocalToScene(sourceNode.getBounds());
-            Rectangle targetBounds = targetNode.convertLocalToScene(targetNode.getBounds());
-            sourceBounds.grow(HEXPAND, VEXPAND);
-            
-            /**
-             * add only points which are not intersecting the source and the target 
-             * widget bounds caused by invalid bad anchor positions. The first 
-             * and the last point is ignored cause the anchor is recalculated 
-             * anyway.
-             */
-            ArrayList<Point> tmp = new ArrayList<>();
-            int listSize=list.size();
-            tmp.add(list.get(0));
-            int i=0;
-            while(++i < listSize-1) {
-                Point p = list.get(i);
-                if(!sourceBounds.contains(p) || !targetBounds.contains(p))
-                    tmp.add(p);               
-            }
-           
-            tmp.add(list.get(i));
-            if(tmp.size() < 3)
-                return tmp;
-            
-            list=tmp;                    
-            //calculate a proper anchor position using the second/penultimate controlpoint for start/end
-            start = this.computateAnchorPosition(connWidget.getSourceAnchor().getRelatedWidget(), list.get(1));            
-            end = this.computateAnchorPosition(connWidget.getTargetAnchor().getRelatedWidget(), list.get(list.size()-2));            
-            list.set(0,start);           
-            list.set(list.size()-1, end);         
-        }          
-        return list;
-    }
- 
-    
-    /**
-     *  trys to optimize a line from p1 to p2 to avoid collisions with node widgets
-     *  returns null if the line doesn`t intersect with any nodewidget
-     *  or a list with immediate points between p1 and p2 to avoid collisions
-     */
-    private List<Point> optimizeLine(Collection<Widget> nodeWidgets, Point p1, Point p2) {        
-        Line2D line = new Line2D.Double(p1, p2);
-                     
-        for(Widget w : nodeWidgets ) {            
-            if( w.isVisible() ) {                              
-                Rectangle r = w.convertLocalToScene(w.getBounds());             
-                r.grow(HEXPAND, VEXPAND);
-       
-                if (!line.intersects(r)) continue;
-                  
-                Point location = w.getLocation();                
-                int distx = (int) (r.width * FACTOR);
-                int disty = (int) (r.height * FACTOR);
-                
-                int minIntersects = Integer.MAX_VALUE;
-                int min = Integer.MAX_VALUE;
-                List<Point> minSol = null;
-                for (int i = -1; i <= 1; i++) {
-                    for (int j = -1; j <= 1; j++) {
-                        if (i != 0 || j != 0) {                           
-                            Point cur = new Point(location.x + i * distx, location.y + j * disty);
-                            List<Point> list1 = new ArrayList<>();
-                            list1.add(p1);
-                            list1.add(cur);
-                            list1.add(p2);                                                 
-                            int crossProd = Math.abs(crossProduct(p1, cur, p2));
-                            if (!intersects(w, list1)) {
-                                Line2D line1 = new Line2D.Float(p1, cur);
-                                Line2D line2 = new Line2D.Float(p2, cur);
-                                int curIntersects = this.countNodeIntersections(nodeWidgets, line1, line2);
-                                
-                                if (curIntersects < minIntersects
-                                        || (curIntersects == minIntersects && crossProd < min)) {
-                                    minIntersects = curIntersects;
-                                    min = crossProd;
-                                    minSol = new ArrayList<>();
-                                    minSol.add(cur);
-                                }
-                            }
-
-                            if (i == 0 || j == 0) {
-                                Point cur1, cur2;
-                                if (i == 0) {
-                                      cur1 = new Point(location.x + distx/2, location.y + j * disty);
-                                      cur2 = new Point(location.x - distx/2, location.y + j * disty);
-                                } else { // (j == 0) 
-                                    cur1 = new Point(location.x + i * distx, location.y + disty/2);
-                                    cur2 = new Point(location.x + i * distx, location.y - disty/2);
-                                }
-
-                                Point vec1 = new Point(p1.x - cur1.x, p1.y - cur1.y);
-                                int offset1 = vec1.x * vec1.x + vec1.y * vec1.y;
-
-                                Point vec2 = new Point(p1.x - cur2.x, p1.y - cur2.y);
-                                int offset2 = vec2.x * vec2.x + vec2.y * vec2.y;
-
-                                if (offset2 < offset1) {
-                                    Point tmp = cur1;
-                                    cur1 = cur2;
-                                    cur2 = tmp;
-                                }
-
-                                List<Point> list2 = new ArrayList<>();
-                                list2.add(p1);
-                                list2.add(cur1);
-                                list2.add(cur2);
-                                list2.add(p2);
-
-                                int cross1 = crossProduct(p1, cur1, cur2);
-                                int cross2 = crossProduct(cur1, cur2, p2);
-
-                                if (cross1 > 0) {
-                                    cross1 = 1;
-                                } else if (cross1 < 0) {
-                                    cross1 = -1;
-                                }
-                                
-                                if (cross2 > 0) {
-                                    cross2 = 1;
-                                } else if (cross2 < 0) {
-                                    cross2 = -1;
-                                }
-                                if ((cross1 == cross2 || cross1 == 0 || cross2 == 0) && !intersects(w, list2)) {                                 
-                                    Line2D line1 = new Line2D.Float(p1, cur1);
-                                    Line2D line2 = new Line2D.Float(cur1, cur2);
-                                    Line2D line3 = new Line2D.Float(p2, cur2);
-                                    int curIntersects = this.countNodeIntersections(nodeWidgets, line1, line2, line3);
-                                   
-                                    // This is a bit better
-                                    crossProd--;
-
-                                    if (curIntersects < minIntersects
-                                            || (curIntersects == minIntersects && crossProd < min)) {
-                                        minIntersects = curIntersects;
-                                        min = crossProd;
-                                        minSol = new ArrayList<>();
-                                        minSol.add(cur1);
-                                        minSol.add(cur2);                                       
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }           
-                if (minSol != null) {      
-                    return minSol;
-                } 
-            }
-        }
-        return null;
-    }
-    
-    
-   
-    private int countNodeIntersections(Collection<Widget> nodeWidgets, Line2D... lines){
-        int count=0;     
-        for(Widget nw : nodeWidgets){
-            if(nw.isVisible()) {
-                Rectangle bounds = nw.convertLocalToScene(nw.getBounds());
-                for( Line2D line : lines){
-                    if(line.intersects(bounds))
-                        count++;
-                }
-            }
-        }
-        return count;
-    }
-    
-    
-    private boolean intersects(Collection<Widget> nodeWidgets, Point start, Point end) {
-        List<Point> pointlist = new ArrayList<>();
-        pointlist.add(start);
-        pointlist.add(end);
-
-        for(Widget w : nodeWidgets){
-            if(w.isVisible() && intersects(w, pointlist)) {
-                return true;
-            }
-        }
-        return false;
-    }
-        
-    
-    private boolean intersects(Widget w, List<Point> list) {
-        Rectangle r = w.convertLocalToScene(w.getBounds());
-        r.grow(HEXPAND, VEXPAND);
-        return intersects(list, r);
-    }
-    
-    
-    private boolean intersects(List<Point> list, Rectangle rect){
-        for(int i=1; i < list.size(); i++) {
-            Point cur = list.get(i-1);
-            Point next = list.get(i);   
-            if(rect.intersectsLine(cur.x, cur.y, next.x, next.y))
-                return true;
-        }
-        return false;
-    }
-
-    
-    private int crossProduct(Point p1, Point p2, Point p3) {
-        Point off1 = new Point(p1.x - p2.x, p1.y - p2.y);
-        Point off2 = new Point(p3.x - p2.x, p3.y - p2.y);
-        return (off1.x * off2.y - off1.y * off2.x);
-    }
-        
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/visual/PolylineRouterV2.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,393 +0,0 @@
-package at.ssw.visualizer.cfg.visual;
-
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.geom.Line2D;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import org.netbeans.api.visual.anchor.Anchor;
-import org.netbeans.api.visual.router.Router;
-import org.netbeans.api.visual.widget.ConnectionWidget;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- * Router Class with Collision Detection
- * 
- *
- * The returned path is a straight line there is no node widget between the source and the target node,
- * if there are nodewidgets in between it tries to find a path around those abstacles to avoid collisions.
- * The algorithm for the search of this path is limited by a fixed number of iterations defined in 
- * NUMER_OF_ITERATIONS to return a result in reasonable time. If the calculation exceeds this limit the 
- * path returned contains at least 1 collision with a nodewidget. 
- * 
- * This class intend to solve the same problem as the class PolyLineRouter but
- * uses slightly different methods.
- * + uses another algorithm for solving the collision.
- * + the obstacle bounds are calulated in advance to avoid a recalculation.
- * - there is no heuristic, the shortest path around the widget is choosen asap.
- * 
- * 
- *  
- */
-
-public class PolylineRouterV2 implements Router {    
-    private static final int HEXPAND = 3;
-    private static final int VEXPAND = 3;
-    private static final int NUMBER_OF_ITERATIONS = 8;   
-    
-    WidgetCollisionCollector collector;
-    
-     
-    public PolylineRouterV2(WidgetCollisionCollector collector){
-        this.collector=collector;
-    }
-   
-   
-    public List<Point> routeConnection(final ConnectionWidget widget) {       
-        if(!widget.isVisible()) return Collections.<Point>emptyList();
-   
-        Anchor sourceAnchor = widget.getSourceAnchor();
-        Anchor targetAnchor = widget.getTargetAnchor();
-         
-        if(sourceAnchor == null || targetAnchor == null) 
-            return null;
-        
-        Point start = sourceAnchor.compute(widget.getSourceAnchorEntry()).getAnchorSceneLocation();
-        Point end =   targetAnchor.compute(widget.getTargetAnchorEntry()).getAnchorSceneLocation();
-
-        Widget sourceWidget = sourceAnchor.getRelatedWidget();
-        Widget targetWidget = targetAnchor.getRelatedWidget(); 
-        
-               
-        if(sourceWidget == targetWidget){//reflexive edges doesnt need any path      
-            return Collections.<Point>emptyList();
-        }
-        
-        
-        Point srcCenter = this.getSceneLocation(sourceWidget);
-        Point tarCenter = this.getSceneLocation(targetWidget);
-        
-        List<Widget> widgetObstacles = new ArrayList<>();
-        
-        if(collector != null){
-            collector.collectCollisions(widgetObstacles);                    
-        }
-        
-        List<Rectangle> obstacles = new ArrayList<>(widgetObstacles.size());
-        this.collectObstacles(obstacles, widgetObstacles, widget);
-       
-                    
-        List<Point> controlPoints = optimize(obstacles, srcCenter, tarCenter);     
-//        size==2 => straight line
-//        size==3 => ensures a collision between cp0 and cp2 therefore its not possible to simplify it
-        if(controlPoints.size() > 3){
-            Point rstart = this.computateAnchorPosition(sourceWidget, controlPoints.get(1));            
-            Point rend  = this.computateAnchorPosition(targetWidget, controlPoints.get(controlPoints.size()-2)); 
-            controlPoints.set(0, rstart);           
-            controlPoints.set(controlPoints.size()-1, rend);       
-            controlPoints = simplify(obstacles, controlPoints);
-        } else if (controlPoints.size()>=2){
-                //use old points
-            controlPoints.set(0, start);           
-            controlPoints.set(controlPoints.size()-1, end);           
-        
-        }
-        return controlPoints;        
-    }  
-    
-    
-    private int collectObstacles(List<Rectangle> colrects, List<Widget> colwidgets , ConnectionWidget cw){        
-        int count=0;                        
-        Anchor sourceAnchor = cw.getSourceAnchor();
-        Anchor targetAnchor = cw.getTargetAnchor();
-        Widget sourceWidget = sourceAnchor.getRelatedWidget();
-        Widget targetWidget = targetAnchor.getRelatedWidget(); 
-        Point start = sourceAnchor.compute(cw.getSourceAnchorEntry()).getAnchorSceneLocation();
-        Point end =   targetAnchor.compute(cw.getTargetAnchorEntry()).getAnchorSceneLocation();
-                        
-        for(Widget w : colwidgets){
-            
-            if(w==sourceWidget || w == targetWidget) continue;
-           
-            Rectangle r = w.convertLocalToScene(w.getBounds());
-            r.grow(HEXPAND, VEXPAND);
-            if(r.intersectsLine(start.x,start.y,end.x,end.y))
-                count++;
-            colrects.add(r);
-        }
-        return count;
-    }
-    
-    
-    private Point center (Rectangle bounds) {
-        return new Point (bounds.x + bounds.width / 2, bounds.y + bounds.height / 2);
-    }
-
-    /**
-     * Returns the scene location of a related widget.
-     * bounds might be null if the widget was not added to the scene
-     * @return the scene location; null if no related widget is assigned
-     */
-    public Point getSceneLocation (Widget relatedWidget) {
-        if (relatedWidget != null) {
-            Rectangle bounds = relatedWidget.getBounds ();
-            if(bounds != null)
-                return center(relatedWidget.convertLocalToScene(bounds));           
-        }
-        return null;
-    }
-       
-    /**
-     * Computates the Anchorposition like the Rectangular anchor for a
-     * given widget as source/target and a controlpoint as opposit anchorposition
-     */
-     
-    private Point computateAnchorPosition(Widget relatedWidget, Point controlPoint) {
-        Rectangle bounds = relatedWidget.getBounds();
-        
-        //todo: fix, center of widget must be cacluated trough the bounds 
-        //since there are some wheird widgets where the location is not the center of the widget
-        Point relatedLocation = relatedWidget.getLocation();//center of the widget
-       
-        if (bounds.isEmpty ()  || relatedLocation.equals (controlPoint))
-            return relatedLocation;
-
-        float dx = controlPoint.x - relatedLocation.x;
-        float dy = controlPoint.y - relatedLocation.y;
-
-        float ddx = Math.abs (dx) / (float) bounds.width;
-        float ddy = Math.abs (dy) / (float) bounds.height;
-
-        float scale = 0.5f / Math.max (ddx, ddy);
-
-        Point point = new Point (Math.round (relatedLocation.x + scale * dx), 
-                Math.round (relatedLocation.y + scale * dy));
-        return point;
-    }
-    
-    private List<Point> simplify(List<Rectangle> obstacles, List<Point> list) {        
-        List<Point> result = new ArrayList<>(list.size());
-        result.add( list.get(0) );//add startpoint
-        for (int i = 1; i < list.size(); i++) {
-            Point prev = list.get(i - 1);
-            for (int j = i; j < list.size(); j++) {
-                Point cur = list.get(j);
-                if (!intersects(obstacles, prev, cur)) {
-                    i = j;
-                }               
-            }
-            result.add(list.get(i));
-        }      
-        return result;
-    }
-  
-    private List<Point> optimize(List<Rectangle> nodeWidgets, Point start, Point end) {
-        
-        List<Point> list = new ArrayList<>();
-        list.add(start);
-        list.add(end);
-                           
-        boolean progress = true;
-        
-        for (int j = 0; progress && j < NUMBER_OF_ITERATIONS ; j++) {
-            progress = false;                  
-            List<Point> newList = new ArrayList<>();      
-            for (int i = 0; i < list.size() - 1 ; i++) {
-                Point cur = list.get(i);
-                Point next = list.get(i + 1);
-                newList.add(cur);               
-                List<Point> intermediate = optimizeLine(nodeWidgets, cur, next);
-                if (intermediate != null && intermediate.size() > 0) { 
-                    progress = true;                  
-                    newList.addAll(intermediate);//insert new controlpoints between cur and next
-                } 
-            }           
-            newList.add(list.get(list.size()-1));//add endpoint of the polyline
-            list = newList;   
-            
-        }
-        
-        return list;
-    }
- 
-  
-    /**
-     *  trys to optimize a line from p1 to p2 to avoid collisions with rectangles
-     *  returns null if the line doesn`t intersect with any nodewidget or
-     *  if the obstacles are overlapping
-     *  ----------------------------------------------------------------------
-     *  if the collision is solved it returns a list with immediate points 
-     *  between p1 and p2. The points are taken from hull points of and grown 
-     *  rectangle.
-     */
-    private List<Point> optimizeLine(List<Rectangle> obstacles, Point p1, Point p2) {        
-        Line2D line = new Line2D.Double(p1, p2);
-        boolean inbounds=false;
-        Rectangle ibr=null;
-        ArrayList<Point> sol = new ArrayList<>();
-        boolean leftIntersection;
-        boolean rightIntersection; 
-        boolean bottomIntersection; 
-        boolean topIntersection; 
-        Point interLeft=new Point();
-        Point interRight=new Point();
-        Point interBot=new Point();
-        Point interTop=new Point();
-        
-    
-        
-        for(Rectangle r : obstacles ) {                      
-            if (!line.intersects(r)) continue;
-            
-            int w=r.width+2;
-            int h=r.height+2;
-            Point topLeft = r.getLocation();
-            topLeft.x-=1;
-            topLeft.y-=1;
-            Point topRight = new Point(topLeft.x+w, topLeft.y);
-            Point bottomLeft = new Point(topLeft.x, topLeft.y+h);
-            Point bottomRight = new Point(topRight.x, bottomLeft.y);  
-            leftIntersection = findIntersectionPoint(p1, p2, topLeft, bottomLeft, interLeft);
-            rightIntersection = findIntersectionPoint(p1, p2, topRight, bottomRight, interRight);
-            bottomIntersection = findIntersectionPoint(p1, p2, bottomLeft, bottomRight, interBot);
-            topIntersection = findIntersectionPoint(p1, p2, topLeft, topRight, interTop);
-            
-            //Intersection points are not used yet. This could be actually a 
-            //good approach to avoid additional collisions because it would be
-            //still the same vector.
-
-            if(leftIntersection) {                      
-                if(topIntersection) {//left and top   
-                    sol.add(topLeft);                       
-                }                        
-                else if(bottomIntersection){//left and bottom
-                    sol.add(bottomLeft);                                   
-                }
-                else if(rightIntersection){//left and right
-                    double disttl = topLeft.distance(p1);
-                    double distbl = bottomLeft.distance(p1);
-                    if(disttl > distbl){
-                        //pass at the bottom
-                        double distbr = bottomRight.distance(p1);
-                        if(distbl < distbr){
-                            //from the left to the right
-                            sol.add(bottomLeft);
-                            sol.add(bottomRight);
-                        } else {
-                            //from the right to the left
-                            sol.add(bottomRight);
-                            sol.add(bottomLeft);
-                        }
-                    } else {
-                        //pass at the top
-                        double disttr = topRight.distance(p1);
-                        if(disttl < disttr){
-                            //from the left to the right
-                            sol.add(topLeft);
-                            sol.add(topRight);
-                        } else {
-                            //from the right to the left
-                            sol.add(topRight);
-                            sol.add(topLeft);
-                        }
-                    }                        
-                 } else {//only left => inside bounds 
-                    inbounds=true;                                  
-                 } 
-            } else if (rightIntersection) {                
-                if(topIntersection) {//right and top
-                    sol.add(topRight);
-                }
-                else if(bottomIntersection){//right and bottom
-                    sol.add(bottomRight);
-                } else { //only right => inside the bounds
-                    inbounds=true;                             
-                }                  
-            } else if (topIntersection && bottomIntersection) {//top and bottom
-                double disttop = interTop.distance(p1);
-                double distbot = interBot.distance(p1);
-                if(disttop < distbot ){
-                    //from the top to the bottom
-                    double distleft = interTop.distance(topLeft);
-                    double distright = interTop.distance(topRight);
-                    if(distleft < distright){
-                        //pass left
-                        sol.add(topLeft);
-                        sol.add(bottomLeft);
-                    } else {
-                        //pass right
-                        sol.add(topRight);
-                        sol.add(bottomRight);
-                    }   
-                } else {
-                    //from the bottom to the top
-                    double distleft = interBot.distance(bottomLeft);
-                    double distright = interBot.distance(bottomRight);
-                    if(distleft < distright){
-                        //pass left
-                        sol.add(bottomLeft);
-                        sol.add(topLeft);
-                    } else {
-                        //pass right
-                        sol.add(bottomRight);
-                        sol.add(topRight);
-                    }   
-                } 
-            } else {//only bottom or only top
-                inbounds=true;                 
-            } /* ENDIF */
-            
-            //breakpoint <-- collision detected
-            
-            if(sol.size()>0) {//solution found
-                assert(!inbounds);
-                return sol;
-            } else { //no solution found=> inbounds
-                assert(inbounds);
-                assert(sol.size()==0);
-                //handle collision or just skip it and search for the next collisionj               
-                ibr=r;
-                //jump out of the loop to able to interate over the obstacles
-                break;
-            } 
-        }/* end foreach obstacle */
-        
-        if(inbounds || ibr != null){
-            assert(inbounds);
-            assert(ibr!=null);        
-        }       
-        return null;//no collison found
-    }/* end optimizeLine */
-    
- 
-  
-    //check intersection between line p0->p1 for a given set of obstacles
-    private static boolean intersects(List<Rectangle> obstacles, Point p0, Point p1) {
-        for(Rectangle r : obstacles){
-            if(r.intersectsLine(p0.x, p0.y, p1.x, p1.y))
-                return true;         
-        }
-        return false;
-    }
-    
-   
-    private boolean findIntersectionPoint(
-            Point p0, Point p1, Point p2, Point p3, Point pI) {
-        float q = (p0.y - p2.y)*(p3.x - p2.x) - (p0.x - p2.x)*(p3.y - p2.y);
-        float d = (p1.x - p0.x)*(p3.y - p2.y) - (p1.y - p0.y)*(p3.x - p2.x);
-        
-        //parallel ?
-        if(d==0) return false;
-          
-        float r = q / d;
-        q = (p0.y - p2.y)*(p1.x - p0.x) - (p0.x - p2.x)*(p1.y - p0.y);
-        
-        float s = q / d;
-        if(r<0 || r>1 || s<0 || s>1) return false;
-        
-        pI.x = p0.x + (int) (0.5f + r * (p1.x - p0.x));
-        pI.y = p0.y + (int) (0.5f + r * (p1.y - p0.y));
-        return true;
-    }    
-}
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/visual/SplineConnectionWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,541 +0,0 @@
-package at.ssw.visualizer.cfg.visual;
-
-import org.netbeans.api.visual.widget.ConnectionWidget;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.Shape;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.CubicCurve2D;
-import java.awt.geom.GeneralPath;
-import java.awt.geom.Point2D;
-import java.awt.geom.Rectangle2D;
-import java.util.List;
-import org.netbeans.api.visual.anchor.AnchorShape;
-import org.netbeans.api.visual.graph.GraphScene;
-import org.netbeans.api.visual.widget.Scene;
-import org.netbeans.api.visual.widget.Widget;
-
-
-/**
- *  In comparison to the default ConnectionWidget this class is able to connect 
- *  widgets with a curve instead of a straight line sequence. 
- *  In conjunction with a suitable router the connection will be a straight line 
- *  or a curve depending on the amount and the position of the controlpoints. 
- *  Controlpoints supplied by the router, are treated as curve intersection points.
- *  For Reflexive edges the router doesn`t necessarily need to supply 
- *  any controlpoints, they get painted by this automatically, this can be 
- *  excepted if the router supplys more as 2 control points for a self edge,
- *  then the edge gets painted with the default curve interpolation algorithm.
- *  The method used for drawing curves uses a piecewise cubic interpolation 
- *  algorithm. Between two control points a curve is painted as cubic bezier 
- *  curve the, inner bezier points are calculated automatically with FMILL 
- *  tangents and a chord parametrization, this interpolant is also known as
- *  cutmull-rom spline. The resulting spline fullfills c^1 continuity.
- *  The the end points the interpolation algorithm uses the bessel end condition.
- */
-
-public class SplineConnectionWidget extends ConnectionWidget {     
-   private static final double ENDPOINT_DEVIATION = 3;//curve endpoint approximation accuracy
-   private static final double HIT_DISTANCE_SQUARE = 4.0;//distance for intersection test
-    private GraphScene scene=null;
-    private Point2D [] bezierPoints = null;
- 
-    public SplineConnectionWidget(Scene scene) {
-        super(scene);   
-        if(scene instanceof GraphScene)
-            this.scene=(GraphScene) scene;
-    }
-    
-    //check for self - edge
-    private boolean isReflexive(){
-        return getSourceAnchor().getRelatedWidget() == getTargetAnchor().getRelatedWidget();
-    }
-    
-    
-    @Override
-    protected Rectangle calculateClientArea() {              
-        
-        Rectangle bounds = null;
-
-        if(this.getControlPoints().size()>2){
-            bezierPoints = createBezierPoints(getControlPoints());
-        }
-        //minmax method - returns the smallest bounding rectangle  
-        //Curves and surfaces for CAGD (3rd ed.), p.54  
-        //exact calculation of the bounding min rect
-        if(bezierPoints != null) {
-            Rectangle2D bounds2D = null;
-            for (int i = 0; i < bezierPoints.length; i++) {
-                Point2D point = bezierPoints[i];
-                if(bounds2D==null)
-                    bounds2D = new Rectangle2D.Double(point.getX(),point.getY(),0,0);
-                else
-                    bounds2D.add(point);
-            }
-            bounds = bounds2D.getBounds();
-            bounds.grow(2, 2);
-            
-        } else if (getControlPoints().size()>0){
-            for(Point p : this.getControlPoints()){
-              if(bounds==null)
-                  bounds = new Rectangle(p);
-              else
-                  bounds.add(p);
-            }
-            bounds.grow(5,5);     
-            
-        } else if (isReflexive()) {
-            Widget related = this.getTargetAnchor().getRelatedWidget();
-            bounds = related.convertLocalToScene(related.getBounds());
-            bounds.grow(10, 10);
-        }
-        
-        if(bounds==null)
-            bounds = super.calculateClientArea();
-
-        return bounds;
-    }
- 
-    
-    /**
-     * if the edge is reflexive its painted as a cyclic self edge, if there 
-     * are two controlpoints the connection is painted as a straight line from 
-     * the source to the targetanchor, if there are more as 2 controlpoints the 
-     * connection path between two control points is painted as cutmull rom 
-     * spline with bessel end tangents.
-     */
-    @Override
-    protected void paintWidget () {       
-        List<Point> contrPoints = this.getControlPoints();
-        int listSize = contrPoints.size();
-  
-        Graphics2D gr = getGraphics ();
-        
-        if (listSize <= 2) {
-            this.bezierPoints=null;//set bezier Points null for calulateClientArea()
-            if(isReflexive()) { //special case for reflexive connection widgets    
-                this.drawReflexive(gr);
-            } else {
-                super.paintWidget();
-            }         
-            return;
-        }
-      
-        //bezier curve... listSize > 2
-        GeneralPath curvePath = new GeneralPath();      
-        double lastControlPointRotation = 0.0;
-        
-        
-        Point2D [] bezPoints  = this.createBezierPoints(contrPoints);
-        curvePath.moveTo(bezPoints[0].getX(), bezPoints[0].getY());//b00
-        
-        //last segment is added by subdivision thats why its -5
-        for (int i = 1; i < bezPoints.length-5; i+=3) {          
-            curvePath.curveTo(
-                    bezPoints[i].getX(), bezPoints[i].getY(),//b1i
-                    bezPoints[i+1].getX(), bezPoints[i+1].getY(),//b2i
-                    bezPoints[i+2].getX(), bezPoints[i+2].getY());//b3i   
-           
-        }        
-   
-        GeneralPath lastseg = subdivide2D(
-                bezPoints[bezPoints.length-4], 
-                bezPoints[bezPoints.length-3],
-                bezPoints[bezPoints.length-2],
-                bezPoints[bezPoints.length-1]);
-        
-
-        if(lastseg != null)
-            curvePath.append(lastseg, true);
-                    
-        Point2D cur = curvePath.getCurrentPoint();
-        Point lastControlPoint = contrPoints.get(listSize-1);
-        
-        lastControlPointRotation = //anchor anchorAngle 
-            Math.atan2 (cur.getY() - lastControlPoint.y, cur.getX() - lastControlPoint.x);
-  
-        gr.setStroke(getStroke());
-        gr.setColor(getLineColor());
-        gr.draw(curvePath);
-   
-                      
-        AffineTransform previousTransform = gr.getTransform ();    
-        gr.translate (lastControlPoint.x, lastControlPoint.y);       
-        gr.rotate (lastControlPointRotation);
-        AnchorShape targetAnchorShape = this.getTargetAnchorShape();           
-        targetAnchorShape.paint (gr, false);
-        gr.setTransform (previousTransform);
-       
-        //paint ControlPoints if enabled
-        if (isPaintControlPoints()) {
-            int last = listSize - 1;
-            for (int index = 0; index <= last; index ++) {
-                Point point = contrPoints.get (index);
-                previousTransform = gr.getTransform ();
-                gr.translate (point.x, point.y);
-                if (index == 0  ||  index == last)
-                    getEndPointShape().paint (gr);
-                else
-                    getControlPointShape().paint (gr);
-                gr.setTransform (previousTransform);
-            }
-           
-        }   
-    }
-    
-    private void drawReflexive(Graphics2D gr){
-        Widget related = this.getTargetAnchor().getRelatedWidget();
-        int position = this.edgeBalance(related);
-        Rectangle bounds = related.convertLocalToScene(related.getBounds());
-        gr.setColor (getLineColor()); 
-        Point first = new Point();
-        Point last = new Point();
-        double centerX = bounds.getCenterX();
-        first.x = (int) (centerX + bounds.width / 4);          
-        first.y = bounds.y + bounds.height;
-        last.x = first.x;
-        last.y = bounds.y;
-
-        gr.setStroke(this.getStroke());
-
-        double cutDistance = this.getTargetAnchorShape().getCutDistance();
-        double anchorAngle = Math.PI/-3.0;
-        double cutX = Math.abs(Math.cos(anchorAngle)*cutDistance); 
-        double cutY = Math.abs(Math.sin(anchorAngle)*cutDistance);
-        int ydiff=first.y-last.y; 
-        int endy = -ydiff;
-        double height=bounds.getHeight();
-        double cy = height/4.0;
-        double cx=bounds.getWidth()/5.0;
-        double dcx = cx*2;
-        GeneralPath gp = new GeneralPath();
-        gp.moveTo(0, 0);
-        gp.quadTo(0, cy, cx, cy);
-        gp.quadTo(dcx, cy, dcx, -height/2.0);
-        gp.quadTo(dcx, endy - cy, cy, -(cy+ydiff));
-        gp.quadTo(cutX*1.5, endy - cy, cutX, endy-cutY);   
-
-        AffineTransform af = new AffineTransform();           
-        AnchorShape anchorShape = this.getTargetAnchorShape();           
-
-        if(position < 0) {
-            first.x = (int) (centerX - bounds.width / 4);        
-            af.translate(first.x, first.y);
-            af.scale(-1.0, 1.0);
-            last.x = first.x;
-        } else {
-            af.translate(first.x, first.y);
-        }
-        Shape s = gp.createTransformedShape(af);  
-        gr.draw(s);
-
-        if (last != null) {
-            AffineTransform previousTransform = gr.getTransform ();
-            gr.translate (last.x, last.y);  
-
-            if(position < 0)
-                gr.rotate(Math.PI - anchorAngle);
-            else                  
-                gr.rotate (anchorAngle);
-
-            anchorShape.paint (gr, false);
-            gr.setTransform (previousTransform);
-        }                                      
-    }
-     
-    //returns prefered location for an edge -1 for left and 1 for right
-    private int edgeBalance(Widget nodeWidget) {   
-        if(scene == null)
-            return 1;
-        
-        Point nodeLocation = nodeWidget.getLocation();
-        int left = 0, right = 0;
-
-        Object node = scene.findObject(nodeWidget);
-    
-        for(Object e : scene.findNodeEdges(node, true, true)) {//inputedges
-            ConnectionWidget cw = (ConnectionWidget) scene.findWidget(e);
-            
-            if(cw != this) {                
-                Widget targetNodeWidget = cw.getTargetAnchor().getRelatedWidget();
-
-                Point location;
-                if(targetNodeWidget == nodeWidget) {
-                    Widget sourceNodeWidget = cw.getSourceAnchor().getRelatedWidget();
-                    location = sourceNodeWidget.getLocation();
-                } else {
-                    location = targetNodeWidget.getLocation();
-                }
-
-                if(location.x < nodeLocation.x)
-                    left++;
-                else 
-                    right++;
-            }
-        }    
-        if(left < right)
-            return -1;
-        else
-            return 1;
-    } 
-    
-    
-     private Point2D[] createBezierPoints(List<Point> list){
-        if(list.size()<3) return null ;
-        
-        
-        int lastIdx = list.size()-1;
-        
-
-        //chord length parametrization
-        double[] uis = new double[list.size()];
-        uis[0]=0;
-        uis[1] = list.get(1).distance(list.get(0));
-        for (int i = 1; i < uis.length; i++) {
-            Point cur = list.get(i);
-            Point prev = list.get(i-1);     
-            uis[i]=uis[i-1]+ cur.distance(prev);          
-        }
-          
-            
-        for (int i = 1; i < uis.length; i++) {
-            uis[i] /= uis[lastIdx];
-            
-        }
-        double[] delta = new double[uis.length-1];     
-        for (int i = 0; i < delta.length; i++) {
-            double ui = uis[i];
-            double uin = uis[i+1];
-            delta[i] = uin-ui;
-        }
-       
-        
-        //FMILL tangent directions (chord length) 
-        Point2D[] tangents  = new Point2D[list.size()];
- 
-        for (int i = 1; i < list.size()-1; i++) {
-            Point xBefore = list.get(i-1);
-            Point xAfter = list.get(i+1);
-            Point2D.Double tangent = new Point2D.Double (xAfter.x - xBefore.x, xAfter.y - xBefore.y);          
-            tangents[i] = tangent;
-        }
-        
-        
-        Point2D [] bezPoints = new Point2D[(list.size()-1)*2+list.size()];
-        //Catmull-Rom
-        for (int i = 1; i < list.size()-1; i++) {                
-            Point b3i = list.get(i);
-            Point2D b3ib = b3iBefore(b3i, delta[i-1], delta[i], tangents[i]);
-            Point2D b3ia = b3iAfter(b3i, delta[i-1], delta[i], tangents[i]);
-            bezPoints[3*i] = b3i;
-            bezPoints[3*i-1] = b3ib;
-            bezPoints[3*i+1] = b3ia;
-        }             
-        bezPoints[0] = list.get(0);
-        bezPoints[bezPoints.length-1] = list.get(list.size()-1);
-
-        Point p0 = list.get(0);
-        Point p1 = list.get(1);
-        Point p2 = list.get(2);
-        Point pL_2 = list.get(lastIdx-2);
-        Point pL_1 = list.get(lastIdx-1);
-        Point pL = list.get(lastIdx);
-       
-        Point2D m1 = besselTangent(delta[0], delta[1], p0, p1, p2);
-        Point2D m0 = besselEndTangent(p0, p1, delta[0], m1);
-        
-        Point2D mLb = besselTangent(delta[delta.length-2], delta[delta.length-1],
-                pL_2,pL_1, pL);
-        Point2D mL = besselEndTangent(pL_1, pL, delta[delta.length-1], mLb);
-        
-        Point2D scaleM0 = scale(normalize(m0), p0.distance(p1));//increase distx/distxl to make curve rounder at the end
-        Point2D scaleML = scale(normalize(mL), pL.distance(pL_1));
-         //Catmull-Rom for bessel points 
-        Point2D b30a = b3iAfter(p0, delta[0], delta[0],scaleM0);
-        Point2D b33b = b3iBefore(pL, delta[delta.length-1], delta[delta.length-1],scaleML);
-         
-        bezPoints[1] = b30a;
-        bezPoints[bezPoints.length-2] = b33b;
-
-        return bezPoints;
-    }
-    
-     
-
-    private static Point2D besselTangent(double delta_ib, double delta_i, Point2D p0, Point2D p1 , Point2D p2){
-        double alpha_i = delta_ib/(delta_ib+delta_i);
-        
-        double x = (1-alpha_i)/delta_ib * (p1.getX() - p0.getX())
-                + alpha_i/delta_i * (p2.getX()-p1.getX());
-        double y = (1-alpha_i)/delta_ib * (p1.getY() - p0.getY())
-                + alpha_i/delta_i * (p2.getY()-p1.getY());
-       
-        return new Point2D.Double(x,y);
-    }
-    
-    private static Point2D besselEndTangent(Point2D p0, Point2D p1, double delta_u, Point2D m){
-        double x = 2*((p1.getX()-p0.getX())/delta_u) - m.getX();
-        double y = 2*((p1.getY()-p0.getY())/delta_u) - m.getY();
-        return new Point2D.Double(x,y);
-    }
-    
-    private static Point2D b3iBefore(Point2D b3i, double delta_ib, double delta_i, Point2D li){    
-        double x = b3i.getX() - (delta_ib/(3*(delta_ib+delta_i)))*li.getX();
-        double y = b3i.getY() - (delta_ib/(3*(delta_ib+delta_i)))*li.getY();   
-        return new Point.Double(x,y);      
-    }
-    
-    private static Point2D b3iAfter(Point2D b3i, double delta_ib,double delta_i,Point2D li){
-        double x = b3i.getX() + (delta_i/(3*(delta_ib+delta_i)))*li.getX();
-        double y = b3i.getY() + (delta_i/(3*(delta_ib+delta_i)))*li.getY();
-        return new Point.Double(x,y);      
-    }
-    
-    
-    
-    
-    //returns length of vector v
-    private static double norm(Point2D v){
-        return Math.sqrt(v.getX()*v.getX()+v.getY()*v.getY());
-    }
-     
-    //returns unity vector of vector v
-    private static Point2D normalize(Point2D v){
-        double norm = norm(v);
-        if(norm==0) return new Point2D.Double(v.getX(), v.getY());
-        return new Point2D.Double(v.getX()/norm , v.getY()/norm);
-    }
-    
-    //scale vector to size of length
-    private static Point2D scale(Point2D v, double length){
-        Point2D tmp = normalize(v);
-        return new Point2D.Double(tmp.getX()*length, tmp.getY()*length);
-    }
-    
-
-    
-    private GeneralPath subdivide2D (Point2D b0, Point2D b1, Point2D b2, Point2D b3) {
-        //set 2nd intermediate point to endpoint
-        //we could actually use another "better" point if we like to have a smoother curve
-      
-        double cutDistance = getTargetAnchorShape().getCutDistance();
-        double minDistance = cutDistance - ENDPOINT_DEVIATION;
-        /**
-         * if the cutDistance is valid the last segment of the curve
-         * gets reduced by subdivision until the distance of the endpoint(epDistance) 
-         * satisfys the condition (cutDistance > epDistance > (cutDistance - ENDPOINT-DEVIATION)
-         */
-        if(cutDistance > minDistance && minDistance > 0 ) {
-            GeneralPath path = new GeneralPath(); 
-            
-            path.moveTo(b0.getX(), b0.getY());
-            
-            CubicCurve2D.Double curve = new CubicCurve2D.Double(
-                    b0.getX(), b0.getY(), 
-                    b1.getX(), b1.getY(),
-                    b2.getX(), b2.getY(), 
-                    b3.getX(), b3.getY());
-            
-            
-           
-            CubicCurve2D right=new CubicCurve2D.Double();
-            CubicCurve2D left=new CubicCurve2D.Double();
-            curve.subdivide(left, right);   
-            double distance = b3.distance(left.getP2());
-            //if the distance is bigger as the cutDistance the left segment is added
-            //and the right segment is divided again
-            while(distance>cutDistance){                    
-                path.append(left, true);             
-                right.subdivide(left, right);
-                distance = b3.distance(left.getP2());
-                //if the devision removed to much the left segment is divided
-                while(distance < minDistance) {                            
-                    //changes the distance to ~ (distance+distance/2)
-                    left.subdivide(left, right);
-                    distance = b3.distance(left.getP2());
-                }
-            }                  
-            //append the last segment with (minDistance < distance < cutDistance)
-            path.append(left, true);         
-            return path;
-        }
-        return null;
-    }
-    
- 
-    /**
-     * Returns whether a specified local point pL is a part of the connection 
-     * widget. 
-     * First it make a rough bounds check
-     * for Line Segments => use Super call (ConnectionWidget.isHitAt(pL)). 
-     * for self-edges => its sufficent to return getBounds.contains(pL).
-     * for Splines => Interate over all Partitial segments of the curve and make 
-     * a minmax check with the bezier points. If pL is inside the minmax 
-     * rectangle of one segment the curve is constructed and subdivided until 
-     * the distance d between center point pC (of the bounding rectangle) 
-     * and pL is below HIT_DISTANCE_SQUARE, in this case it returns true.
-     * If no no minmax check was successful or the subdivision lead to an 
-     * rectangle witch doesn`t contain pL return false. 
-     * @param localLocation the local location
-     * @return true, if the location is a part of the connection widget
-     */
-    @Override
-    public boolean isHitAt(Point localLocation) {     
-        if(!isVisible()  || !getBounds ().contains (localLocation))
-            return false;
-          
-        List<Point> controlPoints = getControlPoints ();
-        if(controlPoints.size() <=2){
-            if(isReflexive()) return true;
-            return super.isHitAt(localLocation);
-        }    
-        
-        if(bezierPoints != null) {         
-            for (int i = 0; i < bezierPoints.length-1; i+=3) {          
-                 Point2D b0 =   bezierPoints[i];
-                 Point2D b1 =   bezierPoints[i+1];
-                 Point2D b2 =   bezierPoints[i+2];
-                 Point2D b3 =   bezierPoints[i+3];
-                 
-                 CubicCurve2D left = new CubicCurve2D.Double(
-                    b0.getX(), b0.getY(), 
-                    b1.getX(), b1.getY(),
-                    b2.getX(), b2.getY(), 
-                    b3.getX(), b3.getY());
-                 
-                 
-                 Rectangle2D bounds = left.getBounds2D();
-                 while(bounds.contains(localLocation)) {                                                     
-                    //calculate the center and use HIT_DISTANCE_SQUARE for a range check  
-                    Point2D test = new Point2D.Double(bounds.getCenterX(),bounds.getCenterY());
-                    if(test.distance(localLocation) < HIT_DISTANCE_SQUARE){                        
-                        return true;
-                    }
-
-                   
-                    CubicCurve2D  right = new CubicCurve2D.Double();                    
-                    left.subdivide(left, right);
-                    Rectangle2D lb2d = left.getBounds2D();
-                    Rectangle2D rb2d = right.getBounds2D();                    
-                    if( lb2d.contains(localLocation)){      
-                        bounds = lb2d;
-                    } else if (rb2d.contains(localLocation)) {                        
-                        left = right;
-                        bounds = rb2d;
-                    } else {                       
-                        return false;
-                    }
-                    
-                 }//end while               
-            }//end for              
-        }       
-        return false;      
-    }   
-  
- 
-}
-
-
-
-    
--- a/visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/visual/WidgetCollisionCollector.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-package at.ssw.visualizer.cfg.visual;
-
-import java.util.List;
-import org.netbeans.api.visual.widget.Widget;
-
-
-public interface WidgetCollisionCollector {
-    
-    //returns a list of widgets which should be handled as obstacles
-    void collectCollisions(List<Widget> collisions);
-      
-}
--- a/visualizer/Data/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.data" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.data.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Data/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.data
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/data/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Data/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.data-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Data/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=a403efd8
-build.xml.script.CRC32=b87f73ba
-build.xml.stylesheet.CRC32=79c3b980
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=a403efd8
-nbproject/build-impl.xml.script.CRC32=cc649146
-nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
--- a/visualizer/Data/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/Data/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
-src.dir=src
-build.test.classes.dir=${build.dir}/test/classes
-build.test.results.dir=${build.dir}/test/results
-test.src.dir=test
-build.test.classes.dir=${build.dir}/test/classes
-build.test.results.dir=${build.dir}/test/results
--- a/visualizer/Data/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-            <suite-component/>
-            <module-dependencies/>
-            <test-dependencies>
-                <test-type>
-                    <name>unit</name>
-                    <test-dependency>
-                        <code-name-base>org.netbeans.libs.junit4</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                    <test-dependency>
-                        <code-name-base>org.openide.util</code-name-base>
-                        <compile-dependency/>
-                    </test-dependency>
-                </test-type>
-            </test-dependencies>
-            <public-packages>
-                <package>at.ssw.visualizer.model.bc</package>
-                <package>at.ssw.visualizer.model.cfg</package>
-                <package>at.ssw.visualizer.model.interval</package>
-                <package>at.ssw.visualizer.model.nc</package>
-                <package>com.sun.hotspot.igv.data</package>
-                <package>com.sun.hotspot.igv.data.serialization</package>
-                <package>com.sun.hotspot.igv.data.services</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Data/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/Data/src/at/ssw/visualizer/model/bc/Bytecodes.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-package at.ssw.visualizer.model.bc;
-
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-
-/**
- * This class holds the bytecode of a method and provides severel methods
- * accessing the details.
- *
- * @author Alexander Reder
- * @author Christian Wimmer
- */
-public interface Bytecodes {
-    /**
-     * Back-link to the control flow graph where the bytecodes were loaded from.
-     */
-    public ControlFlowGraph getControlFlowGraph();
-
-    /**
-     * Called before the first call of getBytecodes() or getEpilogue(). Can be called multiple times.
-     */
-    public void parseBytecodes();
-    
-    /**
-     * The bytecodes of the method in the given bytecode range.
-     *
-     * @param   fromBCI starting BCI (including this bci)
-     * @param   toBCI   ending BCI (not including this bci)
-     * @return          string representation of the bytecodes
-     */
-    public String getBytecodes(int fromBCI, int toBCI);
-    
-    public String getEpilogue();
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/cfg/BasicBlock.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-package at.ssw.visualizer.model.cfg;
-
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public interface BasicBlock {
-    public String getName();
-
-    public int getFromBci();
-
-    public int getToBci();
-
-    public List<? extends BasicBlock> getPredecessors();
-
-    public List<? extends BasicBlock> getSuccessors();
-
-    public List<? extends BasicBlock> getXhandlers();
-
-    public List<String> getFlags();
-
-    public BasicBlock getDominator();
-
-    public int getLoopIndex();
-
-    public int getLoopDepth();
-
-    public boolean hasState();
-
-    public List<State> getStates();
-
-    public boolean hasHir();
-
-    public List<IRInstruction> getHirInstructions();
-
-    public boolean hasLir();
-
-    public List<IRInstruction> getLirOperations();
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/cfg/ControlFlowGraph.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-package at.ssw.visualizer.model.cfg;
-
-import at.ssw.visualizer.model.bc.Bytecodes;
-import at.ssw.visualizer.model.nc.NativeMethod;
-import com.sun.hotspot.igv.data.FolderElement;
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public interface ControlFlowGraph extends FolderElement {
-    public List<BasicBlock> getBasicBlocks();
-
-    public BasicBlock getBasicBlockByName(String name);
-
-    public Bytecodes getBytecodes();
-
-    public NativeMethod getNativeMethod();
-
-    public boolean hasState();
-
-    public boolean hasHir();
-
-    public boolean hasLir();
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/cfg/IRInstruction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-package at.ssw.visualizer.model.cfg;
-
-import java.util.Collection;
-
-/**
- *
- * @author Christian Wimmer
- */
-public interface IRInstruction {
-    public static String HIR_NAME = "tid";
-    public static String HIR_TEXT = "instruction";
-    public static String HIR_OPERAND = "result";
-
-    public static String LIR_NUMBER = "nr";
-    public static String LIR_TEXT = "instruction";
-
-    public Collection<String> getNames();
-    public String getValue(String name);
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/cfg/State.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-package at.ssw.visualizer.model.cfg;
-
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public interface State {
-    public String getKind();
-
-    public int getSize();
-
-    public String getMethod();
-
-    public List<StateEntry> getEntries();
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/cfg/StateEntry.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-package at.ssw.visualizer.model.cfg;
-
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public interface StateEntry {
-    public int getIndex();
-
-    public String getName();
-
-    public boolean hasPhiOperands();
-
-    public List<String> getPhiOperands();
-
-    public String getOperand();
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/interval/ChildInterval.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-package at.ssw.visualizer.model.interval;
-
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public interface ChildInterval {
-    public Interval getParent();
-
-    public String getRegNum();
-
-    public String getType();
-
-    public String getOperand();
-
-    public String getSpillState();
-
-    public ChildInterval getRegisterHint();
-
-    public List<Range> getRanges();
-
-    public List<UsePosition> getUsePositions();
-
-    public int getFrom();
-
-    public int getTo();
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/interval/Interval.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-package at.ssw.visualizer.model.interval;
-
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public interface Interval {
-    public IntervalList getParent();
-
-    public List<ChildInterval> getChildren();
-
-    public String getRegNum();
-
-    public int getFrom();
-
-    public int getTo();
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/interval/IntervalList.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-package at.ssw.visualizer.model.interval;
-
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public interface IntervalList {
-    public List<Interval> getIntervals();
-
-    public ControlFlowGraph getControlFlowGraph();
-
-    public int getNumLIROperations();
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/interval/Range.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-package at.ssw.visualizer.model.interval;
-
-/**
- *
- * @author Christian Wimmer
- */
-public interface Range {
-    public int getFrom();
-
-    public int getTo();
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/interval/UsePosition.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-package at.ssw.visualizer.model.interval;
-
-/**
- *
- * @author Christian Wimmer
- */
-public interface UsePosition {
-    public char getKind();
-
-    public int getPosition();
-}
--- a/visualizer/Data/src/at/ssw/visualizer/model/nc/NativeMethod.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-package at.ssw.visualizer.model.nc;
-
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-
-/**
- *
- * @author Alexander Reder
- */
-public interface NativeMethod {
-
-    public ControlFlowGraph getControlFlowGraph();
-    
-    public String getMethodText();
-    
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/bc/BytecodesImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-package at.ssw.visualizer.modelimpl.bc;
-
-import at.ssw.visualizer.model.bc.Bytecodes;
-import at.ssw.visualizer.model.cfg.BasicBlock;
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-import at.ssw.visualizer.modelimpl.cfg.BasicBlockImpl;
-import java.util.Arrays;
-
-/**
- * This class holds the bytecode of a method and provides severel methods
- * accessing the details.
- *
- * @author Christian Wimmer
- */
-public class BytecodesImpl implements Bytecodes {
-    private ControlFlowGraph controlFlowGraph;
-    private String bytecodeString;
-
-    private String[] bytecodes;
-    private String epilogue;
-    
-
-    public BytecodesImpl(ControlFlowGraph controlFlowGraph, String bytecodeString) {
-        this.controlFlowGraph = controlFlowGraph;
-        this.bytecodeString = bytecodeString;
-    }
-    
-    public void parseBytecodes() {
-        String[] lines = bytecodeString.split("\n");
-
-        boolean inPrologue = true;
-        String[] result = new String[lines.length * 3];
-        int lastBci = -1;
-        int lnr = 0; 
-        for (; lnr < lines.length; lnr++) {
-            String line = lines[lnr];
-
-            line = line.trim();
-            if (line.startsWith("[")) {
-                int end = line.indexOf(']');
-                if (end != -1) {
-                    line = line.substring(end + 1, line.length());
-                }
-            }
-            
-            line = line.trim();
-            int space1 = line.indexOf(' ');
-            if (space1 <= 0) {
-                if (inPrologue) {
-                    continue;
-                } else {
-                    break;
-                }
-            }
-            String bciStr = line.substring(0, space1);
-            if (bciStr.endsWith(":")) {
-                bciStr = bciStr.substring(0, bciStr.length() - 1);
-            }
-
-            int bci;
-            try {
-                bci = Integer.parseInt(bciStr);
-            } catch (NumberFormatException ex) {
-                // Ignore invalid lines.
-                if (inPrologue) {
-                    continue;
-                } else {
-                    break;
-                }
-            }
-
-            String opcode = line.substring(space1 + 1);
-            String params = "";
-            int space2 = opcode.indexOf(' ');
-            if (space2 > 0) {
-                params = opcode.substring(space2 + 1).trim();
-                opcode = opcode.substring(0, space2);
-            }
-            String tail = "";
-            int space3 = params.indexOf('|');
-            if (space3 >= 0) {
-                tail = params.substring(space3);
-                params = params.substring(0, space3);
-            }
-
-//            if (!"ldc".equals(opcode) || !params.startsWith("\"")) {
-//                // Separate packages with "." instead of "/"
-//                params = params.replace('/', '.');
-//            }
-            
-            String printLine = bciStr + ":" + "    ".substring(Math.min(bciStr.length(), 3)) +
-                    opcode + "              ".substring(Math.min(opcode.length(), 13)) +
-                    params + "        ".substring(Math.min(params.length(), 8)) +
-                    tail;
-
-            
-            if (bci >= result.length) {
-                result = Arrays.copyOf(result, Math.max(bci + 1, result.length * 2));
-            }
-            result[bci] = printLine;
-            inPrologue = false;
-            lastBci = Math.max(lastBci, bci);
-        }
-
-        StringBuilder epilogueBuilder = new StringBuilder();
-        for (; lnr < lines.length; lnr++) {
-            epilogueBuilder.append(lines[lnr]).append("\n");
-        }
-        epilogue = epilogueBuilder.toString();
-        bytecodes = Arrays.copyOf(result, lastBci + 1);
-    
-        
-        BasicBlockImpl[] blocks = new BasicBlockImpl[bytecodes.length];
-        for (BasicBlock b : controlFlowGraph.getBasicBlocks()) {
-            if (b instanceof BasicBlockImpl) {
-                BasicBlockImpl block = (BasicBlockImpl) b;
-                if (block.getToBci() != -1) {
-                    // Do not override existing values.
-                    return;
-                }
-                if (block.getFromBci() >= 0 && block.getFromBci() < blocks.length) {
-                    blocks[block.getFromBci()] = block;
-                }
-            }
-        }
-        
-        int curToBci = -1;
-        for (int i = blocks.length - 1; i >= 0; i--) {
-            if (bytecodes[i] != null && curToBci == -1) {
-                curToBci = i;
-            }
-            if (blocks[i] != null) {
-                blocks[i].setToBci(curToBci);
-                curToBci = -1;
-            }
-        }
-    }
-    
-    public ControlFlowGraph getControlFlowGraph() {
-        return controlFlowGraph;
-    }
-
-    public String getBytecodes(int fromBCI, int toBCI) {
-        if (fromBCI < 0) {
-            return "";
-        }
-        toBCI = Math.min(toBCI, bytecodes.length);
-        StringBuilder sb = new StringBuilder();
-        for (int i = fromBCI; i < toBCI; i++) {
-            if (bytecodes[i] != null) {
-                sb.append(bytecodes[i]).append("\n");
-            }
-        }
-        return sb.toString();
-    }
-
-    @Override
-    public String getEpilogue() {
-        return epilogue;
-    }
-
-    @Override
-    public String toString() {
-        return "Bytecodes " + getControlFlowGraph().getName();
-    }
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/cfg/BasicBlockImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-package at.ssw.visualizer.modelimpl.cfg;
-
-import at.ssw.visualizer.model.cfg.BasicBlock;
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-import at.ssw.visualizer.model.cfg.IRInstruction;
-import at.ssw.visualizer.model.cfg.State;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public class BasicBlockImpl implements BasicBlock {
-
-    private ControlFlowGraph parent;
-    private String name;
-    private int fromBci;
-    private int toBci;
-    private BasicBlock[] predecessors;
-    private BasicBlock[] successors;
-    private BasicBlock[] xhandlers;
-    private String[] flags;
-    private BasicBlock dominator;
-    private int loopIndex;
-    private int loopDepth;
-    private int firstLirId;
-    private int lastLirId;
-    private State[] states;
-    private IRInstruction[] hirInstructions;
-    private IRInstruction[] lirOperations;
-
-    public void setValues(String name, int fromBci, int toBci, BasicBlock[] predecessors, BasicBlock[] successors, BasicBlock[] xhandlers, String[] flags, BasicBlock dominator, int loopIndex, int loopDepth, int firstLirId, int lastLirId, State[] states, IRInstruction[] hirInstructions, IRInstruction[] lirOperations) {
-        this.name = name;
-        this.fromBci = fromBci;
-        this.toBci = toBci;
-
-        this.predecessors = predecessors;
-        this.successors = successors;
-        this.xhandlers = xhandlers;
-
-        this.flags = flags;
-        this.dominator = dominator;
-        this.loopIndex = loopIndex;
-        this.loopDepth = loopDepth;
-        this.firstLirId = firstLirId;
-        this.lastLirId = lastLirId;
-
-        this.states = states;
-        this.hirInstructions = hirInstructions;
-        this.lirOperations = lirOperations;
-    }
-
-    public ControlFlowGraph getParent() {
-        return parent;
-    }
-
-    protected void setParent(ControlFlowGraph parent) {
-        this.parent = parent;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public int getFromBci() {
-        return fromBci;
-    }
-
-    public int getToBci() {
-        return toBci;
-    }
-
-    public void setToBci(int toBci) {
-        this.toBci = toBci;
-    }
-
-    public List<BasicBlock> getPredecessors() {
-        return Collections.unmodifiableList(Arrays.asList(predecessors));
-    }
-
-    public List<BasicBlock> getSuccessors() {
-        return Collections.unmodifiableList(Arrays.asList(successors));
-    }
-
-    public List<BasicBlock> getXhandlers() {
-        return Collections.unmodifiableList(Arrays.asList(xhandlers));
-    }
-
-    public List<String> getFlags() {
-        return Collections.unmodifiableList(Arrays.asList(flags));
-    }
-
-    public BasicBlock getDominator() {
-        return dominator;
-    }
-
-    public int getLoopIndex() {
-        return loopIndex;
-    }
-
-    public int getLoopDepth() {
-        return loopDepth;
-    }
-
-    public int getFirstLirId() {
-        return firstLirId;
-    }
-
-    public int getLastLirId() {
-        return lastLirId;
-    }
-
-    public boolean hasState() {
-        return states != null;
-    }
-
-    public List<State> getStates() {
-        return Collections.unmodifiableList(Arrays.asList(states));
-    }
-
-    public boolean hasHir() {
-        return hirInstructions != null;
-    }
-
-    public List<IRInstruction> getHirInstructions() {
-        return Collections.unmodifiableList(Arrays.asList(hirInstructions));
-    }
-
-    public boolean hasLir() {
-        return lirOperations != null;
-    }
-
-    public List<IRInstruction> getLirOperations() {
-        return Collections.unmodifiableList(Arrays.asList(lirOperations));
-    }
-
-    @Override
-    public String toString() {
-        return name;
-    }
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/cfg/IRInstructionImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-package at.ssw.visualizer.modelimpl.cfg;
-
-import at.ssw.visualizer.model.cfg.IRInstruction;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-
-public class IRInstructionImpl implements IRInstruction {
-    private LinkedHashMap<String, String> data;
-
-    public IRInstructionImpl(LinkedHashMap<String, String> data) {
-        this.data = data;
-    }
-
-    public IRInstructionImpl(String pinned, int bci, int useCount, String name, String text, String operand) {
-        data = new LinkedHashMap<String, String>();
-        data.put("p", pinned);
-        data.put("bci", Integer.toString(bci));
-        data.put("use", Integer.toString(useCount));
-        data.put(HIR_NAME, name);
-        if (operand != null) {
-            data.put(HIR_OPERAND, operand);
-        }
-        data.put(HIR_TEXT, text);
-    }
-
-    public IRInstructionImpl(int number, String text) {
-        data = new LinkedHashMap<String, String>();
-        data.put(LIR_NUMBER, Integer.toString(number));
-        data.put(LIR_TEXT, text);
-    }
-
-    public Collection<String> getNames() {
-        return Collections.unmodifiableSet(data.keySet());
-    }
-
-    public String getValue(String name) {
-        return data.get(name);
-    }
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/cfg/StateEntryImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-package at.ssw.visualizer.modelimpl.cfg;
-
-import at.ssw.visualizer.model.cfg.StateEntry;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public class StateEntryImpl implements StateEntry {
-    private int index;
-    private String name;
-    private String[] phiOperands;
-    private String operand;
-
-    public StateEntryImpl(int index, String name, String[] phiOperands, String operand) {
-        this.index = index;
-        this.name = name;
-        this.phiOperands = phiOperands;
-        this.operand = operand;
-    }
-
-    public int getIndex() {
-        return index;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public boolean hasPhiOperands() {
-        return phiOperands != null;
-    }
-
-    public List<String> getPhiOperands() {
-        return Collections.unmodifiableList(Arrays.asList(phiOperands));
-    }
-
-    public String getOperand() {
-        return operand;
-    }
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/cfg/StateImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-package at.ssw.visualizer.modelimpl.cfg;
-
-import at.ssw.visualizer.model.cfg.State;
-import at.ssw.visualizer.model.cfg.StateEntry;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public class StateImpl implements State {
-    private String kind;
-    private int size;
-    private String method;
-    private StateEntry[] entries;
-
-    public StateImpl(String kind, int size, String method, StateEntryImpl[] entries) {
-        this.kind = kind;
-        this.size = size;
-        this.method = method;
-        this.entries = entries;
-    }
-
-    public String getKind() {
-        return kind;
-    }
-
-    public int getSize() {
-        return size;
-    }
-
-    public String getMethod() {
-        return method;
-    }
-
-    public List<StateEntry> getEntries() {
-        return Collections.unmodifiableList(Arrays.asList(entries));
-    }
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/interval/ChildIntervalImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-package at.ssw.visualizer.modelimpl.interval;
-
-import at.ssw.visualizer.model.interval.ChildInterval;
-import at.ssw.visualizer.model.interval.Interval;
-import at.ssw.visualizer.model.interval.Range;
-import at.ssw.visualizer.model.interval.UsePosition;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public class ChildIntervalImpl implements ChildInterval, Comparable<ChildIntervalImpl> {
-    private Interval parent;
-    private String regNum;
-    private String type;
-    private String operand;
-    private String spillState;
-    private ChildInterval registerHint;
-    private Range[] ranges;
-    private UsePosition[] usePositions;
-
-    public void setValues(String regNum, String type, String operand, String spillState, ChildInterval registerHint, Range[] ranges, UsePosition[] usePositions) {
-        this.regNum = regNum;
-        this.type = type;
-        this.operand = operand;
-        this.spillState = spillState;
-        this.registerHint = registerHint;
-        this.ranges = ranges;
-        this.usePositions = usePositions;
-    }
-    
-    public Interval getParent() {
-        return parent;
-    }
-
-    protected void setParent(IntervalImpl parent) {
-        this.parent = parent;
-    }
-
-    public String getRegNum() {
-        return regNum;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public String getOperand() {
-        return operand;
-    }
-
-    public String getSpillState() {
-        return spillState;
-    }
-
-    public ChildInterval getRegisterHint() {
-        return registerHint;
-    }
-
-    public List<Range> getRanges() {
-        return Collections.unmodifiableList(Arrays.asList(ranges));
-    }
-
-    public List<UsePosition> getUsePositions() {
-        return Collections.unmodifiableList(Arrays.asList(usePositions));
-    }
-
-
-    public int getFrom() {
-        return ranges[0].getFrom();
-    }
-
-    public int getTo() {
-        return ranges[ranges.length - 1].getTo();
-    }
-
-
-    public int compareTo(ChildIntervalImpl other) {
-        return getFrom() - other.getFrom();
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder result = new StringBuilder();
-        result.append(regNum);
-        result.append(": ");
-        result.append(getType());
-        result.append(", ");
-        result.append(getOperand());
-        result.append(", ");
-        if (registerHint != null) {
-            result.append(registerHint.getRegNum());
-        } else {
-            result.append("null");
-        }
-
-        result.append("  ");
-        for (int i = 0; i < ranges.length; i++) {
-            if (i > 0) {
-                result.append(", ");
-            }
-            result.append(ranges[i]);
-        }
-
-        result.append("  ");
-        for (int i = 0; i < usePositions.length; i++) {
-            if (i > 0) {
-                result.append(", ");
-            }
-            result.append(usePositions[i]);
-        }
-
-        return result.toString();
-    }
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/interval/IntervalImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-package at.ssw.visualizer.modelimpl.interval;
-
-import at.ssw.visualizer.model.interval.ChildInterval;
-import at.ssw.visualizer.model.interval.Interval;
-import at.ssw.visualizer.model.interval.IntervalList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public class IntervalImpl implements Interval {
-    private IntervalList parent;
-    private ChildInterval[] children;
-
-    public IntervalImpl(ChildIntervalImpl[] children) {
-        this.children = children;
-        for (ChildIntervalImpl child : children) {
-            child.setParent(this);
-        }
-    }
-
-    public IntervalList getParent() {
-        return parent;
-    }
-
-    protected void setParent(IntervalListImpl parent) {
-        this.parent = parent;
-    }
-
-    public List<ChildInterval> getChildren() {
-        return Collections.unmodifiableList(Arrays.asList(children));
-    }
-
-    public String getRegNum() {
-        return children[0].getRegNum();
-    }
-
-    public int getFrom() {
-        return children[0].getFrom();
-    }
-
-    public int getTo() {
-        return children[children.length - 1].getTo();
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder result = new StringBuilder();
-        for (int i = 0; i < children.length; i++) {
-            if (i > 0) {
-                result.append("\n  ");
-            }
-            result.append(children[i]);
-        }
-        return result.toString();
-    }
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/interval/IntervalListImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-package at.ssw.visualizer.modelimpl.interval;
-
-import at.ssw.visualizer.model.cfg.BasicBlock;
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-import at.ssw.visualizer.model.interval.Interval;
-import at.ssw.visualizer.model.interval.IntervalList;
-import com.sun.hotspot.igv.data.AbstractFolderElement;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Christian Wimmer
- */
-public class IntervalListImpl extends AbstractFolderElement implements IntervalList {
-    private Interval[] intervals;
-    private ControlFlowGraph controlFlowGraph;
-    private int numLIROperations;
-
-    public IntervalListImpl(String shortName, String name, IntervalImpl[] intervals, ControlFlowGraph controlFlowGraph) {
-        super(shortName, name);
-        this.intervals = intervals;
-        this.controlFlowGraph = controlFlowGraph;
-
-        for (IntervalImpl interval : intervals) {
-            interval.setParent(this);
-            numLIROperations = Math.max(numLIROperations, interval.getTo());
-        }
-//        for (BasicBlock basicBlock : controlFlowGraph.getBasicBlocks()) {
-//            numLIROperations = Math.max(numLIROperations, basicBlock.getLastLirId() + 2);
-//        }
-        // TODO(tw): Add number of LIR operations to output.
-    }
-
-
-    public List<Interval> getIntervals() {
-        return Collections.unmodifiableList(Arrays.asList(intervals));
-    }
-
-    public ControlFlowGraph getControlFlowGraph() {
-        return controlFlowGraph;
-    }
-
-    public int getNumLIROperations() {
-        return numLIROperations;
-    }
-
-
-    @Override
-    public String toString() {
-        return "    Intervals \"" + getName() + "\": " + intervals.length + " intervals\n";
-    }
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/interval/RangeImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-package at.ssw.visualizer.modelimpl.interval;
-
-import at.ssw.visualizer.model.interval.Range;
-
-/**
- *
- * @author Christian Wimmer
- */
-public class RangeImpl implements Range, Comparable<RangeImpl> {
-    private int from;
-    private int to;
-
-    public RangeImpl(int from, int to) {
-        this.from = from;
-        this.to = to;
-    }
-
-
-    public int getFrom() {
-        return from;
-    }
-
-    public int getTo() {
-        return to;
-    }
-
-
-    public int compareTo(RangeImpl other) {
-        return getFrom() - other.getFrom();
-    }
-
-    @Override
-    public String toString() {
-        return "[" + from + ", " + to + "]";
-    }
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/interval/UsePositionImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-package at.ssw.visualizer.modelimpl.interval;
-
-import at.ssw.visualizer.model.interval.UsePosition;
-
-/**
- *
- * @author Christian Wimmer
- */
-public class UsePositionImpl implements UsePosition, Comparable<UsePositionImpl> {
-    private int position;
-    private char kind;
-
-    public UsePositionImpl(int position, char kind) {
-        this.position = position;
-        this.kind = kind;
-    }
-
-
-    public char getKind() {
-        return kind;
-    }
-
-    public int getPosition() {
-        return position;
-    }
-
-
-    public int compareTo(UsePositionImpl other) {
-        return getPosition() - other.getPosition();
-    }
-
-    @Override
-    public String toString() {
-        return position + "(" + kind + ")";
-    }
-}
--- a/visualizer/Data/src/at/ssw/visualizer/modelimpl/nc/NativeMethodImpl.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-package at.ssw.visualizer.modelimpl.nc;
-
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-import at.ssw.visualizer.model.nc.NativeMethod;
-
-/**
- *
- * @author Alexander Reder
- */
-public class NativeMethodImpl implements NativeMethod {
-
-    private ControlFlowGraph controlFlowGraph;
-    private String methodText;
-    
-    public NativeMethodImpl(ControlFlowGraph controlFlowGraph, String methodText) {
-        this.controlFlowGraph = controlFlowGraph;
-        this.methodText = methodText;
-    }
-
-    public ControlFlowGraph getControlFlowGraph() {
-        return controlFlowGraph;
-    }
-    
-    public String getMethodText() {
-        return methodText;
-    }
-
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/AbstractFolderElement.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.hotspot.igv.data;
-
-public class AbstractFolderElement implements FolderElement {
-    
-    private String name;
-    private String shortName;
-    private Folder parent;
-    
-    public AbstractFolderElement(String name, String shortName) {
-        this.name = name;
-        this.shortName = shortName;
-    }
-
-    public String getShortName() {
-        return shortName;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public Folder getParent() {
-        return parent;
-    }
-
-    @Override
-    public void setParent(Folder parent) {
-        this.parent = parent;
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=Data
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/ChangedEvent.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-public class ChangedEvent<T> extends Event<ChangedListener<T>> {
-
-    private T object;
-
-    public ChangedEvent(T object) {
-        this.object = object;
-    }
-
-    @Override
-    protected void fire(ChangedListener<T> l) {
-        l.changed(object);
-    }
-
-    public void changeObject(T newObject) {
-        if (object != newObject) {
-            this.object = newObject;
-            fire();
-        }
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/ChangedEventProvider.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.data;
-
-/**
- * Provides a changed event object.
- * @author Thomas Wuerthinger
- * @param <T> Class for which the changed event fires.
- */
-public interface ChangedEventProvider<T> {
-
-    /**
-     * Returns the changed event object. Should always return the same instance.
-     */
-    ChangedEvent<T> getChangedEvent();
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/ChangedListener.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-/**
- * Listens to changed events.
- * @author Thomas Wuerthinger
- * @param <T> Class for which the changed event fires.
- */
-public interface ChangedListener<T> {
-
-    /**
-     * This method is called everytime a changed event is fired.
-     * @param source Object that has changed.
-     */
-    void changed(T source);
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/ControllableChangedListener.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.data;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public abstract class ControllableChangedListener<T> implements ChangedListener<T>{
-
-	private boolean enabled;
-
-	
-	public ControllableChangedListener() {
-		enabled = true;
-	}
-
-	public boolean isEnabled() {
-		return enabled;
-	}
-
-	public void setEnabled(boolean b) {
-		enabled = b;
-	}
-
-    @Override
-	public void changed(T source) {
-		if(enabled) {
-			filteredChanged(source);
-		}
-	}
-
-	public abstract void filteredChanged(T source);
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/Event.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public abstract class Event<L> {
-
-    private List<L> listener;
-    private boolean fireEvents;
-    private boolean eventWasFired;
-    
-    public Event() {
-        listener = new ArrayList<>();
-        fireEvents = true;
-    }
-
-    public void addListener(L l) {
-        listener.add(l);
-    }
-
-    public void addListenerAndFire(L l) {
-        addListener(l);
-        fire(l);
-    }
-
-    /**
-     * Remove listener
-     * @param l
-     */
-    public void removeListener(final L l) {
-        listener.remove(l);
-    }
-
-    public void fire() {
-        if(fireEvents) {
-            List<L> tmpList = new ArrayList<>(listener);
-            for (L l : tmpList) {
-                fire(l);
-            }
-        } else {
-            eventWasFired = true;
-        }
-    }
-
-    public void beginAtomic() {
-        assert fireEvents : "endAtomic has to be called before another beginAtomic may be called";
-        this.fireEvents = false;
-        this.eventWasFired = false;
-    }
-
-    public void endAtomic() {
-        assert !fireEvents : "beginAtomic has to be called first";
-        this.fireEvents = true;
-        if(eventWasFired) {
-            fire();
-        }
-    }
-    
-    protected abstract void fire(L l);
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/Folder.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import java.util.List;
-
-public interface Folder {
-    String getName();
-    List<? extends FolderElement> getElements();
-    void removeElement(FolderElement element);
-    void addElement(FolderElement group);
-    ChangedEvent<? extends Folder> getChangedEvent();
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/FolderElement.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-public interface FolderElement {
-    
-    Folder getParent();
-    String getName();
-    void setParent(Folder parent);
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/GraphDocument.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class GraphDocument extends Properties.Entity implements ChangedEventProvider<GraphDocument>, Folder {
-
-    private List<FolderElement> elements;
-    private ChangedEvent<GraphDocument> changedEvent;
-
-    public GraphDocument() {
-        elements = new ArrayList<>();
-        changedEvent = new ChangedEvent<>(this);
-    }
-
-    public void clear() {
-        elements.clear();
-        getChangedEvent().fire();
-    }
-
-    @Override
-    public ChangedEvent<GraphDocument> getChangedEvent() {
-        return changedEvent;
-    }
-
-    public void addGraphDocument(GraphDocument document) {
-        for (FolderElement e : document.elements) {
-            e.setParent(this);
-            this.addElement(e);
-        }
-        document.clear();
-        getChangedEvent().fire();
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-
-        sb.append("GraphDocument: ").append(getProperties().toString()).append(" \n\n");
-        for (FolderElement g : getElements()) {
-            sb.append(g.toString());
-            sb.append("\n\n");
-        }
-
-        return sb.toString();
-    }
-
-    @Override
-    public List<? extends FolderElement> getElements() {
-        return elements;
-    }
-
-    @Override
-    public void removeElement(FolderElement element) {
-        if (elements.remove(element)) {
-            getChangedEvent().fire();
-        }
-    }
-
-    @Override
-    public void addElement(FolderElement element) {
-        elements.add(element);
-        element.setParent(this);
-        getChangedEvent().fire();
-    }
-
-    @Override
-    public String getName() {
-        return "root";
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/Group.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import java.util.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Group extends Properties.Entity implements ChangedEventProvider<Group>, Folder, FolderElement {
-
-    private final List<FolderElement> elements;
-    private final List<InputGraph> graphs;
-
-    private InputMethod method;
-    private transient ChangedEvent<Group> changedEvent;
-    private Folder parent;
-
-    public Group(Folder parent) {
-        elements = new ArrayList<>();
-        graphs = new ArrayList<>();
-        changedEvent = new ChangedEvent<>(this);
-        this.parent = parent;
-
-        // Ensure that name and type are never null
-        getProperties().setProperty("name", "");
-        getProperties().setProperty("type", "");
-    }
-
-    public void fireChangedEvent() {
-        changedEvent.fire();
-    }
-
-    public void setMethod(InputMethod method) {
-        this.method = method;
-    }
-
-    public InputMethod getMethod() {
-        return method;
-    }
-
-    @Override
-    public ChangedEvent<Group> getChangedEvent() {
-        return changedEvent;
-    }
-
-    @Override
-    public List<FolderElement> getElements() {
-        return Collections.unmodifiableList(elements);
-    }
-
-    public int getGraphsCount() {
-        return elements.size();
-    }
-    
-    @Override
-    public void addElement(FolderElement element) {
-        elements.add(element);
-        if (element instanceof InputGraph) {
-            graphs.add((InputGraph) element);
-        } else {
-            
-        }
-        element.setParent(this);
-        changedEvent.fire();
-    }
-
-    public Set<Integer> getAllNodes() {
-        Set<Integer> result = new HashSet<>();
-        for (FolderElement e : elements) {
-            if (e instanceof InputGraph) {
-                InputGraph g = (InputGraph) e;
-                result.addAll(g.getNodesAsSet());
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("Group ").append(getProperties()).append("\n");
-        for (FolderElement g : elements) {
-            sb.append(g.toString());
-            sb.append('\n');
-        }
-        return sb.toString();
-    }
-
-    @Override
-    public String getName() {
-        return getProperties().get("name");
-    }
-
-    public String getType() {
-        return getProperties().get("type");
-        
-    }
-
-    InputGraph getPrev(InputGraph graph) {
-        InputGraph lastGraph = null;
-        for (FolderElement e : elements) {
-            if (e == graph) {
-                return lastGraph;
-            }
-            if (e instanceof InputGraph) {
-                lastGraph = (InputGraph) e;
-            }
-        }
-        return null;
-    }
-
-    InputGraph getNext(InputGraph graph) {
-        boolean found = false;
-        for (FolderElement e : elements) {
-            if (e == graph) {
-                found = true;
-            } else if (found && e instanceof InputGraph) {
-                return (InputGraph) e;
-            }
-        }
-        return null;
-    }
-
-    public InputGraph getLastGraph() {
-        InputGraph lastGraph = null;
-        for (FolderElement e : elements) {
-            if (e instanceof InputGraph) {
-                lastGraph = (InputGraph) e;
-            }
-        }
-        return lastGraph;
-    }
-
-    @Override
-    public Folder getParent() {
-         return parent;
-    }
-
-    @Override
-    public void removeElement(FolderElement element) {
-        if (elements.remove(element)) {
-            if (element instanceof InputGraph) {
-                graphs.remove((InputGraph) element);
-            }
-            changedEvent.fire();
-        }
-    }
-
-    public List<InputGraph> getGraphs() {
-        return graphs;
-    }
-
-    @Override
-    public void setParent(Folder parent) {
-        this.parent = parent;
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/InputBlock.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,205 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import at.ssw.visualizer.model.cfg.BasicBlock;
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-import at.ssw.visualizer.model.cfg.IRInstruction;
-import at.ssw.visualizer.model.cfg.State;
-import java.util.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class InputBlock implements BasicBlock {
-
-    private List<InputNode> nodes;
-    private String name;
-    private InputGraph graph;
-    private List<InputBlock> successors;
-    private List<InputBlock> predecessors;
-
-    @Override
-    public int hashCode() {
-        return name.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-
-        if (o == this) {
-            return true;
-        }
-
-        if (o == null || (!(o instanceof InputBlock))) {
-            return false;
-        }
-        
-        final InputBlock b = (InputBlock)o;
-        final boolean result = b.nodes.equals(nodes) && b.name.equals(name) && b.successors.size() == successors.size();
-        if (!result) {
-            return false;
-        }
-
-        final HashSet<String> s = new HashSet<>();
-        for (InputBlock succ : successors) {
-            s.add(succ.name);
-        }
-
-        for (InputBlock succ : b.successors) {
-            if (!s.contains(succ.name)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    InputBlock(InputGraph graph, String name) {
-        this.graph = graph;
-        this.name = name;
-        nodes = new ArrayList<>();
-        successors = new ArrayList<>();
-        predecessors = new ArrayList<>();
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public List<InputNode> getNodes() {
-        return Collections.unmodifiableList(nodes);
-    }
-
-    public void addNode(int id) {
-        InputNode n = graph.getNode(id);
-        assert n != null;
-        graph.setBlock(n, this);
-        final InputNode node = graph.getNode(id);
-        assert node != null;
-        assert !nodes.contains(node) : "duplicate : " + node;
-        nodes.add(node);
-    }
-
-    @Override
-    public List<InputBlock> getSuccessors() {
-        return Collections.unmodifiableList(successors);
-    }
-
-    @Override
-    public String toString() {
-        return "Block " + this.getName();
-    }
-
-    void addSuccessor(InputBlock b) {
-        if (!successors.contains(b)) {
-            successors.add(b);
-            b.predecessors.add(this);
-        }
-    }
-
-    @Override
-    public int getFromBci() {
-        // TODO(tw): Implement.
-        return -1;
-    }
-
-    @Override
-    public int getToBci() {
-        // TODO(tw): Implement.
-        return -1;
-    }
-
-    @Override
-    public List<InputBlock> getPredecessors() {
-        return Collections.unmodifiableList(predecessors);
-    }
-
-    @Override
-    public List<BasicBlock> getXhandlers() {
-        // TODO(tw): Implement.
-        return Collections.emptyList();
-    }
-
-    @Override
-    public List<String> getFlags() {
-        // TODO(tw): Implement.
-        return Collections.emptyList();
-    }
-
-    @Override
-    public BasicBlock getDominator() {
-        // TODO(tw): Implement.
-        return null;
-    }
-
-    @Override
-    public int getLoopIndex() {
-        // TODO(tw): Implement.
-        return -1;
-    }
-
-    @Override
-    public int getLoopDepth() {
-        // TODO(tw): Implement.
-        return -1;
-    }
-
-    @Override
-    public boolean hasState() {
-        // TODO(tw): Implement.
-        return false;
-    }
-
-    @Override
-    public List<State> getStates() {
-        // TODO(tw): Implement.
-        return Collections.emptyList();
-    }
-
-    @Override
-    public boolean hasHir() {
-        // TODO(tw): Implement.
-        return false;
-    }
-
-    @Override
-    public List<IRInstruction> getHirInstructions() {
-        // TODO(tw): Implement.
-        return Collections.emptyList();
-    }
-
-    @Override
-    public boolean hasLir() {
-        // TODO(tw): Implement.
-        return false;
-    }
-
-    @Override
-    public List<IRInstruction> getLirOperations() {
-        // TODO(tw): Implement.
-        return Collections.emptyList();
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/InputBlockEdge.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class InputBlockEdge {
-
-    public enum State {
-        SAME,
-        NEW,
-        DELETED
-    }
-
-    private InputBlock from;
-    private InputBlock to;
-    private State state = State.SAME;
-
-    public InputBlockEdge(InputBlock from, InputBlock to) {
-        assert from != null;
-        assert to != null;
-        this.from = from;
-        this.to = to;
-    }
-
-    public InputBlock getFrom() {
-        return from;
-    }
-
-    public InputBlock getTo() {
-        return to;
-    }
-
-    public State getState() {
-        return state;
-    }
-
-    public void setState(State state) {
-        this.state = state;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (obj != null && obj instanceof InputBlockEdge) {
-            InputBlockEdge e = (InputBlockEdge) obj;
-            return e.from.equals(from) && e.to.equals(to);
-        }
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        int hash = from.hashCode();
-        hash = 59 * hash + to.hashCode();
-        return hash;
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/InputBytecode.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class InputBytecode {
-
-    private int bci;
-    private String name;
-    private String operands;
-    private String comment;
-    private InputMethod inlined;
-
-    public InputBytecode(int bci, String name, String operands, String comment) {
-        this.bci = bci;
-        this.name = name;
-        this.operands = operands;
-        this.comment = comment;
-    }
-
-    public InputMethod getInlined() {
-        return inlined;
-    }
-
-    public void setInlined(InputMethod inlined) {
-        this.inlined = inlined;
-    }
-
-    public int getBci() {
-        return bci;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getOperands() {
-        return operands;
-    }
-
-    public String getComment() {
-        return comment;
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/InputEdge.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import java.util.Comparator;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class InputEdge {
-
-    public enum State {
-
-        SAME,
-        NEW,
-        DELETED
-    }
-    
-    public static final Comparator<InputEdge> OUTGOING_COMPARATOR = new Comparator<InputEdge>(){
-
-        @Override
-            public int compare(InputEdge o1, InputEdge o2) {
-                if(o1.getFromIndex() == o2.getFromIndex()) {
-                    return o1.getTo() - o2.getTo();
-                }
-                return o1.getFromIndex() - o2.getFromIndex();
-            }
-    };
-    
-    
-    public static final Comparator<InputEdge> INGOING_COMPARATOR = new Comparator<InputEdge>(){
-
-        @Override
-            public int compare(InputEdge o1, InputEdge o2) {
-                if(o1.getToIndex() == o2.getToIndex()) {
-                    return o1.getFrom() - o2.getFrom();
-                }
-                return o1.getToIndex() - o2.getToIndex();
-            }
-    };
-
-    private char toIndex;
-    private char fromIndex;
-    private int from;
-    private int to;
-    private State state;
-    private String label;
-
-    public InputEdge(char toIndex, int from, int to) {
-        this((char) 0, toIndex, from, to, null);
-    }
-
-    public InputEdge(char fromIndex, char toIndex, int from, int to) {
-        this(fromIndex, toIndex, from, to, null);
-    }
-
-    public InputEdge(char fromIndex, char toIndex, int from, int to, String label) {
-        this.toIndex = toIndex;
-        this.fromIndex = fromIndex;
-        this.from = from;
-        this.to = to;
-        this.state = State.SAME;
-        this.label = label;
-    }
-
-    public State getState() {
-        return state;
-    }
-
-    public void setState(State x) {
-        this.state = x;
-    }
-
-    public char getToIndex() {
-        return toIndex;
-    }
-    
-    public char getFromIndex() {
-        return fromIndex;
-    }
-
-    public String getName() {
-        return "in" + toIndex;
-    }
-
-    public int getFrom() {
-        return from;
-    }
-
-    public int getTo() {
-        return to;
-    }
-
-    public String getLabel() {
-        return label;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o == null || !(o instanceof InputEdge)) {
-            return false;
-        }
-        InputEdge conn2 = (InputEdge) o;
-        return conn2.fromIndex == fromIndex && conn2.toIndex == toIndex && conn2.from == from && conn2.to == to;
-    }
-
-    @Override
-    public String toString() {
-        return "Edge from " + from + " to " + to + "(" + (int) fromIndex + ", " + (int) toIndex + ") ";
-    }
-
-    @Override
-    public int hashCode() {
-        return (from << 20 | to << 8 | toIndex << 4 | fromIndex);
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/InputGraph.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,340 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import at.ssw.visualizer.model.bc.Bytecodes;
-import at.ssw.visualizer.model.cfg.BasicBlock;
-import at.ssw.visualizer.model.cfg.ControlFlowGraph;
-import at.ssw.visualizer.model.nc.NativeMethod;
-import java.util.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class InputGraph extends Properties.Entity implements FolderElement, ControlFlowGraph {
-
-    private Map<Integer, InputNode> nodes;
-    private Set<InputEdge> edges;
-    private Folder parent;
-    private Group parentGroup;
-    private Map<String, InputBlock> blocks;
-    private Set<InputBlockEdge> blockEdges;
-    private Map<Integer, InputBlock> nodeToBlock;
-
-    public InputGraph(String name) {
-        setName(name);
-        nodes = new LinkedHashMap<>();
-        edges = new LinkedHashSet<>();
-        blocks = new LinkedHashMap<>();
-        blockEdges = new LinkedHashSet<>();
-        nodeToBlock = new LinkedHashMap<>();
-    }
-    
-    @Override
-    public void setParent(Folder parent) {
-        this.parent = parent;
-        if (parent instanceof Group) {
-            assert this.parentGroup == null;
-            this.parentGroup = (Group) parent;
-        }
-    }
-
-    public InputBlockEdge addBlockEdge(InputBlock left, InputBlock right) {
-        InputBlockEdge edge = new InputBlockEdge(left, right);
-        blockEdges.add(edge);
-        left.addSuccessor(right);
-        return edge;
-    }
-    
-    public List<InputNode> findRootNodes() {
-        List<InputNode> result = new ArrayList<>();
-        Set<Integer> nonRoot = new HashSet<>();
-        for(InputEdge curEdges : getEdges()) {
-            nonRoot.add(curEdges.getTo());
-        }
-        
-        for(InputNode node : getNodes()) {
-            if(!nonRoot.contains(node.getId())) {
-                result.add(node);
-            }
-        }
-        
-        return result;
-    }
-    
-    public Map<InputNode, List<InputEdge>> findAllOutgoingEdges() {
-        
-        Map<InputNode, List<InputEdge>> result = new HashMap<>(getNodes().size());
-        for(InputNode n : this.getNodes()) {
-            result.put(n, new ArrayList<InputEdge>());
-        }
-        
-        for(InputEdge e : this.edges) {
-            int from = e.getFrom();
-            InputNode fromNode = this.getNode(from);
-            List<InputEdge> fromList = result.get(fromNode);
-            assert fromList != null;
-            fromList.add(e);
-        }
-        
-        for(InputNode n : this.getNodes()) {
-            List<InputEdge> list = result.get(n);
-            Collections.sort(list, InputEdge.OUTGOING_COMPARATOR);
-        }
-        
-        return result;
-    }
-    
-    public Map<InputNode, List<InputEdge>> findAllIngoingEdges() {
-        
-        Map<InputNode, List<InputEdge>> result = new HashMap<>(getNodes().size());
-        for(InputNode n : this.getNodes()) {
-            result.put(n, new ArrayList<InputEdge>());
-        }
-        
-        for(InputEdge e : this.edges) {
-            int to = e.getTo();
-            InputNode toNode = this.getNode(to);
-            List<InputEdge> toList = result.get(toNode);
-            assert toList != null;
-            toList.add(e);
-        }
-        
-        for(InputNode n : this.getNodes()) {
-            List<InputEdge> list = result.get(n);
-            Collections.sort(list, InputEdge.INGOING_COMPARATOR);
-        }
-        
-        return result;
-    }
-    
-    public List<InputEdge> findOutgoingEdges(InputNode n) {
-        List<InputEdge> result = new ArrayList<>();
-        
-        for(InputEdge e : this.edges) {
-            if(e.getFrom() == n.getId()) {
-                result.add(e);
-            }
-        }
-        
-        Collections.sort(result, InputEdge.OUTGOING_COMPARATOR);
-        
-        return result;
-    }
-
-    public void clearBlocks() {
-        blocks.clear();
-        nodeToBlock.clear();
-    }
-    
-    public void setEdge(int fromIndex, int toIndex, int from, int to) {
-        assert fromIndex == ((char)fromIndex) : "Downcast must be safe";
-        assert toIndex == ((char)toIndex) : "Downcast must be safe";
-        
-        InputEdge edge = new InputEdge((char)fromIndex, (char)toIndex, from, to);
-        if(!this.getEdges().contains(edge)) {
-            this.addEdge(edge);
-        }
-    }
-
-    public void ensureNodesInBlocks() {
-        InputBlock noBlock = null;
-        Set<InputNode> scheduledNodes = new HashSet<>();
-
-        for (InputBlock b : getBlocks()) {
-            for (InputNode n : b.getNodes()) {
-                assert !scheduledNodes.contains(n);
-                scheduledNodes.add(n);
-            }
-        }
-
-        for (InputNode n : this.getNodes()) {
-            assert nodes.get(n.getId()) == n;
-            if (!scheduledNodes.contains(n)) {
-                if (noBlock == null) {
-                    noBlock = this.addBlock("(no block)");
-                }
-                noBlock.addNode(n.getId());
-            }
-            assert this.getBlock(n) != null;
-        }
-    }
-
-    public void setBlock(InputNode node, InputBlock block) {
-        nodeToBlock.put(node.getId(), block);
-    }
-
-    public InputBlock getBlock(int nodeId) {
-        return nodeToBlock.get(nodeId);
-    }
-
-    public InputBlock getBlock(InputNode node) {
-        assert nodes.containsKey(node.getId());
-        assert nodes.get(node.getId()).equals(node);
-        return getBlock(node.getId());
-    }
-
-    public InputGraph getNext() {
-        return parentGroup.getNext(this);
-    }
-
-    public InputGraph getPrev() {
-        return parentGroup.getPrev(this);
-    }
-
-    private void setName(String name) {
-        this.getProperties().setProperty("name", name);
-    }
-
-    @Override
-    public String getName() {
-        return getProperties().get("name");
-    }
-
-    public Collection<InputNode> getNodes() {
-        return Collections.unmodifiableCollection(nodes.values());
-    }
-
-    public Set<Integer> getNodesAsSet() {
-        return Collections.unmodifiableSet(nodes.keySet());
-    }
-
-    public Collection<InputBlock> getBlocks() {
-        return Collections.unmodifiableCollection(blocks.values());
-    }
-
-    public void addNode(InputNode node) {
-        nodes.put(node.getId(), node);
-    }
-
-    public InputNode getNode(int id) {
-        return nodes.get(id);
-    }
-
-    public InputNode removeNode(int index) {
-        return nodes.remove(index);
-    }
-
-    public Collection<InputEdge> getEdges() {
-        return Collections.unmodifiableSet(edges);
-    }
-
-    public void removeEdge(InputEdge c) {
-        boolean removed = edges.remove(c);
-        assert removed;
-    }
-
-    public void addEdge(InputEdge c) {
-        // Be tolerant with duplicated edges.
-        if (!edges.contains(c)) {
-            edges.add(c);
-        }
-    }
-
-    public Group getGroup() {
-        return parentGroup;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("Graph ").append(getName()).append(" ").append(getProperties().toString()).append("\n");
-        for (InputNode n : nodes.values()) {
-            sb.append(n.toString());
-            sb.append("\n");
-        }
-
-        for (InputEdge c : edges) {
-            sb.append(c.toString());
-            sb.append("\n");
-        }
-
-        for (InputBlock b : getBlocks()) {
-            sb.append(b.toString());
-            sb.append("\n");
-        }
-
-        return sb.toString();
-    }
-
-    public InputBlock addBlock(String name) {
-        final InputBlock b = new InputBlock(this, name);
-        blocks.put(b.getName(), b);
-        return b;
-    }
-
-    public InputBlock getBlock(String s) {
-        return blocks.get(s);
-    }
-
-    public Collection<InputBlockEdge> getBlockEdges() {
-        return Collections.unmodifiableSet(blockEdges);
-    }
-
-    @Override
-    public Folder getParent() {
-        return parent;
-    }
-
-    @Override
-    public List<BasicBlock> getBasicBlocks() {
-        return new ArrayList<BasicBlock>(blocks.values());
-    }
-
-    @Override
-    public BasicBlock getBasicBlockByName(String name) {
-        return blocks.get(name);
-    }
-
-    @Override
-    public Bytecodes getBytecodes() {
-        // TODO(tw): no bytecodes
-        return null;
-    }
-
-    @Override
-    public NativeMethod getNativeMethod() {
-        // TODO(tw): No native method.
-        return null;
-    }
-
-    @Override
-    public boolean hasState() {
-        // TODO(tw): implement
-        return false;
-    }
-
-    @Override
-    public boolean hasHir() {
-        // TODO(tw): Implement
-        return false;
-    }
-
-    @Override
-    public boolean hasLir() {
-        // TODO(tw): Implement
-        return false;
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/InputMethod.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class InputMethod extends Properties.Entity {
-
-    private String name;
-    private int bci;
-    private String shortName;
-    private List<InputMethod> inlined;
-    private InputMethod parentMethod;
-    private Group group;
-    private List<InputBytecode> bytecodes;
-
-    @Override
-    public int hashCode() {
-        int result = name.hashCode();
-        result = result * 31 + bci;
-        result = result * 31 + shortName.hashCode();
-        result = result * 31 + inlined.hashCode();
-        result = result * 31 + bytecodes.hashCode();
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o == null || (!(o instanceof InputMethod))) {
-            return false;
-        }
-
-        final InputMethod im = (InputMethod)o;
-        return name.equals(im.name) && bci == im.bci && shortName.equals(im.shortName) &&
-               inlined.equals(im.inlined) && bytecodes.equals(im.bytecodes);
-    }
-
-
-
-    /** Creates a new instance of InputMethod */
-    public InputMethod(Group parent, String name, String shortName, int bci) {
-        this.group = parent;
-        this.name = name;
-        this.bci = bci;
-        this.shortName = shortName;
-        inlined = new ArrayList<>();
-        bytecodes = new ArrayList<>();
-    }
-
-    public List<InputBytecode> getBytecodes() {
-        return Collections.unmodifiableList(bytecodes);
-    }
-
-    public List<InputMethod> getInlined() {
-        return Collections.unmodifiableList(inlined);
-    }
-
-    public void addInlined(InputMethod m) {
-
-        // assert bci unique
-        for (InputMethod m2 : inlined) {
-            assert m2.getBci() != m.getBci();
-        }
-
-        inlined.add(m);
-        assert m.parentMethod == null;
-        m.parentMethod = this;
-
-        for (InputBytecode bc : bytecodes) {
-            if (bc.getBci() == m.getBci()) {
-                bc.setInlined(m);
-            }
-        }
-    }
-
-    public Group getGroup() {
-        return group;
-    }
-
-    public String getShortName() {
-        return shortName;
-    }
-
-    public void setBytecodes(String text) {
-        Pattern instruction = Pattern.compile("\\s*(\\d+)\\s*:?\\s*(\\w+)\\s*(.*)(?://(.*))?");
-        String[] strings = text.split("\n");
-        int oldBci = -1;
-        for (String s : strings) {
-            s = s.trim();
-            if (s.length() != 0) {
-                final Matcher matcher = instruction.matcher(s);
-                if (matcher.matches()) {
-                    String bciString = matcher.group(1);
-                    String opcode = matcher.group(2);
-                    String operands = matcher.group(3).trim();
-                    String comment = matcher.group(4);
-                    if (comment != null) {
-                        comment = comment.trim();
-                    }
-
-                    int bci = Integer.parseInt(bciString);
-
-                    // assert correct order of bytecodes
-                    assert bci > oldBci;
-
-                    InputBytecode bc = new InputBytecode(bci, opcode, operands, comment);
-                    bytecodes.add(bc);
-
-                    for (InputMethod m : inlined) {
-                        if (m.getBci() == bci) {
-                            bc.setInlined(m);
-                            break;
-                        }
-                    }
-                } else {
-                    System.out.println("no match: " + s);
-                }
-            }
-        }
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public int getBci() {
-        return bci;
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/InputNode.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import java.util.Comparator;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class InputNode extends Properties.Entity {
-
-    private int id;
-
-    public static final Comparator<InputNode> COMPARATOR = new Comparator<InputNode>() {
-        @Override
-        public int compare(InputNode o1, InputNode o2) {
-            return o1.getId() - o2.getId();
-        }
-    };
-
-    public static Comparator<InputNode> getPropertyComparator(final String propertyName) {
-        return new Comparator<InputNode>() {
-
-            @Override
-            public int compare(InputNode o1, InputNode o2) {
-
-                int i1 = 0;
-                try {
-                    i1 = Integer.parseInt(o1.getProperties().get(propertyName));
-                } catch(NumberFormatException e) {
-                }
-
-                int i2 = 0;
-                try {
-                    i2 = Integer.parseInt(o2.getProperties().get(propertyName));
-                } catch(NumberFormatException e) {
-                }
-
-                return i1 - i2;
-            }
-        };
-    }
-
-    public InputNode(InputNode n) {
-        super(n);
-        setId(n.id);
-    }
-
-    public InputNode(int id) {
-        setId(id);
-    }
-
-    public void setId(int id) {
-        this.id = id;
-        getProperties().setProperty("id", "" + id);
-    }
-
-    public int getId() {
-        return id;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (!(o instanceof InputNode)) {
-            return false;
-        }
-        InputNode n = (InputNode) o;
-        return n.id == id;
-    }
-
-    @Override
-    public int hashCode() {
-        return id * 13;
-    }
-
-    @Override
-    public String toString() {
-        return "Node " + id + " " + getProperties().toString();
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/Pair.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Pair<L, R> {
-
-    private L l;
-    private R r;
-
-    public Pair() {
-    }
-
-    public Pair(L l, R r) {
-        this.l = l;
-        this.r = r;
-    }
-
-    public L getLeft() {
-        return l;
-    }
-
-    public void setLeft(L l) {
-        this.l = l;
-    }
-
-    public R getRight() {
-        return r;
-    }
-
-    public void setRight(R r) {
-        this.r = r;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o == null || !(o instanceof Pair)) {
-            return false;
-        }
-        Pair<?,?> obj = (Pair<?,?>) o;
-        boolean b1 = (l == obj.l);
-        if (l != null) {
-            b1 = l.equals(obj.l);
-        }
-
-        boolean b2 = (r == obj.r);
-        if (r != null) {
-            b2 = r.equals(obj.r);
-        }
-        
-        return b1 && b2;
-    }
-
-    @Override
-    public int hashCode() {
-        return ((l == null) ? 0 : l.hashCode()) * 71 + ((r == null) ? 0 : r.hashCode());
-    }
-
-    @Override
-    public String toString() {
-        return "[" + l + "/" + r + "]";
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/Properties.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import java.io.Serializable;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Properties implements Serializable, Iterable<Property> {
-
-    public static final long serialVersionUID = 1L;
-    private String[] map = new String[4];
-
-    public Properties() {
-    }
-
-    @Override
-    public boolean equals(java.lang.Object o) {
-        if (!(o instanceof Properties)) {
-            return false;
-        }
-
-        Properties p = (Properties) o;
-
-        for (Property prop : this) {
-            String value = p.get(prop.getName());
-            if (value == null || !value.equals(prop.getValue())) {
-                return false;
-            }
-        }
-
-        for (Property prop : p) {
-            String value = this.get(prop.getName());
-            if (value == null || !value.equals(prop.getValue())) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int hash = 5;
-
-        if (map != null) {
-            for (int i = 0; i < this.map.length; i++) {
-                if (map[i] == null) {
-                    i++;
-                } else {
-                    hash = hash * 83 + map[i].hashCode();
-                }
-            }
-        }
-        return hash;
-    }
-
-    public Properties(String name, String value) {
-        this();
-        this.setProperty(name, value);
-    }
-
-    public Properties(String name, String value, String name1, String value1) {
-        this(name, value);
-        this.setProperty(name1, value1);
-    }
-
-    public Properties(String name, String value, String name1, String value1, String name2, String value2) {
-        this(name, value, name1, value1);
-        this.setProperty(name2, value2);
-    }
-
-    public Properties(Properties p) {
-        map = new String[p.map.length];
-        System.arraycopy(p.map, 0, map, 0, p.map.length);
-    }
-
-    public static class Entity implements Provider {
-
-        private Properties properties;
-
-        public Entity() {
-            properties = new Properties();
-        }
-
-        public Entity(Properties.Entity object) {
-            properties = new Properties(object.getProperties());
-        }
-
-        @Override
-        public Properties getProperties() {
-            return properties;
-        }
-    }
-
-    public interface PropertyMatcher {
-
-        String getName();
-
-        boolean match(String value);
-    }
-
-    public static class InvertPropertyMatcher implements PropertyMatcher {
-
-        private PropertyMatcher matcher;
-
-        public InvertPropertyMatcher(PropertyMatcher matcher) {
-            this.matcher = matcher;
-        }
-
-        @Override
-        public String getName() {
-            return matcher.getName();
-        }
-
-        @Override
-        public boolean match(String p) {
-            if (p == null) {
-                return false;
-            }
-            return !matcher.match(p);
-        }
-    }
-
-    public static class StringPropertyMatcher implements PropertyMatcher {
-
-        private String name;
-        private String value;
-
-        public StringPropertyMatcher(String name, String value) {
-            if (name == null) {
-                throw new IllegalArgumentException("Property name must not be null!");
-            }
-            if (value == null) {
-                throw new IllegalArgumentException("Property value must not be null!");
-            }
-            this.name = name;
-            this.value = value;
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public boolean match(String p) {
-            if (p == null) {
-                throw new IllegalArgumentException("Property value must not be null!");
-            }
-            return p.equals(value);
-        }
-    }
-
-    public static class RegexpPropertyMatcher implements PropertyMatcher {
-
-        private String name;
-        private Pattern valuePattern;
-        
-        public RegexpPropertyMatcher(String name, String value) {
-            this(name, value, 0);
-        }
-
-        public RegexpPropertyMatcher(String name, String value, int flags) {
-
-            if (name == null) {
-                throw new IllegalArgumentException("Property name must not be null!");
-            }
-
-            if (value == null) {
-                throw new IllegalArgumentException("Property value pattern must not be null!");
-            }
-
-            this.name = name;
-
-            try {
-                valuePattern = Pattern.compile(value, flags);
-            } catch (PatternSyntaxException e) {
-                throw new IllegalArgumentException("Bad pattern: " + value);
-            }
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public boolean match(String p) {
-            if (p == null) {
-                throw new IllegalArgumentException("Property value must not be null!");
-            }
-            Matcher m = valuePattern.matcher(p);
-            return m.matches();
-        }
-    }
-
-    public Property selectSingle(PropertyMatcher matcher) {
-
-        final String name = matcher.getName();
-        String value = null;
-        for (int i = 0; i < map.length; i += 2) {
-            if (map[i] != null && name.equals(map[i])) {
-                value = map[i + 1];
-                break;
-            }
-        }
-        if (value != null && matcher.match(value)) {
-            return new Property(name, value);
-        } else {
-            return null;
-        }
-    }
-
-    public interface Provider {
-
-        public Properties getProperties();
-    }
-
-    @Override
-    public String toString() {
-        List<String[]> pairs = new ArrayList<>();
-        for (int i = 0; i < map.length; i += 2) {
-            if (map[i + 1] != null) {
-                pairs.add(new String[]{map[i], map[i + 1]});
-            }
-        }
-
-        Collections.sort(pairs, new Comparator<String[]>() {
-            @Override
-            public int compare(String[] o1, String[] o2) {
-                assert o1.length == 2;
-                assert o2.length == 2;
-                return o1[0].compareTo(o2[0]);
-            }
-        });
-
-        StringBuilder sb = new StringBuilder();
-        sb.append("[");
-        boolean first = true;
-        for (String[] p : pairs) {
-            if (first) {
-                first = false;
-            } else {
-                sb.append(", ");
-            }
-            sb.append(p[0] + "=" + p[1]);
-        }
-        return sb.append("]").toString();
-    }
-
-    public static class PropertySelector<T extends Properties.Provider> {
-
-        private Collection<T> objects;
-
-        public PropertySelector(Collection<T> objects) {
-            this.objects = objects;
-        }
-
-        public T selectSingle(PropertyMatcher matcher) {
-
-            for (T t : objects) {
-                Property p = t.getProperties().selectSingle(matcher);
-                if (p != null) {
-                    return t;
-                }
-            }
-
-            return null;
-        }
-
-        public List<T> selectMultiple(PropertyMatcher matcher) {
-            List<T> result = new ArrayList<>();
-
-            for (T t : objects) {
-                Property p = t.getProperties().selectSingle(matcher);
-                if (p != null) {
-                    result.add(t);
-                }
-            }
-
-            return result;
-        }
-    }
-
-    public String get(String key) {
-        for (int i = 0; i < map.length; i += 2) {
-            if (map[i] != null && map[i].equals(key)) {
-                return map[i + 1];
-            }
-        }
-        return null;
-    }
-
-    public void setProperty(String name, String value) {
-
-        for (int i = 0; i < map.length; i += 2) {
-            if (map[i] != null && map[i].equals(name)) {
-                String p = map[i + 1];
-                if (value == null) {
-                    // remove this property
-                    map[i] = null;
-                    map[i + 1] = null;
-                } else {
-                    map[i + 1] = value;
-                }
-                return;
-            }
-        }
-        if (value == null) {
-            return;
-        }
-        for (int i = 0; i < map.length; i += 2) {
-            if (map[i] == null) {
-                map[i] = name;
-                map[i + 1] = value;
-                return;
-            }
-        }
-        String[] newMap = new String[map.length + 4];
-        System.arraycopy(map, 0, newMap, 0, map.length);
-        newMap[map.length] = name;
-        newMap[map.length + 1] = value;
-        map = newMap;
-    }
-
-    public void add(Properties properties) {
-        for (Property p : properties) {
-            setProperty(p.getName(), p.getValue());
-        }
-    }
-
-    private class PropertiesIterator implements Iterator<Property> {
-
-        int index;
-
-        @Override
-        public boolean hasNext() {
-            while (index < map.length && map[index + 1] == null) {
-                index += 2;
-            }
-            return index < map.length;
-        }
-
-        @Override
-        public Property next() {
-            if (index < map.length) {
-                index += 2;
-                return new Property(map[index - 2], map[index - 1]);
-            }
-            return null;
-        }
-
-        @Override
-        public void remove() {
-            throw new UnsupportedOperationException("Not supported yet.");
-        }
-    }
-
-    @Override
-    public Iterator<Property> iterator() {
-        return new PropertiesIterator();
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/Property.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import java.io.Serializable;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Property implements Serializable {
-
-    public static final long serialVersionUID = 1L;
-    private String name;
-    private String value;
-
-    Property(String name, String value) {
-        this.name = name;
-        this.value = value;
-
-        if (value == null) {
-            throw new IllegalArgumentException("Property value must not be null!");
-        }
-
-        if (name == null) {
-            throw new IllegalArgumentException("Property name must not be null!");
-        }
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    @Override
-    public String toString() {
-        return name + "=" + value;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (!(o instanceof Property)) {
-            return false;
-        }
-        Property p2 = (Property) o;
-        return name.equals(p2.name) && value.equals(p2.value);
-    }
-
-    @Override
-    public int hashCode() {
-        return name.hashCode() * 13 + value.hashCode();
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/Source.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data;
-
-import java.util.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Source {
-
-    private List<InputNode> sourceNodes;
-    private Set<Integer> set;
-
-    public Source() {
-        sourceNodes = new ArrayList<>(1);
-        set = new LinkedHashSet<>(1);
-    }
-
-    public List<InputNode> getSourceNodes() {
-        return Collections.unmodifiableList(sourceNodes);
-    }
-
-    public Set<Integer> getSourceNodesAsSet() {
-        return Collections.unmodifiableSet(set);
-    }
-
-    public void addSourceNode(InputNode n) {
-        if (!set.contains(n.getId())) {
-            sourceNodes.add(n);
-            set.add(n.getId());
-        }
-    }
-
-    public interface Provider {
-
-        public Source getSource();
-    }
-
-    public void addSourceNodes(Source s) {
-        for (InputNode n : s.getSourceNodes()) {
-            addSourceNode(n);
-        }
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/serialization/Parser.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,542 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data.serialization;
-
-import com.sun.hotspot.igv.data.*;
-import com.sun.hotspot.igv.data.serialization.XMLParser.ElementHandler;
-import com.sun.hotspot.igv.data.serialization.XMLParser.HandoverElementHandler;
-import com.sun.hotspot.igv.data.serialization.XMLParser.ParseMonitor;
-import com.sun.hotspot.igv.data.serialization.XMLParser.TopElementHandler;
-import com.sun.hotspot.igv.data.services.GroupCallback;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import javax.swing.SwingUtilities;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParserFactory;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.validation.SchemaFactory;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Parser {
-
-    public static final String INDENT = "  ";
-    public static final String TOP_ELEMENT = "graphDocument";
-    public static final String GROUP_ELEMENT = "group";
-    public static final String GRAPH_ELEMENT = "graph";
-    public static final String ROOT_ELEMENT = "graphDocument";
-    public static final String PROPERTIES_ELEMENT = "properties";
-    public static final String EDGES_ELEMENT = "edges";
-    public static final String PROPERTY_ELEMENT = "p";
-    public static final String EDGE_ELEMENT = "edge";
-    public static final String NODE_ELEMENT = "node";
-    public static final String NODES_ELEMENT = "nodes";
-    public static final String REMOVE_EDGE_ELEMENT = "removeEdge";
-    public static final String REMOVE_NODE_ELEMENT = "removeNode";
-    public static final String METHOD_NAME_PROPERTY = "name";
-    public static final String GROUP_NAME_PROPERTY = "name";
-    public static final String METHOD_IS_PUBLIC_PROPERTY = "public";
-    public static final String METHOD_IS_STATIC_PROPERTY = "static";
-    public static final String TRUE_VALUE = "true";
-    public static final String NODE_NAME_PROPERTY = "name";
-    public static final String EDGE_NAME_PROPERTY = "name";
-    public static final String NODE_ID_PROPERTY = "id";
-    public static final String FROM_PROPERTY = "from";
-    public static final String TO_PROPERTY = "to";
-    public static final String PROPERTY_NAME_PROPERTY = "name";
-    public static final String GRAPH_NAME_PROPERTY = "name";
-    public static final String FROM_INDEX_PROPERTY = "fromIndex";
-    public static final String TO_INDEX_PROPERTY = "toIndex";
-    public static final String TO_INDEX_ALT_PROPERTY = "index";
-    public static final String LABEL_PROPERTY = "label";
-    public static final String METHOD_ELEMENT = "method";
-    public static final String INLINE_ELEMENT = "inline";
-    public static final String BYTECODES_ELEMENT = "bytecodes";
-    public static final String METHOD_BCI_PROPERTY = "bci";
-    public static final String METHOD_SHORT_NAME_PROPERTY = "shortName";
-    public static final String CONTROL_FLOW_ELEMENT = "controlFlow";
-    public static final String BLOCK_NAME_PROPERTY = "name";
-    public static final String BLOCK_ELEMENT = "block";
-    public static final String SUCCESSORS_ELEMENT = "successors";
-    public static final String SUCCESSOR_ELEMENT = "successor";
-    public static final String ASSEMBLY_ELEMENT = "assembly";
-    public static final String DIFFERENCE_PROPERTY = "difference";
-    private TopElementHandler<GraphDocument> xmlDocument = new TopElementHandler<>();
-    private Map<Group, Boolean> differenceEncoding = new HashMap<>();
-    private Map<Group, InputGraph> lastParsedGraph = new HashMap<>();
-    private GroupCallback groupCallback;
-    private HashMap<String, Integer> idCache = new HashMap<>();
-    private ArrayList<Pair<String, String>> blockConnections = new ArrayList<>();
-    private int maxId = 0;
-    private GraphDocument graphDocument;
-
-    private int lookupID(String i) {
-        try {
-            return Integer.parseInt(i);
-        } catch (NumberFormatException nfe) {
-            // ignore
-        }
-        Integer id = idCache.get(i);
-        if (id == null) {
-            id = maxId++;
-            idCache.put(i, id);
-        }
-        return id.intValue();
-    }
-
-    // <graphDocument>
-    private ElementHandler<GraphDocument, Object> topHandler = new ElementHandler<GraphDocument, Object>(TOP_ELEMENT) {
-
-        @Override
-        protected GraphDocument start() throws SAXException {
-            graphDocument = new GraphDocument();
-            return graphDocument;
-        }
-    };
-    // <group>
-    private ElementHandler<Group, Folder> groupHandler = new XMLParser.ElementHandler<Group, Folder>(GROUP_ELEMENT) {
-
-        @Override
-        protected Group start() throws SAXException {
-            final Group group = new Group(this.getParentObject());
-
-            String differenceProperty = this.readAttribute(DIFFERENCE_PROPERTY);
-            Parser.this.differenceEncoding.put(group, (differenceProperty != null && (differenceProperty.equals("1") || differenceProperty.equals("true"))));
-
-            ParseMonitor monitor = getMonitor();
-            if (monitor != null) {
-                monitor.setState(group.getName());
-            }
-
-            final Folder parent = getParentObject();
-            if (groupCallback == null || parent instanceof Group) {
-                SwingUtilities.invokeLater(new Runnable(){
-                    @Override
-                    public void run() {
-                        parent.addElement(group);
-                    }
-                });
-            }
-
-            return group;
-        }
-
-        @Override
-        protected void end(String text) throws SAXException {
-        }
-    };
-    // <method>
-    private ElementHandler<InputMethod, Group> methodHandler = new XMLParser.ElementHandler<InputMethod, Group>(METHOD_ELEMENT) {
-
-        @Override
-        protected InputMethod start() throws SAXException {
-
-            InputMethod method = parseMethod(this, getParentObject());
-            getParentObject().setMethod(method);
-            return method;
-        }
-    };
-
-    private InputMethod parseMethod(XMLParser.ElementHandler<?,?> handler, Group group) throws SAXException {
-        String s = handler.readRequiredAttribute(METHOD_BCI_PROPERTY);
-        int bci = 0;
-        try {
-            bci = Integer.parseInt(s);
-        } catch (NumberFormatException e) {
-            throw new SAXException(e);
-        }
-        InputMethod method = new InputMethod(group, handler.readRequiredAttribute(METHOD_NAME_PROPERTY), handler.readRequiredAttribute(METHOD_SHORT_NAME_PROPERTY), bci);
-        return method;
-    }
-    // <bytecodes>
-    private HandoverElementHandler<InputMethod> bytecodesHandler = new XMLParser.HandoverElementHandler<InputMethod>(BYTECODES_ELEMENT, true) {
-
-        @Override
-        protected void end(String text) throws SAXException {
-            getParentObject().setBytecodes(text);
-        }
-    };
-    // <inlined>
-    private HandoverElementHandler<InputMethod> inlinedHandler = new XMLParser.HandoverElementHandler<>(INLINE_ELEMENT);
-    // <inlined><method>
-    private ElementHandler<InputMethod, InputMethod> inlinedMethodHandler = new XMLParser.ElementHandler<InputMethod, InputMethod>(METHOD_ELEMENT) {
-
-        @Override
-        protected InputMethod start() throws SAXException {
-            InputMethod method = parseMethod(this, getParentObject().getGroup());
-            getParentObject().addInlined(method);
-            return method;
-        }
-    };
-    // <graph>
-    private ElementHandler<InputGraph, Group> graphHandler = new XMLParser.ElementHandler<InputGraph, Group>(GRAPH_ELEMENT) {
-
-        @Override
-        protected InputGraph start() throws SAXException {
-            String name = readAttribute(GRAPH_NAME_PROPERTY);
-            InputGraph curGraph = new InputGraph(name);
-            if (differenceEncoding.get(getParentObject())) {
-                InputGraph previous = lastParsedGraph.get(getParentObject());
-                lastParsedGraph.put(getParentObject(), curGraph);
-                if (previous != null) {
-                    for (InputNode n : previous.getNodes()) {
-                        curGraph.addNode(n);
-                    }
-                    for (InputEdge e : previous.getEdges()) {
-                        curGraph.addEdge(e);
-                    }
-                }
-            }
-            return curGraph;
-        }
-
-        @Override
-        protected void end(String text) throws SAXException {
-            // NOTE: Some graphs intentionally don't provide blocks. Instead
-            //       they later generate the blocks from other information such
-            //       as node properties (example: ServerCompilerScheduler).
-            //       Thus, we shouldn't assign nodes that don't belong to any
-            //       block to some artificial block below unless blocks are
-            //       defined and nodes are assigned to them.
-
-            final InputGraph graph = getObject();
-            final Group parent = getParentObject();
-            if (graph.getBlocks().size() > 0) {
-                boolean blocksContainNodes = false;
-                for (InputBlock b : graph.getBlocks()) {
-                    if (b.getNodes().size() > 0) {
-                        blocksContainNodes = true;
-                        break;
-                    }
-                }
-
-                if (!blocksContainNodes) {
-                    graph.clearBlocks();
-                    blockConnections.clear();
-                } else {
-                    // Blocks and their nodes defined: add other nodes to an
-                    //  artificial "no block" block
-                    InputBlock noBlock = null;
-                    for (InputNode n : graph.getNodes()) {
-                        if (graph.getBlock(n) == null) {
-                            if (noBlock == null) {
-                                noBlock = graph.addBlock("(no block)");
-                            }
-
-                            noBlock.addNode(n.getId());
-                        }
-
-                        assert graph.getBlock(n) != null;
-                    }
-                }
-            }
-
-            // Resolve block successors
-            for (Pair<String, String> p : blockConnections) {
-                final InputBlock left = graph.getBlock(p.getLeft());
-                assert left != null;
-                final InputBlock right = graph.getBlock(p.getRight());
-                assert right != null;
-                graph.addBlockEdge(left, right);
-            }
-            blockConnections.clear();
-
-            SwingUtilities.invokeLater(new Runnable(){
-
-                @Override
-                public void run() {
-                    // Add to group
-                    parent.addElement(graph);
-                }
-            });
-        }
-    };
-    // <nodes>
-    private HandoverElementHandler<InputGraph> nodesHandler = new HandoverElementHandler<>(NODES_ELEMENT);
-    // <controlFlow>
-    private HandoverElementHandler<InputGraph> controlFlowHandler = new HandoverElementHandler<>(CONTROL_FLOW_ELEMENT);
-    // <block>
-    private ElementHandler<InputBlock, InputGraph> blockHandler = new ElementHandler<InputBlock, InputGraph>(BLOCK_ELEMENT) {
-
-        @Override
-        protected InputBlock start() throws SAXException {
-            InputGraph graph = getParentObject();
-            String name = readRequiredAttribute(BLOCK_NAME_PROPERTY);
-            InputBlock b = graph.addBlock(name);
-            for (InputNode n : b.getNodes()) {
-                assert graph.getBlock(n).equals(b);
-            }
-            return b;
-        }
-    };
-    // <nodes>
-    private HandoverElementHandler<InputBlock> blockNodesHandler = new HandoverElementHandler<>(NODES_ELEMENT);
-    // <node>
-    private ElementHandler<InputBlock, InputBlock> blockNodeHandler = new ElementHandler<InputBlock, InputBlock>(NODE_ELEMENT) {
-
-        @Override
-        protected InputBlock start() throws SAXException {
-            String s = readRequiredAttribute(NODE_ID_PROPERTY);
-
-            int id = 0;
-            try {
-                id = lookupID(s);
-            } catch (NumberFormatException e) {
-                throw new SAXException(e);
-            }
-            getParentObject().addNode(id);
-            return getParentObject();
-        }
-    };
-    // <successors>
-    private HandoverElementHandler<InputBlock> successorsHandler = new HandoverElementHandler<>(SUCCESSORS_ELEMENT);
-    // <successor>
-    private ElementHandler<InputBlock, InputBlock> successorHandler = new ElementHandler<InputBlock, InputBlock>(SUCCESSOR_ELEMENT) {
-
-        @Override
-        protected InputBlock start() throws SAXException {
-            String name = readRequiredAttribute(BLOCK_NAME_PROPERTY);
-            blockConnections.add(new Pair<>(getParentObject().getName(), name));
-            return getParentObject();
-        }
-    };
-    // <node>
-    private ElementHandler<InputNode, InputGraph> nodeHandler = new ElementHandler<InputNode, InputGraph>(NODE_ELEMENT) {
-
-        @Override
-        protected InputNode start() throws SAXException {
-            String s = readRequiredAttribute(NODE_ID_PROPERTY);
-            int id = 0;
-            try {
-                id = lookupID(s);
-            } catch (NumberFormatException e) {
-                throw new SAXException(e);
-            }
-            InputNode node = new InputNode(id);
-            getParentObject().addNode(node);
-            return node;
-        }
-    };
-    // <removeNode>
-    private ElementHandler<InputNode, InputGraph> removeNodeHandler = new ElementHandler<InputNode, InputGraph>(REMOVE_NODE_ELEMENT) {
-
-        @Override
-        protected InputNode start() throws SAXException {
-            String s = readRequiredAttribute(NODE_ID_PROPERTY);
-            int id = 0;
-            try {
-                id = lookupID(s);
-            } catch (NumberFormatException e) {
-                throw new SAXException(e);
-            }
-            return getParentObject().removeNode(id);
-        }
-    };
-    // <graph>
-    private HandoverElementHandler<InputGraph> edgesHandler = new HandoverElementHandler<>(EDGES_ELEMENT);
-
-    // Local class for edge elements
-    private class EdgeElementHandler extends ElementHandler<InputEdge, InputGraph> {
-
-        public EdgeElementHandler(String name) {
-            super(name);
-        }
-
-        @Override
-        protected InputEdge start() throws SAXException {
-            int fromIndex = 0;
-            int toIndex = 0;
-            int from = -1;
-            int to = -1;
-            String label = null;
-
-            try {
-                String fromIndexString = readAttribute(FROM_INDEX_PROPERTY);
-                if (fromIndexString != null) {
-                    fromIndex = Integer.parseInt(fromIndexString);
-                }
-
-                String toIndexString = readAttribute(TO_INDEX_PROPERTY);
-                if (toIndexString == null) {
-                    toIndexString = readAttribute(TO_INDEX_ALT_PROPERTY);
-                }
-                if (toIndexString != null) {
-                    toIndex = Integer.parseInt(toIndexString);
-                }
-
-                label = readAttribute(LABEL_PROPERTY);
-
-                from = lookupID(readRequiredAttribute(FROM_PROPERTY));
-                to = lookupID(readRequiredAttribute(TO_PROPERTY));
-            } catch (NumberFormatException e) {
-                throw new SAXException(e);
-            }
-
-            InputEdge conn = new InputEdge((char) fromIndex, (char) toIndex, from, to, label);
-            return start(conn);
-        }
-
-        protected InputEdge start(InputEdge conn) throws SAXException {
-            return conn;
-        }
-    }
-    // <edge>
-    private EdgeElementHandler edgeHandler = new EdgeElementHandler(EDGE_ELEMENT) {
-
-        @Override
-        protected InputEdge start(InputEdge conn) throws SAXException {
-            getParentObject().addEdge(conn);
-            return conn;
-        }
-    };
-    // <removeEdge>
-    private EdgeElementHandler removeEdgeHandler = new EdgeElementHandler(REMOVE_EDGE_ELEMENT) {
-
-        @Override
-        protected InputEdge start(InputEdge conn) throws SAXException {
-            getParentObject().removeEdge(conn);
-            return conn;
-        }
-    };
-    // <properties>
-    private HandoverElementHandler<Properties.Provider> propertiesHandler = new HandoverElementHandler<>(PROPERTIES_ELEMENT);
-    // <properties>
-    private HandoverElementHandler<Group> groupPropertiesHandler = new HandoverElementHandler<Group>(PROPERTIES_ELEMENT) {
-
-        @Override
-        public void end(String text) throws SAXException {
-            if (groupCallback != null && getParentObject().getParent() instanceof GraphDocument) {
-                final Group group = getParentObject();
-                SwingUtilities.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        groupCallback.started(group);
-                    }
-                });
-            }
-        }
-    };
-    // <property>
-    private ElementHandler<String, Properties.Provider> propertyHandler = new XMLParser.ElementHandler<String, Properties.Provider>(PROPERTY_ELEMENT, true) {
-
-        @Override
-        public String start() throws SAXException {
-            return readRequiredAttribute(PROPERTY_NAME_PROPERTY);
-         }
-
-        @Override
-        public void end(String text) {
-            getParentObject().getProperties().setProperty(getObject(), text.trim());
-        }
-    };
-
-    public Parser() {
-        this(null);
-    }
-
-    public Parser(GroupCallback groupCallback) {
-
-        this.groupCallback = groupCallback;
-
-        // Initialize dependencies
-        xmlDocument.addChild(topHandler);
-        topHandler.addChild(groupHandler);
-
-        groupHandler.addChild(methodHandler);
-        groupHandler.addChild(graphHandler);
-        groupHandler.addChild(groupHandler);
-
-        methodHandler.addChild(inlinedHandler);
-        methodHandler.addChild(bytecodesHandler);
-
-        inlinedHandler.addChild(inlinedMethodHandler);
-        inlinedMethodHandler.addChild(bytecodesHandler);
-        inlinedMethodHandler.addChild(inlinedHandler);
-
-        graphHandler.addChild(nodesHandler);
-        graphHandler.addChild(edgesHandler);
-        graphHandler.addChild(controlFlowHandler);
-
-        controlFlowHandler.addChild(blockHandler);
-
-        blockHandler.addChild(successorsHandler);
-        successorsHandler.addChild(successorHandler);
-        blockHandler.addChild(blockNodesHandler);
-        blockNodesHandler.addChild(blockNodeHandler);
-
-        nodesHandler.addChild(nodeHandler);
-        nodesHandler.addChild(removeNodeHandler);
-        edgesHandler.addChild(edgeHandler);
-        edgesHandler.addChild(removeEdgeHandler);
-
-        methodHandler.addChild(propertiesHandler);
-        inlinedMethodHandler.addChild(propertiesHandler);
-        topHandler.addChild(propertiesHandler);
-        groupHandler.addChild(groupPropertiesHandler);
-        graphHandler.addChild(propertiesHandler);
-        nodeHandler.addChild(propertiesHandler);
-        propertiesHandler.addChild(propertyHandler);
-        groupPropertiesHandler.addChild(propertyHandler);
-    }
-
-    // Returns a new GraphDocument object deserialized from an XML input source.
-    public GraphDocument parse(InputSource source, XMLParser.ParseMonitor monitor) throws SAXException {
-        XMLReader reader = createReader();
-
-        reader.setContentHandler(new XMLParser(xmlDocument, monitor));
-        try {
-            reader.parse(source);
-        } catch (IOException ex) {
-            throw new SAXException(ex);
-        }
-
-        return graphDocument;
-    }
-
-    private XMLReader createReader() throws SAXException {
-        try {
-            SAXParserFactory pfactory = SAXParserFactory.newInstance();
-            pfactory.setValidating(false);
-            pfactory.setNamespaceAware(true);
-
-            // Enable schema validation
-            SchemaFactory sfactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
-            InputStream stream = Parser.class.getResourceAsStream("graphdocument.xsd");
-            pfactory.setSchema(sfactory.newSchema(new Source[]{new StreamSource(stream)}));
-
-            return pfactory.newSAXParser().getXMLReader();
-        } catch (ParserConfigurationException ex) {
-            throw new SAXException(ex);
-        }
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/serialization/Printer.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,245 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data.serialization;
-
-import com.sun.hotspot.igv.data.*;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Writer;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Printer {
-
-    private InputStream in;
-
-    public Printer() {
-        this(null);
-    }
-
-    public Printer(InputStream inputStream) {
-        this.in = inputStream;
-    }
-
-    public void export(Writer writer, GraphDocument document) {
-
-        XMLWriter xmlWriter = new XMLWriter(writer);
-
-        try {
-            export(xmlWriter, document);
-        } catch (IOException ex) {
-        }
-    }
-
-    private void export(XMLWriter xmlWriter, GraphDocument document) throws IOException {
-        xmlWriter.startTag(Parser.ROOT_ELEMENT);
-        xmlWriter.writeProperties(document.getProperties());
-        for (FolderElement e : document.getElements()) {
-            if (e instanceof Group) {
-                export(xmlWriter, (Group) e);
-            } else if (e instanceof InputGraph) {
-                export(xmlWriter, (InputGraph)e, null, false);
-            }
-        }
-
-        xmlWriter.endTag();
-        xmlWriter.flush();
-    }
-
-    private void export(XMLWriter writer, Group g) throws IOException {
-        Properties attributes = new Properties();
-        attributes.setProperty("difference", Boolean.toString(true));
-        writer.startTag(Parser.GROUP_ELEMENT, attributes);
-        writer.writeProperties(g.getProperties());
-
-        boolean shouldExport = true;
-        if (in != null) {
-            char c = (char) in.read();
-            if (c != 'y') {
-                shouldExport = false;
-            }
-        }
-
-        if (shouldExport) {
-            if (g.getMethod() != null) {
-                export(writer, g.getMethod());
-            }
-
-            InputGraph previous = null;
-            for (FolderElement e : g.getElements()) {
-                if (e instanceof InputGraph) {
-                    InputGraph graph = (InputGraph) e;
-                    export(writer, graph, previous, true);
-                    previous = graph;
-                } else if (e instanceof Group) {
-                    export(writer, (Group) e);
-                }
-            }
-        }
-
-        writer.endTag();
-    }
-
-    public void export(XMLWriter writer, InputGraph graph, InputGraph previous, boolean difference) throws IOException {
-
-        writer.startTag(Parser.GRAPH_ELEMENT);
-        writer.writeProperties(graph.getProperties());
-        writer.startTag(Parser.NODES_ELEMENT);
-
-        Set<InputNode> removed = new HashSet<>();
-        Set<InputNode> equal = new HashSet<>();
-
-        if (previous != null) {
-            for (InputNode n : previous.getNodes()) {
-                int id = n.getId();
-                InputNode n2 = graph.getNode(id);
-                if (n2 == null) {
-                    removed.add(n);
-                } else if (n.equals(n2)) {
-                    equal.add(n);
-                }
-            }
-        }
-
-        if (difference) {
-            for (InputNode n : removed) {
-                writer.simpleTag(Parser.REMOVE_NODE_ELEMENT, new Properties(Parser.NODE_ID_PROPERTY, Integer.toString(n.getId())));
-            }
-        }
-
-        for (InputNode n : graph.getNodes()) {
-            if (!difference || !equal.contains(n)) {
-                writer.startTag(Parser.NODE_ELEMENT, new Properties(Parser.NODE_ID_PROPERTY, Integer.toString(n.getId())));
-                writer.writeProperties(n.getProperties());
-                writer.endTag();
-            }
-        }
-
-        writer.endTag();
-
-        writer.startTag(Parser.EDGES_ELEMENT);
-        Set<InputEdge> removedEdges = new HashSet<>();
-        Set<InputEdge> equalEdges = new HashSet<>();
-
-        if (previous != null) {
-            for (InputEdge e : previous.getEdges()) {
-                if (graph.getEdges().contains(e)) {
-                    equalEdges.add(e);
-                } else {
-                    removedEdges.add(e);
-                }
-            }
-        }
-
-        if (difference) {
-            for (InputEdge e : removedEdges) {
-                writer.simpleTag(Parser.REMOVE_EDGE_ELEMENT, createProperties(e));
-            }
-        }
-
-        for (InputEdge e : graph.getEdges()) {
-            if (!difference || !equalEdges.contains(e)) {
-                if (!equalEdges.contains(e)) {
-                    writer.simpleTag(Parser.EDGE_ELEMENT, createProperties(e));
-                }
-            }
-        }
-
-        writer.endTag();
-
-        writer.startTag(Parser.CONTROL_FLOW_ELEMENT);
-        for (InputBlock b : graph.getBlocks()) {
-            writer.startTag(Parser.BLOCK_ELEMENT, new Properties(Parser.BLOCK_NAME_PROPERTY, b.getName()));
-            
-            if (b.getSuccessors().size() > 0) {
-                writer.startTag(Parser.SUCCESSORS_ELEMENT);
-                for (InputBlock s : b.getSuccessors()) {
-                    writer.simpleTag(Parser.SUCCESSOR_ELEMENT, new Properties(Parser.BLOCK_NAME_PROPERTY, s.getName()));
-                }
-                writer.endTag();
-            }
-
-            if (b.getNodes().size() > 0) {
-            writer.startTag(Parser.NODES_ELEMENT);
-                for (InputNode n : b.getNodes()) {
-                    writer.simpleTag(Parser.NODE_ELEMENT, new Properties(Parser.NODE_ID_PROPERTY, n.getId() + ""));
-                }
-                writer.endTag();
-            }
-            
-            writer.endTag();
-        }
-
-        writer.endTag();
-        writer.endTag();
-    }
-
-    private void export(XMLWriter w, InputMethod method) throws IOException {
-
-        w.startTag(Parser.METHOD_ELEMENT, new Properties(Parser.METHOD_BCI_PROPERTY, method.getBci() + "", Parser.METHOD_NAME_PROPERTY, method.getName(), Parser.METHOD_SHORT_NAME_PROPERTY, method.getShortName()));
-
-        w.writeProperties(method.getProperties());
-
-        if (method.getInlined().size() > 0) {
-            w.startTag(Parser.INLINE_ELEMENT);
-            for (InputMethod m : method.getInlined()) {
-                export(w, m);
-            }
-            w.endTag();
-        }
-
-        w.startTag(Parser.BYTECODES_ELEMENT);
-
-        StringBuilder b = new StringBuilder();
-        b.append("<![CDATA[\n");
-        for (InputBytecode code : method.getBytecodes()) {
-            b.append(code.getBci());
-            b.append(" ");
-            b.append(code.getName());
-            b.append("\n");
-        }
-        
-        b.append("]]>");
-        w.write(b.toString());
-        w.endTag();
-        w.endTag();
-    }
-
-    private Properties createProperties(InputEdge edge) {
-        Properties p = new Properties();
-        if (edge.getToIndex() != 0) {
-            p.setProperty(Parser.TO_INDEX_PROPERTY, Integer.toString(edge.getToIndex()));
-        }
-        if (edge.getFromIndex() != 0) {
-            p.setProperty(Parser.FROM_INDEX_PROPERTY, Integer.toString(edge.getFromIndex()));
-        }
-        p.setProperty(Parser.TO_PROPERTY, Integer.toString(edge.getTo()));
-        p.setProperty(Parser.FROM_PROPERTY, Integer.toString(edge.getFrom()));
-        return p;
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/serialization/XMLParser.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data.serialization;
-
-import com.sun.hotspot.igv.data.Properties;
-import java.util.HashMap;
-import java.util.Stack;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class XMLParser implements ContentHandler {
-
-    public static interface ParseMonitor {
-
-        public void setProgress(double d);
-
-        public void setState(String state);
-    }
-
-    public static class MissingAttributeException extends SAXException {
-
-        private String name;
-
-        public MissingAttributeException(String name) {
-            super("Missing attribute \"" + name + "\"");
-            this.name = name;
-        }
-
-        public String getAttributeName() {
-            return this.getMessage();
-        }
-    }
-
-    public static class HandoverElementHandler<P> extends ElementHandler<P, P> {
-
-        @Override
-        protected P start() throws SAXException {
-            return getParentObject();
-        }
-
-        public HandoverElementHandler(String name) {
-            super(name);
-        }
-
-        public HandoverElementHandler(String name, boolean needsText) {
-            super(name, needsText);
-        }
-    }
-
-    public static class TopElementHandler<P> extends ElementHandler<P, Object> {
-
-        public TopElementHandler() {
-            super(null);
-        }
-    }
-
-    public static class ElementHandler<T, P> {
-
-        private String name;
-        private Stack<T> object = new Stack<>();
-        private Attributes attr;
-        private StringBuilder currentText;
-        private ParseMonitor monitor;
-        private HashMap<String, ElementHandler<?, ? super T>> hashtable;
-        private boolean needsText;
-        private Stack<ElementHandler<P, ?>> parentElement = new Stack<>();
-        private Stack<P> parentObject = new Stack<>();
-
-        public ElementHandler(String name) {
-            this(name, false);
-        }
-
-        public ElementHandler<P, ?> getParentElement() {
-            return parentElement.peek();
-        }
-
-        public P getParentObject() {
-            return parentObject.peek();
-        }
-
-        protected boolean needsText() {
-            return needsText;
-        }
-
-        public ElementHandler(String name, boolean needsText) {
-            this.hashtable = new HashMap<>();
-            this.name = name;
-            this.needsText = needsText;
-        }
-
-        public ParseMonitor getMonitor() {
-            return monitor;
-        }
-
-        public ElementHandler<?, ? super T> getChild(String name) {
-            return hashtable.get(name);
-        }
-
-        public void addChild(ElementHandler<?, ? super T> handler) {
-            assert handler != null;
-            hashtable.put(handler.getName(), handler);
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public T getObject() {
-            return object.size() == 0 ? null : object.peek();
-        }
-
-        public String readAttribute(String name) {
-            return attr.getValue(name);
-        }
-
-        public String readRequiredAttribute(String name) throws SAXException {
-            String s = readAttribute(name);
-            if (s == null) {
-                throw new MissingAttributeException(name);
-            }
-            return s;
-        }
-
-        public void processAttributesAsProperties(Properties p) {
-            int length = attr.getLength();
-            for (int i = 0; i < length; i++) {
-                String val = attr.getValue(i);
-                String localName = attr.getLocalName(i);
-                p.setProperty(val, localName);
-            }
-        }
-
-        public void startElement(ElementHandler<P, ?> parentElement, Attributes attr, ParseMonitor monitor) throws SAXException {
-            this.currentText = new StringBuilder();
-            this.attr = attr;
-            this.monitor = monitor;
-            this.parentElement.push(parentElement);
-            parentObject.push(parentElement.getObject());
-            object.push(start());
-        }
-
-        protected T start() throws SAXException {
-            return null;
-        }
-
-        protected void end(String text) throws SAXException {
-
-        }
-
-        public void endElement() throws SAXException {
-            end(currentText.toString());
-            object.pop();
-            parentElement.pop();
-            parentObject.pop();
-        }
-
-        protected void text(char[] c, int start, int length) {
-            assert currentText != null;
-            currentText.append(c, start, length);
-        }
-    }
-    private Stack<ElementHandler> stack;
-    private ParseMonitor monitor;
-
-    public XMLParser(TopElementHandler rootHandler, ParseMonitor monitor) {
-        this.stack = new Stack<>();
-        this.monitor = monitor;
-        this.stack.push(rootHandler);
-    }
-
-    @Override
-    public void setDocumentLocator(Locator locator) {
-        if (monitor != null) {
-            monitor.setState("Starting parsing");
-        }
-    }
-
-    @Override
-    public void startDocument() throws SAXException {
-    }
-
-    @Override
-    public void endDocument() throws SAXException {
-    }
-
-    @Override
-    public void startPrefixMapping(String prefix, String uri) throws SAXException {
-    }
-
-    @Override
-    public void endPrefixMapping(String prefix) throws SAXException {
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
-        assert !stack.isEmpty();
-
-        ElementHandler parent = stack.peek();
-        if (parent != null) {
-            ElementHandler child = parent.getChild(qName);
-            if (child != null) {
-                child.startElement(parent, atts, monitor);
-                stack.push(child);
-                return;
-            }
-        }
-
-        stack.push(null);
-    }
-
-    @Override
-    public void endElement(String uri, String localName, String qName) throws SAXException {
-        ElementHandler handler = stack.pop();
-        if (handler != null) {
-            handler.endElement();
-        }
-    }
-
-    @Override
-    public void characters(char[] ch, int start, int length) throws SAXException {
-
-        assert !stack.isEmpty();
-
-
-        ElementHandler top = stack.peek();
-        if (top != null && top.needsText()) {
-            top.text(ch, start, length);
-        }
-    }
-
-    @Override
-    public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
-    }
-
-    @Override
-    public void processingInstruction(String target, String data) throws SAXException {
-    }
-
-    @Override
-    public void skippedEntity(String name) throws SAXException {
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/serialization/XMLWriter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.data.serialization;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.Property;
-import java.io.IOException;
-import java.io.Writer;
-import java.util.Stack;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class XMLWriter extends Writer {
-
-    private Writer inner;
-    private Stack<String> elementStack;
-
-    public XMLWriter(Writer inner) {
-        this.inner = inner;
-        elementStack = new Stack<>();
-    }
-
-    @Override
-    public void write(char[] arr) throws IOException {
-        write(arr, 0, arr.length);
-    }
-
-    @Override
-    public void write(char[] cbuf, int off, int len) throws IOException {
-        for (int i = off; i < off + len; i++) {
-            char c = cbuf[i];
-            if (c == '>') {
-                inner.write("&gt;");
-            } else if (c == '<') {
-                inner.write("&lt;");
-            } else if (c == '&') {
-                inner.write("&amp;");
-            } else {
-                inner.write(c);
-            }
-        }
-    }
-
-    @Override
-    public void flush() throws IOException {
-        inner.flush();
-    }
-
-    @Override
-    public void close() throws IOException {
-        inner.close();
-    }
-
-    public void endTag() throws IOException {
-        inner.write("</" + elementStack.pop() + ">\n");
-    }
-
-    public void startTag(String name) throws IOException {
-        inner.write("<" + name + ">\n");
-        elementStack.push(name);
-    }
-
-    public void simpleTag(String name) throws IOException {
-        inner.write("<" + name + "/>\n");
-    }
-
-    public void startTag(String name, Properties attributes) throws IOException {
-        inner.write("<" + name);
-        elementStack.push(name);
-
-        for (Property p : attributes) {
-            inner.write(" " + p.getName() + "=\"");
-            write(p.getValue().toCharArray());
-            inner.write("\"");
-        }
-
-        inner.write(">\n");
-    }
-
-    public void simpleTag(String name, Properties attributes) throws IOException {
-        inner.write("<" + name);
-
-        for (Property p : attributes) {
-            inner.write(" " + p.getName() + "=\"");
-            write(p.getValue().toCharArray());
-            inner.write("\"");
-        }
-
-        inner.write("/>\n");
-    }
-
-    public void writeProperties(Properties props) throws IOException {
-        if (props.iterator().hasNext() == false) {
-            return;
-        }
-
-        startTag(Parser.PROPERTIES_ELEMENT);
-
-        for (Property p : props) {
-            startTag(Parser.PROPERTY_ELEMENT, new Properties(Parser.PROPERTY_NAME_PROPERTY, p.getName()));
-            this.write(p.getValue().toCharArray());
-            endTag();
-        }
-
-        endTag();
-    }
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/serialization/graphdocument.xsd	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
-    
-    <xsd:element name="graphDocument">
-        <xsd:complexType>
-            <xsd:sequence>
-                <xsd:element name="properties" type="propertiesType" minOccurs="0" maxOccurs="1" />
-                <xsd:element name="group" type="groupType" minOccurs="0" maxOccurs="unbounded" />
-            </xsd:sequence>
-        </xsd:complexType>
-    </xsd:element>
-
-    <xsd:complexType name="groupType">
-        <xsd:sequence>
-            <xsd:element name="properties" type="propertiesType" minOccurs="0" maxOccurs="1" />
-            <xsd:element name="assembly" type="assemblyType" minOccurs="0" maxOccurs="1" />
-            <xsd:element name="method" type="methodType" minOccurs="0" maxOccurs="1" />
-            <xsd:element name="graph" type="graphType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="difference" use="optional" />
-    </xsd:complexType>
-    
-    <xsd:complexType name="propertiesType">
-        <xsd:sequence>
-            <xsd:element name="p" minOccurs="0" maxOccurs="unbounded">
-                <xsd:complexType>
-                    <xsd:simpleContent>
-                        <xsd:extension base="xsd:string">
-                            <xsd:attribute name="name" use="required" />
-                        </xsd:extension>
-                    </xsd:simpleContent>
-                </xsd:complexType>
-            </xsd:element>
-        </xsd:sequence>
-    </xsd:complexType>
-    
-    <xsd:simpleType name="assemblyType">
-        <xsd:restriction base="xsd:string" />
-    </xsd:simpleType>
-    
-    <xsd:complexType name="methodType">
-        <xsd:all>
-            <xsd:element name="properties" type="propertiesType" minOccurs="0" maxOccurs="1" />
-            <xsd:element name="bytecodes" minOccurs="0" maxOccurs="1">
-                <xsd:simpleType>
-                    <xsd:restriction base="xsd:string" />
-                </xsd:simpleType>
-            </xsd:element>
-            <xsd:element name="inlined" minOccurs="0" maxOccurs="1">
-                <xsd:complexType>
-                    <xsd:sequence>
-                        <xsd:element name="method" type="methodType" minOccurs="0" maxOccurs="unbounded" />
-                    </xsd:sequence>
-                </xsd:complexType>
-            </xsd:element>
-        </xsd:all>
-        <xsd:attribute name="bci" type="xsd:int" use="required" />
-        <xsd:attribute name="shortName" type="xsd:string" use="required" />
-        <xsd:attribute name="name" type="xsd:string" use="required" />
-    </xsd:complexType>
-    
-    <xsd:complexType name="graphType">
-        <xsd:sequence>
-            <xsd:element name="properties" type="propertiesType" minOccurs="0" maxOccurs="1" />
-            
-            <xsd:element name="nodes" minOccurs="0" maxOccurs="1">
-                <xsd:complexType>
-                    <xsd:sequence>
-                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-                            <xsd:element name="node" type="nodeType" />
-                            <xsd:element name="removeNode" type="nodeRefType" />
-                        </xsd:choice>
-                    </xsd:sequence>
-                </xsd:complexType>
-            </xsd:element>
-            
-            <xsd:element name="edges" minOccurs="0" maxOccurs="1">
-                <xsd:complexType>
-                    <xsd:sequence>
-                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-                            <xsd:element name="edge" type="edgeType" />
-                            <xsd:element name="removeEdge" type="edgeType" />
-                        </xsd:choice>
-                    </xsd:sequence>
-                </xsd:complexType>
-            </xsd:element>
-            
-            <xsd:element name="controlFlow" type="controlFlowType" minOccurs="0" maxOccurs="1" />
-        </xsd:sequence>
-        
-        <xsd:attribute name="name" use="optional" />
-    </xsd:complexType>
-    
-    <xsd:complexType name="nodeType">
-        <xsd:sequence>
-            <xsd:element name="properties" type="propertiesType" minOccurs="0" maxOccurs="1" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:int" use="required" />
-    </xsd:complexType>
-    
-    <xsd:complexType name="nodeRefType">
-        <xsd:attribute name="id" type="xsd:int" use="required" />
-    </xsd:complexType>
-    
-    <xsd:complexType name="edgeType">
-        <xsd:attribute name="from" type="xsd:int" use="required" />
-        <xsd:attribute name="to" type="xsd:int" use="required" />
-        <xsd:attribute name="label" type="xsd:string" use="optional" />
-        <xsd:attribute name="fromIndex" type="xsd:int" use="optional" />
-        
-        <!-- These are aliases and should be mutually exclusive -->
-        <xsd:attribute name="toIndex" type="xsd:int" use="optional" />
-        <xsd:attribute name="index" type="xsd:int" use="optional" />
-    </xsd:complexType>
-    
-    <xsd:complexType name="controlFlowType">
-        <xsd:sequence>
-            <xsd:element name="block" type="blockType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-    </xsd:complexType>
-    
-    <xsd:complexType name="blockType">
-        <xsd:all>
-            <xsd:element name="successors" minOccurs="0" maxOccurs="1">
-                <xsd:complexType>
-                    <xsd:sequence>
-                        <xsd:element name="successor" minOccurs="0" maxOccurs="unbounded">
-                            <xsd:complexType>
-                                <xsd:attribute name="name" type="xsd:string" use="required" />
-                            </xsd:complexType>
-                        </xsd:element>
-                    </xsd:sequence>
-                </xsd:complexType>
-            </xsd:element>
-            <xsd:element name="nodes" minOccurs="0" maxOccurs="1">
-                <xsd:complexType>
-                    <xsd:sequence>
-                        <xsd:element name="node" type="nodeRefType" minOccurs="0" maxOccurs="unbounded" />
-                    </xsd:sequence>
-                </xsd:complexType>
-            </xsd:element>    
-        </xsd:all>
-        
-        <xsd:attribute name="name" type="xsd:string" use="required" />
-    </xsd:complexType>
-</xsd:schema>
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/services/GraphViewer.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.data.services;
-
-import com.sun.hotspot.igv.data.InputGraph;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface GraphViewer {
-
-    public void view(InputGraph graph);
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/services/GroupCallback.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.data.services;
-
-import com.sun.hotspot.igv.data.Group;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface GroupCallback {
-
-    public void started(Group g);
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/services/InputGraphProvider.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.data.services;
-
-import com.sun.hotspot.igv.data.InputGraph;
-import com.sun.hotspot.igv.data.InputNode;
-import java.util.Set;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface InputGraphProvider {
-
-    InputGraph getGraph();
-
-    void setSelectedNodes(Set<InputNode> nodes);
-}
--- a/visualizer/Data/src/com/sun/hotspot/igv/data/services/Scheduler.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.data.services;
-
-import com.sun.hotspot.igv.data.InputBlock;
-import com.sun.hotspot.igv.data.InputGraph;
-import java.util.Collection;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface Scheduler {
-
-    public Collection<InputBlock> schedule(InputGraph graph);
-}
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/ChangedEventTest.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.data;
-
-import static org.junit.Assert.assertEquals;
-import org.junit.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class ChangedEventTest {
-
-    public ChangedEventTest() {
-    }
-
-    @BeforeClass
-    public static void setUpClass() throws Exception {
-    }
-
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-    /**
-     * Test of addListener method, of class Event.
-     */
-    @Test
-    public void testBase() {
-
-        ChangedEvent<Integer> e = new ChangedEvent<>(5);
-        final int[] fireCount = new int[1];
-
-        e.addListener(new ChangedListener<Integer>() {
-            @Override
-            public void changed(Integer s) {
-                assertEquals(s.intValue(), 5);
-                fireCount[0]++;
-            }
-        });
-
-        e.fire();
-        assertEquals(1, fireCount[0]);
-
-        e.fire();
-        assertEquals(2, fireCount[0]);
-
-        e.beginAtomic();
-
-        e.fire();
-        assertEquals(2, fireCount[0]);
-
-        e.fire();
-        assertEquals(2, fireCount[0]);
-
-        e.fire();
-        assertEquals(2, fireCount[0]);
-
-        e.endAtomic();
-        assertEquals(3, fireCount[0]);
-
-    }
-
-
-}
\ No newline at end of file
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/ControllableChangedListenerTest.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.data;
-
-import static org.junit.Assert.*;
-import org.junit.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class ControllableChangedListenerTest {
-
-    public ControllableChangedListenerTest() {
-    }
-
-    @BeforeClass
-    public static void setUpClass() throws Exception {
-    }
-
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-    /**
-     * Test of isEnabled method, of class ControllableChangedListener.
-     */
-    @Test
-    public void testBase() {
-
-        final boolean[] hasFired = new boolean[1];
-        final boolean[] shouldFire = new boolean[1];
-        final Integer[] valueToFire = new Integer[1];
-        ControllableChangedListener<Integer> l = new ControllableChangedListener<Integer>() {
-
-            @Override
-            public void filteredChanged(Integer value) {
-                assertTrue(shouldFire[0]);
-                assertEquals(valueToFire[0], value);
-                hasFired[0] = true;
-            }
-        };
-
-        shouldFire[0] = true;
-        valueToFire[0] = 1;
-        hasFired[0] = false;
-        l.changed(1);
-        assertTrue(hasFired[0]);
-
-        shouldFire[0] = false;
-        hasFired[0] = false;
-        l.setEnabled(false);
-        l.changed(1);
-        assertFalse(hasFired[0]);
-
-        shouldFire[0] = true;
-        valueToFire[0] = 1;
-        hasFired[0] = false;
-        l.setEnabled(true);
-        l.changed(1);
-        assertTrue(hasFired[0]);
-    }
-}
\ No newline at end of file
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/GroupTest.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.data;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import static org.junit.Assert.assertEquals;
-import org.junit.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class GroupTest {
-
-    public GroupTest() {
-    }
-
-    @BeforeClass
-    public static void setUpClass() throws Exception {
-
-    }
-
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-    /**
-     * Test of getAllNodes method, of class Group.
-     */
-    @Test
-    public void testGetAllNodes() {
-        final Group g = new Group(null);
-        final InputGraph graph1 = new InputGraph("1");
-        final InputGraph graph2 = new InputGraph("2");
-        g.addElement(graph1);
-        g.addElement(graph2);
-        graph1.addNode(new InputNode(1));
-        graph1.addNode(new InputNode(2));
-        graph2.addNode(new InputNode(2));
-        graph2.addNode(new InputNode(3));
-        assertEquals(g.getAllNodes(), new HashSet(Arrays.asList(1, 2, 3)));
-    }
-}
\ No newline at end of file
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/InputGraphTest.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.data;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import org.junit.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class InputGraphTest {
-
-    /**
-     *    1
-     *   / \
-     *  2   3
-     *   \  |  5
-     *    \ | /
-     *      4
-     */
-    private static InputGraph referenceGraph;
-
-    private static InputGraph emptyGraph;
-
-    private static final InputNode N1 = new InputNode(1);
-    private static final InputNode N2 = new InputNode(2);
-    private static final InputNode N3 = new InputNode(3);
-    private static final InputNode N4 = new InputNode(4);
-    private static final InputNode N5 = new InputNode(5);
-    private static final InputEdge E12 = new InputEdge((char)0, 1, 2);
-    private static final InputEdge E13 = new InputEdge((char)0, 1, 3);
-    private static final InputEdge E24 = new InputEdge((char)0, 2, 4);
-    private static final InputEdge E34 = new InputEdge((char)0, 3, 4);
-    private static final InputEdge E54 = new InputEdge((char)0, 5, 4);
-
-    public InputGraphTest() {
-    }
-
-    @BeforeClass
-    public static void setUpClass() throws Exception {
-        Group group = new Group(null);
-
-        emptyGraph = new InputGraph("emptyGraph");
-        group.addElement(emptyGraph);
-        
-        referenceGraph = new InputGraph("referenceGraph");
-        group.addElement(referenceGraph);
-        referenceGraph.addNode(N1);
-        referenceGraph.addNode(N2);
-        referenceGraph.addNode(N3);
-        referenceGraph.addNode(N4);
-        referenceGraph.addNode(N5);
-
-        referenceGraph.addEdge(E12);
-        referenceGraph.addEdge(E13);
-        referenceGraph.addEdge(E24);
-        referenceGraph.addEdge(E34);
-        referenceGraph.addEdge(E54);
-    }
-
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-    /**
-     * Test of equals method, of class InputGraph.
-     */
-    @Test
-    public void testEquals() {
-
-        Group parentA = new Group(null);
-        InputGraph a = new InputGraph("graph");
-        parentA.addElement(a);
-
-        Group parentB = new Group(null);
-        InputGraph b = new InputGraph("graph");
-        parentB.addElement(b);
-
-        InputGraph c = new InputGraph("graph");
-        parentB.addElement(b);
-
-        Util.assertGraphEquals(a, b);
-        Util.assertGraphEquals(b, c);
-
-        a.addNode(new InputNode(1));
-        Util.assertGraphNotEquals(a, b);
-
-        b.addNode(new InputNode(1));
-        Util.assertGraphEquals(a, b);
-    }
-
-    /**
-     * Test of findRootNodes method, of class InputGraph.
-     */
-    @Test
-    public void testFindRootNodes() {
-        assertTrue(emptyGraph.findRootNodes().isEmpty());
-
-        List<InputNode> result = referenceGraph.findRootNodes();
-        assertTrue(result.size() == 2);
-        assertTrue(result.contains(N1));
-        assertTrue(result.contains(N5));
-    }
-
-    /**
-     * Test of findAllOutgoingEdges method, of class InputGraph.
-     */
-    @Test
-    public void testFindAllOutgoingEdges() {
-        assertTrue(emptyGraph.findAllOutgoingEdges().isEmpty());
-
-        Map<InputNode, List<InputEdge>> result = referenceGraph.findAllOutgoingEdges();
-        assertTrue(result.size() == 5);
-        assertEquals(result.get(N1), Arrays.asList(E12, E13));
-        assertEquals(result.get(N2), Arrays.asList(E24));
-        assertEquals(result.get(N3), Arrays.asList(E34));
-        assertEquals(result.get(N4), Arrays.asList());
-        assertEquals(result.get(N5), Arrays.asList(E54));
-    }
-
-    /**
-     * Test of findAllIngoingEdges method, of class InputGraph.
-     */
-    @Test
-    public void testFindAllIngoingEdges() {
-        assertTrue(emptyGraph.findAllIngoingEdges().isEmpty());
-
-        Map<InputNode, List<InputEdge>> result = referenceGraph.findAllIngoingEdges();
-        assertTrue(result.size() == 5);
-        assertEquals(result.get(N1), Arrays.asList());
-        assertEquals(result.get(N2), Arrays.asList(E12));
-        assertEquals(result.get(N3), Arrays.asList(E13));
-        assertEquals(result.get(N4), Arrays.asList(E24, E34, E54));
-        assertEquals(result.get(N5), Arrays.asList());
-    }
-
-    /**
-     * Test of findOutgoingEdges method, of class InputGraph.
-     */
-    @Test
-    public void testFindOutgoingEdges() {
-        assertTrue(emptyGraph.findOutgoingEdges(new InputNode(1)).isEmpty());
-
-        assertEquals(referenceGraph.findOutgoingEdges(N1), Arrays.asList(E12, E13));
-        assertEquals(referenceGraph.findOutgoingEdges(N2), Arrays.asList(E24));
-        assertEquals(referenceGraph.findOutgoingEdges(N3), Arrays.asList(E34));
-        assertEquals(referenceGraph.findOutgoingEdges(N4), Arrays.asList());
-        assertEquals(referenceGraph.findOutgoingEdges(N5), Arrays.asList(E54));
-    }
-
-    /**
-     * Test of getNext method, of class InputGraph.
-     */
-    @Test
-    public void testGetNextPrev() {
-        final Group group = new Group(null);
-
-        final InputGraph a = new InputGraph("a");
-
-        final InputGraph b = new InputGraph("b");
-
-        final InputGraph c = new InputGraph("c");
-        group.addElement(a);
-        group.addElement(b);
-        group.addElement(c);
-
-        assertEquals(null, a.getPrev());
-        assertEquals(b, a.getNext());
-
-        assertEquals(a, b.getPrev());
-        assertEquals(c, b.getNext());
-
-        assertEquals(b, c.getPrev());
-        assertEquals(null, c.getNext());
-    }
-}
\ No newline at end of file
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/InputMethodTest.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.data;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertThat;
-import org.junit.*;
-
-/**
- *
- * @author Thomas
- */
-public class InputMethodTest {
-
-    public InputMethodTest() {
-    }
-
-    @BeforeClass
-    public static void setUpClass() throws Exception {
-    }
-
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-
-    /**
-     * Test of getBytecodes method, of class InputMethod.
-     */
-    @Test
-    public void testGetSetBytecodes() {
-
-        final String input = "0 iload_0\n" +
-                             "1 iconst_1\n" +
-                             "2 if_icmpne 7\n" +
-                             "5 iconst_1\n" +
-                             "6 ireturn\n" +
-                             "7 iconst_0\n" +
-                             "8 ireturn";
-
-        final Group g = new Group(null);
-        InputMethod m = new InputMethod(g, "name", "shortName", -1);
-        m.setBytecodes(input);
-
-        assertThat(m.getBytecodes().size(), is(7));
-
-        assertThat(m.getBytecodes().get(0).getBci(), is(0));
-        assertThat(m.getBytecodes().get(1).getBci(), is(1));
-        assertThat(m.getBytecodes().get(2).getBci(), is(2));
-        assertThat(m.getBytecodes().get(3).getBci(), is(5));
-
-        assertThat(m.getBytecodes().get(0).getName(), is("iload_0"));
-        assertThat(m.getBytecodes().get(1).getName(), is("iconst_1"));
-        assertThat(m.getBytecodes().get(2).getName(), is("if_icmpne 7"));
-        assertThat(m.getBytecodes().get(6).getName(), is("ireturn"));
-
-        assertThat(m.getBytecodes().get(2).getInlined(), nullValue());
-        assertThat(m.getBytecodes().get(6).getInlined(), nullValue());
-    }
-
-
-}
\ No newline at end of file
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/PairTest.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.hotspot.igv.data;
-
-import static org.junit.Assert.*;
-import org.junit.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class PairTest {
-
-    public PairTest() {
-    }
-
-    @BeforeClass
-    public static void setUpClass() throws Exception {
-    }
-
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-    /**
-     * Test of getLeft method, of class Pair.
-     */
-    @Test
-    public void testBase() {
-        Pair p = new Pair();
-        assertTrue(p.getLeft() == null);
-        assertTrue(p.getRight() == null);
-        assertEquals("[null/null]", p.toString());
-        assertFalse(p.equals(null));
-
-        Pair<Integer, Integer> p2 = new Pair(1, 2);
-        assertTrue(p2.getLeft().intValue() == 1);
-        assertTrue(p2.getRight().intValue() == 2);
-        assertFalse(p.equals(p2));
-        assertFalse(p2.equals(p));
-        assertFalse(p.hashCode() == p2.hashCode());
-        assertEquals("[1/2]", p2.toString());
-
-        Pair p3 = new Pair(1, 2);
-        assertTrue(p2.equals(p3));
-        assertTrue(p2.hashCode() == p3.hashCode());
-
-        p2.setLeft(2);
-        assertFalse(p2.equals(p3));
-        assertTrue(p2.getLeft().intValue() == 2);
-        assertTrue(p2.getRight().intValue() == 2);
-        assertFalse(p2.hashCode() == p3.hashCode());
-        assertEquals("[2/2]", p2.toString());
-
-        p2.setRight(1);
-        assertFalse(p2.equals(p3));
-        assertTrue(p2.getLeft().intValue() == 2);
-        assertTrue(p2.getRight().intValue() == 1);
-        assertFalse(p2.hashCode() == p3.hashCode());
-        assertEquals("[2/1]", p2.toString());
-
-        p3.setLeft(2);
-        p3.setRight(1);
-        assertTrue(p2.hashCode() == p3.hashCode());
-        assertTrue(p2.equals(p3));
-    }
-}
\ No newline at end of file
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/PropertiesTest.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,401 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.hotspot.igv.data;
-
-import com.sun.hotspot.igv.data.Properties.InvertPropertyMatcher;
-import com.sun.hotspot.igv.data.Properties.PropertyMatcher;
-import com.sun.hotspot.igv.data.Properties.PropertySelector;
-import com.sun.hotspot.igv.data.Properties.RegexpPropertyMatcher;
-import com.sun.hotspot.igv.data.Properties.StringPropertyMatcher;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import junit.framework.TestCase;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class PropertiesTest extends TestCase {
-
-
-    
-    public PropertiesTest(String testName) {
-        super(testName);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-    }
-
-    /**
-     * Test of equals method, of class Properties.
-     */
-    public void testEquals() {
-        Properties a = new Properties();
-        assertFalse(a.equals(null));
-        assertTrue(a.equals(a));
-        
-        Properties b = new Properties();
-        assertTrue(a.equals(b));
-        assertTrue(a.hashCode() == b.hashCode());
-
-        a.setProperty("p1", "1");
-        assertFalse(a.equals(b));
-        assertFalse(b.equals(a));
-        assertFalse(a.hashCode() == b.hashCode());
-
-        b.setProperty("p1", "1");
-        assertTrue(a.equals(b));
-        assertTrue(a.hashCode() == b.hashCode());
-
-        Properties c = new Properties(a);
-        assertTrue(c.equals(a));
-        assertTrue(c.equals(b));
-
-        c.setProperty("p1", "2");
-        assertFalse(c.equals(b));
-        assertFalse(c.hashCode() == b.hashCode());
-        assertFalse(c.equals(a));
-        assertFalse(c.hashCode() == a.hashCode());
-
-        a.setProperty("p2", "2");
-        Properties d = new Properties();
-        d.setProperty("p2", "2");
-        d.setProperty("p1", "1");
-        assertTrue(d.equals(a));
-    }
-
-    /**
-     * Test of selectSingle method, of class Properties.
-     */
-    public void testSelectSingle() {
-        
-        final boolean[] called = new boolean[1];
-        final String v = "2";
-        final String n = "p2";
-        
-        PropertyMatcher matcher = new PropertyMatcher() {
-
-            @Override
-            public String getName() {
-                assertFalse(called[0]);
-                called[0] = true;
-                return n;
-            }
-
-            @Override
-            public boolean match(String value) {
-                assertTrue(v.equals(value));
-                return true;
-            }
-        };
-
-        Properties instance = new Properties();
-        instance.setProperty("p1", "1");
-        instance.setProperty(n, v);
-        instance.setProperty("p3", "3");
-        Property result = instance.selectSingle(matcher);
-        assertEquals(result, new Property(n, v));
-
-
-        called[0] = false;
-        PropertyMatcher matcher2 = new PropertyMatcher() {
-
-            @Override
-            public String getName() {
-                assertFalse(called[0]);
-                called[0] = true;
-                return n;
-            }
-
-            @Override
-            public boolean match(String value) {
-                return false;
-            }
-        };
-
-
-        Property result2 = instance.selectSingle(matcher2);
-        assertTrue(result2 == null);
-    }
-
-    /**
-     * Test of get method, of class Properties.
-     */
-    public void testGet() {
-        Properties instance = new Properties();
-        instance.setProperty("p1", "1");
-        assertEquals("1", instance.get("p1"));
-        assertEquals(null, instance.get("p2"));
-    }
-
-    /**
-     * Test of getProperties method, of class Properties.
-     */
-    public void testIterator() {
-        Properties instance = new Properties();
-        instance.setProperty("p1", "1");
-        instance.setProperty("p2", "2");
-        Iterator<Property> result = instance.iterator();
-        assertTrue(result.hasNext());
-        assertEquals(new Property("p1", "1"), result.next());
-        assertTrue(result.hasNext());
-        assertEquals(new Property("p2", "2"), result.next());
-        assertFalse(result.hasNext());
-        assertTrue(result.next() == null);
-
-        try {
-            result.remove();
-            fail();
-        } catch(UnsupportedOperationException e) {}
-    }
-
-    /**
-     * Test of add method, of class Properties.
-     */
-    public void testAdd() {
-        Properties a = new Properties();
-        a.setProperty("p1", "1");
-        a.setProperty("p2", "2");
-
-        Properties b = new Properties();
-        b.setProperty("p1", "1");
-
-        Properties c = new Properties();
-        c.setProperty("p2", "2");
-
-        assertFalse(a.equals(b));
-        b.add(c);
-
-        assertTrue(a.equals(b));
-        
-        b.setProperty("p3", null);
-        assertTrue(a.equals(b));
-    
-        Properties empty = new Properties();
-        b.add(empty);
-        assertTrue(a.equals(b));
-        
-        empty.add(b);
-        assertTrue(a.equals(empty));
-    }
-
-
-    /**
-     * Test the multiple argument constructors.
-     */
-    public void testConstructors() {
-        Properties a = new Properties("p1", "1", "p2", "2", "p3", "3");
-        Properties b = new Properties("p1", "1", "p2", "2");
-        Properties c = new Properties("p1", "1");
-
-        assertTrue(a.get("p3").equals("3"));
-        assertTrue(b.get("p2").equals("2"));
-        assertTrue(b.get("p1").equals("1"));
-
-        b.setProperty("p3", "3");
-        c.setProperty("p2", "2");
-        c.setProperty("p3", "3");
-
-        assertTrue(a.equals(b));
-        assertTrue(a.equals(c));
-    }
-
-    /**
-     * Test Entity class
-     */
-    public void testEntity() {
-
-        Properties p = new Properties();
-
-        Properties.Entity entity = new Properties.Entity();
-        assertEquals(entity.getProperties(), p);
-
-        entity.getProperties().setProperty("p1", "1");
-        Properties.Entity entity2 = new Properties.Entity(entity);
-        assertEquals(entity.getProperties(), entity2.getProperties());
-    }
-
-    /**
-     * Test property selector
-     */
-    public void testPropertySelector() {
-        final Collection<Properties.Entity> c = new ArrayList<>();
-
-        final Properties.Entity e1 = new Properties.Entity();
-        e1.getProperties().setProperty("p1", "1");
-        e1.getProperties().setProperty("p2", "2");
-        c.add(e1);
-
-        final Properties.Entity e2 = new Properties.Entity();
-        e2.getProperties().setProperty("p2", "2");
-        e2.getProperties().setProperty("p1", "1");
-        e2.getProperties().setProperty("p3", "3");
-        c.add(e2);
-
-        final Properties.Entity e3 = new Properties.Entity();
-        e3.getProperties().setProperty("p3", "3");
-        e3.getProperties().setProperty("p4", "4");
-        c.add(e3);
-
-        final PropertySelector<Properties.Entity> sel = new PropertySelector<>(c);
-
-        final StringPropertyMatcher matcher1 = new StringPropertyMatcher("p2", "2");
-        assertTrue(sel.selectMultiple(matcher1).size() == 2);
-        assertTrue(sel.selectMultiple(matcher1).contains(e1));
-        assertTrue(sel.selectMultiple(matcher1).contains(e2));
-        assertTrue(sel.selectSingle(matcher1).equals(e1) || sel.selectSingle(matcher1).equals(e2));
-
-        final StringPropertyMatcher matcher2 = new StringPropertyMatcher("p3", "3");
-        assertTrue(sel.selectMultiple(matcher2).size() == 2);
-        assertTrue(sel.selectMultiple(matcher2).contains(e2));
-        assertTrue(sel.selectMultiple(matcher2).contains(e3));
-        assertTrue(sel.selectSingle(matcher2).equals(e2) || sel.selectSingle(matcher2).equals(e3));
-
-        final StringPropertyMatcher matcher3 = new StringPropertyMatcher("p4", "4");
-        assertTrue(sel.selectMultiple(matcher3).size() == 1);
-        assertTrue(sel.selectMultiple(matcher3).contains(e3));
-        assertTrue(sel.selectSingle(matcher3).equals(e3));
-
-        final StringPropertyMatcher matcher4 = new StringPropertyMatcher("p5", "5");
-        assertTrue(sel.selectMultiple(matcher4).size() == 0);
-        assertTrue(sel.selectSingle(matcher4) == null);
-    }
-
-    public void testRemoveProperty() {
-        final Properties p = new Properties();
-        p.setProperty("p1", "1");
-        p.setProperty("p2", "2");
-
-        assertTrue(p.get("p1").equals("1"));
-        assertTrue(p.get("p2").equals("2"));
-
-        p.setProperty("p1", null);
-        assertTrue(p.get("p1") == null);
-        assertTrue(p.get("p2").equals("2"));
-
-        p.setProperty("p2", null);
-        assertTrue(p.get("p1") == null);
-        assertTrue(p.get("p2") == null);
-
-        p.setProperty("p3", "3");
-        assertTrue(p.get("p1") == null);
-        assertTrue(p.get("p2") == null);
-        assertTrue(p.get("p3").equals("3"));
-    }
-
-    /**
-     * Test property matchers
-     */
-    public void testPropertyMatchers() {
-        final StringPropertyMatcher matcher = new StringPropertyMatcher("p1", "1");
-        assertTrue(matcher.getName().equals("p1"));
-        assertTrue(matcher.match("1"));
-        assertFalse(matcher.match("2"));
-        try {
-            matcher.match(null);
-            fail();
-        } catch(IllegalArgumentException e) {}
-
-        try {
-            new StringPropertyMatcher(null, "**");
-            fail();
-        } catch(IllegalArgumentException e) {}
-
-        try {
-            new StringPropertyMatcher("p1", null);
-            fail();
-        } catch(IllegalArgumentException e) {}
-
-        final RegexpPropertyMatcher matcher2 = new RegexpPropertyMatcher("p1", "C.*");
-        assertTrue(matcher2.getName().equals("p1"));
-        assertTrue(matcher2.match("C"));
-        assertTrue(matcher2.match("Casdf"));
-        assertFalse(matcher2.match(" C"));
-        assertFalse(matcher2.match("c"));
-        assertFalse(matcher2.match("asdfC"));
-        
-        try {
-            matcher2.match(null);
-            fail();
-        } catch(IllegalArgumentException e) {}
-
-        try {
-            new RegexpPropertyMatcher("p1", "**");
-            fail();
-        } catch(IllegalArgumentException e) {}
-
-        try {
-            new RegexpPropertyMatcher(null, "1");
-            fail();
-        } catch(IllegalArgumentException e) {}
-
-        try {
-            new RegexpPropertyMatcher("p1", null);
-            fail();
-        } catch(IllegalArgumentException e) {}
-        
-        final InvertPropertyMatcher matcher3 = new InvertPropertyMatcher(matcher);
-        assertTrue(matcher3.getName().equals("p1"));
-        assertFalse(matcher3.match("1"));
-        assertTrue(matcher3.match("2"));
-        assertFalse(matcher3.match(null));
-    }
-
-    public void testToString() {
-        Properties p = new Properties();
-        assertEquals(p.toString(), "[]");
-
-        p.setProperty("p1", "1");
-        assertEquals(p.toString(), "[p1=1]");
-
-        Properties p2 = new Properties();
-        p2.setProperty("p1", "1");
-        p2.setProperty("p2", "2");
-        assertEquals(p2.toString(), "[p1=1, p2=2]");
-
-        Properties p3 = new Properties();
-        p3.setProperty("p2", "2");
-        p3.setProperty("p1", "1");
-        assertEquals(p3.toString(), "[p1=1, p2=2]");
-        
-        p3.setProperty("p0", "0");
-        assertEquals(p3.toString(), "[p0=0, p1=1, p2=2]");
-
-        p2.setProperty("p1", null);
-        assertEquals(p2.toString(), "[p2=2]");
-
-        p2.setProperty("p2", null);
-        assertEquals(p2.toString(), "[]");
-    }
-}
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/PropertyTest.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.hotspot.igv.data;
-
-import static org.junit.Assert.*;
-import org.junit.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class PropertyTest {
-
-    public PropertyTest() {
-    }
-
-    @BeforeClass
-    public static void setUpClass() throws Exception {
-    }
-
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-    /**
-     * Test of getName method, of class Property.
-     */
-    @Test
-    public void testGetNameAndValue() {
-        final Property p = new Property("name", "value");
-        assertEquals(p.getName(), "name");
-        assertEquals(p.getValue(), "value");
-
-        try {
-            new Property(null, "value");
-            fail();
-        } catch(IllegalArgumentException e) {
-        }
-
-
-        try {
-            new Property("name", null);
-            fail();
-        } catch(IllegalArgumentException e) {
-        }
-    }
-
-    /**
-     * Test of toString method, of class Property.
-     */
-    @Test
-    public void testToString() {
-        final Property p = new Property("name", "value");
-        assertEquals(p.toString(), "name=value");
-    }
-
-    /**
-     * Test of equals method, of class Property.
-     */
-    @Test
-    public void testEquals() {
-        final Property p = new Property("name", "value");
-        final Object o = new Object();
-        assertFalse(p.equals(o));
-        assertFalse(p.equals(null));
-        assertTrue(p.equals(p));
-
-        final Property p2 = new Property("name", "value1");
-        assertFalse(p.equals(p2));
-        assertTrue(p.hashCode() != p2.hashCode());
-
-        final Property p3 = new Property("name2", "value");
-        assertFalse(p.equals(p3));
-        assertTrue(p.hashCode() != p3.hashCode());
-        assertTrue(p2.hashCode() != p3.hashCode());
-
-        final Property p4 = new Property("name", "value");
-        assertEquals(p, p4);
-        assertEquals(p.hashCode(), p4.hashCode());
-    
-        final Property p5 = new Property("value", "name");
-        assertFalse(p.equals(p5));
-        assertTrue(p.hashCode() != p5.hashCode());
-    }
-}
\ No newline at end of file
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/SourceTest.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.data;
-
-import java.util.Arrays;
-import java.util.LinkedHashSet;
-import static org.junit.Assert.assertEquals;
-import org.junit.*;
-
-/**
- *
- * @author Thomas
- */
-public class SourceTest {
-
-    public SourceTest() {
-    }
-
-    @BeforeClass
-    public static void setUpClass() throws Exception {
-    }
-
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-    /**
-     * Test of getSourceNodes method, of class Source.
-     */
-    @Test
-    public void testBase() {
-        final Source s = new Source();
-
-        final InputNode N1 = new InputNode(1);
-        final InputNode N2 = new InputNode(2);
-
-        s.addSourceNode(N1);
-        assertEquals(s.getSourceNodes(), Arrays.asList(N1));
-        assertEquals(s.getSourceNodesAsSet(), new LinkedHashSet<>(Arrays.asList(1)));
-
-        s.addSourceNode(N2);
-        assertEquals(s.getSourceNodes(), Arrays.asList(N1, N2));
-        assertEquals(s.getSourceNodesAsSet(), new LinkedHashSet<>(Arrays.asList(1, 2)));
-
-        s.addSourceNode(N1);
-        assertEquals(s.getSourceNodes(), Arrays.asList(N1, N2));
-        assertEquals(s.getSourceNodesAsSet(), new LinkedHashSet<>(Arrays.asList(1, 2)));
-    }
-}
\ No newline at end of file
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/Util.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.hotspot.igv.data;
-
-import static org.junit.Assert.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Util {
-
-    public static void assertGraphDocumentNotEquals(GraphDocument a, GraphDocument b) {
-        try {
-            assertGraphDocumentEquals(a, b);
-        } catch(AssertionError e) {
-            return;
-        }
-
-        fail("Graphs documents are equal!");
-    }
-
-    public static void assertGraphDocumentEquals(GraphDocument a, GraphDocument b) {
-
-        if (a.getElements().size() != b.getElements().size()) {
-            fail();
-        }
-
-        int z = 0;
-        for (FolderElement e : b.getElements()) {
-
-            if (e instanceof Group) {
-                Group g = (Group) e;
-                Group thisG = (Group) a.getElements().get(z);
-                assertGroupEquals(thisG, g);
-            z++;
-            }
-        }
-    }
-
-    public static void assertGroupNotEquals(Group a, Group b) {
-        try {
-            assertGroupEquals(a, b);
-        } catch(AssertionError e) {
-            return;
-        }
-
-        fail("Groups are equal!");
-    }
-
-    public static void assertGroupEquals(Group a, Group b) {
-
-        if (a.getGraphsCount() != b.getGraphsCount()) {
-            fail();
-        }
-
-        int z = 0;
-        for (InputGraph graph : a.getGraphs()) {
-            InputGraph otherGraph = b.getGraphs().get(z);
-            assertGraphEquals(graph, otherGraph);
-            z++;
-        }
-
-        if (a.getMethod() == null || b.getMethod() == null) {
-            if (a.getMethod() != b.getMethod()) {
-                fail();
-            }
-        } else {
-            if (!a.getMethod().equals(b.getMethod())) {
-                fail();
-            }
-        }
-    }
-
-    public static void assertGraphNotEquals(InputGraph a, InputGraph b) {
-        try {
-            assertGraphEquals(a, b);
-        } catch(AssertionError e) {
-            return;
-        }
-
-        fail("Graphs are equal!");
-    }
-
-    public static void assertGraphEquals(InputGraph a, InputGraph b) {
-        
-        if(!a.getNodesAsSet().equals(b.getNodesAsSet())) {
-            fail();
-        }
-        
-        if (!a.getEdges().equals(b.getEdges())) {
-            fail();
-        }
-        
-        if (a.getBlocks().equals(b.getBlocks())) {
-            fail();
-        }
-
-        for (InputNode n : a.getNodes()) {
-            assertEquals(a.getBlock(n), b.getBlock(n));
-        }
-    }
-}
--- a/visualizer/Data/test/unit/src/com/sun/hotspot/igv/data/serialization/ParserTest.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,223 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.hotspot.igv.data.serialization;
-
-import com.sun.hotspot.igv.data.*;
-import java.io.CharArrayWriter;
-import java.io.StringReader;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import org.junit.*;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class ParserTest {
-
-    public ParserTest() {
-    }
-
-    @BeforeClass
-    public static void setUpClass() throws Exception {
-    }
-
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-    }
-
-    @Before
-    public void setUp() {
-    }
-
-    @After
-    public void tearDown() {
-    }
-
-    private void test(GraphDocument document) {
-        final Printer printer = new Printer();
-        final CharArrayWriter writer = new CharArrayWriter();
-        printer.export(writer, document);
-        test(document, writer.toString());
-    }
-
-    private void test(GraphDocument document, String xmlString) {
-        
-        StringReader sr = new StringReader(xmlString);
-        InputSource is = new InputSource(sr);
-
-        try {
-            Parser parser = new Parser();
-            final GraphDocument parsedDocument = parser.parse(is, null);
-            Util.assertGraphDocumentEquals(document, parsedDocument);
-        } catch (SAXException ex) {
-            fail(ex.toString());
-        }
-    }
-
-    private void testBoth(GraphDocument document, String xmlString) {
-        test(document);
-        test(document, xmlString);
-    }
-
-    /**
-     * Test of graph document serialization
-     */
-    @Test
-    public void testSerialization() {
-        final GraphDocument doc = new GraphDocument();
-
-        test(doc);
-
-        final Group group1 = new Group(doc);
-        doc.addElement(group1);
-        test(doc);
-
-        final Group group2 = new Group(doc);
-        doc.addElement(group2);
-        test(doc);
-
-        final InputGraph graph = new InputGraph("");
-        group1.addElement(graph);
-        test(doc);
-
-        graph.addNode(new InputNode(0));
-        test(doc);
-
-        graph.addNode(new InputNode(1));
-        test(doc);
-
-        graph.addNode(new InputNode(2));
-        test(doc);
-
-        graph.addNode(new InputNode(3));
-        test(doc);
-
-        graph.addEdge(new InputEdge((char)0, (char)0, 0, 1));
-        test(doc);
-
-        graph.addEdge(new InputEdge((char)1, (char)1, 0, 1));
-        test(doc);
-
-        graph.addEdge(new InputEdge((char)0, (char)0, 1, 2));
-        test(doc);
-        
-        graph.addEdge(new InputEdge((char)0, (char)0, 2, 3));
-        test(doc);
-
-        group1.setMethod(new InputMethod(group1, "testMethod", "tM", 1));
-        test(doc);
-
-        final InputBlock b1 = graph.addBlock("1");
-        b1.addNode(0);
-        b1.addNode(1);
-
-        final InputBlock b2 = graph.addBlock("2");
-        b2.addNode(2);
-        b2.addNode(3);
-        test(doc);
-
-        final GraphDocument document2 = new GraphDocument();
-        doc.addGraphDocument(document2);
-        test(doc);
-        assertTrue(doc.getElements().size() == 2);
-
-        final Group group3 = new Group(document2);
-        document2.addElement(group3);
-        doc.addGraphDocument(document2);
-        assertTrue(doc.getElements().size() == 3);
-        assertTrue(document2.getElements().size() == 0);
-
-        doc.clear();
-        test(doc);
-        Util.assertGraphDocumentEquals(doc, new GraphDocument());
-    }
-
-	@Test
-	public void testSimpleExport() {
-		GraphDocument document = new GraphDocument();
-		Group g = new Group(document);
-		document.addElement(g);
-        
-		InputGraph graph = new InputGraph("TestGraph");
-                g.addElement(graph);
-		graph.getProperties().setProperty("testName", "testValue");
-
-		InputNode n1 = new InputNode(0);
-		InputNode n2 = new InputNode(1);
-		InputEdge e1 = new InputEdge((char)0, 0, 1);
-		InputEdge e2 = new InputEdge((char)1, 0, 1);
-		graph.addNode(n1);
-		graph.addNode(n2);
-		graph.addEdge(e1);
-		graph.addEdge(e2);
-        
-        test(document);
-	}
-
-	@Test
-	public void testComplexExport() {
-
-		GraphDocument document = new GraphDocument();
-		Group g = new Group(document);
-		document.addElement(g);
-
-		InputGraph graph = new InputGraph("TestGraph");
-                g.addElement(graph);
-		graph.getProperties().setProperty("testName", "testValue");
-
-		InputNode n1 = new InputNode(0);
-		InputNode n2 = new InputNode(1);
-		InputEdge e1 = new InputEdge((char)0, 0, 0);
-		InputEdge e2 = new InputEdge((char)1, 1, 1);
-		graph.addNode(n1);
-		graph.addNode(n2);
-		graph.addEdge(e1);
-		graph.addEdge(e2);
-
-		InputGraph graph2 = new InputGraph("TestGraph2");
-                g.addElement(graph2);
-		graph2.addNode(n1);
-		InputNode n3 = new InputNode(2);
-		graph2.addNode(n3);
-		InputEdge e3 = new InputEdge((char)0, 0, 2);
-		graph2.addEdge(e3);
-
-        test(document);
-	}
-
-
-    /**
-     * Test of parse method, of class Parser.
-     */
-    @Test
-    public void testParse() {
-        testBoth(new GraphDocument(), "<graphDocument></graphDocument>");
-    }
-
-}
\ No newline at end of file
--- a/visualizer/Difference/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.difference" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.difference.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Difference/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.difference
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/difference/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Difference/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.difference-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Difference/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=1657ecfe
-build.xml.script.CRC32=03909051
-build.xml.stylesheet.CRC32=79c3b980
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=1657ecfe
-nbproject/build-impl.xml.script.CRC32=2208e770
-nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
--- a/visualizer/Difference/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/Difference/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/Difference/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.difference</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.6.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.sun.hotspot.igv.difference</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Difference/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/Difference/src/com/sun/hotspot/igv/difference/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=Difference
--- a/visualizer/Difference/src/com/sun/hotspot/igv/difference/Difference.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,381 +0,0 @@
-/*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.difference;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.*;
-import com.sun.hotspot.igv.data.services.Scheduler;
-import java.util.*;
-import org.openide.util.Lookup;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Difference {
-
-    public static final String PROPERTY_STATE = "state";
-    public static final String VALUE_NEW = "new";
-    public static final String VALUE_CHANGED = "changed";
-    public static final String VALUE_SAME = "same";
-    public static final String VALUE_DELETED = "deleted";
-    public static final String OLD_PREFIX = "OLD_";
-    public static final String MAIN_PROPERTY = "name";
-    public static final double LIMIT = 100.0;
-    public static final String[] IGNORE_PROPERTIES = new String[]{"idx", "debug_idx"};
-
-    public static InputGraph createDiffGraph(InputGraph a, InputGraph b) {
-        if (a.getGroup() == b.getGroup()) {
-            return createDiffSameGroup(a, b);
-        } else {
-            return createDiff(a, b);
-        }
-    }
-
-    private static InputGraph createDiffSameGroup(InputGraph a, InputGraph b) {
-        Map<Integer, InputNode> keyMapB = new HashMap<>(b.getNodes().size());
-        for (InputNode n : b.getNodes()) {
-            Integer key = n.getId();
-            assert !keyMapB.containsKey(key);
-            keyMapB.put(key, n);
-        }
-
-        Set<NodePair> pairs = new HashSet<>();
-
-        for (InputNode n : a.getNodes()) {
-            Integer key = n.getId();
-
-
-            if (keyMapB.containsKey(key)) {
-                InputNode nB = keyMapB.get(key);
-                pairs.add(new NodePair(n, nB));
-            }
-        }
-
-        return createDiff(a, b, pairs);
-    }
-
-    private static void ensureScheduled(InputGraph a) {
-        if (a.getBlocks().isEmpty()) {
-            Scheduler s = Lookup.getDefault().lookup(Scheduler.class);
-            a.clearBlocks();
-            s.schedule(a);
-            a.ensureNodesInBlocks();
-        }
-    }
-
-    private static InputGraph createDiff(InputGraph a, InputGraph b, Set<NodePair> pairs) {
-        ensureScheduled(a);
-        ensureScheduled(b);
-
-        Group g = new Group(null);
-        g.setMethod(a.getGroup().getMethod());
-        if (a.getGroup() == b.getGroup()) {
-            g.getProperties().add(a.getGroup().getProperties());
-        } else {
-            // copy properties that have the same value in both groups
-            Properties bps = b.getGroup().getProperties();
-            for (Property p : a.getGroup().getProperties()) {
-                String value = p.getValue();
-                if (value != null && value.equals(bps.get(p.getName()))) {
-                    g.getProperties().setProperty(p.getName(), value);
-                }
-            }
-        }
-        g.getProperties().setProperty("name", "Difference");
-        InputGraph graph = new InputGraph(a.getName() + ", " + b.getName());
-        g.addElement(graph);
-
-        Map<InputBlock, InputBlock> blocksMap = new HashMap<>();
-        for (InputBlock blk : a.getBlocks()) {
-            InputBlock diffblk = graph.addBlock(blk.getName());
-            blocksMap.put(blk, diffblk);
-        }
-        for (InputBlock blk : b.getBlocks()) {
-            InputBlock diffblk = graph.getBlock(blk.getName());
-            if (diffblk == null) {
-                diffblk = graph.addBlock(blk.getName());
-            }
-            blocksMap.put(blk, diffblk);
-        }
-
-        // Difference between block edges
-        Set<Pair<String, String>> aEdges = new HashSet<>();
-        for (InputBlockEdge edge : a.getBlockEdges()) {
-            aEdges.add(new Pair<>(edge.getFrom().getName(), edge.getTo().getName()));
-        }
-        for (InputBlockEdge bEdge : b.getBlockEdges()) {
-            InputBlock from = bEdge.getFrom();
-            InputBlock to = bEdge.getTo();
-            Pair<String, String> pair = new Pair<>(from.getName(), to.getName());
-            if (aEdges.contains(pair)) {
-                // same
-                graph.addBlockEdge(blocksMap.get(from), blocksMap.get(to));
-                aEdges.remove(pair);
-            } else {
-                // added
-                InputBlockEdge edge = graph.addBlockEdge(blocksMap.get(from), blocksMap.get(to));
-                edge.setState(InputBlockEdge.State.NEW);
-            }
-        }
-        for (Pair<String, String> deleted : aEdges) {
-            // removed
-            InputBlock from = graph.getBlock(deleted.getLeft());
-            InputBlock to = graph.getBlock(deleted.getRight());
-            InputBlockEdge edge = graph.addBlockEdge(from, to);
-            edge.setState(InputBlockEdge.State.DELETED);
-        }
-
-        Set<InputNode> nodesA = new HashSet<>(a.getNodes());
-        Set<InputNode> nodesB = new HashSet<>(b.getNodes());
-
-        Map<InputNode, InputNode> inputNodeMap = new HashMap<>(pairs.size());
-        for (NodePair p : pairs) {
-            InputNode n = p.getLeft();
-            assert nodesA.contains(n);
-            InputNode nB = p.getRight();
-            assert nodesB.contains(nB);
-
-            nodesA.remove(n);
-            nodesB.remove(nB);
-            InputNode n2 = new InputNode(n);
-            inputNodeMap.put(n, n2);
-            inputNodeMap.put(nB, n2);
-            graph.addNode(n2);
-            InputBlock block = blocksMap.get(a.getBlock(n));
-            block.addNode(n2.getId());
-            markAsChanged(n2, n, nB);
-        }
-
-        for (InputNode n : nodesA) {
-            InputNode n2 = new InputNode(n);
-            graph.addNode(n2);
-            InputBlock block = blocksMap.get(a.getBlock(n));
-            block.addNode(n2.getId());
-            markAsDeleted(n2);
-            inputNodeMap.put(n, n2);
-        }
-
-        int curIndex = 0;
-        for (InputNode n : nodesB) {
-            InputNode n2 = new InputNode(n);
-
-            // Find new ID for node of b, does not change the id property
-            while (graph.getNode(curIndex) != null) {
-                curIndex++;
-            }
-
-            n2.setId(curIndex);
-            graph.addNode(n2);
-            InputBlock block = blocksMap.get(b.getBlock(n));
-            block.addNode(n2.getId());
-            markAsNew(n2);
-            inputNodeMap.put(n, n2);
-        }
-
-        Collection<InputEdge> edgesA = a.getEdges();
-        Collection<InputEdge> edgesB = b.getEdges();
-
-        Set<InputEdge> newEdges = new HashSet<>();
-
-        for (InputEdge e : edgesA) {
-            int from = e.getFrom();
-            int to = e.getTo();
-            InputNode nodeFrom = inputNodeMap.get(a.getNode(from));
-            InputNode nodeTo = inputNodeMap.get(a.getNode(to));
-            char fromIndex = e.getFromIndex();
-            char toIndex = e.getToIndex();
-
-            InputEdge newEdge = new InputEdge(fromIndex, toIndex, nodeFrom.getId(), nodeTo.getId());
-            if (!newEdges.contains(newEdge)) {
-                markAsDeleted(newEdge);
-                newEdges.add(newEdge);
-                graph.addEdge(newEdge);
-            }
-        }
-
-        for (InputEdge e : edgesB) {
-            int from = e.getFrom();
-            int to = e.getTo();
-            InputNode nodeFrom = inputNodeMap.get(b.getNode(from));
-            InputNode nodeTo = inputNodeMap.get(b.getNode(to));
-            char fromIndex = e.getFromIndex();
-            char toIndex = e.getToIndex();
-
-            InputEdge newEdge = new InputEdge(fromIndex, toIndex, nodeFrom.getId(), nodeTo.getId());
-            if (!newEdges.contains(newEdge)) {
-                markAsNew(newEdge);
-                newEdges.add(newEdge);
-                graph.addEdge(newEdge);
-            } else {
-                newEdges.remove(newEdge);
-                graph.removeEdge(newEdge);
-                markAsSame(newEdge);
-                newEdges.add(newEdge);
-                graph.addEdge(newEdge);
-            }
-        }
-
-        return graph;
-    }
-
-    private static class NodePair extends Pair<InputNode, InputNode> {
-
-
-        public NodePair(InputNode n1, InputNode n2) {
-            super(n1, n2);
-        }
-
-        public double getValue() {
-
-            double result = 0.0;
-            for (Property p : getLeft().getProperties()) {
-                double faktor = 1.0;
-                for (String forbidden : IGNORE_PROPERTIES) {
-                    if (p.getName().equals(forbidden)) {
-                        faktor = 0.1;
-                        break;
-                    }
-                }
-                String p2 = getRight().getProperties().get(p.getName());
-                result += evaluate(p.getValue(), p2) * faktor;
-            }
-
-            return result;
-        }
-
-        private double evaluate(String p, String p2) {
-            if (p2 == null) {
-                return 1.0;
-            }
-            if (p.equals(p2)) {
-                return 0.0;
-            } else {
-                return (double) (Math.abs(p.length() - p2.length())) / p.length() + 0.5;
-            }
-        }
-    }
-
-    private static InputGraph createDiff(InputGraph a, InputGraph b) {
-
-        Set<InputNode> matched = new HashSet<>();
-
-        Set<NodePair> pairs = new HashSet<>();
-        for (InputNode n : a.getNodes()) {
-            String s = n.getProperties().get(MAIN_PROPERTY);
-            if (s == null) {
-                s = "";
-            }
-            for (InputNode n2 : b.getNodes()) {
-                String s2 = n2.getProperties().get(MAIN_PROPERTY);
-                if (s2 == null) {
-                    s2 = "";
-                }
-
-                if (s.equals(s2)) {
-                    NodePair p = new NodePair(n, n2);
-                    pairs.add(p);
-                }
-            }
-        }
-
-        Set<NodePair> selectedPairs = new HashSet<>();
-        while (pairs.size() > 0) {
-
-            double min = Double.MAX_VALUE;
-            NodePair minPair = null;
-            for (NodePair p : pairs) {
-                double cur = p.getValue();
-                if (cur < min) {
-                    minPair = p;
-                    min = cur;
-                }
-            }
-
-            if (min > LIMIT) {
-                break;
-            } else {
-                selectedPairs.add(minPair);
-
-                Set<NodePair> toRemove = new HashSet<>();
-                for (NodePair p : pairs) {
-                    if (p.getLeft() == minPair.getLeft() || p.getRight() == minPair.getRight()) {
-                        toRemove.add(p);
-                    }
-                }
-                pairs.removeAll(toRemove);
-            }
-        }
-
-        return createDiff(a, b, selectedPairs);
-    }
-
-    private static void markAsNew(InputEdge e) {
-        e.setState(InputEdge.State.NEW);
-    }
-
-    private static void markAsDeleted(InputEdge e) {
-        e.setState(InputEdge.State.DELETED);
-
-    }
-
-    private static void markAsSame(InputEdge e) {
-        e.setState(InputEdge.State.SAME);
-    }
-
-    private static void markAsChanged(InputNode n, InputNode firstNode, InputNode otherNode) {
-
-        boolean difference = false;
-        for (Property p : otherNode.getProperties()) {
-            String s = firstNode.getProperties().get(p.getName());
-            if (!p.getValue().equals(s)) {
-                difference = true;
-                n.getProperties().setProperty(OLD_PREFIX + p.getName(), p.getValue());
-            }
-        }
-
-        for (Property p : firstNode.getProperties()) {
-            String s = otherNode.getProperties().get(p.getName());
-            if (s == null && p.getValue().length() > 0) {
-                difference = true;
-                n.getProperties().setProperty(OLD_PREFIX + p.getName(), "");
-            }
-        }
-
-        if (difference) {
-            n.getProperties().setProperty(PROPERTY_STATE, VALUE_CHANGED);
-        } else {
-            n.getProperties().setProperty(PROPERTY_STATE, VALUE_SAME);
-        }
-    }
-
-    private static void markAsDeleted(InputNode n) {
-        n.getProperties().setProperty(PROPERTY_STATE, VALUE_DELETED);
-    }
-
-    private static void markAsNew(InputNode n) {
-        n.getProperties().setProperty(PROPERTY_STATE, VALUE_NEW);
-    }
-}
--- a/visualizer/Draw2DLibrary/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="org.eclipse.draw2d" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project org.eclipse.draw2d.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Draw2DLibrary/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: org.eclipse.draw2d
-OpenIDE-Module-Localizing-Bundle: org/eclipse/draw2d/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Draw2DLibrary/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="org.eclipse.draw2d-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Draw2DLibrary/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=36988202
-build.xml.script.CRC32=0429cbcb
-build.xml.stylesheet.CRC32=a56c6a5b@2.47.1
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=36988202
-nbproject/build-impl.xml.script.CRC32=92856d71
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.47.1
--- a/visualizer/Draw2DLibrary/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-cluster.path=\
-    ${nbplatform.active.dir}/ide:\
-    ${nbplatform.active.dir}/platform
-disabled.modules=\
-    com.jcraft.jsch,\
-    com.jcraft.jzlib,\
-    org.apache.commons.codec,\
-    org.apache.commons.httpclient,\
-    org.apache.commons.io,\
-    org.apache.commons.lang,\
-    org.apache.commons.logging,\
-    org.apache.ws.commons.util,\
-    org.apache.xml.resolver,\
-    org.apache.xmlrpc,\
-    org.eclipse.core.contenttype,\
-    org.eclipse.core.jobs,\
-    org.eclipse.core.net,\
-    org.eclipse.core.runtime,\
-    org.eclipse.core.runtime.compatibility.auth,\
-    org.eclipse.equinox.app,\
-    org.eclipse.equinox.common,\
-    org.eclipse.equinox.preferences,\
-    org.eclipse.equinox.registry,\
-    org.eclipse.equinox.security,\
-    org.eclipse.jgit,\
-    org.eclipse.mylyn.bugzilla.core,\
-    org.eclipse.mylyn.commons.core,\
-    org.eclipse.mylyn.commons.net,\
-    org.eclipse.mylyn.commons.xmlrpc,\
-    org.eclipse.mylyn.tasks.core,\
-    org.mozilla.rhino.patched,\
-    org.netbeans.api.debugger,\
-    org.netbeans.api.java.classpath,\
-    org.netbeans.api.xml,\
-    org.netbeans.core.browser,\
-    org.netbeans.core.execution,\
-    org.netbeans.core.ide,\
-    org.netbeans.core.io.ui,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.nativeaccess,\
-    org.netbeans.core.osgi,\
-    org.netbeans.lib.cvsclient,\
-    org.netbeans.lib.terminalemulator,\
-    org.netbeans.libs.antlr3.runtime,\
-    org.netbeans.libs.bytelist,\
-    org.netbeans.libs.commons_net,\
-    org.netbeans.libs.freemarker,\
-    org.netbeans.libs.git,\
-    org.netbeans.libs.ini4j,\
-    org.netbeans.libs.jaxb,\
-    org.netbeans.libs.jsr223,\
-    org.netbeans.libs.junit4,\
-    org.netbeans.libs.jvyamlb,\
-    org.netbeans.libs.lucene,\
-    org.netbeans.libs.smack,\
-    org.netbeans.libs.svnClientAdapter,\
-    org.netbeans.libs.svnClientAdapter.javahl,\
-    org.netbeans.libs.svnClientAdapter.svnkit,\
-    org.netbeans.libs.swingx,\
-    org.netbeans.libs.xerces,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.bugtracking,\
-    org.netbeans.modules.bugtracking.bridge,\
-    org.netbeans.modules.bugzilla,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.csl.api,\
-    org.netbeans.modules.css.editor,\
-    org.netbeans.modules.css.lib,\
-    org.netbeans.modules.css.visual,\
-    org.netbeans.modules.db,\
-    org.netbeans.modules.db.core,\
-    org.netbeans.modules.db.dataview,\
-    org.netbeans.modules.db.drivers,\
-    org.netbeans.modules.db.kit,\
-    org.netbeans.modules.db.metadata.model,\
-    org.netbeans.modules.db.mysql,\
-    org.netbeans.modules.db.sql.editor,\
-    org.netbeans.modules.db.sql.visualeditor,\
-    org.netbeans.modules.dbapi,\
-    org.netbeans.modules.defaults,\
-    org.netbeans.modules.derby,\
-    org.netbeans.modules.dlight.nativeexecution,\
-    org.netbeans.modules.dlight.terminal,\
-    org.netbeans.modules.editor.bookmarks,\
-    org.netbeans.modules.editor.bracesmatching,\
-    org.netbeans.modules.editor.codetemplates,\
-    org.netbeans.modules.editor.completion,\
-    org.netbeans.modules.editor.guards,\
-    org.netbeans.modules.editor.indent.project,\
-    org.netbeans.modules.editor.kit,\
-    org.netbeans.modules.editor.macros,\
-    org.netbeans.modules.editor.structure,\
-    org.netbeans.modules.extbrowser,\
-    org.netbeans.modules.extexecution,\
-    org.netbeans.modules.extexecution.destroy,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.git,\
-    org.netbeans.modules.glassfish.common,\
-    org.netbeans.modules.gototest,\
-    org.netbeans.modules.gsf.codecoverage,\
-    org.netbeans.modules.gsf.testrunner,\
-    org.netbeans.modules.html,\
-    org.netbeans.modules.html.editor,\
-    org.netbeans.modules.html.editor.lib,\
-    org.netbeans.modules.html.lexer,\
-    org.netbeans.modules.html.parser,\
-    org.netbeans.modules.html.validation,\
-    org.netbeans.modules.httpserver,\
-    org.netbeans.modules.hudson,\
-    org.netbeans.modules.hudson.git,\
-    org.netbeans.modules.hudson.mercurial,\
-    org.netbeans.modules.hudson.subversion,\
-    org.netbeans.modules.hudson.tasklist,\
-    org.netbeans.modules.ide.kit,\
-    org.netbeans.modules.image,\
-    org.netbeans.modules.javascript.editing,\
-    org.netbeans.modules.javascript.hints,\
-    org.netbeans.modules.javascript.kit,\
-    org.netbeans.modules.javascript.refactoring,\
-    org.netbeans.modules.jellytools.ide,\
-    org.netbeans.modules.jumpto,\
-    org.netbeans.modules.keyring.impl,\
-    org.netbeans.modules.languages,\
-    org.netbeans.modules.languages.diff,\
-    org.netbeans.modules.languages.manifest,\
-    org.netbeans.modules.languages.yaml,\
-    org.netbeans.modules.lexer.nbbridge,\
-    org.netbeans.modules.localhistory,\
-    org.netbeans.modules.mercurial,\
-    org.netbeans.modules.netbinox,\
-    org.netbeans.modules.parsing.api,\
-    org.netbeans.modules.parsing.lucene,\
-    org.netbeans.modules.print.editor,\
-    org.netbeans.modules.project.ant,\
-    org.netbeans.modules.project.libraries,\
-    org.netbeans.modules.projectui,\
-    org.netbeans.modules.projectui.buildmenu,\
-    org.netbeans.modules.projectuiapi,\
-    org.netbeans.modules.properties,\
-    org.netbeans.modules.properties.syntax,\
-    org.netbeans.modules.refactoring.api,\
-    org.netbeans.modules.schema2beans,\
-    org.netbeans.modules.server,\
-    org.netbeans.modules.servletapi,\
-    org.netbeans.modules.spellchecker,\
-    org.netbeans.modules.spellchecker.apimodule,\
-    org.netbeans.modules.spellchecker.bindings.htmlxml,\
-    org.netbeans.modules.spellchecker.bindings.properties,\
-    org.netbeans.modules.spellchecker.dictionary_en,\
-    org.netbeans.modules.spellchecker.kit,\
-    org.netbeans.modules.spi.actions,\
-    org.netbeans.modules.subversion,\
-    org.netbeans.modules.swing.validation,\
-    org.netbeans.modules.target.iterator,\
-    org.netbeans.modules.tasklist.kit,\
-    org.netbeans.modules.tasklist.projectint,\
-    org.netbeans.modules.tasklist.todo,\
-    org.netbeans.modules.tasklist.ui,\
-    org.netbeans.modules.terminal,\
-    org.netbeans.modules.usersguide,\
-    org.netbeans.modules.utilities,\
-    org.netbeans.modules.utilities.project,\
-    org.netbeans.modules.versioning,\
-    org.netbeans.modules.versioning.indexingbridge,\
-    org.netbeans.modules.versioning.system.cvss.installer,\
-    org.netbeans.modules.versioning.util,\
-    org.netbeans.modules.web.client.tools.api,\
-    org.netbeans.modules.web.common,\
-    org.netbeans.modules.web.indent,\
-    org.netbeans.modules.xml,\
-    org.netbeans.modules.xml.axi,\
-    org.netbeans.modules.xml.catalog,\
-    org.netbeans.modules.xml.core,\
-    org.netbeans.modules.xml.jaxb.api,\
-    org.netbeans.modules.xml.lexer,\
-    org.netbeans.modules.xml.multiview,\
-    org.netbeans.modules.xml.retriever,\
-    org.netbeans.modules.xml.schema.completion,\
-    org.netbeans.modules.xml.schema.model,\
-    org.netbeans.modules.xml.tax,\
-    org.netbeans.modules.xml.text,\
-    org.netbeans.modules.xml.tools,\
-    org.netbeans.modules.xml.wsdl.model,\
-    org.netbeans.modules.xml.xam,\
-    org.netbeans.modules.xml.xdm,\
-    org.netbeans.modules.xsl,\
-    org.netbeans.spi.debugger.ui,\
-    org.netbeans.spi.editor.hints,\
-    org.netbeans.spi.navigator,\
-    org.netbeans.spi.palette,\
-    org.netbeans.spi.tasklist,\
-    org.netbeans.spi.viewmodel,\
-    org.netbeans.swing.dirchooser,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.options,\
-    org.openide.util.enumerations
-## Not disabled because of NetBeans bug 206347:
-## Applications not using OSGi don't start on NbP 7.1
-#   org.netbeans.core.netigso,\
-#   org.netbeans.libs.felix,\
-#   org.netbeans.libs.osgi,\
-nbplatform.active=default
--- a/visualizer/Draw2DLibrary/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-is.autoload=true
--- a/visualizer/Draw2DLibrary/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>org.eclipse.draw2d</code-name-base>
-            <suite-component/>
-            <module-dependencies/>
-            <public-packages>
-                <package>org.eclipse.draw2d</package>
-                <package>org.eclipse.draw2d.geometry</package>
-                <package>org.eclipse.draw2d.graph</package>
-                <package>org.eclipse.draw2d.internal</package>
-                <package>org.eclipse.draw2d.internal.graph</package>
-                <package>org.eclipse.draw2d.parts</package>
-                <package>org.eclipse.draw2d.text</package>
-                <package>org.eclipse.draw2d.widgets</package>
-            </public-packages>
-            <class-path-extension>
-                <runtime-relative-path>ext/org.eclipse.draw2d_3.1.0.jar</runtime-relative-path>
-                <binary-origin>release/modules/ext/org.eclipse.draw2d_3.1.0.jar</binary-origin>
-            </class-path-extension>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Draw2DLibrary/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
Binary file visualizer/Draw2DLibrary/release/modules/ext/org.eclipse.draw2d_3.1.0.jar has changed
--- a/visualizer/Draw2DLibrary/src/org/eclipse/draw2d/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=Draw2DLibrary
--- a/visualizer/Editor/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.oracle.graal.visualizer.editor" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.oracle.graal.visualizer.editor.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Editor/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.oracle.graal.visualizer.editor
-OpenIDE-Module-Layer: com/oracle/graal/visualizer/editor/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/oracle/graal/visualizer/editor/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Editor/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.oracle.graal.visualizer.editor-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Editor/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=5dcda8e3
-build.xml.script.CRC32=98c4f3b3
-build.xml.stylesheet.CRC32=a56c6a5b@2.47.1
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=5dcda8e3
-nbproject/build-impl.xml.script.CRC32=6243c7e2
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.47.1
--- a/visualizer/Editor/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/Editor/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.oracle.graal.visualizer.editor</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.difference</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.filter</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.graph</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.settings</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.spi.quicksearch</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.12.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.actions</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.24.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.awt</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.39.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.dialogs</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.23.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.filesystems</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.53.2</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.loaders</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.32.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.19.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.11.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.48.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.oracle.graal.visualizer.editor</package>
-                <package>com.oracle.graal.visualizer.editor.actions</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Editor/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/Editor/src/META-INF/services/com.sun.hotspot.igv.data.services.GraphViewer	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-com.oracle.graal.visualizer.editor.GraphViewerImplementation
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-OpenIDE-Module-Name=Editor
-CTL_EditorTopComponent=Compilation
-HINT_EditorTopComponent=Shows the snapshots of a single compilation.
\ No newline at end of file
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/CompilationViewer.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.editor;
-
-import com.sun.hotspot.igv.graph.Figure;
-import java.awt.Component;
-import java.awt.Graphics2D;
-import java.util.Collection;
-import org.openide.awt.UndoRedo;
-import org.openide.util.Lookup;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface CompilationViewer {
-
-    public Lookup getLookup();
-
-    public Component getComponent();
-}
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/CompilationViewerFactory.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.editor;
-
-import com.sun.hotspot.igv.data.InputGraph;
-
-public interface CompilationViewerFactory {
-    CompilationViewer createViewer(InputGraph firstGraph, InputGraph secondGraph);
-    String getName();
-}
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/DiagramViewModel.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-/*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.oracle.graal.visualizer.editor;
-
-import com.sun.hotspot.igv.data.*;
-import com.sun.hotspot.igv.difference.Difference;
-import com.sun.hotspot.igv.filter.CustomFilter;
-import com.sun.hotspot.igv.filter.FilterChain;
-import com.sun.hotspot.igv.graph.Diagram;
-import com.sun.hotspot.igv.graph.Figure;
-import com.sun.hotspot.igv.settings.Settings;
-import java.util.*;
-
-public class DiagramViewModel {
-
-    private Set<Integer> hiddenNodes;
-    private Set<Integer> onScreenNodes;
-    private Set<Integer> selectedNodes;
-    private FilterChain filterChain;
-    private FilterChain sequenceFilterChain;
-    private Diagram diagram;
-    private InputGraph inputGraph;
-    private ChangedEvent<DiagramViewModel> diagramChangedEvent;
-    private ChangedEvent<DiagramViewModel> viewChangedEvent;
-    private ChangedEvent<DiagramViewModel> hiddenNodesChangedEvent;
-    private ChangedEvent<DiagramViewModel> viewPropertiesChangedEvent;
-    private boolean showNodeHull;
-    private final InputGraph secondGraph;
-    private final InputGraph firstGraph;
-    private ChangedListener<FilterChain> filterChainChangedListener = new ChangedListener<FilterChain>() {
-
-        @Override
-        public void changed(FilterChain source) {
-            diagramChanged();
-        }
-    };
-
-    public boolean getShowNodeHull() {
-        return showNodeHull;
-    }
-
-    public void setShowNodeHull(boolean b) {
-        showNodeHull = b;
-        viewPropertiesChangedEvent.fire();
-    }
-
-    public DiagramViewModel(InputGraph firstGraph, InputGraph secondGraph, Group g, FilterChain filterChain, FilterChain sequenceFilterChain) {
-
-        this.firstGraph = firstGraph;
-        this.secondGraph = secondGraph;
-        this.showNodeHull = true;
-        assert filterChain != null;
-        this.filterChain = filterChain;
-        assert sequenceFilterChain != null;
-        this.sequenceFilterChain = sequenceFilterChain;
-        hiddenNodes = new HashSet<>();
-        onScreenNodes = new HashSet<>();
-        selectedNodes = new HashSet<>();
-        diagramChangedEvent = new ChangedEvent<>(this);
-        viewChangedEvent = new ChangedEvent<>(this);
-        hiddenNodesChangedEvent = new ChangedEvent<>(this);
-        viewPropertiesChangedEvent = new ChangedEvent<>(this);
-
-        filterChain.getChangedEvent().addListener(filterChainChangedListener);
-        sequenceFilterChain.getChangedEvent().addListener(filterChainChangedListener);
-    }
-
-    public ChangedEvent<DiagramViewModel> getDiagramChangedEvent() {
-        return diagramChangedEvent;
-    }
-
-    public ChangedEvent<DiagramViewModel> getViewChangedEvent() {
-        return viewChangedEvent;
-    }
-
-    public ChangedEvent<DiagramViewModel> getHiddenNodesChangedEvent() {
-        return hiddenNodesChangedEvent;
-    }
-
-    public ChangedEvent<DiagramViewModel> getViewPropertiesChangedEvent() {
-        return viewPropertiesChangedEvent;
-    }
-
-    public Set<Integer> getSelectedNodes() {
-        return selectedNodes;
-    }
-
-    public Set<Integer> getHiddenNodes() {
-        return hiddenNodes;
-    }
-
-    public Set<Integer> getOnScreenNodes() {
-        return onScreenNodes;
-    }
-
-    public void setSelectedNodes(Set<Integer> nodes) {
-        this.selectedNodes = nodes;
-       /* List<Color> colors = new ArrayList<>();
-        for (int i = 0; i < group.getGraphs().size(); ++i) {
-            colors.add(Color.black);
-        }
-        if (nodes.size() >= 1) {
-            for (Integer id : nodes) {
-                if (id < 0) {
-                    id = -id;
-                }
-                InputNode last = null;
-                int index = 0;
-                for (InputGraph g : group.getGraphs()) {
-                    Color curColor = colors.get(index);
-                    InputNode cur = g.getNode(id);
-                    if (cur != null) {
-                        if (last == null) {
-                            curColor = Color.green;
-                        } else {
-                            if (last.equals(cur)) {
-                                if (curColor == Color.black) {
-                                    curColor = Color.white;
-                                }
-                            } else {
-                                if (curColor != Color.green) {
-                                    curColor = Color.orange;
-                                }
-                            }
-                        }
-                    }
-                    last = cur;
-                    colors.set(index, curColor);
-                    index++;
-                }
-            }
-        }
-        compilationViewModel.setColors(colors);*/
-        // TODO: Add colorization.
-        viewChangedEvent.fire();
-    }
-
-    public void showNot(final Set<Integer> nodes) {
-        System.out.println("Shownot called with " + nodes);
-        setHiddenNodes(nodes);
-    }
-
-    public void showFigures(Collection<Figure> f) {
-        HashSet<Integer> newHiddenNodes = new HashSet<>(getHiddenNodes());
-        for (Figure fig : f) {
-            newHiddenNodes.removeAll(fig.getSource().getSourceNodesAsSet());
-        }
-        setHiddenNodes(newHiddenNodes);
-    }
-
-    public Set<Figure> getSelectedFigures() {
-        Set<Figure> result = new HashSet<>();
-        for (Figure f : diagram.getFigures()) {
-            for (InputNode node : f.getSource().getSourceNodes()) {
-                if (getSelectedNodes().contains(node.getId())) {
-                    result.add(f);
-                }
-            }
-        }
-        return result;
-    }
-
-    public void showAll(final Collection<Figure> f) {
-        showFigures(f);
-    }
-
-    public void showOnly(final Set<Integer> nodes) {
-        final HashSet<Integer> allNodes = new HashSet<>(getGraphToView().getGroup().getAllNodes());
-        allNodes.removeAll(nodes);
-        setHiddenNodes(allNodes);
-    }
-
-    public void setHiddenNodes(Set<Integer> nodes) {
-        this.hiddenNodes = nodes;
-        hiddenNodesChangedEvent.fire();
-    }
-
-    public void setOnScreenNodes(Set<Integer> onScreenNodes) {
-        this.onScreenNodes = onScreenNodes;
-        viewChangedEvent.fire();
-    }
-
-    public FilterChain getSequenceFilterChain() {
-        return filterChain;
-    }
-
-    public void setSequenceFilterChain(FilterChain chain) {
-        assert chain != null : "sequenceFilterChain must never be null";
-        sequenceFilterChain.getChangedEvent().removeListener(filterChainChangedListener);
-        sequenceFilterChain = chain;
-        sequenceFilterChain.getChangedEvent().addListener(filterChainChangedListener);
-        diagramChanged();
-    }
-
-    private void diagramChanged() {
-        // clear diagram
-        diagram = null;
-        getDiagramChangedEvent().fire();
-
-    }
-
-    public FilterChain getFilterChain() {
-        return filterChain;
-    }
-
-    public void setFilterChain(FilterChain chain) {
-        assert chain != null : "filterChain must never be null";
-        filterChain.getChangedEvent().removeListener(filterChainChangedListener);
-        filterChain = chain;
-        filterChain.getChangedEvent().addListener(filterChainChangedListener);
-        diagramChanged();
-    }
-
-    private static List<String> calculateStringList(Group g) {
-        List<String> result = new ArrayList<>();
-        for (InputGraph graph : g.getGraphs()) {
-            result.add(graph.getName());
-        }
-        return result;
-    }
-
-    public InputGraph getFirstGraph() {
-        return firstGraph;
-    }
-
-    public InputGraph getSecondGraph() {
-        return secondGraph;
-    }
-
-    public Diagram getDiagramToView() {
-
-        if (diagram == null) {
-            diagram = Diagram.createDiagram(getGraphToView(), Settings.get().get(Settings.NODE_TEXT, Settings.NODE_TEXT_DEFAULT));
-            getFilterChain().apply(diagram, getSequenceFilterChain());
-            if (getFirstGraph() != getSecondGraph()) {
-                CustomFilter f = new CustomFilter(
-                        "difference", "colorize('state', 'same', white);"
-                        + "colorize('state', 'changed', orange);"
-                        + "colorize('state', 'new', green);"
-                        + "colorize('state', 'deleted', red);");
-                f.apply(diagram);
-            }
-        }
-
-        return diagram;
-    }
-
-    public InputGraph getGraphToView() {
-        if (inputGraph == null) {
-            if (getFirstGraph() != getSecondGraph()) {
-                inputGraph = Difference.createDiffGraph(getFirstGraph(), getSecondGraph());
-            } else {
-                inputGraph = getFirstGraph();
-            }
-        }
-
-        return inputGraph;
-    }
-
-    void setSelectedFigures(List<Figure> list) {
-        Set<Integer> newSelectedNodes = new HashSet<>();
-        for (Figure f : list) {
-            newSelectedNodes.addAll(f.getSource().getSourceNodesAsSet());
-        }
-        this.setSelectedNodes(newSelectedNodes);
-    }
-}
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/EditorTopComponent.form	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <NonVisualComponents>
-    <Component class="javax.swing.JCheckBox" name="jCheckBox1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="jCheckBox1"/>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-            <EmptyBorder bottom="0" left="0" right="0" top="0"/>
-          </Border>
-        </Property>
-        <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
-          <Insets value="[0, 0, 0, 0]"/>
-        </Property>
-      </Properties>
-    </Component>
-  </NonVisualComponents>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-</Form>
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/EditorTopComponent.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,291 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.editor;
-
-import com.oracle.graal.visualizer.util.LookupUtils;
-import com.sun.hotspot.igv.data.ChangedListener;
-import com.sun.hotspot.igv.data.Group;
-import com.sun.hotspot.igv.data.InputGraph;
-import com.sun.hotspot.igv.util.RangeSliderModel;
-import java.awt.BorderLayout;
-import java.awt.CardLayout;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.*;
-import java.util.prefs.Preferences;
-import javax.swing.*;
-import org.openide.awt.Toolbar;
-import org.openide.util.Lookup;
-import org.openide.util.NbBundle;
-import org.openide.util.NbPreferences;
-import org.openide.util.Utilities;
-import org.openide.util.actions.Presenter;
-import org.openide.util.lookup.AbstractLookup;
-import org.openide.util.lookup.InstanceContent;
-import org.openide.util.lookup.Lookups;
-import org.openide.util.lookup.ProxyLookup;
-import org.openide.windows.Mode;
-import org.openide.windows.TopComponent;
-import org.openide.windows.WindowManager;
-
-public final class EditorTopComponent extends TopComponent {
-
-    private InstanceContent content;
-    private static final String PREFERRED_ID = "EditorTopComponent";
-    private RangeSliderModel rangeSliderModel;
-    private CompilationViewer activeViewer;
-    private CompilationViewerFactory activeFactory;
-    private Group group;
-    private final JToolBar viewerToolBar;
-    private final JPanel viewerPanel;
-    private final CardLayout viewerPanelCardLayout;
-    private final Map<String, CompilationViewer> createdComponents = new HashMap<>();
-    private final Lookup proxyLookup;
-    private Lookup currentLookup = Lookups.fixed();
-    private final Lookup.Provider currentViewLookupProvider = new Lookup.Provider() {
-
-        @Override
-        public Lookup getLookup() {
-            return currentLookup;
-        }
-    };
-    private static final String PREFERENCE_FACTORY = "factory";
-
-    public static Preferences getPreferences() {
-        return NbPreferences.forModule(EditorTopComponent.class);
-    }
-
-    private InputGraph getFirstGraph() {
-        return group.getGraphs().get(getModel().getFirstPosition());
-    }
-
-    private InputGraph getSecondGraph() {
-        return group.getGraphs().get(getModel().getSecondPosition());
-    }
-
-    private void updateDisplayName() {
-        int first = getModel().getFirstPosition();
-        int second = getModel().getSecondPosition();
-        if (first == second) {
-            setDisplayName(getModel().getPositions().get(first));
-        } else {
-            setDisplayName(String.format("%s: %s - %s", activeFactory.getName(), getModel().getPositions().get(first), getModel().getPositions().get(second)));
-        }
-    }
-
-    private void activateFactory(CompilationViewerFactory factory) {
-        this.activeFactory = factory;
-        getPreferences().put(PREFERENCE_FACTORY, activeFactory.getName());
-        updateView();
-    }
-
-    public EditorTopComponent(InputGraph graph) {
-        setName(NbBundle.getMessage(EditorTopComponent.class, "CTL_EditorTopComponent"));
-        setToolTipText(NbBundle.getMessage(EditorTopComponent.class, "HINT_EditorTopComponent"));
-
-        initComponents();
-
-        Toolbar toolBar = new Toolbar();
-        this.add(BorderLayout.NORTH, toolBar);
-
-        this.group = graph.getGroup();
-        rangeSliderModel = new RangeSliderModel(calculateStringList(group));
-        content = new InstanceContent();
-        content.add(rangeSliderModel);
-        int graphPos = group.getGraphs().indexOf(graph);
-        rangeSliderModel.setPositions(graphPos, graphPos);
-
-        Collection<? extends CompilationViewerFactory> factories = Lookup.getDefault().lookupAll(CompilationViewerFactory.class);
-        proxyLookup = Lookups.proxy(currentViewLookupProvider);
-        this.associateLookup(new ProxyLookup(new Lookup[]{proxyLookup, new AbstractLookup(content)}));
-
-        rangeSliderModel.getChangedEvent().addListener(rangeSliderListener);
-
-        ButtonGroup factoryButtonGroup = new ButtonGroup();
-        for (CompilationViewerFactory factory : factories) {
-            AbstractButton button = createFactoryChangeButton(factory);
-            factoryButtonGroup.add(button);
-            toolBar.add(button);
-        }
-        toolBar.addSeparator();
-
-        viewerToolBar = new JToolBar();
-        viewerToolBar.setFloatable(false);
-        toolBar.add(viewerToolBar);
-        toolBar.add(Box.createHorizontalGlue());
-
-        Action action = Utilities.actionsForPath("QuickSearchShadow").get(0);
-        Component quicksearch = ((Presenter.Toolbar) action).getToolbarPresenter();
-        quicksearch.setMinimumSize(quicksearch.getPreferredSize()); // necessary for GTK LAF
-        toolBar.add(quicksearch);
-
-        viewerPanel = new JPanel();
-        viewerPanelCardLayout = new CardLayout();
-        viewerPanel.setLayout(viewerPanelCardLayout);
-        this.add(viewerPanel, BorderLayout.CENTER);
-
-        if (factories.size() > 0) {
-            String activeFactoryName = getPreferences().get(PREFERENCE_FACTORY, factories.iterator().next().getName());
-            Enumeration<AbstractButton> buttons = factoryButtonGroup.getElements();
-            for (CompilationViewerFactory factory : factories) {
-                JToggleButton curButton = (JToggleButton) buttons.nextElement();
-                if (factory.getName().equals(activeFactoryName)) {
-                    activeFactory = factory;
-                    curButton.setSelected(true);
-                }
-            }
-        }
-        updateView();
-    }
-
-    private static List<String> calculateStringList(Group g) {
-        List<String> result = new ArrayList<>();
-        for (InputGraph graph : g.getGraphs()) {
-            result.add(graph.getName());
-        }
-        return result;
-    }
-
-    private RangeSliderModel getModel() {
-        return rangeSliderModel;
-    }
-
-    public static EditorTopComponent getActive() {
-        Set<? extends Mode> modes = WindowManager.getDefault().getModes();
-        for (Mode m : modes) {
-            TopComponent tc = m.getSelectedTopComponent();
-            if (tc instanceof EditorTopComponent) {
-                return (EditorTopComponent) tc;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-     * regenerated by the Form Editor.
-     */
-    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void initComponents() {
-
-        jCheckBox1 = new javax.swing.JCheckBox();
-
-        org.openide.awt.Mnemonics.setLocalizedText(jCheckBox1, "jCheckBox1");
-        jCheckBox1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
-        jCheckBox1.setMargin(new java.awt.Insets(0, 0, 0, 0));
-
-        setLayout(new java.awt.BorderLayout());
-    }// </editor-fold>//GEN-END:initComponents
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.JCheckBox jCheckBox1;
-    // End of variables declaration//GEN-END:variables
-
-    @Override
-    public int getPersistenceType() {
-        return TopComponent.PERSISTENCE_NEVER;
-    }
-
-    @Override
-    public void componentOpened() {
-    }
-
-    @Override
-    public void componentClosed() {
-    }
-
-    @Override
-    protected String preferredID() {
-        return PREFERRED_ID;
-    }
-    private ChangedListener<RangeSliderModel> rangeSliderListener = new ChangedListener<RangeSliderModel>() {
-
-        @Override
-        public void changed(RangeSliderModel source) {
-            SwingUtilities.invokeLater(new Runnable() {
-
-                @Override
-                public void run() {
-                    updateView();
-                }
-            });
-        }
-    };
-
-    private void updateView() {
-        updateDisplayName();
-        String id = getViewStringIdentifier();
-        if (!createdComponents.containsKey(id)) {
-            CompilationViewer newViewer = createViewer(activeFactory);
-            createdComponents.put(id, newViewer);
-            viewerPanel.add(newViewer.getComponent(), id);
-        }
-
-        CompilationViewer newViewer = createdComponents.get(id);
-        if (newViewer != activeViewer) {
-            activeViewer = newViewer;
-            viewerPanelCardLayout.show(viewerPanel, id);
-
-            currentLookup = new ProxyLookup(activeViewer.getLookup(), Lookups.fixed(getFirstGraph(), getSecondGraph()));
-            initializeToolBar(activeFactory.getName());
-
-            // Make sure that lookup is updated.
-            proxyLookup.lookup(Object.class);
-        }
-    }
-
-    private String getViewStringIdentifier() {
-        return String.format("%s/%d/%d", activeFactory.getName(), getModel().getFirstPosition(), getModel().getSecondPosition());
-    }
-
-    private AbstractButton createFactoryChangeButton(final CompilationViewerFactory factory) {
-        JToggleButton toggleButton = new JToggleButton(factory.getName());
-        toggleButton.addActionListener(new ActionListener() {
-
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                activateFactory(factory);
-            }
-        });
-        return toggleButton;
-    }
-
-    private CompilationViewer createViewer(CompilationViewerFactory activeFactory) {
-        InputGraph firstSnapshot = getFirstGraph();
-        InputGraph secondSnapshot = getSecondGraph();
-        return activeFactory.createViewer(firstSnapshot, secondSnapshot);
-    }
-
-    private void initializeToolBar(String id) {
-        viewerToolBar.removeAll();
-        for (Action a : LookupUtils.lookupActions(String.format("CompilationViewer/%s/Actions", id), activeViewer.getLookup())) {
-            if (a instanceof Presenter.Toolbar) {
-                viewerToolBar.add(((Presenter.Toolbar) a).getToolbarPresenter());
-            } else {
-                viewerToolBar.add(a);
-            }
-        }
-        viewerToolBar.updateUI();
-    }
-}
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/GraphViewerImplementation.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.editor;
-
-import com.sun.hotspot.igv.data.InputGraph;
-import com.sun.hotspot.igv.data.services.GraphViewer;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class GraphViewerImplementation implements GraphViewer {
-
-    @Override
-    public void view(InputGraph graph) {
-        EditorTopComponent tc = new EditorTopComponent(graph);
-        tc.open();
-        tc.requestActive();
-    }
-}
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/NodeQuickSearch.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.editor;
-
-import com.sun.hotspot.igv.data.InputNode;
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.Properties.RegexpPropertyMatcher;
-import com.sun.hotspot.igv.data.services.InputGraphProvider;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.regex.Pattern;
-import org.netbeans.spi.quicksearch.SearchProvider;
-import org.netbeans.spi.quicksearch.SearchRequest;
-import org.netbeans.spi.quicksearch.SearchResponse;
-import org.openide.DialogDisplayer;
-import org.openide.NotifyDescriptor;
-import org.openide.NotifyDescriptor.Message;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class NodeQuickSearch implements SearchProvider {
-
-    private static final String DEFAULT_PROPERTY = "name";
-
-    /**
-     * Method is called by infrastructure when search operation was requested.
-     * Implementors should evaluate given request and fill response object with
-     * apropriate results
-     *
-     * @param request Search request object that contains information what to search for
-     * @param response Search response object that stores search results. Note that it's important to react to return value of SearchResponse.addResult(...) method and stop computation if false value is returned.
-     */
-    @Override
-    public void evaluate(SearchRequest request, SearchResponse response) {
-        String query = request.getText();
-        if (query.trim().isEmpty()) {
-            return;
-        }
-
-        final String[] parts = query.split("=", 2);
-
-        String name;
-        String value;
-
-        if (parts.length == 1) {
-            name = DEFAULT_PROPERTY;
-            value = ".*" + Pattern.quote(parts[0]) + ".*";
-        } else {
-            name = parts[0];
-            value = parts[1];
-        }
-
-        if (value.isEmpty()) {
-            value = ".*";
-        }
-
-        final InputGraphProvider p = null;// TODO: FIXME LookupHistory.getLast(InputGraphProvider.class);
-        if (p != null && p.getGraph() != null) {
-            List<InputNode> matches = null;
-            try {
-                RegexpPropertyMatcher matcher = new RegexpPropertyMatcher(name, value, Pattern.CASE_INSENSITIVE);
-                Properties.PropertySelector<InputNode> selector = new Properties.PropertySelector<>(p.getGraph().getNodes());
-
-                matches = selector.selectMultiple(matcher);
-            } catch (Exception e) {
-                final String msg = e.getMessage();
-                response.addResult(new Runnable() {
-                    @Override
-                        public void run() {
-                            Message desc = new NotifyDescriptor.Message("An exception occurred during the search, "
-                                    + "perhaps due to a malformed query string:\n" + msg,
-                                    NotifyDescriptor.WARNING_MESSAGE);
-                            DialogDisplayer.getDefault().notify(desc);
-                        }
-                    },
-                    "(Error during search)"
-                );
-            }
-
-            if (matches != null) {
-                final Set<InputNode> set = new HashSet<>(matches);
-                response.addResult(new Runnable() {
-                    @Override
-                        public void run() {
-                            final EditorTopComponent comp = EditorTopComponent.getActive();
-                            if (comp != null) {
-                                // TODO: find connection again!
-                                //comp.setSelectedNodes(set);
-                                comp.requestActive();
-                            }
-                        }
-                    },
-                    "All " + matches.size() + " matching nodes (" + name + "=" + value + ")"
-                );
-
-                // Single matches
-                for (final InputNode n : matches) {
-                    response.addResult(new Runnable() {
-                        @Override
-                            public void run() {
-                                final EditorTopComponent comp = EditorTopComponent.getActive();
-                                if (comp != null) {
-                                    final Set<InputNode> tmpSet = new HashSet<>();
-                                    tmpSet.add(n);
-                                    // TODO: find connection again!
-                                    //comp.setSelectedNodes(tmpSet);
-                                    comp.requestActive();
-                                }
-                            }
-                        },
-                        n.getProperties().get(name) + " (" + n.getId() + " " + n.getProperties().get("name") + ")"
-                    );
-                }
-            }
-        } else {
-            System.out.println("no input graph provider!");
-        }
-    }
-}
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/SplitCompilationViewer.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.editor;
-
-import com.sun.hotspot.igv.graph.Figure;
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.Collection;
-import java.util.prefs.Preferences;
-import javax.swing.JPanel;
-import javax.swing.JSplitPane;
-import javax.swing.JToolBar;
-import org.openide.util.Lookup;
-import org.openide.util.NbPreferences;
-import org.openide.util.lookup.Lookups;
-import org.openide.util.lookup.ProxyLookup;
-
-class SplitCompilationViewer implements CompilationViewer {
-
-    private JSplitPane splitPane;
-    private Component firstPanel;
-    private Component secondPanel;
-    private Lookup combinedLookup;
-    private static final String DIVIDER_LOCATION = "dividerLocation";
-    private final PropertyChangeListener splitChanged = new PropertyChangeListener() {
-
-        @Override
-        public void propertyChange(PropertyChangeEvent changeEvent) {
-            String propertyName = changeEvent.getPropertyName();
-            if (propertyName.equals(JSplitPane.DIVIDER_LOCATION_PROPERTY)) {
-                setLastDividerLocation((Integer) changeEvent.getNewValue());
-            }
-        }
-    };
-
-    private static void setLastDividerLocation(int pos) {
-        NbPreferences.forModule(SplitCompilationViewer.class).put(DIVIDER_LOCATION, Integer.toString(pos));
-    }
-
-    private static int getLastDividerLocation() {
-        try {
-            return Integer.parseInt(NbPreferences.forModule(SplitCompilationViewer.class).get(DIVIDER_LOCATION, "400"));
-        } catch (NumberFormatException e) {
-            return 400;
-        }
-    }
-
-    public SplitCompilationViewer(CompilationViewer firstViewer, CompilationViewer secondViewer) {
-        splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
-        firstPanel = createComponent(firstViewer);
-        secondPanel = createComponent(secondViewer);
-        splitPane.add(firstPanel);
-        splitPane.add(secondPanel);
-        splitPane.addPropertyChangeListener(splitChanged);
-        splitPane.setDividerLocation(getLastDividerLocation());
-        combinedLookup = new ProxyLookup(firstViewer.getLookup(), secondViewer.getLookup());
-    }
-
-    @Override
-    public Lookup getLookup() {
-        return combinedLookup;
-    }
-
-    @Override
-    public Component getComponent() {
-        return splitPane;
-    }
-
-    private Component createComponent(CompilationViewer viewer) {
-        return viewer.getComponent();
-    }
-}
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/SplitCompilationViewerFactory.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.editor;
-
-import com.sun.hotspot.igv.data.InputGraph;
-
-public abstract class SplitCompilationViewerFactory implements CompilationViewerFactory {
-
-    @Override
-    public CompilationViewer createViewer(InputGraph firstGraph, InputGraph secondGraph) {
-        if (firstGraph == secondGraph) {
-            return createViewer(firstGraph);
-        } else {
-            CompilationViewer firstViewer = createViewer(firstGraph);
-            CompilationViewer secondViewer = createViewer(secondGraph);
-            return new SplitCompilationViewer(firstViewer, secondViewer);
-        }
-    }
-
-    protected abstract CompilationViewer createViewer(InputGraph graph);
-}
--- a/visualizer/Editor/src/com/oracle/graal/visualizer/editor/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
-<filesystem>
-    <folder name="QuickSearch">
-        <folder name="Nodes">
-            <attr name="command" stringvalue="n"/>
-            <attr name="position" intvalue="0"/>
-            <file name="com-oracle-graal-visualizer-editor-NodeQuickSearch.instance"/>
-        </folder>
-    </folder>
-    
-    <folder name="QuickSearchShadow">
-        <file name="org-netbeans-modules-quicksearch-QuickSearchAction.shadow">
-            <attr name="originalFile" stringvalue="Actions/Edit/org-netbeans-modules-quicksearch-QuickSearchAction.instance"/>
-        </file>    
-    </folder>
-</filesystem>
--- a/visualizer/Filter/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.filter" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.filter.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Filter/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.filter
-OpenIDE-Module-Layer: com/sun/hotspot/igv/filter/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/filter/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Filter/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.filter-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Filter/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=7c032ebf
-build.xml.script.CRC32=3b022a25
-build.xml.stylesheet.CRC32=79c3b980
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=7c032ebf
-nbproject/build-impl.xml.script.CRC32=26513f91
-nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
--- a/visualizer/Filter/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/Filter/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/Filter/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.filter</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.graph</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.layout</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.jdesktop.layout</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.16.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.awt</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.30.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.dialogs</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.18.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.filesystems</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.46.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.nodes</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.20.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.14.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.6.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.39.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.sun.hotspot.igv.filter</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Filter/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/AbstractFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.data.ChangedEvent;
-import com.sun.hotspot.igv.data.Properties;
-import org.openide.cookies.OpenCookie;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public abstract class AbstractFilter implements Filter {
-
-    private ChangedEvent<Filter> changedEvent;
-    private Properties properties;
-
-    public AbstractFilter() {
-        changedEvent = new ChangedEvent<Filter>(this);
-        properties = new Properties();
-    }
-
-    @Override
-    public Properties getProperties() {
-        return properties;
-    }
-
-    @Override
-    public OpenCookie getEditor() {
-        return null;
-    }
-
-    @Override
-    public ChangedEvent<Filter> getChangedEvent() {
-        return changedEvent;
-    }
-
-    protected void fireChangedEvent() {
-        changedEvent.fire();
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-OpenIDE-Module-Name=Filter
-
-jLabel1.text=Name\:
-jLabel2.text=Source\:
-
-nameTextField.text=
-
-jButton1.text=OK
-jButton2.text=Cancel
-
-title=Edit Filter Dialog
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/ColorFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.graph.Connection.ConnectionStyle;
-import com.sun.hotspot.igv.graph.*;
-import java.awt.Color;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class ColorFilter extends AbstractFilter {
-
-    private List<ColorRule> colorRules;
-    private String name;
-
-    public ColorFilter(String name) {
-        this.name = name;
-        colorRules = new ArrayList<>();
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public void apply(Diagram diagram) {
-
-        Properties.PropertySelector<Figure> selector = new Properties.PropertySelector<>(diagram.getFigures());
-        for (ColorRule rule : colorRules) {
-            if (rule.getSelector() != null) {
-                List<Figure> figures = rule.getSelector().selected(diagram);
-                for (Figure f : figures) {
-                    applyRule(rule, f);
-                    if (rule.getColor() != null) {
-                        f.setColor(rule.getColor());
-                    }
-                }
-            } else {
-                for (Figure f : diagram.getFigures()) {
-                    applyRule(rule, f);
-                }
-            }
-        }
-    }
-
-    private void applyRule(ColorRule rule, Figure f) {
-        if (rule.getColor() != null) {
-            f.setColor(rule.getColor());
-        }
-        Color color = rule.getLineColor();
-        ConnectionStyle style = rule.getLineStyle();
-
-        for (OutputSlot s : f.getOutputSlots()) {
-            for (Connection c : s.getConnections()) {
-                if (color != null) {
-                    c.setColor(color);
-                }
-
-                if (style != null) {
-                    c.setStyle(style);
-                }
-            }
-        }
-    }
-
-    public void addRule(ColorRule r) {
-        colorRules.add(r);
-    }
-
-    public static class ColorRule {
-
-        private Color color;
-        private Color lineColor;
-        private Connection.ConnectionStyle lineStyle;
-        private Selector selector;
-
-        public ColorRule(Selector selector, Color c) {
-            this(selector, c, null, null);
-        }
-
-        public ColorRule(Selector selector, Color c, Color lineColor, Connection.ConnectionStyle lineStyle) {
-            this.selector = selector;
-            this.color = c;
-            this.lineColor = lineColor;
-            this.lineStyle = lineStyle;
-
-        }
-
-        public ColorRule(Color c) {
-            this(null, c);
-        }
-
-        public Color getColor() {
-            return color;
-        }
-
-        public Selector getSelector() {
-            return selector;
-        }
-
-        public Color getLineColor() {
-            return lineColor;
-        }
-
-        public Connection.ConnectionStyle getLineStyle() {
-            return lineStyle;
-        }
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/CombineFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.Properties.PropertyMatcher;
-import com.sun.hotspot.igv.graph.*;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class CombineFilter extends AbstractFilter {
-
-    private List<CombineRule> rules;
-    private String name;
-
-    public CombineFilter(String name) {
-        this.name = name;
-        rules = new ArrayList<>();
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public void apply(Diagram diagram) {
-
-        Properties.PropertySelector<Figure> selector = new Properties.PropertySelector<>(diagram.getFigures());
-        for (CombineRule r : rules) {
-
-            List<Figure> list = selector.selectMultiple(r.getFirstMatcher());
-            Set<Figure> figuresToRemove = new HashSet<>();
-            for (Figure f : list) {
-
-                List<Figure> successors = new ArrayList<>(f.getSuccessors());
-                if (r.isReversed()) {
-                    if (successors.size() == 1) {
-                        Figure succ = successors.get(0);
-                        InputSlot slot = null;
-
-                        for (InputSlot s : succ.getInputSlots()) {
-                            for (Connection c : s.getConnections()) {
-                                if (c.getOutputSlot().getFigure() == f) {
-                                    slot = s;
-                                }
-                            }
-                        }
-
-                        slot.getSource().addSourceNodes(f.getSource());
-                        if (r.getShortProperty() != null) {
-                            String s = f.getProperties().get(r.getShortProperty());
-                            if (s != null && s.length() > 0) {
-                                slot.setShortName(s);
-                                slot.setText(s);
-                                slot.setColor(f.getColor());
-                            }
-                        } else {
-                            assert slot != null;
-                            slot.setText(f.getProperties().get("dump_spec"));
-                            if (f.getProperties().get("short_name") != null) {
-                                slot.setShortName(f.getProperties().get("short_name"));
-                            } else {
-                                String s = f.getProperties().get("dump_spec");
-                                if (s != null && s.length() <= 5) {
-                                    slot.setShortName(s);
-                                }
-                            }
-                        }
-
-                        for (InputSlot s : f.getInputSlots()) {
-                            for (Connection c : s.getConnections()) {
-                                Connection newConn = diagram.createConnection(slot, c.getOutputSlot(), c.getLabel());
-                                newConn.setColor(c.getColor());
-                                newConn.setStyle(c.getStyle());
-                            }
-                        }
-
-                        figuresToRemove.add(f);
-                    }
-                } else {
-
-                    for (Figure succ : successors) {
-                        if (succ.getPredecessors().size() == 1 && succ.getInputSlots().size() == 1) {
-                            if (succ.getProperties().selectSingle(r.getSecondMatcher()) != null && succ.getOutputSlots().size() == 1) {
-
-
-                                OutputSlot oldSlot = null;
-                                for (OutputSlot s : f.getOutputSlots()) {
-                                    for (Connection c : s.getConnections()) {
-                                        if (c.getInputSlot().getFigure() == succ) {
-                                            oldSlot = s;
-                                        }
-                                    }
-                                }
-
-                                assert oldSlot != null;
-
-                                OutputSlot nextSlot = succ.getOutputSlots().get(0);
-                                int pos = 0;
-                                if (succ.getProperties().get("con") != null) {
-                                    pos = Integer.parseInt(succ.getProperties().get("con"));
-                                }
-                                OutputSlot slot = f.createOutputSlot(pos);
-                                slot.getSource().addSourceNodes(succ.getSource());
-                                if (r.getShortProperty() != null) {
-                                    String s = succ.getProperties().get(r.getShortProperty());
-                                    if (s != null && s.length() > 0) {
-                                        slot.setShortName(s);
-                                        slot.setText(s);
-                                        slot.setColor(succ.getColor());
-                                    }
-                                } else {
-                                    slot.setText(succ.getProperties().get("dump_spec"));
-                                    if (succ.getProperties().get("short_name") != null) {
-                                        slot.setShortName(succ.getProperties().get("short_name"));
-                                    } else {
-                                        String s = succ.getProperties().get("dump_spec");
-                                        if (s != null && s.length() <= 2) {
-                                            slot.setShortName(s);
-                                        } else {
-                                            String tmpName = succ.getProperties().get("name");
-                                            if (tmpName != null && tmpName.length() > 0) {
-                                                slot.setShortName(tmpName.substring(0, 1));
-                                            }
-                                        }
-                                    }
-                                }
-                                for (Connection c : nextSlot.getConnections()) {
-                                    Connection newConn = diagram.createConnection(c.getInputSlot(), slot, c.getLabel());
-                                    newConn.setColor(c.getColor());
-                                    newConn.setStyle(c.getStyle());
-                                }
-
-
-                                figuresToRemove.add(succ);
-
-                                if (oldSlot.getConnections().size() == 0) {
-                                    f.removeSlot(oldSlot);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-
-            diagram.removeAllFigures(figuresToRemove);
-        }
-    }
-
-    public void addRule(CombineRule combineRule) {
-        rules.add(combineRule);
-    }
-
-    public static class CombineRule {
-
-        private PropertyMatcher first;
-        private PropertyMatcher second;
-        private boolean reversed;
-        private String shortProperty;
-
-        public CombineRule(PropertyMatcher first, PropertyMatcher second) {
-            this(first, second, false);
-
-        }
-
-        public CombineRule(PropertyMatcher first, PropertyMatcher second, boolean reversed) {
-            this(first, second, reversed, null);
-        }
-
-        public CombineRule(PropertyMatcher first, PropertyMatcher second, boolean reversed, String shortProperty) {
-            this.first = first;
-            this.second = second;
-            this.reversed = reversed;
-            this.shortProperty = shortProperty;
-        }
-
-        public boolean isReversed() {
-            return reversed;
-        }
-
-        public PropertyMatcher getFirstMatcher() {
-            return first;
-        }
-
-        public PropertyMatcher getSecondMatcher() {
-            return second;
-        }
-
-        public String getShortProperty() {
-            return shortProperty;
-        }
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/ConnectionFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.graph.*;
-import java.awt.Color;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class ConnectionFilter extends AbstractFilter {
-
-    private List<ConnectionStyleRule> connectionStyleRules;
-    private String name;
-
-    public ConnectionFilter(String name) {
-        this.name = name;
-        connectionStyleRules = new ArrayList<>();
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public void apply(Diagram diagram) {
-
-        Properties.PropertySelector<Figure> selector = new Properties.PropertySelector<>(diagram.getFigures());
-        for (ConnectionStyleRule rule : connectionStyleRules) {
-            List<Figure> figures = null;
-            if (rule.getSelector() != null) {
-                figures = rule.getSelector().selected(diagram);
-            } else {
-                figures = diagram.getFigures();
-            }
-
-            for (Figure f : figures) {
-                for (OutputSlot os : f.getOutputSlots()) {
-                    for (Connection c : os.getConnections()) {
-                        if (figures.contains(c.getInputSlot().getFigure())) {
-                            c.setStyle(rule.getLineStyle());
-                            c.setColor(rule.getLineColor());
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    public void addRule(ConnectionStyleRule r) {
-        connectionStyleRules.add(r);
-    }
-
-    public static class ConnectionStyleRule {
-
-        private Color lineColor;
-        private Connection.ConnectionStyle lineStyle;
-        private Selector selector;
-
-        public ConnectionStyleRule(Selector selector, Color lineColor, Connection.ConnectionStyle lineStyle) {
-            this.selector = selector;
-            this.lineColor = lineColor;
-            this.lineStyle = lineStyle;
-        }
-
-        public Selector getSelector() {
-            return selector;
-        }
-
-        public Color getLineColor() {
-            return lineColor;
-        }
-
-        public Connection.ConnectionStyle getLineStyle() {
-            return lineStyle;
-        }
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/CustomFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.graph.Diagram;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.script.*;
-import org.openide.cookies.OpenCookie;
-import org.openide.filesystems.FileObject;
-import org.openide.filesystems.FileUtil;
-import org.openide.util.Exceptions;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class CustomFilter extends AbstractFilter {
-
-    public static final String JAVASCRIPT_HELPER_ID = "JavaScriptHelper";
-    private String code;
-    private String name;
-
-    public CustomFilter(String name, String code) {
-        this.name = name;
-        this.code = code;
-        getProperties().setProperty("name", name);
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setName(String s) {
-        name = s;
-        fireChangedEvent();
-    }
-
-    public void setCode(String s) {
-        code = s;
-        fireChangedEvent();
-    }
-
-    @Override
-    public OpenCookie getEditor() {
-        return new OpenCookie() {
-
-            @Override
-            public void open() {
-                openInEditor();
-            }
-        };
-    }
-
-    public boolean openInEditor() {
-        EditFilterDialog dialog = new EditFilterDialog(CustomFilter.this);
-        dialog.setVisible(true);
-        boolean result = dialog.wasAccepted();
-        this.getChangedEvent().fire();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return getName();
-    }
-
-    private static String getJsHelperText() {
-        InputStream is = null;
-        StringBuilder sb = new StringBuilder("importPackage(Packages.com.sun.hotspot.igv.filter);importPackage(Packages.com.sun.hotspot.igv.graph);importPackage(Packages.com.sun.hotspot.igv.data);importPackage(Packages.com.sun.hotspot.igv.util);importPackage(java.awt);");
-        try {
-            FileObject fo = FileUtil.getConfigRoot().getFileObject(JAVASCRIPT_HELPER_ID);
-            is = fo.getInputStream();
-            BufferedReader r = new BufferedReader(new InputStreamReader(is));
-            String s;
-            while ((s = r.readLine()) != null) {
-                sb.append(s);
-                sb.append("\n");
-            }
-
-        } catch (IOException ex) {
-            Logger.getLogger("global").log(Level.SEVERE, null, ex);
-        } finally {
-            try {
-                is.close();
-            } catch (IOException ex) {
-                Exceptions.printStackTrace(ex);
-            }
-        }
-        return sb.toString();
-    }
-
-    @Override
-    public void apply(Diagram d) {
-        try {
-            ScriptEngineManager sem = new ScriptEngineManager();
-            ScriptEngine e = sem.getEngineByName("ECMAScript");
-            e.eval(getJsHelperText());
-            Bindings b = e.getContext().getBindings(ScriptContext.ENGINE_SCOPE);
-            b.put("graph", d);
-            b.put("IO", System.out);
-            e.eval(code, b);
-        } catch (ScriptException ex) {
-            Exceptions.printStackTrace(ex);
-        }
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/EdgeColorIndexFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.graph.*;
-import java.awt.Color;
-import java.util.List;
-
-public class EdgeColorIndexFilter extends AbstractFilter {
-
-    public static final String INPUTS = "INPUTS";
-    public static final String OUTPUTS = "OUTPUTS";
-    private final String applyTo;
-    private final Color[] colors;
-
-    public EdgeColorIndexFilter(String applyTo, Color... color) {
-        if (!applyTo.equals(INPUTS) && !applyTo.equals(OUTPUTS)) {
-            throw new IllegalArgumentException("applyTo");
-        }
-
-        this.applyTo = applyTo;
-        this.colors = color;
-    }
-
-    @Override
-    public String getName() {
-        return "Edge Color Index Filter";
-    }
-
-    @Override
-    public void apply(Diagram d) {
-        List<Figure> figures = d.getFigures();
-        for (Figure f : figures) {
-            Slot[] slots;
-            if (applyTo.equals(INPUTS)) {
-                List<InputSlot> inputSlots = f.getInputSlots();
-                slots = inputSlots.toArray(new Slot[inputSlots.size()]);
-            } else {
-                List<OutputSlot> outputSlots = f.getOutputSlots();
-                slots = outputSlots.toArray(new Slot[outputSlots.size()]);
-            }
-            int index = 0;
-            for (Slot slot : slots) {
-                if (index < colors.length && colors[index] != null) {
-                    slot.setColor(colors[index]);
-                    for (Connection c : slot.getConnections()) {
-
-                        c.setColor(colors[index]);
-                    }
-                }
-                index++;
-            }
-
-        }
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/EditFilterDialog.form	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.4" maxVersion="1.4" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-    <Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-      <ResourceString bundle="at/ssw/graphanalyzer/filter/Bundle.properties" key="title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-    </Property>
-    <Property name="resizable" type="boolean" value="false"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout>
-    <DimensionLayout dim="0">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" attributes="0">
-              <EmptySpace max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="0" attributes="0">
-                  <Group type="102" alignment="1" attributes="0">
-                      <Group type="103" groupAlignment="0" attributes="0">
-                          <Component id="sourceLabel" alignment="0" min="-2" max="-2" attributes="0"/>
-                          <Component id="nameLabel" alignment="0" min="-2" max="-2" attributes="0"/>
-                      </Group>
-                      <EmptySpace min="-2" pref="25" max="-2" attributes="0"/>
-                      <Group type="103" groupAlignment="0" attributes="0">
-                          <Component id="jScrollPane1" pref="695" max="32767" attributes="1"/>
-                          <Component id="nameTextField" alignment="0" pref="695" max="32767" attributes="1"/>
-                      </Group>
-                  </Group>
-                  <Group type="102" alignment="1" attributes="0">
-                      <Component id="okButton" min="-2" pref="76" max="-2" attributes="0"/>
-                      <EmptySpace max="-2" attributes="0"/>
-                      <Component id="cancelButton" min="-2" max="-2" attributes="0"/>
-                  </Group>
-              </Group>
-              <EmptySpace max="-2" attributes="0"/>
-          </Group>
-      </Group>
-    </DimensionLayout>
-    <DimensionLayout dim="1">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" alignment="0" attributes="0">
-              <EmptySpace max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="3" attributes="0">
-                  <Component id="nameLabel" alignment="3" min="-2" max="-2" attributes="0"/>
-                  <Component id="nameTextField" alignment="3" min="-2" max="-2" attributes="0"/>
-              </Group>
-              <EmptySpace type="unrelated" max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="0" attributes="0">
-                  <Component id="sourceLabel" min="-2" max="-2" attributes="0"/>
-                  <Component id="jScrollPane1" min="-2" pref="337" max="-2" attributes="0"/>
-              </Group>
-              <EmptySpace pref="16" max="32767" attributes="0"/>
-              <Group type="103" groupAlignment="3" attributes="0">
-                  <Component id="cancelButton" alignment="3" min="-2" max="-2" attributes="0"/>
-                  <Component id="okButton" alignment="3" min="-2" max="-2" attributes="0"/>
-              </Group>
-              <EmptySpace max="-2" attributes="0"/>
-          </Group>
-      </Group>
-    </DimensionLayout>
-  </Layout>
-  <SubComponents>
-    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JTextArea" name="sourceTextArea">
-          <Properties>
-            <Property name="columns" type="int" value="20"/>
-            <Property name="rows" type="int" value="5"/>
-          </Properties>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Component class="javax.swing.JTextField" name="nameTextField">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="at/ssw/graphanalyzer/coordinator/Bundle.properties" key="nameTextField.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JLabel" name="nameLabel">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="at/ssw/graphanalyzer/filter/Bundle.properties" key="jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JLabel" name="sourceLabel">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="at/ssw/graphanalyzer/filter/Bundle.properties" key="jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JButton" name="okButton">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="at/ssw/graphanalyzer/filter/Bundle.properties" key="jButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelButtonClicked,okButtonClicked"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JButton" name="cancelButton">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="at/ssw/graphanalyzer/filter/Bundle.properties" key="jButton2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelButtonClicked"/>
-      </Events>
-    </Component>
-  </SubComponents>
-</Form>
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/EditFilterDialog.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.filter;
-
-import org.openide.windows.WindowManager;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class EditFilterDialog extends javax.swing.JDialog {
-
-    private CustomFilter customFilter;
-    private boolean accepted;
-
-    /** Creates new form EditFilterDialog */
-    public EditFilterDialog(CustomFilter customFilter) {
-        super(WindowManager.getDefault().getMainWindow(), true);
-        this.customFilter = customFilter;
-        initComponents();
-
-        sourceTextArea.setText(customFilter.getCode());
-        nameTextField.setText(customFilter.getName());
-    }
-
-    public boolean wasAccepted() {
-        return accepted;
-    }
-
-    /** This method is called from within the constructor to
-     * initialize the form.
-     * WARNING: Do NOT modify this code. The content of this method is
-     * always regenerated by the Form Editor.
-     */
-    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void initComponents() {
-
-        jScrollPane1 = new javax.swing.JScrollPane();
-        sourceTextArea = new javax.swing.JTextArea();
-        nameTextField = new javax.swing.JTextField();
-        nameLabel = new javax.swing.JLabel();
-        sourceLabel = new javax.swing.JLabel();
-        okButton = new javax.swing.JButton();
-        cancelButton = new javax.swing.JButton();
-
-        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-        setTitle(org.openide.util.NbBundle.getMessage(EditFilterDialog.class, "title")); // NOI18N
-        setResizable(false);
-
-        sourceTextArea.setColumns(20);
-        sourceTextArea.setRows(5);
-        jScrollPane1.setViewportView(sourceTextArea);
-
-        nameTextField.setText("null");
-
-        nameLabel.setText(org.openide.util.NbBundle.getMessage(EditFilterDialog.class, "jLabel1.text")); // NOI18N
-
-        sourceLabel.setText(org.openide.util.NbBundle.getMessage(EditFilterDialog.class, "jLabel2.text")); // NOI18N
-
-        okButton.setText(org.openide.util.NbBundle.getMessage(EditFilterDialog.class, "jButton1.text")); // NOI18N
-        okButton.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                cancelButtonClicked(evt);
-                okButtonClicked(evt);
-            }
-        });
-
-        cancelButton.setText(org.openide.util.NbBundle.getMessage(EditFilterDialog.class, "jButton2.text")); // NOI18N
-        cancelButton.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                cancelButtonClicked(evt);
-            }
-        });
-
-        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
-        getContentPane().setLayout(layout);
-        layout.setHorizontalGroup(
-            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(layout.createSequentialGroup()
-                .addContainerGap()
-                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                    .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
-                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                            .add(sourceLabel)
-                            .add(nameLabel))
-                        .add(25, 25, 25)
-                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                            .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 695, Short.MAX_VALUE)
-                            .add(nameTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 695, Short.MAX_VALUE)))
-                    .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
-                        .add(okButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 76, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                        .add(cancelButton)))
-                .addContainerGap())
-        );
-        layout.setVerticalGroup(
-            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(layout.createSequentialGroup()
-                .addContainerGap()
-                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
-                    .add(nameLabel)
-                    .add(nameTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
-                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
-                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                    .add(sourceLabel)
-                    .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 337, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
-                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 16, Short.MAX_VALUE)
-                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
-                    .add(cancelButton)
-                    .add(okButton))
-                .addContainerGap())
-        );
-
-        pack();
-    }// </editor-fold>//GEN-END:initComponents
-
-private void okButtonClicked(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonClicked
-	this.customFilter.setName(this.nameTextField.getText());
-	this.customFilter.setCode(this.sourceTextArea.getText());
-	accepted = true;
-	setVisible(false);
-}//GEN-LAST:event_okButtonClicked
-
-private void cancelButtonClicked(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonClicked
-	setVisible(false);
-}//GEN-LAST:event_cancelButtonClicked
-	
-	
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.JButton cancelButton;
-    private javax.swing.JScrollPane jScrollPane1;
-    private javax.swing.JLabel nameLabel;
-    private javax.swing.JTextField nameTextField;
-    private javax.swing.JButton okButton;
-    private javax.swing.JLabel sourceLabel;
-    private javax.swing.JTextArea sourceTextArea;
-    // End of variables declaration//GEN-END:variables
-	
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/Filter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.data.ChangedEvent;
-import com.sun.hotspot.igv.data.ChangedEventProvider;
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.graph.Diagram;
-import org.openide.cookies.OpenCookie;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface Filter extends Properties.Provider, ChangedEventProvider<Filter> {
-
-    public String getName();
-
-    public void apply(Diagram d);
-
-    OpenCookie getEditor();
-
-    @Override
-    ChangedEvent<Filter> getChangedEvent();
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/FilterChain.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.data.ChangedEvent;
-import com.sun.hotspot.igv.data.ChangedEventProvider;
-import com.sun.hotspot.igv.data.ChangedListener;
-import com.sun.hotspot.igv.graph.Diagram;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class FilterChain implements ChangedEventProvider<FilterChain> {
-
-    private List<Filter> filters;
-    private transient ChangedEvent<FilterChain> changedEvent;
-    
-    private ChangedListener<Filter> changedListener = new ChangedListener<Filter>() {
-        @Override
-        public void changed(Filter source) {
-            changedEvent.fire();
-        }
-    };
-
-    public FilterChain() {
-        filters = new ArrayList<>();
-        changedEvent = new ChangedEvent<>(this);
-    }
-
-    public FilterChain(FilterChain f) {
-        this.filters = new ArrayList<>(f.filters);
-        changedEvent = new ChangedEvent<>(this);
-    }
-
-    @Override
-    public ChangedEvent<FilterChain> getChangedEvent() {
-        return changedEvent;
-    }
-
-    public Filter getFilterAt(int index) {
-        assert index >= 0 && index < filters.size();
-        return filters.get(index);
-    }
-
-    public void apply(Diagram d) {
-        for (Filter f : filters) {
-            f.apply(d);
-        }
-    }
-
-    public void apply(Diagram d, FilterChain sequence) {
-        List<Filter> applied = new ArrayList<>();
-        for (Filter f : sequence.getFilters()) {
-            if (filters.contains(f)) {
-                f.apply(d);
-                applied.add(f);
-            }
-        }
-
-
-        for (Filter f : filters) {
-            if (!applied.contains(f)) {
-                f.apply(d);
-            }
-        }
-    }
-
-
-    public void addFilter(Filter filter) {
-        assert filter != null;
-        filters.add(filter);
-        filter.getChangedEvent().addListener(changedListener);
-        changedEvent.fire();
-    }
-
-    public boolean containsFilter(Filter filter) {
-        return filters.contains(filter);
-    }
-
-    public void removeFilter(Filter filter) {
-        assert filters.contains(filter);
-        filters.remove(filter);
-        filter.getChangedEvent().removeListener(changedListener);
-        changedEvent.fire();
-    }
-
-    public void moveFilterUp(Filter filter) {
-        assert filters.contains(filter);
-        int index = filters.indexOf(filter);
-        if (index != 0) {
-            filters.remove(index);
-            filters.add(index - 1, filter);
-        }
-        changedEvent.fire();
-    }
-
-    public void moveFilterDown(Filter filter) {
-        assert filters.contains(filter);
-        int index = filters.indexOf(filter);
-        if (index != filters.size() - 1) {
-            filters.remove(index);
-            filters.add(index + 1, filter);
-        }
-        changedEvent.fire();
-    }
-
-    public List<Filter> getFilters() {
-        return Collections.unmodifiableList(filters);
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/FilterChainProvider.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface FilterChainProvider {
-
-    public FilterChain getFilterChain();
-
-    public FilterChain getSequence();
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/FilterSetting.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class FilterSetting {
-
-    private Set<Filter> filters;
-    private String name;
-
-    public FilterSetting() {
-        this(null);
-    }
-
-    public FilterSetting(String name) {
-        this.name = name;
-        filters = new HashSet<>();
-    }
-
-    public Set<Filter> getFilters() {
-        return Collections.unmodifiableSet(filters);
-    }
-
-    public void addFilter(Filter f) {
-        assert !filters.contains(f);
-        filters.add(f);
-    }
-
-    public void removeFilter(Filter f) {
-        assert filters.contains(f);
-        filters.remove(f);
-    }
-
-    public boolean containsFilter(Filter f) {
-        return filters.contains(f);
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public int getFilterCount() {
-        return filters.size();
-    }
-
-    @Override
-    public String toString() {
-        return getName();
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/GradientColorFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.graph.Diagram;
-import com.sun.hotspot.igv.graph.Figure;
-import java.awt.*;
-import java.awt.geom.AffineTransform;
-import java.awt.image.Raster;
-import java.util.List;
-
-/**
- * Filter that colors nodes using a customizable color gradient, based on how
- * a numeric property is located in a specified interval.
- * 
- * @author Peter Hofer
- */
-public class GradientColorFilter extends AbstractFilter {
-
-    public static final String LINEAR = "LINEAR";
-    public static final String LOGARITHMIC = "LOGARITHMIC";
-
-    private String propertyName = "probability";
-    private float minValue = 0;
-    private float maxValue = 500;
-    private float[] fractions = {0, 0.5f, 1};
-    private Color[] colors = {Color.BLUE, Color.YELLOW, Color.RED};
-    private int shadeCount = 8;
-    private String mode = LINEAR;
-
-    @Override
-    public String getName() {
-        return "Gradient Color Filter";
-    }
-
-    @Override
-    public void apply(Diagram d) {
-        boolean logarithmic = mode.equalsIgnoreCase(LOGARITHMIC);
-        if (!logarithmic && !mode.equalsIgnoreCase(LINEAR)) {
-            throw new RuntimeException("Unknown mode: " + mode);
-        }
-
-        Rectangle bounds = new Rectangle(shadeCount, 1);
-        LinearGradientPaint lgp = new LinearGradientPaint(bounds.x, bounds.y, bounds.width, bounds.y, fractions, colors);
-        PaintContext context = lgp.createContext(null, bounds, bounds.getBounds2D(), AffineTransform.getTranslateInstance(0, 0), new RenderingHints(null));
-        Raster raster = context.getRaster(bounds.x, bounds.y, bounds.width, bounds.height);
-        int[] rgb = raster.getPixels(bounds.x, bounds.y, bounds.width, bounds.height, (int[]) null);
-        Color[] shades = new Color[rgb.length / 3];
-        for (int i = 0; i < shades.length; ++i) {
-            shades[i] = new Color(rgb[i * 3], rgb[i * 3 + 1], rgb[i * 3 + 2]);
-        }
-
-        List<Figure> figures = d.getFigures();
-        for (Figure f : figures) {
-            String property = f.getProperties().get(propertyName);
-            if (property != null) {
-                try {
-                    float value = Float.parseFloat(property);
-
-                    Color nodeColor;
-                    if (value <= minValue) {
-                        nodeColor = colors[0];
-                    } else if (value >= maxValue) {
-                        nodeColor = colors[colors.length - 1];
-                    } else {
-                        double normalized = value - minValue;
-                        double interval = maxValue - minValue;
-                        int index;
-                        // Use Math.ceil() to make values above zero distinguishable from zero
-                        if (logarithmic) {
-                            index = (int) Math.ceil(shades.length * Math.log(1 + normalized) / Math.log(1 + interval));
-                        } else {
-                            index = (int) Math.ceil(shades.length * normalized / interval);
-                        }
-                        nodeColor = shades[index];
-                    }
-                    f.setColor(nodeColor);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-    }
-
-    public String getPropertyName() {
-        return propertyName;
-    }
-
-    public void setPropertyName(String propertyName) {
-        this.propertyName = propertyName;
-    }
-
-    public float getMinValue() {
-        return minValue;
-    }
-
-    public void setMinValue(float minValue) {
-        this.minValue = minValue;
-    }
-
-    public float getMaxValue() {
-        return maxValue;
-    }
-
-    public void setMaxValue(float maxValue) {
-        this.maxValue = maxValue;
-    }
-
-    public float[] getFractions() {
-        return fractions;
-    }
-
-    public void setFractions(float[] fractions) {
-        this.fractions = fractions;
-    }
-
-    public Color[] getColors() {
-        return colors;
-    }
-
-    public void setColors(Color[] colors) {
-        this.colors = colors;
-    }
-
-    public int getShadeCount() {
-        return shadeCount;
-    }
-
-    public void setShadeCount(int shadeCount) {
-        this.shadeCount = shadeCount;
-    }
-
-    public String getMode() {
-        return mode;
-    }
-
-    public void setMode(String mode) {
-        this.mode = mode;
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/RemoveFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.graph.Diagram;
-import com.sun.hotspot.igv.graph.Figure;
-import com.sun.hotspot.igv.graph.Selector;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class RemoveFilter extends AbstractFilter {
-
-    private List<RemoveRule> rules;
-    private String name;
-
-    public RemoveFilter(String name) {
-        this.name = name;
-        rules = new ArrayList<>();
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public void apply(Diagram diagram) {
-        for (RemoveRule r : rules) {
-            List<Figure> selected = r.getSelector().selected(diagram);
-            Set<Figure> toRemove = new HashSet<>(selected);
-
-            if (r.getRemoveOrphans()) {
-                boolean changed;
-                do {
-                    changed = false;
-                    for (Figure f : diagram.getFigures()) {
-                        if (!toRemove.contains(f)) {
-                            if (toRemove.containsAll(f.getPredecessors()) && toRemove.containsAll(f.getSuccessors())) {
-                                toRemove.add(f);
-                                changed = true;
-                            }
-                        }
-                    }
-                } while (changed);
-            }
-
-            diagram.removeAllFigures(toRemove);
-        }
-    }
-
-    public void addRule(RemoveRule rule) {
-        rules.add(rule);
-    }
-
-    public static class RemoveRule {
-
-        private Selector selector;
-        private boolean removeOrphans;
-
-        public RemoveRule(Selector selector) {
-            this(selector, false);
-        }
-
-        public RemoveRule(Selector selector, boolean removeOrphans) {
-            this.selector = selector;
-            this.removeOrphans = removeOrphans;
-        }
-
-        public Selector getSelector() {
-            return selector;
-        }
-
-        public boolean getRemoveOrphans() {
-            return removeOrphans;
-        }
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/RemoveInputsFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.graph.*;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class RemoveInputsFilter extends AbstractFilter {
-
-    private List<RemoveInputsRule> rules;
-    private String name;
-
-    public RemoveInputsFilter(String name) {
-        this.name = name;
-        rules = new ArrayList<>();
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public void apply(Diagram diagram) {
-
-        for (RemoveInputsRule r : rules) {
-
-            List<Figure> list = r.getSelector().selected(diagram);
-            for (Figure f : list) {
-                int z = 0;
-                List<InputSlot> last = new ArrayList<>();
-                for (InputSlot is : f.getInputSlots()) {
-                    if (z >= r.getStartingIndex() && z <= r.getEndIndex() && is.getConnections().size() > 0) {
-                        StringBuilder sb = new StringBuilder();
-                        List<Connection> conns = is.getConnections();
-                        for (int i = 0; i < conns.size(); i++) {
-                            Connection c = conns.get(i);
-                            OutputSlot os = c.getOutputSlot();
-                            Figure pred = os.getFigure();
-                            if (i != 0) {
-                                sb.append("<BR>");
-                            }
-                            sb.append(pred.getLines()[0]);
-                        }
-                        is.removeAllConnections();
-                        is.setShortName("X");
-                        is.setText(sb.toString());
-                        last.add(is);
-                    } else {
-                        last.clear();
-                    }
-                    z++;
-                }
-
-                if (last.size() > 3) {
-                    InputSlot first = last.get(0);
-                    first.setShortName("XX");
-
-                    StringBuilder sb = new StringBuilder();
-                    for (int i = 0; i < last.size(); i++) {
-                        InputSlot is2 = last.get(i);
-                        if (i != 0) {
-                            sb.append("<BR>");
-                        }
-                        sb.append(is2.getText());
-                    }
-
-                    first.setText(sb.toString());
-
-                    for (int i = 1; i < last.size(); i++) {
-                        f.removeSlot(last.get(i));
-                    }
-                }
-            }
-        }
-    }
-
-    public void addRule(RemoveInputsRule rule) {
-        rules.add(rule);
-    }
-
-    public static class RemoveInputsRule {
-
-        private Selector selector;
-        private int startingIndex;
-        private int endIndex;
-
-        public RemoveInputsRule(Selector selector) {
-            this(selector, 0);
-        }
-
-        public RemoveInputsRule(Selector selector, int startIndex) {
-            this(selector, startIndex, Integer.MAX_VALUE);
-        }
-
-        public RemoveInputsRule(Selector selector, int startIndex, int endIndex) {
-            this.startingIndex = startIndex;
-            this.endIndex = endIndex;
-            this.selector = selector;
-        }
-
-        public int getStartingIndex() {
-            return startingIndex;
-        }
-
-        public int getEndIndex() {
-            return endIndex;
-        }
-
-        public Selector getSelector() {
-            return selector;
-        }
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/RemoveSelfLoopsFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.graph.*;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class RemoveSelfLoopsFilter extends AbstractFilter {
-
-    private String name;
-
-    /** Creates a new instance of RemoveSelfLoops */
-    public RemoveSelfLoopsFilter(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public void apply(Diagram d) {
-
-        for (Figure f : d.getFigures()) {
-
-            for (InputSlot is : f.getInputSlots()) {
-
-                List<Connection> toRemove = new ArrayList<>();
-                for (Connection c : is.getConnections()) {
-
-                    if (c.getOutputSlot().getFigure() == f) {
-                        toRemove.add(c);
-                    }
-                }
-
-                for (Connection c : toRemove) {
-
-                    c.remove();
-
-                    OutputSlot os = c.getOutputSlot();
-                    if (os.getConnections().size() == 0) {
-                        f.removeSlot(os);
-                    }
-
-                    c.getInputSlot().setShortName("O");
-                    c.getInputSlot().setText("Self Loop");
-                }
-            }
-        }
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/SplitFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.graph.*;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class SplitFilter extends AbstractFilter {
-
-    private String name;
-    private Selector selector;
-    private String propertyName;
-
-    public SplitFilter(String name, Selector selector, String propertyName) {
-        this.name = name;
-        this.selector = selector;
-        this.propertyName = propertyName;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-    
-    @Override
-    public void apply(Diagram d) {
-        List<Figure> list = selector.selected(d);
-
-        for (Figure f : list) {
-            
-            for (InputSlot is : f.getInputSlots()) {
-                for (Connection c : is.getConnections()) {
-                    OutputSlot os = c.getOutputSlot();
-                    if (f.getSource().getSourceNodes().size() > 0) {
-                        os.getSource().addSourceNodes(f.getSource());
-                        os.setAssociatedNode(f.getSource().getSourceNodes().get(0));
-                        os.setColor(f.getColor());
-                    }
-
-
-                    String s = Figure.resolveString(propertyName, f.getProperties());
-                    if (s != null) {
-                        os.setShortName(s);
-                    }
-
-                }
-            }
-            for (OutputSlot os : f.getOutputSlots()) {
-                for (Connection c : os.getConnections()) {
-                    InputSlot is = c.getInputSlot();
-                    if (f.getSource().getSourceNodes().size() > 0) {
-                        is.getSource().addSourceNodes(f.getSource());
-                        is.setAssociatedNode(f.getSource().getSourceNodes().get(0));
-                        is.setColor(f.getColor());
-                    }
-
-                    String s = Figure.resolveString(propertyName, f.getProperties());
-                    if (s != null) {
-                        is.setShortName(s);
-                    }
-                }
-            }
-
-            d.removeFigure(f);
-        }
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/UnconnectedSlotFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filter;
-
-import com.sun.hotspot.igv.graph.*;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Filter that hides slots with no connections.
- */
-public class UnconnectedSlotFilter extends AbstractFilter {
-
-    private final boolean removeInputs;
-    private final boolean removeOutputs;
-
-    public UnconnectedSlotFilter(boolean inputs, boolean outputs) {
-        this.removeInputs = inputs;
-        this.removeOutputs = outputs;
-    }
-
-    @Override
-    public String getName() {
-        return "Unconnected Slot Filter";
-    }
-
-    @Override
-    public void apply(Diagram d) {
-        if (!removeInputs && !removeOutputs) {
-            return;
-        }
-
-        List<Figure> figures = d.getFigures();
-        for (Figure f : figures) {
-            List<Slot> remove = new ArrayList<>();
-            if (removeInputs) {
-                for (InputSlot is : f.getInputSlots()) {
-                    if (is.getConnections().isEmpty()) {
-                        remove.add(is);
-                    }
-                }
-            }
-            if (removeOutputs) {
-                for (OutputSlot os : f.getOutputSlots()) {
-                    if (os.getConnections().isEmpty()) {
-                        remove.add(os);
-                    }
-                }
-            }
-            for (Slot s : remove) {
-                f.removeSlot(s);
-            }
-        }
-    }
-}
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/helper.js	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
- 
- /**
- *
- * @author Thomas Wuerthinger
- */
- 
-function colorize(property, regexp, color) {
-    var f = new ColorFilter("");
-    f.addRule(new ColorFilter.ColorRule(new MatcherSelector(new Properties.RegexpPropertyMatcher(property, regexp)), color));
-    f.apply(graph); 
-}
-
-function remove(property, regexp) {
-    var f = new RemoveFilter("");
-    f.addRule(new RemoveFilter.RemoveRule(new MatcherSelector(new Properties.RegexpPropertyMatcher(property, regexp))));
-    f.apply(graph);
-}
-
-function removeIncludingOrphans(property, regexp) {
-    var f = new RemoveFilter("");
-    f.addRule(new RemoveFilter.RemoveRule(new MatcherSelector(new Properties.RegexpPropertyMatcher(property, regexp)), true));
-    f.apply(graph);
-}
-
-function split(property, regexp, propertyName) {
-    if (propertyName == undefined) {
-        propertyName = graph.getNodeText();
-    }
-    var f = new SplitFilter("", new MatcherSelector(new Properties.RegexpPropertyMatcher(property, regexp)), propertyName);
-    f.apply(graph);
-}
-
-function removeInputs(property, regexp, from, to) {
-    var f = new RemoveInputsFilter("");
-    if(from == undefined && to == undefined) {
-        f.addRule(new RemoveInputsFilter.RemoveInputsRule(new MatcherSelector(new Properties.RegexpPropertyMatcher(property, regexp))));
-    } else if(to == undefined) {
-        f.addRule(new RemoveInputsFilter.RemoveInputsRule(new MatcherSelector(new Properties.RegexpPropertyMatcher(property, regexp)), from));
-    } else {
-        f.addRule(new RemoveInputsFilter.RemoveInputsRule(new MatcherSelector(new Properties.RegexpPropertyMatcher(property, regexp)), from, to));
-    }
-    f.apply(graph);
-}
-
-function removeUnconnectedSlots(inputs, outputs) {
-    var f = new UnconnectedSlotFilter(inputs, outputs);
-    f.apply(graph);
-}
-
-function colorizeGradient(property, min, max) {
-    var f = new GradientColorFilter();
-    f.setPropertyName(property);
-    f.setMinValue(min);
-    f.setMaxValue(max);
-    f.apply(graph);
-}
-
-function colorizeGradientWithMode(property, min, max, mode) {
-    var f = new GradientColorFilter();
-    f.setPropertyName(property);
-    f.setMinValue(min);
-    f.setMaxValue(max);
-    f.setMode(mode);
-    f.apply(graph);
-}
-
-function colorizeGradientCustom(property, min, max, mode, colors, fractions, nshades) {
-    var f = new GradientColorFilter();
-    f.setPropertyName(property);
-    f.setMinValue(min);
-    f.setMaxValue(max);
-    f.setMode(mode);
-    f.setColors(colors);
-    f.setFractions(fractions);
-    f.setShadeCount(nshades);
-    f.apply(graph);
-}
-
-var black = Color.black;
-var blue = Color.blue;
-var cyan = Color.cyan;
-var darkGray = Color.darkGray;
-var gray = Color.gray;
-var green = Color.green;
-var lightGray = Color.lightGray;
-var magenta = Color.magenta;
-var orange = Color.orange;
-var pink = Color.pink
-var red = Color.red;
-var yellow = Color.yellow;
-var white = Color.white;
\ No newline at end of file
--- a/visualizer/Filter/src/com/sun/hotspot/igv/filter/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
-<filesystem>
-        <file name="JavaScriptHelper" url="helper.js"/>
-</filesystem>
--- a/visualizer/FilterWindow/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.filterwindow" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.filterwindow.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/FilterWindow/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.filterwindow
-OpenIDE-Module-Layer: com/sun/hotspot/igv/filterwindow/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/filterwindow/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/FilterWindow/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.filterwindow-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/FilterWindow/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=09ba2a87
-nbproject/build-impl.xml.script.CRC32=e4293f0e
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@1.45.1
--- a/visualizer/FilterWindow/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/FilterWindow/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.filterwindow</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.filter</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.graph</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.actions</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.21.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.dialogs</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.18.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.explorer</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.34.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.filesystems</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.46.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.loaders</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.20.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.nodes</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.20.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.14.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.6.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.39.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages/>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/FilterWindow/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/FilterWindow/src/META-INF/services/com.sun.hotspot.igv.filter.FilterChainProvider	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-com.sun.hotspot.igv.filterwindow.FilterChainProviderImplementation
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-OpenIDE-Module-Name=FilterWindow
-CTL_FilterTopComponent=Filters
-HINT_FilterTopComponent=Allows to choose active filters and modify them.
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/CheckListView.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow;
-
-import javax.swing.JList;
-import org.openide.explorer.view.ListView;
-import org.openide.explorer.view.NodeListModel;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class CheckListView extends ListView {
-
-    @Override
-    public void showSelection(int[] indices) {
-        super.showSelection(indices);
-    }
-
-    @Override
-    protected NodeListModel createModel() {
-        return new CheckNodeListModel();
-    }
-
-    @Override
-    protected JList<Object> createList() {
-        JList<Object> tmpList = super.createList();
-        tmpList.setCellRenderer(new CheckRenderer(tmpList));
-        return tmpList;
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/CheckNode.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow;
-
-import com.sun.hotspot.igv.data.ChangedEvent;
-import org.openide.nodes.AbstractNode;
-import org.openide.nodes.Children;
-import org.openide.util.Lookup;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class CheckNode extends AbstractNode {
-
-    private ChangedEvent<CheckNode> selectionChangedEvent;
-    public boolean selected;
-    public boolean enabled;
-
-    public CheckNode(Children c, Lookup lookup) {
-        super(c, lookup);
-        selectionChangedEvent = new ChangedEvent<>(this);
-        selected = false;
-        enabled = true;
-    }
-
-    public ChangedEvent<CheckNode> getSelectionChangedEvent() {
-        return selectionChangedEvent;
-    }
-
-    public boolean isSelected() {
-        return selected;
-    }
-
-    public void setSelected(boolean b) {
-        if (b != selected) {
-            selected = b;
-            selectionChangedEvent.fire();
-        }
-    }
-
-    public void setEnabled(boolean b) {
-        enabled = b;
-    }
-
-    public boolean isEnabled() {
-        return enabled;
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/CheckNodeListModel.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow;
-
-import org.openide.explorer.view.NodeListModel;
-import org.openide.explorer.view.Visualizer;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class CheckNodeListModel extends NodeListModel {
-
-    public CheckNode getCheckNodeAt(int index) {
-        Object item = getElementAt(index);
-        if (item != null) {
-            return (CheckNode) Visualizer.findNode(item);
-        }
-        return null;
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/CheckRenderer.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow;
-
-import java.awt.*;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import javax.swing.JCheckBox;
-import javax.swing.JList;
-import javax.swing.ListCellRenderer;
-
-/**
- * @author Thomas Wuerthinger
- */
-public class CheckRenderer extends JCheckBox implements ListCellRenderer<Object> {
-
-    private JList<Object> list;
-    private Color startBackground;
-
-    public CheckRenderer(final JList<Object> list) {
-        this.list = list;
-        list.addMouseListener(
-                new MouseAdapter() {
-
-                    @Override
-                    public void mouseClicked(MouseEvent e) {
-                        int index = list.locationToIndex(e.getPoint());
-                        Point p2 = list.indexToLocation(index);
-                        Rectangle r = new Rectangle(p2.x, p2.y, getPreferredSize().height, getPreferredSize().height);
-                        if (r.contains(e.getPoint())) {
-                            CheckNode node = ((CheckNodeListModel) list.getModel()).getCheckNodeAt(index);
-                            node.setSelected(!node.isSelected());
-                            list.repaint();
-                            e.consume();
-                        }
-                    }
-                });
-
-        this.setPreferredSize(new Dimension(getPreferredSize().width, getPreferredSize().height - 5));
-        startBackground = this.getBackground();
-    }
-
-    @Override
-    public Component getListCellRendererComponent(final JList<? extends Object> list, Object value, final int index, boolean isSelected, boolean cellHasFocus) {
-        setText(value.toString());
-        CheckNode node = ((CheckNodeListModel) list.getModel()).getCheckNodeAt(index);
-        this.setSelected(node.isSelected());
-        this.setEnabled(list.isEnabled());
-
-        if (isSelected && list.hasFocus()) {
-            this.setBackground(list.getSelectionBackground());
-            this.setForeground(list.getSelectionForeground());
-        } else if (isSelected) {
-            assert !list.hasFocus();
-            this.setBackground(startBackground);
-            this.setForeground(list.getForeground());
-
-        } else {
-            this.setBackground(list.getBackground());
-            this.setForeground(list.getForeground());
-        }
-        return this;
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterChainProviderImplementation.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow;
-
-import com.sun.hotspot.igv.filter.FilterChain;
-import com.sun.hotspot.igv.filter.FilterChainProvider;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class FilterChainProviderImplementation implements FilterChainProvider {
-
-    @Override
-    public FilterChain getFilterChain() {
-        return FilterTopComponent.findInstance().getFilterChain();
-    }
-
-    @Override
-    public FilterChain getSequence() {
-        return FilterTopComponent.findInstance().getSequence();
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterNode.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow;
-
-import com.sun.hotspot.igv.data.ChangedListener;
-import com.sun.hotspot.igv.filter.Filter;
-import com.sun.hotspot.igv.filter.FilterChain;
-import com.sun.hotspot.igv.filterwindow.actions.MoveFilterDownAction;
-import com.sun.hotspot.igv.filterwindow.actions.MoveFilterUpAction;
-import com.sun.hotspot.igv.filterwindow.actions.RemoveFilterAction;
-import com.sun.hotspot.igv.util.PropertiesSheet;
-import javax.swing.Action;
-import org.openide.actions.OpenAction;
-import org.openide.nodes.Children;
-import org.openide.nodes.Sheet;
-import org.openide.util.Lookup;
-import org.openide.util.LookupEvent;
-import org.openide.util.LookupListener;
-import org.openide.util.Utilities;
-import org.openide.util.lookup.AbstractLookup;
-import org.openide.util.lookup.InstanceContent;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class FilterNode extends CheckNode implements LookupListener, ChangedListener<FilterTopComponent> {
-
-    private Filter filter;
-    private Lookup.Result<FilterChain> result;
-
-    public FilterNode(Filter filter) {
-        this(filter, new InstanceContent());
-    }
-
-    private FilterNode(Filter filter, InstanceContent content) {
-        super(Children.LEAF, new AbstractLookup(content));
-        content.add(filter);
-
-        content.add(filter.getEditor());
-        this.filter = filter;
-        filter.getChangedEvent().addListener(new ChangedListener<Filter>() {
-
-            @Override
-            public void changed(Filter source) {
-                update();
-            }
-        });
-
-        update();
-
-        Lookup.Template<FilterChain> tpl = new Lookup.Template<>(FilterChain.class);
-        result = Utilities.actionsGlobalContext().lookup(tpl);
-        result.addLookupListener(this);
-
-        FilterTopComponent.findInstance().getFilterSettingsChangedEvent().addListener(this);
-        resultChanged(null);
-        
-        setShortDescription("Double-click to open filter");
-    }
-
-    private void update() {
-        this.setDisplayName(filter.getName());
-    }
-
-    public Filter getFilter() {
-        return filter;
-    }
-
-    @Override
-    protected Sheet createSheet() {
-        Sheet s = super.createSheet();
-        PropertiesSheet.initializeSheet(getFilter().getProperties(), s);
-        return s;
-    }
-
-    @Override
-    public Action[] getActions(boolean b) {
-        return new Action[]{(Action) OpenAction.findObject(OpenAction.class, true), (Action) MoveFilterUpAction.findObject(MoveFilterUpAction.class, true), (Action) MoveFilterDownAction.findObject(MoveFilterDownAction.class, true), (Action) RemoveFilterAction.findObject(RemoveFilterAction.class, true)};
-    }
-
-    @Override
-    public Action getPreferredAction() {
-        return OpenAction.get(OpenAction.class).createContextAwareInstance(Utilities.actionsGlobalContext());
-    }
-
-    @Override
-    public void resultChanged(LookupEvent lookupEvent) {
-        changed(FilterTopComponent.findInstance());
-    }
-
-    @Override
-    public void changed(FilterTopComponent source) {
-        setSelected(source.getFilterChain().containsFilter(filter));
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterTopComponent.form	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-</Form>
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterTopComponent.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,670 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow;
-
-import com.sun.hotspot.igv.data.ChangedEvent;
-import com.sun.hotspot.igv.data.ChangedListener;
-import com.sun.hotspot.igv.filter.CustomFilter;
-import com.sun.hotspot.igv.filter.Filter;
-import com.sun.hotspot.igv.filter.FilterChain;
-import com.sun.hotspot.igv.filter.FilterSetting;
-import com.sun.hotspot.igv.filterwindow.actions.*;
-import java.awt.BorderLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.*;
-import java.util.*;
-import javax.swing.JComboBox;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
-import org.openide.DialogDisplayer;
-import org.openide.ErrorManager;
-import org.openide.NotifyDescriptor;
-import org.openide.awt.Toolbar;
-import org.openide.awt.ToolbarPool;
-import org.openide.explorer.ExplorerManager;
-import org.openide.explorer.ExplorerUtils;
-import org.openide.filesystems.FileLock;
-import org.openide.filesystems.FileObject;
-import org.openide.filesystems.FileUtil;
-import org.openide.nodes.AbstractNode;
-import org.openide.nodes.Children;
-import org.openide.nodes.Node;
-import org.openide.util.*;
-import org.openide.util.actions.SystemAction;
-import org.openide.windows.TopComponent;
-import org.openide.windows.WindowManager;
-
-/**
- * 
- * @author Thomas Wuerthinger
- */
-public final class FilterTopComponent extends TopComponent implements LookupListener, ExplorerManager.Provider {
-
-    private static FilterTopComponent instance;
-    public static final String FOLDER_ID = "Filters";
-    public static final String AFTER_ID = "after";
-    public static final String ENABLED_ID = "enabled";
-    public static final String PREFERRED_ID = "FilterTopComponent";
-    private CheckListView view;
-    private ExplorerManager manager;
-    private FilterChain filterChain;
-    private FilterChain sequence;
-    private Lookup.Result<FilterChain> result;
-    private JComboBox comboBox;
-    private List<FilterSetting> filterSettings;
-    private FilterSetting customFilterSetting = new FilterSetting("-- Custom --");
-    private ChangedEvent<FilterTopComponent> filterSettingsChangedEvent;
-    private ActionListener comboBoxActionListener = new ActionListener() {
-
-        @Override
-        public void actionPerformed(ActionEvent e) {
-            comboBoxSelectionChanged();
-        }
-    };
-
-    public ChangedEvent<FilterTopComponent> getFilterSettingsChangedEvent() {
-        return filterSettingsChangedEvent;
-    }
-
-    public FilterChain getSequence() {
-        return sequence;
-    }
-
-    public void updateSelection() {
-        Node[] nodes = this.getExplorerManager().getSelectedNodes();
-        int[] arr = new int[nodes.length];
-        for (int i = 0; i < nodes.length; i++) {
-            int index = sequence.getFilters().indexOf(((FilterNode) nodes[i]).getFilter());
-            arr[i] = index;
-        }
-        view.showSelection(arr);
-    }
-
-    private void comboBoxSelectionChanged() {
-
-        Object o = comboBox.getSelectedItem();
-        if (o == null) {
-            return;
-        }
-        assert o instanceof FilterSetting;
-        FilterSetting s = (FilterSetting) o;
-
-        if (s != customFilterSetting) {
-            FilterChain chain = getFilterChain();
-            chain.getChangedEvent().beginAtomic();
-            List<Filter> toRemove = new ArrayList<>();
-            for (Filter f : chain.getFilters()) {
-                if (!s.containsFilter(f)) {
-                    toRemove.add(f);
-                }
-            }
-            for (Filter f : toRemove) {
-                chain.removeFilter(f);
-            }
-
-            for (Filter f : s.getFilters()) {
-                if (!chain.containsFilter(f)) {
-                    chain.addFilter(f);
-                }
-            }
-
-            chain.getChangedEvent().endAtomic();
-            filterSettingsChangedEvent.fire();
-        } else {
-            this.updateComboBoxSelection();
-        }
-
-        SystemAction.get(RemoveFilterSettingsAction.class).setEnabled(comboBox.getSelectedItem() != this.customFilterSetting);
-        SystemAction.get(SaveFilterSettingsAction.class).setEnabled(comboBox.getSelectedItem() == this.customFilterSetting);
-    }
-
-    private void updateComboBox() {
-        comboBox.removeAllItems();
-        comboBox.addItem(customFilterSetting);
-        for (FilterSetting s : filterSettings) {
-            comboBox.addItem(s);
-        }
-
-        this.updateComboBoxSelection();
-    }
-
-    public void addFilterSetting() {
-        NotifyDescriptor.InputLine l = new NotifyDescriptor.InputLine("Name of the new profile:", "Filter Profile");
-        if (DialogDisplayer.getDefault().notify(l) == NotifyDescriptor.OK_OPTION) {
-            String name = l.getInputText();
-
-            FilterSetting toRemove = null;
-            for (FilterSetting s : filterSettings) {
-                if (s.getName().equals(name)) {
-                    NotifyDescriptor.Confirmation conf = new NotifyDescriptor.Confirmation("Filter profile \"" + name + "\" already exists, do you want to replace it?", "Filter");
-                    if (DialogDisplayer.getDefault().notify(conf) == NotifyDescriptor.YES_OPTION) {
-                        toRemove = s;
-                        break;
-                    } else {
-                        return;
-                    }
-                }
-            }
-
-            if (toRemove != null) {
-                filterSettings.remove(toRemove);
-            }
-            FilterSetting setting = createFilterSetting(name);
-            filterSettings.add(setting);
-
-            // Sort alphabetically
-            Collections.sort(filterSettings, new Comparator<FilterSetting>() {
-
-                @Override
-                public int compare(FilterSetting o1, FilterSetting o2) {
-                    return o1.getName().compareTo(o2.getName());
-                }
-            });
-
-            updateComboBox();
-        }
-    }
-
-    public boolean canRemoveFilterSetting() {
-        return comboBox.getSelectedItem() != customFilterSetting;
-    }
-
-    public void removeFilterSetting() {
-        if (canRemoveFilterSetting()) {
-            Object o = comboBox.getSelectedItem();
-            assert o instanceof FilterSetting;
-            FilterSetting f = (FilterSetting) o;
-            assert f != customFilterSetting;
-            assert filterSettings.contains(f);
-            NotifyDescriptor.Confirmation l = new NotifyDescriptor.Confirmation("Do you really want to remove filter profile \"" + f + "\"?", "Filter Profile");
-            if (DialogDisplayer.getDefault().notify(l) == NotifyDescriptor.YES_OPTION) {
-                filterSettings.remove(f);
-                updateComboBox();
-            }
-        }
-    }
-
-    private FilterSetting createFilterSetting(String name) {
-        FilterSetting s = new FilterSetting(name);
-        FilterChain chain = this.getFilterChain();
-        for (Filter f : chain.getFilters()) {
-            s.addFilter(f);
-        }
-        return s;
-    }
-
-    private void updateComboBoxSelection() {
-        List<Filter> filters = this.getFilterChain().getFilters();
-        boolean found = false;
-        for (FilterSetting s : filterSettings) {
-            if (s.getFilterCount() == filters.size()) {
-                boolean ok = true;
-                for (Filter f : filters) {
-                    if (!s.containsFilter(f)) {
-                        ok = false;
-                    }
-                }
-
-                if (ok) {
-                    if (comboBox.getSelectedItem() != s) {
-                        comboBox.setSelectedItem(s);
-                    }
-                    found = true;
-                    break;
-                }
-            }
-        }
-
-        if (!found && comboBox.getSelectedItem() != customFilterSetting) {
-            comboBox.setSelectedItem(customFilterSetting);
-        }
-    }
-
-    private class FilterChildren extends Children.Keys<Filter> implements ChangedListener<CheckNode> {
-
-        private HashMap<Filter, Node> nodeHash = new HashMap<>();
-
-        @Override
-        protected Node[] createNodes(Filter filter) {
-            if (nodeHash.containsKey(filter)) {
-                return new Node[]{nodeHash.get(filter)};
-            }
-
-            FilterNode node = new FilterNode(filter);
-            node.getSelectionChangedEvent().addListener(this);
-            nodeHash.put(filter, node);
-            return new Node[]{node};
-        }
-
-        public FilterChildren() {
-            sequence.getChangedEvent().addListener(new ChangedListener<FilterChain>() {
-
-                @Override
-                public void changed(FilterChain source) {
-                    addNotify();
-                }
-            });
-
-            setBefore(false);
-        }
-
-        @Override
-        protected void addNotify() {
-            setKeys(sequence.getFilters());
-            updateSelection();
-        }
-
-        @Override
-        public void changed(CheckNode source) {
-            FilterNode node = (FilterNode) source;
-            Filter f = node.getFilter();
-            FilterChain chain = getFilterChain();
-            if (node.isSelected()) {
-                if (!chain.containsFilter(f)) {
-                    chain.addFilter(f);
-                }
-            } else {
-                if (chain.containsFilter(f)) {
-                    chain.removeFilter(f);
-                }
-            }
-            view.revalidate();
-            view.repaint();
-            updateComboBoxSelection();
-        }
-    }
-
-    public FilterChain getFilterChain() {
-        return filterChain;
-    }
-
-    private FilterTopComponent() {
-        filterSettingsChangedEvent = new ChangedEvent<>(this);
-        initComponents();
-        setName(NbBundle.getMessage(FilterTopComponent.class, "CTL_FilterTopComponent"));
-        setToolTipText(NbBundle.getMessage(FilterTopComponent.class, "HINT_FilterTopComponent"));
-        //        setIcon(Utilities.loadImage(ICON_PATH, true));
-
-        sequence = new FilterChain();
-        filterChain = new FilterChain();
-        initFilters();
-        manager = new ExplorerManager();
-        manager.setRootContext(new AbstractNode(new FilterChildren()));
-        associateLookup(ExplorerUtils.createLookup(manager, getActionMap()));
-        view = new CheckListView();
-
-        ToolbarPool.getDefault().setPreferredIconSize(16);
-        Toolbar toolBar = new Toolbar();
-        Border b = (Border) UIManager.get("Nb.Editor.Toolbar.border"); //NOI18N
-        toolBar.setBorder(b);
-        comboBox = new JComboBox();
-        toolBar.add(comboBox);
-        this.add(toolBar, BorderLayout.NORTH);
-        toolBar.add(SaveFilterSettingsAction.get(SaveFilterSettingsAction.class));
-        toolBar.add(RemoveFilterSettingsAction.get(RemoveFilterSettingsAction.class));
-        toolBar.addSeparator();
-        toolBar.add(NewFilterAction.get(NewFilterAction.class));
-        toolBar.add(RemoveFilterAction.get(RemoveFilterAction.class).createContextAwareInstance(this.getLookup()));
-        toolBar.add(MoveFilterUpAction.get(MoveFilterUpAction.class).createContextAwareInstance(this.getLookup()));
-        toolBar.add(MoveFilterDownAction.get(MoveFilterDownAction.class).createContextAwareInstance(this.getLookup()));
-        this.add(view, BorderLayout.CENTER);
-
-        filterSettings = new ArrayList<>();
-        updateComboBox();
-
-        comboBox.addActionListener(comboBoxActionListener);
-        setChain(filterChain);
-    }
-
-    public void newFilter() {
-        CustomFilter cf = new CustomFilter("My custom filter", "");
-        if (cf.openInEditor()) {
-            sequence.addFilter(cf);
-            FileObject fo = getFileObject(cf);
-            FilterChangedListener listener = new FilterChangedListener(fo, cf);
-            listener.changed(cf);
-            cf.getChangedEvent().addListener(listener);
-        }
-    }
-
-    public void removeFilter(Filter f) {
-        com.sun.hotspot.igv.filter.CustomFilter cf = (com.sun.hotspot.igv.filter.CustomFilter) f;
-
-        sequence.removeFilter(cf);
-        try {
-            getFileObject(cf).delete();
-        } catch (IOException ex) {
-            Exceptions.printStackTrace(ex);
-        }
-
-    }
-
-    private static class FilterChangedListener implements ChangedListener<Filter> {
-
-        private FileObject fileObject;
-        private CustomFilter filter;
-
-        public FilterChangedListener(FileObject fo, CustomFilter cf) {
-            fileObject = fo;
-            filter = cf;
-        }
-
-        @Override
-        public void changed(Filter source) {
-            try {
-                if (!fileObject.getName().equals(filter.getName())) {
-                    FileLock lock = fileObject.lock();
-                    fileObject.move(lock, fileObject.getParent(), filter.getName(), "");
-                    lock.releaseLock();
-                    FileObject newFileObject = fileObject.getParent().getFileObject(filter.getName());
-                    fileObject = newFileObject;
-                }
-
-                FileLock lock = fileObject.lock();
-                OutputStream os = fileObject.getOutputStream(lock);
-                try (Writer w = new OutputStreamWriter(os)) {
-                    String s = filter.getCode();
-                    w.write(s);
-                }
-                lock.releaseLock();
-
-            } catch (IOException ex) {
-                Exceptions.printStackTrace(ex);
-            }
-        }
-    }
-
-    public void initFilters() {
-        FileObject folder = FileUtil.getConfigRoot().getFileObject(FOLDER_ID);
-        FileObject[] children = folder.getChildren();
-
-        List<CustomFilter> customFilters = new ArrayList<>();
-        HashMap<CustomFilter, String> afterMap = new HashMap<>();
-        Set<CustomFilter> enabledSet = new HashSet<>();
-        HashMap<String, CustomFilter> map = new HashMap<>();
-
-        for (final FileObject fo : children) {
-            InputStream is = null;
-
-            String code = "";
-            FileLock lock = null;
-            try {
-                lock = fo.lock();
-                is = fo.getInputStream();
-                BufferedReader r = new BufferedReader(new InputStreamReader(is));
-                String s;
-                StringBuilder sb = new StringBuilder();
-                while ((s = r.readLine()) != null) {
-                    sb.append(s);
-                    sb.append("\n");
-                }
-                code = sb.toString();
-            } catch (FileNotFoundException ex) {
-                Exceptions.printStackTrace(ex);
-            } catch (IOException ex) {
-                Exceptions.printStackTrace(ex);
-            } finally {
-                try {
-                    is.close();
-                } catch (IOException ex) {
-                    Exceptions.printStackTrace(ex);
-                }
-                lock.releaseLock();
-            }
-
-            String displayName = fo.getName();
-
-
-            final CustomFilter cf = new CustomFilter(displayName, code);
-            map.put(displayName, cf);
-
-            String after = (String) fo.getAttribute(AFTER_ID);
-            afterMap.put(cf, after);
-
-            Boolean enabled = (Boolean) fo.getAttribute(ENABLED_ID);
-            if (enabled != null && (boolean) enabled) {
-                enabledSet.add(cf);
-            }
-
-            cf.getChangedEvent().addListener(new FilterChangedListener(fo, cf));
-
-            customFilters.add(cf);
-        }
-
-        for (int j = 0; j < customFilters.size(); j++) {
-            for (int i = 0; i < customFilters.size(); i++) {
-                List<CustomFilter> copiedList = new ArrayList<>(customFilters);
-                for (CustomFilter cf : copiedList) {
-
-                    String after = afterMap.get(cf);
-
-                    if (map.containsKey(after)) {
-                        CustomFilter afterCf = map.get(after);
-                        int index = customFilters.indexOf(afterCf);
-                        int currentIndex = customFilters.indexOf(cf);
-
-                        if (currentIndex < index) {
-                            customFilters.remove(currentIndex);
-                            customFilters.add(index, cf);
-                        }
-                    }
-                }
-            }
-        }
-
-        for (CustomFilter cf : customFilters) {
-            sequence.addFilter(cf);
-            if (enabledSet.contains(cf)) {
-                filterChain.addFilter(cf);
-            }
-        }
-    }
-
-    /** This method is called from within the constructor to
-     * initialize the form.
-     * WARNING: Do NOT modify this code. The content of this method is
-     * always regenerated by the Form Editor.
-     */
-    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
-    private void initComponents() {
-
-        setLayout(new java.awt.BorderLayout());
-
-    }// </editor-fold>//GEN-END:initComponents
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    // End of variables declaration//GEN-END:variables
-    /**
-     * Gets default instance. Do not use directly: reserved for *.settings files only,
-     * i.e. deserialization routines; otherwise you could get a non-deserialized instance.
-     * To obtain the singleton instance, use {@link findInstance}.
-     */
-    public static synchronized FilterTopComponent getDefault() {
-        if (instance == null) {
-            instance = new FilterTopComponent();
-        }
-        return instance;
-    }
-
-    /**
-     * Obtain the FilterTopComponent instance. Never call {@link #getDefault} directly!
-     */
-    public static synchronized FilterTopComponent findInstance() {
-        TopComponent win = WindowManager.getDefault().findTopComponent(PREFERRED_ID);
-        if (win == null) {
-            ErrorManager.getDefault().log(ErrorManager.WARNING, "Cannot find Filter component. It will not be located properly in the window system.");
-            return getDefault();
-        }
-        if (win instanceof FilterTopComponent) {
-            return (FilterTopComponent) win;
-        }
-        ErrorManager.getDefault().log(ErrorManager.WARNING, "There seem to be multiple components with the '" + PREFERRED_ID + "' ID. That is a potential source of errors and unexpected behavior.");
-        return getDefault();
-    }
-
-    @Override
-    public int getPersistenceType() {
-        return TopComponent.PERSISTENCE_ALWAYS;
-    }
-
-    @Override
-    protected String preferredID() {
-        return PREFERRED_ID;
-    }
-
-    @Override
-    public ExplorerManager getExplorerManager() {
-        return manager;
-    }
-
-    @Override
-    public void componentOpened() {
-        Lookup.Template<FilterChain> tpl = new Lookup.Template<>(FilterChain.class);
-        result = Utilities.actionsGlobalContext().lookup(tpl);
-        result.addLookupListener(this);
-    }
-
-    @Override
-    public void componentClosed() {
-        result.removeLookupListener(this);
-        result = null;
-    }
-
-    @Override
-    public void resultChanged(LookupEvent lookupEvent) {
-        setChain(Utilities.actionsGlobalContext().lookup(FilterChain.class));
-    }
-
-    public void setChain(FilterChain chain) {
-        updateComboBoxSelection();
-    }
-
-    private FileObject getFileObject(CustomFilter cf) {
-        FileObject fo = FileUtil.getConfigRoot().getFileObject(FOLDER_ID + "/" + cf.getName());
-        if (fo == null) {
-            try {
-                fo = FileUtil.getConfigRoot().getFileObject(FOLDER_ID).createData(cf.getName());
-            } catch (IOException ex) {
-                Exceptions.printStackTrace(ex);
-            }
-        }
-        return fo;
-    }
-
-    @Override
-    public boolean requestFocus(boolean temporary) {
-        view.requestFocus();
-        return super.requestFocus(temporary);
-    }
-
-    @Override
-    protected boolean requestFocusInWindow(boolean temporary) {
-        view.requestFocus();
-        return super.requestFocusInWindow(temporary);
-    }
-
-    @Override
-    public void requestActive() {
-        super.requestActive();
-        view.requestFocus();
-    }
-
-    @Override
-    public void writeExternal(ObjectOutput out) throws IOException {
-        super.writeExternal(out);
-
-        out.writeInt(filterSettings.size());
-        for (FilterSetting f : filterSettings) {
-            out.writeUTF(f.getName());
-
-            out.writeInt(f.getFilterCount());
-            for (Filter filter : f.getFilters()) {
-                CustomFilter cf = (CustomFilter) filter;
-                out.writeUTF(cf.getName());
-            }
-        }
-
-        CustomFilter prev = null;
-        for (Filter f : this.sequence.getFilters()) {
-            CustomFilter cf = (CustomFilter) f;
-            FileObject fo = getFileObject(cf);
-            if (getFilterChain().containsFilter(cf)) {
-                fo.setAttribute(ENABLED_ID, true);
-            } else {
-                fo.setAttribute(ENABLED_ID, false);
-            }
-
-            if (prev == null) {
-                fo.setAttribute(AFTER_ID, null);
-            } else {
-                fo.setAttribute(AFTER_ID, prev.getName());
-            }
-
-            prev = cf;
-        }
-    }
-
-    public CustomFilter findFilter(String name) {
-        for (Filter f : sequence.getFilters()) {
-
-            CustomFilter cf = (CustomFilter) f;
-            if (cf.getName().equals(name)) {
-                return cf;
-            }
-        }
-
-        return null;
-    }
-
-    @Override
-    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        super.readExternal(in);
-
-        int filterSettingsCount = in.readInt();
-        for (int i = 0; i < filterSettingsCount; i++) {
-            String name = in.readUTF();
-            FilterSetting s = new FilterSetting(name);
-            int filterCount = in.readInt();
-            for (int j = 0; j < filterCount; j++) {
-                String filterName = in.readUTF();
-                CustomFilter filter = findFilter(filterName);
-                if (filter != null) {
-                    s.addFilter(filter);
-                }
-            }
-
-            filterSettings.add(s);
-        }
-        updateComboBox();
-    }
-
-    final static class ResolvableHelper implements Serializable {
-
-        private static final long serialVersionUID = 1L;
-
-        public Object readResolve() {
-            return FilterTopComponent.getDefault();
-        }
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterTopComponentSettings.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE settings PUBLIC "-//NetBeans//DTD Session settings 1.0//EN" "http://www.netbeans.org/dtds/sessionsettings-1_0.dtd">
-<settings version="1.0">
-    <module name="com.sun.hotspot.igv.filterwindow" spec="1.0"/>
-    <instanceof class="org.openide.windows.TopComponent"/>
-    <instanceof class="com.sun.hotspot.igv.filterwindow.FilterTopComponent"/>
-    <instance class="com.sun.hotspot.igv.filterwindow.FilterTopComponent" method="getDefault"/>
-</settings>
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/FilterTopComponentWstcref.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE tc-ref PUBLIC "-//NetBeans//DTD Top Component in Mode Properties 2.0//EN" "http://www.netbeans.org/dtds/tc-ref2_0.dtd">
-<tc-ref version="2.0" >
-    <module name="com.sun.hotspot.igv.filterwindow" spec="1.0"/>
-    <tc-id id="FilterTopComponent"/>
-    <state opened="true"/>
-</tc-ref>
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-CTL_FilterAction=Filters
-CTL_MoveFilterUpAction=Move upwards
-CTL_MoveFilterDownAction=Move downwards
-CTL_RemoveFilterAction=Remove
-CTL_RemoveFilterSettingsAction=Remove filter setting
-CTL_SaveFilterSettingsAction=Create filter profile...
-CTL_NewFilterAction=New filter...
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/FilterAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow.actions;
-
-import com.sun.hotspot.igv.filterwindow.FilterTopComponent;
-import java.awt.event.ActionEvent;
-import javax.swing.AbstractAction;
-import org.openide.util.NbBundle;
-import org.openide.windows.TopComponent;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class FilterAction extends AbstractAction {
-
-    public FilterAction() {
-        super(NbBundle.getMessage(FilterAction.class, "CTL_FilterAction"));
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent evt) {
-        TopComponent win = FilterTopComponent.findInstance();
-        win.open();
-        win.requestActive();
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/MoveFilterDownAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow.actions;
-
-import com.sun.hotspot.igv.filter.Filter;
-import com.sun.hotspot.igv.filterwindow.FilterTopComponent;
-import javax.swing.Action;
-import org.openide.nodes.Node;
-import org.openide.util.HelpCtx;
-import org.openide.util.NbBundle;
-import org.openide.util.actions.CookieAction;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public final class MoveFilterDownAction extends CookieAction {
-
-    @Override
-    protected void performAction(Node[] activatedNodes) {
-        for (Node n : activatedNodes) {
-            Filter c = n.getLookup().lookup(Filter.class);
-            FilterTopComponent.findInstance().getSequence().moveFilterDown(c);
-        }
-    }
-
-    @Override
-    protected int mode() {
-        return CookieAction.MODE_EXACTLY_ONE;
-    }
-
-    public MoveFilterDownAction() {
-
-        putValue(Action.SHORT_DESCRIPTION, "Move selected filter downwards");
-    }
-
-    @Override
-    public String getName() {
-        return NbBundle.getMessage(MoveFilterUpAction.class, "CTL_MoveFilterDownAction");
-    }
-
-    @Override
-    protected Class[] cookieClasses() {
-        return new Class[]{
-            Filter.class
-        };
-    }
-
-    @Override
-    protected String iconResource() {
-        return "com/sun/hotspot/igv/filterwindow/images/down.png";
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-        putValue("noIconInMenu", Boolean.TRUE);
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/MoveFilterUpAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow.actions;
-
-import com.sun.hotspot.igv.filter.Filter;
-import com.sun.hotspot.igv.filterwindow.FilterTopComponent;
-import javax.swing.Action;
-import org.openide.nodes.Node;
-import org.openide.util.HelpCtx;
-import org.openide.util.NbBundle;
-import org.openide.util.actions.CookieAction;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public final class MoveFilterUpAction extends CookieAction {
-
-    @Override
-    protected void performAction(Node[] activatedNodes) {
-        for (Node n : activatedNodes) {
-            Filter c = n.getLookup().lookup(Filter.class);
-            FilterTopComponent.findInstance().getSequence().moveFilterUp(c);
-        }
-    }
-
-    @Override
-    protected int mode() {
-        return CookieAction.MODE_EXACTLY_ONE;
-    }
-
-    public MoveFilterUpAction() {
-        putValue(Action.SHORT_DESCRIPTION, "Move selected filter upwards");
-    }
-
-    @Override
-    public String getName() {
-        return NbBundle.getMessage(MoveFilterUpAction.class, "CTL_MoveFilterUpAction");
-    }
-
-    @Override
-    protected Class[] cookieClasses() {
-        return new Class[]{
-            Filter.class
-        };
-    }
-
-    @Override
-    protected String iconResource() {
-        return "com/sun/hotspot/igv/filterwindow/images/up.png";
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-        putValue("noIconInMenu", Boolean.TRUE);
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/NewFilterAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow.actions;
-
-import com.sun.hotspot.igv.filterwindow.FilterTopComponent;
-import javax.swing.Action;
-import org.openide.util.HelpCtx;
-import org.openide.util.NbBundle;
-import org.openide.util.actions.CallableSystemAction;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public final class NewFilterAction extends CallableSystemAction {
-
-    public NewFilterAction() {
-        putValue(Action.SHORT_DESCRIPTION, "Create new filter");
-    }
-
-    @Override
-    public void performAction() {
-        FilterTopComponent.findInstance().newFilter();
-    }
-
-    @Override
-    public String getName() {
-        return NbBundle.getMessage(SaveFilterSettingsAction.class, "CTL_NewFilterAction");
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-
-    @Override
-    protected String iconResource() {
-        return "com/sun/hotspot/igv/filterwindow/images/plus.png";
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/RemoveFilterAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow.actions;
-
-import com.sun.hotspot.igv.filter.Filter;
-import com.sun.hotspot.igv.filterwindow.FilterTopComponent;
-import javax.swing.Action;
-import javax.swing.JOptionPane;
-import org.openide.nodes.Node;
-import org.openide.util.HelpCtx;
-import org.openide.util.NbBundle;
-import org.openide.util.actions.CookieAction;
-import org.openide.windows.WindowManager;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public final class RemoveFilterAction extends CookieAction {
-
-    @Override
-    protected void performAction(Node[] activatedNodes) {
-        Object[] options = {"Yes",
-            "No",
-            "Cancel"
-        };
-        int n = JOptionPane.showOptionDialog(WindowManager.getDefault().getMainWindow(),
-                "Do you really want to delete " + activatedNodes.length + " filter(s)?", "Delete Filters",
-                JOptionPane.YES_NO_CANCEL_OPTION,
-                JOptionPane.QUESTION_MESSAGE,
-                null,
-                options,
-                options[2]);
-
-        if (n == JOptionPane.YES_OPTION) {
-            for (int i = 0; i < activatedNodes.length; i++) {
-                FilterTopComponent.findInstance().removeFilter(activatedNodes[i].getLookup().lookup(Filter.class));
-            }
-        }
-    }
-
-    @Override
-    protected int mode() {
-        return CookieAction.MODE_ALL;
-    }
-
-    @Override
-    public String getName() {
-        return NbBundle.getMessage(RemoveFilterAction.class, "CTL_RemoveFilterAction");
-    }
-
-    public RemoveFilterAction() {
-        putValue(Action.SHORT_DESCRIPTION, "Remove selected filter");
-    }
-
-    @Override
-    protected Class[] cookieClasses() {
-        return new Class[]{
-            Filter.class
-        };
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-        putValue("noIconInMenu", Boolean.TRUE);
-    }
-
-    @Override
-    protected String iconResource() {
-        return "com/sun/hotspot/igv/filterwindow/images/minus.png";
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/RemoveFilterSettingsAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow.actions;
-
-import com.sun.hotspot.igv.filterwindow.FilterTopComponent;
-import javax.swing.Action;
-import org.openide.util.HelpCtx;
-import org.openide.util.NbBundle;
-import org.openide.util.actions.CallableSystemAction;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public final class RemoveFilterSettingsAction extends CallableSystemAction {
-
-    @Override
-    public void performAction() {
-        FilterTopComponent.findInstance().removeFilterSetting();
-    }
-
-    @Override
-    public String getName() {
-        return NbBundle.getMessage(RemoveFilterSettingsAction.class, "CTL_RemoveFilterSettingsAction");
-    }
-
-    public RemoveFilterSettingsAction() {
-        putValue(Action.SHORT_DESCRIPTION, "Delete current filter profile");
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-
-    @Override
-    protected String iconResource() {
-        return "com/sun/hotspot/igv/filterwindow/images/delete.png";
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/actions/SaveFilterSettingsAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.filterwindow.actions;
-
-import com.sun.hotspot.igv.filterwindow.FilterTopComponent;
-import javax.swing.Action;
-import org.openide.util.HelpCtx;
-import org.openide.util.NbBundle;
-import org.openide.util.actions.CallableSystemAction;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public final class SaveFilterSettingsAction extends CallableSystemAction {
-
-    @Override
-    public void performAction() {
-        FilterTopComponent.findInstance().addFilterSetting();
-    }
-
-    @Override
-    public String getName() {
-        return NbBundle.getMessage(SaveFilterSettingsAction.class, "CTL_SaveFilterSettingsAction");
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-    }
-
-    public SaveFilterSettingsAction() {
-        putValue(Action.SHORT_DESCRIPTION, "Save filter configuration as profile...");
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-
-    @Override
-    protected String iconResource() {
-        return "com/sun/hotspot/igv/filterwindow/images/add.png";
-    }
-}
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/customRightTopWsmode.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mode version="2.1">
-    <name unique="customRightTopMode" />
-    <kind type="view" />
-    <state type="joined" />
-    <constraints>
-        <path orientation="horizontal" number="90" weight="0.2"/>
-        <path orientation="vertical" number="0" weight="0.75"/>
-    </constraints>
-    <bounds x="0" y="0" width="0" height="0" />
-    <frame state="0"/>
-    <active-tc id="FilterTopComponent"/>
-    <empty-behavior permanent="false"/>
-</mode>
Binary file visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/add.png has changed
Binary file visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/delete.png has changed
Binary file visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/down.png has changed
Binary file visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/minus.png has changed
Binary file visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/plus.png has changed
Binary file visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/images/up.png has changed
--- a/visualizer/FilterWindow/src/com/sun/hotspot/igv/filterwindow/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
-<filesystem>
-    <folder name="Edit">
-        <file name="com-sun-hotspot-igv-filterwindow-actions-MoveFilterDownAction.instance">
-            <attr name="position" intvalue="300"/>
-        </file>
-        <file name="com-sun-hotspot-igv-filterwindow-actions-MoveFilterUpAction.instance">
-            <attr name="position" intvalue="400"/>
-        </file>
-        <file name="com-sun-hotspot-igv-filterwindow-actions-RemoveFilterAction.instance">
-            <attr name="position" intvalue="500"/>
-        </file>
-        <file name="com-sun-hotspot-igv-filterwindow-actions-RemoveFilterSettingsAction.instance">
-            <attr name="position" intvalue="600"/>
-        </file>
-        <file name="com-sun-hotspot-igv-filterwindow-actions-SaveFilterSettingsAction.instance">
-            <attr name="position" intvalue="900"/>
-        </file>
-    </folder>
-    
-    <folder name="Actions">
-        <folder name="Window">
-            <file name="com-sun-hotspot-igv-filterwindow-actions-FilterAction.instance"/>
-        </folder>
-    </folder>
-    <folder name="Menu">
-        <folder name="Window">
-            <file name="FilterAction.shadow">
-                <attr name="originalFile" stringvalue="Actions/Window/com-sun-hotspot-igv-filterwindow-actions-FilterAction.instance"/>
-            </file>
-        </folder>
-    </folder>
-    <folder name="Windows2">
-        <folder name="Components">
-            <file name="FilterTopComponent.settings" url="FilterTopComponentSettings.xml"/>
-        </folder>
-        <folder name="Modes">
-            <file name="customRightTopMode.wsmode" url="customRightTopWsmode.xml"/>
-            <folder name="customRightTopMode">
-                <file name="FilterTopComponent.wstcref" url="FilterTopComponentWstcref.xml"/>
-            </folder>
-        </folder>
-    </folder>
-</filesystem>
--- a/visualizer/Graal/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.graal" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.graal.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Graal/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.graal
-OpenIDE-Module-Layer: com/sun/hotspot/igv/graal/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/graal/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Graal/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.graal-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Graal/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=79002a09
-build.xml.script.CRC32=3534d355
-build.xml.stylesheet.CRC32=a56c6a5b@2.47.1
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=79002a09
-nbproject/build-impl.xml.script.CRC32=2867f2d5
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.47.1
--- a/visualizer/Graal/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/Graal/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.graal</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.filter</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.graph</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages/>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Graal/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=GraalCompilerSupport
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/GraalCFGFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graal.filters;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.filter.AbstractFilter;
-import com.sun.hotspot.igv.graph.Connection;
-import com.sun.hotspot.igv.graph.Diagram;
-import com.sun.hotspot.igv.graph.Figure;
-import com.sun.hotspot.igv.graph.InputSlot;
-import java.util.HashSet;
-import java.util.Set;
-
-public class GraalCFGFilter extends AbstractFilter {
-    
-    @Override
-    public String getName() {
-        return "Graal CFG Filter";
-    }
-
-    @Override
-    public void apply(Diagram d) {
-        Set<Figure> figuresToRemove = new HashSet<>();
-        Set<Connection> connectionsToRemove = new HashSet<>();
-        for (Figure f : d.getFigures()) {
-            final String prop = f.getProperties().get("probability");
-            
-            if (prop == null) {
-                figuresToRemove.add(f);
-            }
-        }
-        d.removeAllFigures(figuresToRemove);
-        
-        for (Figure f : d.getFigures()) {
-            Properties p = f.getProperties();
-            int predCount = Integer.parseInt(p.get("predecessorCount"));
-            for (InputSlot is : f.getInputSlots()) {
-                if (is.getPosition() >= predCount && !"EndNode".equals(is.getProperties().get("class"))) {
-                    for (Connection c : is.getConnections()) {
-                        if (!"EndNode".equals(c.getOutputSlot().getFigure().getProperties().get("class"))) {
-                            connectionsToRemove.add(c);
-                        }
-                    }
-                }
-            }
-        }
-        
-        for (Connection c : connectionsToRemove) {
-            c.remove();
-            System.out.println("rm " + c);
-        }
-    }
-}
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/GraalColoringFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graal.filters;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.filter.AbstractFilter;
-import com.sun.hotspot.igv.graph.Diagram;
-import com.sun.hotspot.igv.graph.Figure;
-import java.awt.Color;
-import java.util.List;
-
-public class GraalColoringFilter extends AbstractFilter {
-    
-    private String colorName;
-
-    public GraalColoringFilter(String colorName) {
-        this.colorName = colorName;
-    }
-
-    @Override
-    public String getName() {
-        return "Graal Coloring Filter (" + colorName + ")";
-    }
-
-    @Override
-    public void apply(Diagram d) {
-        List<Figure> figures = d.getFigures();
-        int colors = 0;
-        for (Figure f : figures) {
-            Properties p = f.getProperties();
-            final String prop = p.get(colorName + "Color");
-            if (prop == null) {
-                continue;
-            }
-            try {
-                int color = Integer.parseInt(prop);
-                if (color > colors) {
-                    colors = color;
-                }
-            } catch (NumberFormatException nfe) {
-                // nothing to do
-            }
-        }
-        colors++;
-        for (Figure f : figures) {
-            Properties p = f.getProperties();
-            final String prop = p.get(colorName + "Color");
-            if (prop == null) {
-                continue;
-            }
-            try {
-                int color = Integer.parseInt(prop);
-                Color c = Color.getHSBColor((float) color / colors, 1.0f, 0.7f);
-                f.setColor(c);
-            } catch (NumberFormatException nfe) {
-                // nothing to do
-            }
-        }
-    }
-}
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/GraalEdgeColorFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graal.filters;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.filter.AbstractFilter;
-import com.sun.hotspot.igv.graph.Connection;
-import com.sun.hotspot.igv.graph.Connection.ConnectionStyle;
-import com.sun.hotspot.igv.graph.Diagram;
-import com.sun.hotspot.igv.graph.Figure;
-import com.sun.hotspot.igv.graph.InputSlot;
-import java.awt.Color;
-import java.util.List;
-
-/**
- * Filter that colors usage and successor edges differently.
- *
- * @author Peter Hofer
- */
-public class GraalEdgeColorFilter extends AbstractFilter {
-
-    private Color successorColor = Color.BLUE;
-    private Color usageColor = Color.RED;
-    private Color memoryColor = Color.GREEN;
-
-    public GraalEdgeColorFilter() {
-    }
-
-    @Override
-    public String getName() {
-        return "Graal Edge Color Filter";
-    }
-
-    @Override
-    public void apply(Diagram d) {
-        List<Figure> figures = d.getFigures();
-        for (Figure f : figures) {
-            Properties p = f.getProperties();
-            int predCount;
-            if (p.get("predecessorCount") != null) {
-                predCount = Integer.parseInt(p.get("predecessorCount"));
-            } else {
-                predCount = 0;
-            }
-            for (InputSlot is : f.getInputSlots()) {
-                Color color;
-                ConnectionStyle style = ConnectionStyle.NORMAL;
-                if (is.getPosition() < predCount) {
-                    color = successorColor;
-                    style = ConnectionStyle.BOLD;
-                } else {
-                    color = usageColor;
-                }
-
-                is.setColor(color);
-                for (Connection c : is.getConnections()) {
-                    if (c.getLabel() == null || !c.getLabel().endsWith("#NDF")) {
-                        c.setColor(color);
-                        if (c.getStyle() != ConnectionStyle.DASHED) {
-                            c.setStyle(style);
-                        }
-                    } else if ("EndNode".equals(c.getOutputSlot().getFigure().getProperties().get("class"))
-                            || "EndNode".equals(c.getOutputSlot().getProperties().get("class"))) {
-                        c.setColor(successorColor);
-                        c.setStyle(ConnectionStyle.BOLD);
-                    }
-                }
-            }
-        }
-    }
-
-    public Color getUsageColor() {
-        return usageColor;
-    }
-
-    public void setUsageColor(Color usageColor) {
-        this.usageColor = usageColor;
-    }
-
-    public void setMemoryColor(Color memoryColor) {
-        this.memoryColor = memoryColor;
-    }
-
-    public Color getMemoryColor() {
-        return memoryColor;
-    }
-
-    public Color getSuccessorColor() {
-        return successorColor;
-    }
-
-    public void setSuccessorColor(Color successorColor) {
-        this.successorColor = successorColor;
-    }
-}
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/beginend.filter	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-var f = new CombineFilter("Combine Filter");
-f.addRule(new CombineFilter.CombineRule(new Properties.RegexpPropertyMatcher("class", ".*"), new Properties.RegexpPropertyMatcher("class", "BeginNode"), false, "shortName"));
-f.addRule(new CombineFilter.CombineRule(new Properties.RegexpPropertyMatcher("class", "EndNode"), new Properties.RegexpPropertyMatcher("class", ".*"), true, "shortName"));
-f.apply(graph);
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/callgraph.filter	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-colorize("name", "<init>.*", yellow);
-colorize("name", "<clinit>.*", pink);
-colorize("leaf", "1", lightGray);
-colorize("cutoff", "1", red);
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/cfg.filter	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-var f = new com.sun.hotspot.igv.graal.filters.GraalCFGFilter();
-f.apply(graph);
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/color.filter	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-colorize("name", ".*", white);
-colorize("name", "Begin|EndNode|LoopBegin|LoopEnd|LoopExit|Return", orange);
-colorize("name", "Phi.*|ValueProxy", magenta);
-colorize("name", "FrameState@.*", new java.awt.Color(0.5, 0.8, 1.0));
-colorize("name", "If|Merge", pink);
-colorize("name", "const.*", new java.awt.Color(0.7, 0.7, 0.7));
-colorize("name", "Local", new java.awt.Color(0.85, 0.85, 0.85));
-colorize("name", "\\+|-|\\*|/|&|\\||<<|>>|>>>", cyan);
-colorize("name", "Comp .*", yellow);
-colorize("name", "Virtual.*", green);
-
-colorize("notInOwnBlock", "true", red);
\ No newline at end of file
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/edgeColor.filter	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-var f = new com.sun.hotspot.igv.graal.filters.GraalEdgeColorFilter();
-f.setUsageColor(blue);
-f.setSuccessorColor(red);
-f.apply(graph);
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/framestatelocks.filter	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-colorize("class", "FrameState", red);
-colorize("locks", "", gray);
\ No newline at end of file
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/noframestate.filter	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-remove("class", "FrameState");
\ No newline at end of file
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/probability.filter	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-colorizeGradientWithMode("probability", 0, 500, "logarithmic");
-
-// more parameters: colorizeGradientCustom("probability", 0, 500, "logarithmic", [blue, yellow, red], [0, 0.5, 1], 16);
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/slots.filter	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-removeUnconnectedSlots(true, true);
--- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
-<filesystem>
-    <folder name="Filters">
-        <file name="Graal Coloring" url="filters/color.filter">
-            <attr name="enabled" boolvalue="false"/>
-        </file>
-        
-        <file name="Graal Edge Coloring" url="filters/edgeColor.filter">
-            <attr name="enabled" boolvalue="false"/>
-        </file>
-        
-        <file name="Graal Remove Unconnected Slots" url="filters/slots.filter">
-            <attr name="enabled" boolvalue="false"/>
-        </file>
-        
-        <file name="Graal Probability" url="filters/probability.filter">
-            <attr name="enabled" boolvalue="false"/>
-        </file>
-        
-        <file name="Graal Reduce Begin-End" url="filters/beginend.filter">
-            <attr name="enabled" boolvalue="false"/>
-        </file>
-        
-        <file name="Graal Remove FrameState" url="filters/noframestate.filter">
-            <attr name="enabled" boolvalue="false"/>
-        </file>
-        
-        <file name="Graal Mark FrameState With Lock" url="filters/framestatelocks.filter">
-            <attr name="enabled" boolvalue="false"/>
-        </file>
-        
-        <file name="Graal Call Analysis" url="filters/callgraph.filter">
-            <attr name="enabled" boolvalue="false"/>
-        </file>
-        
-        <file name="Graal CFG-only" url="filters/cfg.filter">
-            <attr name="enabled" boolvalue="false"/>
-        </file>
-    </folder>
-</filesystem>
--- a/visualizer/Graph/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.graph" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.graph.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Graph/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.graph
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/graph/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Graph/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.graph-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Graph/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=b2bc2f02
-build.xml.script.CRC32=486d5dab
-build.xml.stylesheet.CRC32=79c3b980
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=b2bc2f02
-nbproject/build-impl.xml.script.CRC32=17fa0f49
-nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
--- a/visualizer/Graph/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/Graph/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/Graph/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.graph</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.layout</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.sun.hotspot.igv.graph</package>
-                <package>com.sun.hotspot.igv.graph.services</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Graph/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/AndSelector.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class AndSelector implements Selector {
-
-    private Selector selector1;
-    private Selector selector2;
-
-    public AndSelector(Selector s1, Selector s2) {
-        this.selector1 = s1;
-        this.selector2 = s2;
-    }
-
-    @Override
-    public List<Figure> selected(Diagram d) {
-        List<Figure> l1 = selector1.selected(d);
-        List<Figure> l2 = selector2.selected(d);
-        List<Figure> result = new ArrayList<>();
-        for (Figure f : l2) {
-            if (l1.contains(f)) {
-                result.add(f);
-            }
-        }
-        return result;
-    }
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=Graph
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/Connection.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import com.sun.hotspot.igv.data.Source;
-import com.sun.hotspot.igv.layout.Link;
-import com.sun.hotspot.igv.layout.Port;
-import java.awt.Color;
-import java.awt.Point;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Connection implements Source.Provider, Link {
-
-    @Override
-    public boolean isVIP() {
-        return style == ConnectionStyle.BOLD;
-    }
-
-    public enum ConnectionStyle {
-
-        NORMAL,
-        DASHED,
-        BOLD
-    }
-    private InputSlot inputSlot;
-    private OutputSlot outputSlot;
-    private Source source;
-    private Color color;
-    private ConnectionStyle style;
-    private List<Point> controlPoints;
-    private String label;
-
-    protected Connection(InputSlot inputSlot, OutputSlot outputSlot, String label) {
-        this.inputSlot = inputSlot;
-        this.outputSlot = outputSlot;
-        this.label = label;
-        this.inputSlot.connections.add(this);
-        this.outputSlot.connections.add(this);
-        controlPoints = new ArrayList<>();
-        Figure sourceFigure = this.outputSlot.getFigure();
-        Figure destFigure = this.inputSlot.getFigure();
-        sourceFigure.addSuccessor(destFigure);
-        destFigure.addPredecessor(sourceFigure);
-        source = new Source();
-
-        this.color = Color.BLACK;
-        this.style = ConnectionStyle.NORMAL;
-    }
-
-    public InputSlot getInputSlot() {
-        return inputSlot;
-    }
-
-    public OutputSlot getOutputSlot() {
-        return outputSlot;
-    }
-
-    public Color getColor() {
-        return color;
-    }
-
-    public ConnectionStyle getStyle() {
-        return style;
-    }
-
-    public void setColor(Color c) {
-        color = c;
-    }
-
-    public void setStyle(ConnectionStyle s) {
-        style = s;
-    }
-
-    @Override
-    public Source getSource() {
-        return source;
-    }
-
-    public String getLabel() {
-        return label;
-    }
-
-    public void remove() {
-        inputSlot.getFigure().removePredecessor(outputSlot.getFigure());
-        inputSlot.connections.remove(this);
-        outputSlot.getFigure().removeSuccessor(inputSlot.getFigure());
-        outputSlot.connections.remove(this);
-    }
-
-    public String getToolTipText() {
-        StringBuilder builder = new StringBuilder();
-        if (label != null) {
-            builder.append(label).append(": from ");
-        } else {
-            builder.append("From ");
-        }
-        builder.append(getOutputSlot().getFigure().getSource().getSourceNodes().get(0).getId());
-        builder.append(" to ");
-        builder.append(getInputSlot().getFigure().getSource().getSourceNodes().get(0).getId());
-        return builder.toString();
-    }
-
-    @Override
-    public String toString() {
-        return "Connection('" + label + "', " + getFrom().getVertex() + " to " + getTo().getVertex() + ")";
-    }
-
-    @Override
-    public Port getFrom() {
-        return outputSlot;
-    }
-
-    @Override
-    public Port getTo() {
-        return inputSlot;
-    }
-
-    @Override
-    public List<Point> getControlPoints() {
-        return controlPoints;
-    }
-
-    @Override
-    public void setControlPoints(List<Point> list) {
-        controlPoints = list;
-    }
-}
-
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/Diagram.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,283 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import com.sun.hotspot.igv.data.InputEdge;
-import com.sun.hotspot.igv.data.InputGraph;
-import com.sun.hotspot.igv.data.InputNode;
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.Properties.StringPropertyMatcher;
-import java.awt.Font;
-import java.util.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Diagram {
-
-    private List<Figure> figures;
-    private InputGraph graph;
-    private int curId;
-    private String nodeText;
-    private Font font;
-    private Font slotFont;
-
-    public Font getFont() {
-        return font;
-    }
-
-    public Font getSlotFont() {
-        return slotFont;
-    }
-    
-    private Diagram() {
-        figures = new ArrayList<>();
-        this.nodeText = "";
-        this.font = new Font("Arial", Font.PLAIN, 13);
-        this.slotFont = new Font("Arial", Font.PLAIN, 10);
-    }
-
-    public String getNodeText() {
-        return nodeText;
-    }
-
-    public Diagram getNext() {
-        return Diagram.createDiagram(graph.getNext(), nodeText);
-    }
-
-    public Diagram getPrev() {
-        return Diagram.createDiagram(graph.getPrev(), nodeText);
-    }
-
-    public List<Figure> getFigures() {
-        return Collections.unmodifiableList(figures);
-    }
-
-    public Figure createFigure() {
-        Figure f = new Figure(this, curId);
-        curId++;
-        this.figures.add(f);
-        return f;
-    }
-
-    public Connection createConnection(InputSlot inputSlot, OutputSlot outputSlot, String label) {
-        assert inputSlot.getFigure().getDiagram() == this;
-        assert outputSlot.getFigure().getDiagram() == this;
-        return new Connection(inputSlot, outputSlot, label);
-    }
-    
-    public Map<InputNode, Set<Figure>> calcSourceToFigureRelation() {
-        Map<InputNode, Set<Figure>> map = new HashMap<>();
-        
-        for(InputNode node : this.getGraph().getNodes()) {
-            map.put(node, new HashSet<Figure>());
-        }
-        
-        for(Figure f : this.getFigures()) {
-            for(InputNode node : f.getSource().getSourceNodes()) {
-                map.get(node).add(f);
-            }
-        }
-        
-        return map;
-    }
-
-    public static Diagram createDiagram(InputGraph graph, String nodeText) {
-        if (graph == null) {
-            return null;
-        }
-
-        Diagram d = new Diagram();
-        d.graph = graph;
-        d.nodeText = nodeText;
-
-        Collection<InputNode> nodes = graph.getNodes();
-        Hashtable<Integer, Figure> figureHash = new Hashtable<>();
-        for (InputNode n : nodes) {
-            Figure f = d.createFigure();
-            f.getSource().addSourceNode(n);
-            f.getProperties().add(n.getProperties());
-            figureHash.put(n.getId(), f);
-        }
-
-        for (InputEdge e : graph.getEdges()) {
-
-            int from = e.getFrom();
-            int to = e.getTo();
-            Figure fromFigure = figureHash.get(from);
-            Figure toFigure = figureHash.get(to);
-            assert fromFigure != null && toFigure != null;
-            
-            if(fromFigure == null || toFigure == null) continue;
-
-            int fromIndex = e.getFromIndex();
-            while (fromFigure.getOutputSlots().size() <= fromIndex) {
-                fromFigure.createOutputSlot();
-            }
-            OutputSlot outputSlot = fromFigure.getOutputSlots().get(fromIndex);
-
-            int toIndex = e.getToIndex();
-            while (toFigure.getInputSlots().size() <= toIndex) {
-                toFigure.createInputSlot();
-            }
-            InputSlot inputSlot = toFigure.getInputSlots().get(toIndex);
-
-            Connection c = d.createConnection(inputSlot, outputSlot, e.getLabel());
-
-            if (e.getState() == InputEdge.State.NEW) {
-                c.setStyle(Connection.ConnectionStyle.BOLD);
-            } else if (e.getState() == InputEdge.State.DELETED) {
-                c.setStyle(Connection.ConnectionStyle.DASHED);
-            }
-        }
-
-
-        return d;
-    }
-
-    public void removeAllFigures(Set<Figure> figuresToRemove) {
-        for (Figure f : figuresToRemove) {
-            freeFigure(f);
-        }
-
-        ArrayList<Figure> newFigures = new ArrayList<>();
-        for (Figure f : this.figures) {
-            if (!figuresToRemove.contains(f)) {
-                newFigures.add(f);
-            }
-        }
-        figures = newFigures;
-    }
-
-    private void freeFigure(Figure succ) {
-
-        List<InputSlot> inputSlots = new ArrayList<>(succ.getInputSlots());
-        for (InputSlot s : inputSlots) {
-            succ.removeInputSlot(s);
-        }
-
-        List<OutputSlot> outputSlots = new ArrayList<>(succ.getOutputSlots());
-        for (OutputSlot s : outputSlots) {
-            succ.removeOutputSlot(s);
-        }
-
-        assert succ.getInputSlots().size() == 0;
-        assert succ.getOutputSlots().size() == 0;
-        assert succ.getPredecessors().size() == 0;
-        assert succ.getSuccessors().size() == 0;
-
-    }
-
-    public void removeFigure(Figure succ) {
-
-        assert this.figures.contains(succ);
-        freeFigure(succ);
-        this.figures.remove(succ);
-    }
-
-    public String getName() {
-        return graph.getName();
-    }
-
-    public InputGraph getGraph() {
-        return graph;
-    }
-
-    public Set<Connection> getConnections() {
-
-        Set<Connection> connections = new HashSet<>();
-        for (Figure f : figures) {
-
-            for (InputSlot s : f.getInputSlots()) {
-                connections.addAll(s.getConnections());
-            }
-        }
-
-        return connections;
-    }
-
-    public Figure getRootFigure() {
-        Properties.PropertySelector<Figure> selector = new Properties.PropertySelector<>(figures);
-        Figure root = selector.selectSingle(new StringPropertyMatcher("name", "Root"));
-        if (root == null) {
-            root = selector.selectSingle(new StringPropertyMatcher("name", "Start"));
-        }
-        if (root == null) {
-            List<Figure> rootFigures = getRootFigures();
-            if (rootFigures.size() > 0) {
-                root = rootFigures.get(0);
-            } else if (figures.size() > 0) {
-                root = figures.get(0);
-            }
-        }
-
-        return root;
-    }
-
-    public void printStatistics() {
-        System.out.println("=============================================================");
-        System.out.println("Diagram statistics");
-
-        List<Figure> tmpFigures = getFigures();
-        Set<Connection> connections = getConnections();
-
-        System.out.println("Number of figures: " + tmpFigures.size());
-        System.out.println("Number of connections: " + connections.size());
-
-        List<Figure> figuresSorted = new ArrayList<>(tmpFigures);
-        Collections.sort(figuresSorted, new Comparator<Figure>() {
-
-            @Override
-            public int compare(Figure a, Figure b) {
-                return b.getPredecessors().size() + b.getSuccessors().size() - a.getPredecessors().size() - a.getSuccessors().size();
-            }
-        });
-
-        final int COUNT = 10;
-        int z = 0;
-        for (Figure f : figuresSorted) {
-
-            z++;
-            int sum = f.getPredecessors().size() + f.getSuccessors().size();
-            System.out.println("#" + z + ": " + f + ", predCount=" + f.getPredecessors().size() + " succCount=" + f.getSuccessors().size());
-            if (sum < COUNT) {
-                break;
-            }
-
-        }
-
-        System.out.println("=============================================================");
-    }
-
-    public List<Figure> getRootFigures() {
-        ArrayList<Figure> rootFigures = new ArrayList<>();
-        for (Figure f : figures) {
-            if (f.getPredecessors().size() == 0) {
-                rootFigures.add(f);
-            }
-        }
-        return rootFigures;
-    }
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/Figure.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,355 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import com.sun.hotspot.igv.data.InputNode;
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.Source;
-import com.sun.hotspot.igv.layout.Vertex;
-import java.awt.*;
-import java.awt.image.BufferedImage;
-import java.util.List;
-import java.util.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Figure extends Properties.Entity implements Source.Provider, Vertex {
-
-    public static final int INSET = 12;
-    public static int SLOT_WIDTH = 12;
-    public static final int OVERLAPPING = 6;
-    public static final int SLOT_START = 4;
-    public static final int SLOT_OFFSET = 8;
-    public static final boolean VERTICAL_LAYOUT = true;
-    protected List<InputSlot> inputSlots;
-    protected List<OutputSlot> outputSlots;
-    private Source source;
-    private Diagram diagram;
-    private Point position;
-    private List<Figure> predecessors;
-    private List<Figure> successors;
-    private Color color;
-    private int id;
-    private String idString;
-    private String[] lines;
-    private int heightCash = -1;
-    private int widthCash = -1;
-
-    public int getHeight() {
-        if (heightCash == -1) {
-            BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
-            Graphics g = image.getGraphics();
-            g.setFont(diagram.getFont().deriveFont(Font.BOLD));
-            FontMetrics metrics = g.getFontMetrics();
-            String nodeText = diagram.getNodeText();
-            heightCash = nodeText.split("\n").length * metrics.getHeight() + INSET;
-        }
-        return heightCash;
-    }
-    
-    public static <T> List<T> getAllBefore(List<T> inputList, T tIn) {
-        List<T> result = new ArrayList<>();
-        for(T t : inputList) {
-            if(t.equals(tIn)) {
-                break;
-            }
-            result.add(t);
-        }
-        return result;
-    }
-    
-    public static int getSlotsWidth(Collection<? extends Slot> slots) {
-        int result = Figure.SLOT_OFFSET;
-        for(Slot s : slots) {
-            result += s.getWidth() + Figure.SLOT_OFFSET;
-        }
-        return result;
-    }
-
-    public int getWidth() {
-        if (widthCash == -1) {
-            int max = 0;
-            BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
-            Graphics g = image.getGraphics();
-            g.setFont(diagram.getFont().deriveFont(Font.BOLD));
-            FontMetrics metrics = g.getFontMetrics();
-            for (String s : getLines()) {
-                int cur = metrics.stringWidth(s);
-                if (cur > max) {
-                    max = cur;
-                }
-            }
-            widthCash = max + INSET;
-            widthCash = Math.max(widthCash, Figure.getSlotsWidth(inputSlots));
-            widthCash = Math.max(widthCash, Figure.getSlotsWidth(outputSlots));
-        }
-        return widthCash;
-    }
-
-    protected Figure(Diagram diagram, int id) {
-        this.diagram = diagram;
-        this.source = new Source();
-        inputSlots = new ArrayList<>(5);
-        outputSlots = new ArrayList<>(1);
-        predecessors = new ArrayList<>(6);
-        successors = new ArrayList<>(6);
-        this.id = id;
-        idString = Integer.toString(id);
-
-        this.position = new Point(0, 0);
-        this.color = Color.WHITE;
-    }
-
-    public int getId() {
-        return id;
-    }
-
-    public void setColor(Color color) {
-        this.color = color;
-    }
-
-    public Color getColor() {
-        return color;
-    }
-
-    public List<Figure> getPredecessors() {
-        return Collections.unmodifiableList(predecessors);
-    }
-
-    public Set<Figure> getPredecessorSet() {
-        Set<Figure> result = new HashSet<>();
-        for (Figure f : getPredecessors()) {
-            result.add(f);
-        }
-        return Collections.unmodifiableSet(result);
-    }
-
-    public Set<Figure> getSuccessorSet() {
-        Set<Figure> result = new HashSet<>();
-        for (Figure f : getSuccessors()) {
-            result.add(f);
-        }
-        return Collections.unmodifiableSet(result);
-    }
-
-    public List<Figure> getSuccessors() {
-        return Collections.unmodifiableList(successors);
-    }
-
-    protected void addPredecessor(Figure f) {
-        this.predecessors.add(f);
-    }
-
-    protected void addSuccessor(Figure f) {
-        this.successors.add(f);
-    }
-
-    protected void removePredecessor(Figure f) {
-        assert predecessors.contains(f);
-        predecessors.remove(f);
-    }
-
-    protected void removeSuccessor(Figure f) {
-        assert successors.contains(f);
-        successors.remove(f);
-    }
-
-    @Override
-    public void setPosition(Point p) {
-        this.position = p;
-    }
-
-    @Override
-    public Point getPosition() {
-        return position;
-    }
-
-    public Diagram getDiagram() {
-        return diagram;
-    }
-
-    @Override
-    public Source getSource() {
-        return source;
-    }
-
-    public InputSlot createInputSlot() {
-        InputSlot slot = new InputSlot(this, -1);
-        inputSlots.add(slot);
-        return slot;
-    }
-
-    public InputSlot createInputSlot(int index) {
-        InputSlot slot = new InputSlot(this, index);
-        inputSlots.add(slot);
-        Collections.sort(inputSlots, Slot.slotIndexComparator);
-        return slot;
-    }
-
-    public void removeSlot(Slot s) {
-
-        assert inputSlots.contains(s) || outputSlots.contains(s);
-
-        List<Connection> connections = new ArrayList<>(s.getConnections());
-        for (Connection c : connections) {
-            c.remove();
-        }
-
-        if (inputSlots.contains(s)) {
-            inputSlots.remove(s);
-        } else if (outputSlots.contains(s)) {
-            outputSlots.remove(s);
-        }
-    }
-
-    public OutputSlot createOutputSlot() {
-        OutputSlot slot = new OutputSlot(this, -1);
-        outputSlots.add(slot);
-        return slot;
-    }
-
-    public OutputSlot createOutputSlot(int index) {
-        OutputSlot slot = new OutputSlot(this, index);
-        outputSlots.add(slot);
-        Collections.sort(outputSlots, Slot.slotIndexComparator);
-        return slot;
-    }
-
-    public List<InputSlot> getInputSlots() {
-        return Collections.unmodifiableList(inputSlots);
-    }
-    
-    public Set<Slot> getSlots() {
-        Set<Slot> result = new HashSet<>();
-        result.addAll(getInputSlots());
-        result.addAll(getOutputSlots());
-        return result;
-    }
-
-    public List<OutputSlot> getOutputSlots() {
-        return Collections.unmodifiableList(outputSlots);
-    }
-
-    void removeInputSlot(InputSlot s) {
-        s.removeAllConnections();
-        inputSlots.remove(s);
-    }
-
-    void removeOutputSlot(OutputSlot s) {
-        s.removeAllConnections();
-        outputSlots.remove(s);
-    }
-
-    public String[] getLines() {
-        if (lines == null) {
-            updateLines();
-        }
-        return lines;
-    }
-
-    public void updateLines() {
-        String[] strings = diagram.getNodeText().split("\n");
-        String[] result = new String[strings.length];
-
-        for (int i = 0; i < strings.length; i++) {
-            result[i] = resolveString(strings[i], getProperties());
-        }
-
-        lines = result;
-    }
-
-    public static final String resolveString(String string, Properties properties) {
-
-        StringBuilder sb = new StringBuilder();
-        boolean inBrackets = false;
-        StringBuilder curIdent = new StringBuilder();
-
-        for (int i = 0; i < string.length(); i++) {
-            char c = string.charAt(i);
-            if (inBrackets) {
-                if (c == ']') {
-                    String value = properties.get(curIdent.toString());
-                    if (value == null) {
-                        value = "";
-                    }
-                    sb.append(value);
-                    inBrackets = false;
-                } else {
-                    curIdent.append(c);
-                }
-            } else {
-                if (c == '[') {
-                    inBrackets = true;
-                    curIdent = new StringBuilder();
-                } else {
-                    sb.append(c);
-                }
-            }
-        }
-
-        return sb.toString();
-    }
-
-    @Override
-    public Dimension getSize() {
-        if (VERTICAL_LAYOUT) {
-            int width = Math.max(getWidth(), Figure.SLOT_WIDTH * (Math.max(inputSlots.size(), outputSlots.size()) + 1));
-            int height = getHeight() + 2 * Figure.SLOT_WIDTH - 2 * Figure.OVERLAPPING;
-            
-            
-            return new Dimension(width, height);
-        } else {
-            int width = getWidth() + 2 * Figure.SLOT_WIDTH - 2*Figure.OVERLAPPING;
-            int height = Figure.SLOT_WIDTH * (Math.max(inputSlots.size(), outputSlots.size()) + 1);
-            return new Dimension(width, height);
-        }
-    }
-
-    @Override
-    public String toString() {
-        return idString;
-    }
-
-    @Override
-    public boolean isRoot() {
-  
-        List<InputNode> sourceNodes = source.getSourceNodes();
-        if (sourceNodes.size() > 0 && sourceNodes.get(0).getProperties().get("name") != null) {
-            return source.getSourceNodes().get(0).getProperties().get("name").equals("Root");
-        } else {
-            return false;
-        }
-    }
-
-    @Override
-    public int compareTo(Vertex f) {
-        return toString().compareTo(f.toString());
-    }
-
-    public Rectangle getBounds() {
-        return new Rectangle(this.getPosition(), new Dimension(this.getWidth(), this.getHeight()));
-    }
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/InputSlot.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import java.awt.Point;
-import java.util.List;
-
-/**
- * 
- * @author Thomas Wuerthinger
- */
-public class InputSlot extends Slot {
-
-    protected InputSlot(Figure figure, int wantedIndex) {
-        super(figure, wantedIndex);
-    }
-
-    @Override
-    public int getPosition() {
-        return getFigure().getInputSlots().indexOf(this);
-    }
-
-    @Override
-    public void setPosition(int position) {
-        List<InputSlot> inputSlots = getFigure().inputSlots;
-        InputSlot s = inputSlots.remove(position);
-        inputSlots.add(position, s);
-    }
-    @Override
-    public Point getRelativePosition() {
-        int gap = getFigure().getWidth() - Figure.getSlotsWidth(getFigure().getInputSlots());
-        double gapRatio = (double)gap / (double)(getFigure().getInputSlots().size() + 1);
-        int gapAmount = (int)((getPosition() + 1)*gapRatio);
-        return new Point(gapAmount + Figure.getSlotsWidth(Figure.getAllBefore(getFigure().getInputSlots(), this)) + getWidth()/2, -Figure.SLOT_START);
-        //return new Point((getFigure().getWidth() / (getFigure().getInputSlots().size() * 2)) * (getPosition() * 2 + 1), -Figure.SLOT_START);
-    }
-
-    @Override
-    public String toString() {
-        return "InputSlot[figure=" + this.getFigure().toString() + ", position=" + getPosition() + "]";
-    }
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/InvertSelector.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class InvertSelector implements Selector {
-
-    private Selector selector;
-
-    public InvertSelector(Selector selector) {
-        this.selector = selector;
-    }
-
-    @Override
-    public List<Figure> selected(Diagram d) {
-
-        List<Figure> result = new ArrayList<>();
-        List<Figure> otherResult = selector.selected(d);
-        for (Figure f : d.getFigures()) {
-            if (!otherResult.contains(f)) {
-                result.add(f);
-            }
-        }
-
-        return result;
-    }
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/MatcherSelector.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.Properties.PropertyMatcher;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class MatcherSelector implements Selector {
-
-    private PropertyMatcher matcher;
-
-    public MatcherSelector(PropertyMatcher matcher) {
-        this.matcher = matcher;
-    }
-
-    @Override
-    public List<Figure> selected(Diagram d) {
-        Properties.PropertySelector<Figure> selector = new Properties.PropertySelector<>(d.getFigures());
-        List<Figure> list = selector.selectMultiple(matcher);
-        return list;
-    }
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/OrSelector.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class OrSelector implements Selector {
-
-    private Selector selector1;
-    private Selector selector2;
-
-    /** Creates a new instance of OrSelector */
-    public OrSelector(Selector s1, Selector s2) {
-        this.selector1 = s1;
-        this.selector2 = s2;
-    }
-
-    @Override
-    public List<Figure> selected(Diagram d) {
-
-        List<Figure> l1 = selector1.selected(d);
-        List<Figure> l2 = selector2.selected(d);
-
-        for (Figure f : l2) {
-            if (!l1.contains(f)) {
-                l1.add(f);
-            }
-        }
-
-        return l1;
-    }
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/OutputSlot.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import java.awt.Point;
-
-/**
- * 
- * @author Thomas Wuerthinger
- */
-public class OutputSlot extends Slot {
-
-    protected OutputSlot(Figure figure, int wantedIndex) {
-        super(figure, wantedIndex);
-    }
-
-    @Override
-    public int getPosition() {
-        return getFigure().getOutputSlots().indexOf(this);
-    }
-
-    @Override
-    public void setPosition(int position) {
-        OutputSlot s = getFigure().outputSlots.remove(position);
-        getFigure().outputSlots.add(position, s);
-    }
-
-    @Override
-    public Point getRelativePosition() {
-        int gap = getFigure().getWidth() - Figure.getSlotsWidth(getFigure().getOutputSlots());
-        if(gap < 0) {
-            gap = 0;
-        }
-        double gapRatio = (double)gap / (double)(getFigure().getOutputSlots().size() + 1);
-        int gapAmount = (int)((getPosition() + 1)*gapRatio);
-        return new Point(gapAmount + Figure.getSlotsWidth(Figure.getAllBefore(getFigure().getOutputSlots(), this)) + getWidth()/2, Figure.SLOT_START);
-    }
-
-    @Override
-    public String toString() {
-        return "OutputSlot[figure=" + this.getFigure().toString() + ", position=" + getPosition() + "]";
-    }
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/PredecessorSelector.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class PredecessorSelector implements Selector {
-
-    private Selector innerSelector;
-
-    public PredecessorSelector(Selector innerSelector) {
-        this.innerSelector = innerSelector;
-    }
-
-    @Override
-    public List<Figure> selected(Diagram d) {
-        List<Figure> inner = innerSelector.selected(d);
-        List<Figure> result = new ArrayList<>();
-        for (Figure f : d.getFigures()) {
-            boolean saved = false;
-            for (Figure f2 : f.getSuccessors()) {
-                if (inner.contains(f2)) {
-                    saved = true;
-                }
-            }
-
-            if (saved) {
-                result.add(f);
-            }
-        }
-
-        return result;
-    }
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/Selector.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface Selector {
-
-    List<Figure> selected(Diagram d);
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/Slot.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import com.sun.hotspot.igv.data.InputNode;
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.Source;
-import com.sun.hotspot.igv.layout.Port;
-import com.sun.hotspot.igv.layout.Vertex;
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.image.BufferedImage;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-/**
- * 
- * @author Thomas Wuerthinger
- */
-public abstract class Slot implements Port, Source.Provider, Properties.Provider {
-
-	private int wantedIndex;
-	private Source source;
-	protected List<Connection> connections;
-	private InputNode associatedNode;
-	private Color color;
-	private String text;
-	private String shortName;
-	private Figure figure;
-
-	protected Slot(Figure figure, int wantedIndex) {
-		this.figure = figure;
-		connections = new ArrayList<>(2);
-		source = new Source();
-		this.wantedIndex = wantedIndex;
-		text = "";
-		shortName = "";
-		assert figure != null;
-	}
-
-    @Override
-	public Properties getProperties() {
-		Properties p = new Properties();
-		if (source.getSourceNodes().size() > 0) {
-			for (InputNode n : source.getSourceNodes()) {
-				p.add(n.getProperties());
-			}
-		} else {
-			p.setProperty("name", "Slot");
-			p.setProperty("figure", figure.getProperties().get("name"));
-			p.setProperty("connectionCount", Integer.toString(connections.size()));
-		}
-		return p;
-	}
-	public static final Comparator<Slot> slotIndexComparator = new Comparator<Slot>() {
-
-        @Override
-		public int compare(Slot o1, Slot o2) {
-			return o1.wantedIndex - o2.wantedIndex;
-		}
-	};
-	public static final Comparator<Slot> slotFigureComparator = new Comparator<Slot>() {
-
-        @Override
-		public int compare(Slot o1, Slot o2) {
-			return o1.figure.getId() - o2.figure.getId();
-		}
-	};
-
-	public InputNode getAssociatedNode() {
-		return associatedNode;
-	}
-
-	public void setAssociatedNode(InputNode node) {
-		associatedNode = node;
-	}
-
-	public int getWidth() {
-		if (shortName == null || shortName.length() <= 1) {
-			return Figure.SLOT_WIDTH;
-		} else {
-			BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
-			Graphics g = image.getGraphics();
-			g.setFont(figure.getDiagram().getSlotFont().deriveFont(Font.BOLD));
-			FontMetrics metrics = g.getFontMetrics();
-			return Math.max(Figure.SLOT_WIDTH, metrics.stringWidth(shortName) + 6);
-		}
-	}
-
-	public int getWantedIndex() {
-		return wantedIndex;
-	}
-
-    @Override
-	public Source getSource() {
-		return source;
-	}
-
-	public String getText() {
-		return text;
-	}
-
-	public void setShortName(String s) {
-		assert s != null;
-//        assert s.length() <= 2;
-		this.shortName = s;
-
-	}
-
-	public String getShortName() {
-		return shortName;
-	}
-
-	public String getToolTipText() {
-		StringBuilder sb = new StringBuilder();
-		sb.append(text);
-
-		for (InputNode n : getSource().getSourceNodes()) {
-			sb.append("Node (ID=" + n.getId() + "): " + n.getProperties().get("name"));
-			sb.append("<br>");
-		}
-
-		return sb.toString();
-	}
-
-	public boolean shouldShowName() {
-		return getShortName() != null && getShortName().length() > 0;
-	}
-
-	public void setText(String s) {
-		if (s == null) {
-			s = "";
-		}
-		this.text = s;
-	}
-
-	public Figure getFigure() {
-		assert figure != null;
-		return figure;
-	}
-
-	public Color getColor() {
-		return this.color;
-	}
-
-	public void setColor(Color c) {
-		color = c;
-	}
-
-	public List<Connection> getConnections() {
-		return Collections.unmodifiableList(connections);
-	}
-
-	public void removeAllConnections() {
-		List<Connection> connectionsCopy = new ArrayList<>(this.connections);
-		for (Connection c : connectionsCopy) {
-			c.remove();
-		}
-	}
-
-    @Override
-	public Vertex getVertex() {
-		return figure;
-	}
-
-	public abstract int getPosition();
-
-	public abstract void setPosition(int position);
-}
-
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/SuccessorSelector.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.graph;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class SuccessorSelector implements Selector {
-
-    private Selector innerSelector;
-
-    public SuccessorSelector(Selector innerSelector) {
-        this.innerSelector = innerSelector;
-    }
-
-    @Override
-    public List<Figure> selected(Diagram d) {
-        List<Figure> inner = innerSelector.selected(d);
-        List<Figure> result = new ArrayList<>();
-        for (Figure f : d.getFigures()) {
-            boolean saved = false;
-            for (Figure f2 : f.getPredecessors()) {
-                if (inner.contains(f2)) {
-                    saved = true;
-                }
-            }
-
-            if (saved) {
-                result.add(f);
-            }
-        }
-
-        return result;
-    }
-}
--- a/visualizer/Graph/src/com/sun/hotspot/igv/graph/services/DiagramProvider.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.graph.services;
-
-import com.sun.hotspot.igv.data.ChangedEvent;
-import com.sun.hotspot.igv.graph.Diagram;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface DiagramProvider {
-    Diagram getDiagram();
-    ChangedEvent<DiagramProvider> getChangedEvent();
-
-}
--- a/visualizer/HierarchicalLayout/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.hierarchicallayout" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.hierarchicallayout.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/HierarchicalLayout/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.hierarchicallayout
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/hierarchicallayout/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/HierarchicalLayout/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.hierarchicallayout-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/HierarchicalLayout/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=de087df9
-build.xml.script.CRC32=98977c36
-build.xml.stylesheet.CRC32=79c3b980
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=de087df9
-nbproject/build-impl.xml.script.CRC32=0d734625
-nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
--- a/visualizer/HierarchicalLayout/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/HierarchicalLayout/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/HierarchicalLayout/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.hierarchicallayout</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.layout</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.sun.hotspot.igv.hierarchicallayout</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/HierarchicalLayout/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=HierarchicalLayout
--- a/visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/Edge.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.hierarchicallayout;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Edge<N, E> {
-
-    private E data;
-    private Node<N, E> source;
-    private Node<N, E> dest;
-
-    protected Edge(Graph<N, E> graph, Node<N, E> source, Node<N, E> dest, E data) {
-        setData(data);
-        this.source = source;
-        this.dest = dest;
-        assert source != null;
-        assert dest != null;
-        assert source.getGraph() == dest.getGraph();
-        assert source.getGraph() != null;
-        assert dest.getGraph() != null;
-    }
-
-    public Node<N, E> getSource() {
-        return source;
-    }
-
-    public Node<N, E> getDest() {
-        return dest;
-    }
-
-    public E getData() {
-        return data;
-    }
-
-    public void setData(E e) {
-        data = e;
-    }
-
-    public void remove() {
-        source.getGraph().removeEdge(this, null);
-    }
-
-    public boolean isSelfLoop() {
-        return source == dest;
-    }
-
-    public void reverse() {
-
-        // Remove from current source / dest
-        source.removeOutEdge(this);
-        dest.removeInEdge(this);
-
-        Node<N, E> tmp = source;
-        source = dest;
-        dest = tmp;
-
-        // Add to new source / dest
-        source.addOutEdge(this);
-        dest.addInEdge(this);
-    }
-
-    @Override
-    public String toString() {
-        return "Edge (" + source + " -- " + dest + "): " + data;
-    }
-}
--- a/visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/Graph.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,292 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.hierarchicallayout;
-
-import java.util.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Graph<N, E> {
-
-    private HashMap<Object, Node<N, E>> nodes;
-    private HashMap<Object, Edge<N, E>> edges;
-    private List<Node<N, E>> nodeList;
-
-    public Graph() {
-        nodes = new HashMap<>();
-        edges = new HashMap<>();
-        nodeList = new ArrayList<>();
-    }
-
-    public Node<N, E> createNode(N data, Object key) {
-        Node<N, E> n = new Node<>(this, data);
-        assert key == null || !nodes.containsKey(key);
-        if (key != null) {
-            nodes.put(key, n);
-        }
-        nodeList.add(n);
-        return n;
-    }
-
-    public Edge<N, E> createEdge(Node<N, E> source, Node<N, E> dest, E data, Object key) {
-        Edge<N, E> e = new Edge<>(this, source, dest, data);
-        source.addOutEdge(e);
-        dest.addInEdge(e);
-        if (key != null) {
-            edges.put(key, e);
-        }
-        return e;
-    }
-
-    public Node<N, E> getNode(Object key) {
-        return nodes.get(key);
-    }
-
-    public Edge<N, E> getEdge(Object key) {
-        return edges.get(key);
-    }
-
-    public Collection<Edge<N, E>> getEdges() {
-        return Collections.unmodifiableCollection(edges.values());
-    }
-
-    public Collection<Node<N, E>> getNodes() {
-        return Collections.unmodifiableList(nodeList);
-    }
-
-    public void removeEdge(Edge<N, E> e, Object key) {
-        assert key == null || edges.containsKey(key);
-        if (key != null) {
-            edges.remove(key);
-        }
-        e.getSource().removeOutEdge(e);
-        e.getDest().removeInEdge(e);
-    }
-
-    public class DFSTraversalVisitor {
-
-        public void visitNode(Node<N, E> n) {
-        }
-
-        public boolean visitEdge(Edge<N, E> e, boolean backEdge) {
-            return true;
-        }
-    }
-
-    public class BFSTraversalVisitor {
-
-        public void visitNode(Node<N, E> n, int depth) {
-        }
-    }
-
-    public List<Node<N, E>> getNodesWithInDegree(int x) {
-        return getNodesWithInDegree(x, true);
-    }
-
-    public List<Node<N, E>> getNodesWithInDegree(int x, boolean countSelfLoops) {
-
-        List<Node<N, E>> result = new ArrayList<>();
-        for (Node<N, E> n : getNodes()) {
-            if (n.getInDegree(countSelfLoops) == x) {
-                result.add(n);
-            }
-        }
-
-        return result;
-
-    }
-
-    private void markReachable(Node<N, E> startingNode) {
-        ArrayList<Node<N, E>> arr = new ArrayList<>();
-        arr.add(startingNode);
-        for (Node<N, E> n : getNodes()) {
-            n.setReachable(false);
-        }
-        traverseDFS(arr, new DFSTraversalVisitor() {
-
-            @Override
-            public void visitNode(Node<N, E> n) {
-                n.setReachable(true);
-            }
-        });
-    }
-
-    public void traverseBFS(Node<N, E> startingNode, BFSTraversalVisitor tv, boolean longestPath) {
-
-        if (longestPath) {
-            markReachable(startingNode);
-        }
-
-        for (Node<N, E> n : getNodes()) {
-            n.setVisited(false);
-            n.setActive(false);
-        }
-
-        Queue<Node<N, E>> queue = new LinkedList<>();
-        queue.add(startingNode);
-        startingNode.setVisited(true);
-        int layer = 0;
-        Node<N, E> lastOfLayer = startingNode;
-        Node<N, E> lastAdded = null;
-
-        while (!queue.isEmpty()) {
-
-            Node<N, E> current = queue.poll();
-            tv.visitNode(current, layer);
-            current.setActive(false);
-
-
-            for (Edge<N, E> e : current.getOutEdges()) {
-                if (!e.getDest().isVisited()) {
-
-                    boolean allow = true;
-                    if (longestPath) {
-                        for (Node<N, E> pred : e.getDest().getPredecessors()) {
-                            if ((!pred.isVisited() || pred.isActive()) && pred.isReachable()) {
-                                allow = false;
-                                break;
-                            }
-                        }
-                    }
-
-                    if (allow) {
-                        queue.offer(e.getDest());
-                        lastAdded = e.getDest();
-                        e.getDest().setVisited(true);
-                        e.getDest().setActive(true);
-                    }
-                }
-            }
-
-            if (current == lastOfLayer && !queue.isEmpty()) {
-                lastOfLayer = lastAdded;
-                layer++;
-            }
-        }
-    }
-
-    public void traverseDFS(DFSTraversalVisitor tv) {
-        traverseDFS(getNodes(), tv);
-    }
-
-    public void traverseDFS(Collection<Node<N, E>> startingNodes, DFSTraversalVisitor tv) {
-
-        for (Node<N, E> n : getNodes()) {
-            n.setVisited(false);
-            n.setActive(false);
-        }
-
-        boolean result = false;
-        for (Node<N, E> n : startingNodes) {
-            traverse(tv, n);
-        }
-    }
-
-    private void traverse(DFSTraversalVisitor tv, Node<N, E> n) {
-
-        if (!n.isVisited()) {
-            n.setVisited(true);
-            n.setActive(true);
-            tv.visitNode(n);
-
-            for (Edge<N, E> e : n.getOutEdges()) {
-
-                Node<N, E> next = e.getDest();
-                if (next.isActive()) {
-                    tv.visitEdge(e, true);
-                } else {
-                    if (tv.visitEdge(e, false)) {
-                        traverse(tv, next);
-                    }
-                }
-            }
-
-            n.setActive(false);
-        }
-
-    }
-
-    public boolean hasCycles() {
-
-        for (Node<N, E> n : getNodes()) {
-            n.setVisited(false);
-            n.setActive(false);
-        }
-
-        boolean result = false;
-        for (Node<N, E> n : getNodes()) {
-            result |= checkCycles(n);
-            if (result) {
-                break;
-            }
-        }
-        return result;
-    }
-
-    private boolean checkCycles(Node<N, E> n) {
-
-        if (n.isActive()) {
-            return true;
-        }
-
-        if (!n.isVisited()) {
-
-            n.setVisited(true);
-            n.setActive(true);
-
-            for (Node<N, E> succ : n.getSuccessors()) {
-                if (checkCycles(succ)) {
-                    return true;
-                }
-            }
-
-            n.setActive(false);
-
-        }
-
-        return false;
-    }
-
-    @Override
-    public String toString() {
-
-        StringBuilder s = new StringBuilder();
-        s.append("Nodes: ");
-        for (Node<N, E> n : getNodes()) {
-            s.append(n.toString());
-            s.append("\n");
-        }
-
-        s.append("Edges: ");
-
-        for (Edge<N, E> e : getEdges()) {
-            s.append(e.toString());
-            s.append("\n");
-        }
-
-        return s.toString();
-    }
-}
--- a/visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/HierarchicalLayoutManager.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1749 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.hierarchicallayout;
-
-import com.sun.hotspot.igv.layout.LayoutGraph;
-import com.sun.hotspot.igv.layout.LayoutManager;
-import com.sun.hotspot.igv.layout.Link;
-import com.sun.hotspot.igv.layout.Vertex;
-import java.awt.Dimension;
-import java.awt.Point;
-import java.util.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class HierarchicalLayoutManager implements LayoutManager {
-
-    public static final boolean TRACE = false;
-    public static final boolean CHECK = false;
-    public static final int SWEEP_ITERATIONS = 1;
-    public static final int CROSSING_ITERATIONS = 2;
-    public static final int DUMMY_HEIGHT = 1;
-    public static final int DUMMY_WIDTH = 1;
-    public static final int X_OFFSET = 9;
-    public static final int LAYER_OFFSET = 30;
-    public static final int MAX_LAYER_LENGTH = -1;
-    public static final int MIN_LAYER_DIFFERENCE = 1;
-    public static final int VIP_BONUS = 10;
-
-    public enum Combine {
-
-        NONE,
-        SAME_INPUTS,
-        SAME_OUTPUTS
-    }
-    // Options
-    private Combine combine;
-    private int dummyWidth;
-    private int dummyHeight;
-    private int xOffset;
-    private int layerOffset;
-    private int maxLayerLength;
-    private int minLayerDifference;
-    // Algorithm global datastructures
-    private Set<Link> reversedLinks;
-    private List<LayoutNode> nodes;
-    private HashMap<Vertex, LayoutNode> vertexToLayoutNode;
-    private HashMap<Link, List<Point>> reversedLinkStartPoints;
-    private HashMap<Link, List<Point>> reversedLinkEndPoints;
-    private HashMap<LayoutEdge, LayoutEdge> bottomEdgeHash;
-    private HashMap<Link, List<Point>> splitStartPoints;
-    private HashMap<Link, List<Point>> splitEndPoints;
-    private LayoutGraph graph;
-    private List<LayoutNode>[] layers;
-    private int layerCount;
-    private Set<? extends Vertex> firstLayerHint;
-    private Set<? extends Vertex> lastLayerHint;
-    private Set<? extends Link> importantLinks;
-    private Set<Link> linksToFollow;
-
-    private class LayoutNode {
-
-        public int x;
-        public int y;
-        public int width;
-        public int height;
-        public int layer = -1;
-        public int xOffset;
-        public int yOffset;
-        public int bottomYOffset;
-        public Vertex vertex; // Only used for non-dummy nodes, otherwise null
-
-        public List<LayoutEdge> preds = new ArrayList<>();
-        public List<LayoutEdge> succs = new ArrayList<>();
-        public HashMap<Integer, Integer> outOffsets = new HashMap<>();
-        public HashMap<Integer, Integer> inOffsets = new HashMap<>();
-        public int pos = -1; // Position within layer
-
-        public int crossingNumber;
-
-        @Override
-        public String toString() {
-            return "Node " + vertex;
-        }
-    }
-
-    private class LayoutEdge {
-
-        public LayoutNode from;
-        public LayoutNode to;
-        public int relativeFrom;
-        public int relativeTo;
-        public Link link;
-        public boolean vip;
-    }
-
-    private abstract class AlgorithmPart {
-
-        public void start() {
-            if (CHECK) {
-                preCheck();
-            }
-
-            long start = 0;
-            if (TRACE) {
-                System.out.println("##################################################");
-                System.out.println("Starting part " + this.getClass().getName());
-                start = System.currentTimeMillis();
-            }
-            run();
-            if (TRACE) {
-                System.out.println("Timing for " + this.getClass().getName() + " is " + (System.currentTimeMillis() - start));
-                printStatistics();
-            }
-
-            if (CHECK) {
-                postCheck();
-            }
-        }
-
-        protected abstract void run();
-
-        protected void printStatistics() {
-        }
-
-        protected void postCheck() {
-        }
-
-        protected void preCheck() {
-        }
-    }
-
-    public HierarchicalLayoutManager() {
-        this(Combine.NONE);
-    }
-
-    public HierarchicalLayoutManager(Combine b) {
-        this.combine = b;
-        this.dummyWidth = DUMMY_WIDTH;
-        this.dummyHeight = DUMMY_HEIGHT;
-        this.xOffset = X_OFFSET;
-        this.layerOffset = LAYER_OFFSET;
-        this.maxLayerLength = MAX_LAYER_LENGTH;
-        this.minLayerDifference = MIN_LAYER_DIFFERENCE;
-        this.linksToFollow = new HashSet<>();
-    }
-
-    public int getMaxLayerLength() {
-        return maxLayerLength;
-    }
-
-    public void setMaxLayerLength(int v) {
-        maxLayerLength = v;
-    }
-
-    public void setMinLayerDifference(int v) {
-        minLayerDifference = v;
-    }
-
-    @Override
-    public void doLayout(LayoutGraph graph) {
-        doLayout(graph, new HashSet<Vertex>(), new HashSet<Vertex>(), new HashSet<Link>());
-
-    }
-
-    @Override
-    public void doLayout(LayoutGraph graph, Set<? extends Vertex> firstLayerHint, Set<? extends Vertex> lastLayerHint, Set<? extends Link> importantLinks) {
-
-        this.importantLinks = importantLinks;
-        this.graph = graph;
-        this.firstLayerHint = firstLayerHint;
-        this.lastLayerHint = lastLayerHint;
-
-        vertexToLayoutNode = new HashMap<>();
-        reversedLinks = new HashSet<>();
-        reversedLinkStartPoints = new HashMap<>();
-        reversedLinkEndPoints = new HashMap<>();
-        bottomEdgeHash = new HashMap<>();
-        nodes = new ArrayList<>();
-        splitStartPoints = new HashMap<>();
-        splitEndPoints = new HashMap<>();
-
-        // #############################################################
-        // Step 1: Build up data structure
-        new BuildDatastructure().start();
-
-        // #############################################################
-        // STEP 2: Reverse edges, handle backedges
-        new ReverseEdges().start();
-
-        for (LayoutNode n : nodes) {
-            ArrayList<LayoutEdge> tmpArr = new ArrayList<>();
-            for (LayoutEdge e : n.succs) {
-                if (importantLinks.contains(e.link)) {
-                    tmpArr.add(e);
-                }
-            }
-
-            for (LayoutEdge e : tmpArr) {
-                //System.out.println("Removed " + e);
-                e.from.succs.remove(e);
-                e.to.preds.remove(e);
-            }
-        }
-
-        // #############################################################
-        // STEP 3: Assign layers
-        new AssignLayers().start();
-
-        // #############################################################
-        // STEP 4: Create dummy nodes
-        new CreateDummyNodes().start();
-
-        // #############################################################
-        // STEP 5: Crossing Reduction
-        new CrossingReduction().start();
-
-        // #############################################################
-        // STEP 7: Assign X coordinates
-        new AssignXCoordinates().start();
-
-        // #############################################################
-        // STEP 6: Assign Y coordinates
-        new AssignYCoordinates().start();
-
-        // #############################################################
-        // STEP 8: Write back to interface
-        new WriteResult().start();
-    }
-
-    private class WriteResult extends AlgorithmPart {
-
-        private int pointCount;
-
-        @Override
-        protected void run() {
-
-            HashMap<Vertex, Point> vertexPositions = new HashMap<>();
-            HashMap<Link, List<Point>> linkPositions = new HashMap<>();
-            for (Vertex v : graph.getVertices()) {
-                LayoutNode n = vertexToLayoutNode.get(v);
-                assert !vertexPositions.containsKey(v);
-                vertexPositions.put(v, new Point(n.x + n.xOffset, n.y + n.yOffset));
-            }
-
-            for (LayoutNode n : nodes) {
-
-                for (LayoutEdge e : n.preds) {
-                    if (e.link != null) {
-                        ArrayList<Point> points = new ArrayList<>();
-
-                        Point p = new Point(e.to.x + e.relativeTo, e.to.y + e.to.yOffset + e.link.getTo().getRelativePosition().y);
-                        points.add(p);
-                        if (e.to.inOffsets.containsKey(e.relativeTo)) {
-                            points.add(new Point(p.x, p.y + e.to.inOffsets.get(e.relativeTo) + e.link.getTo().getRelativePosition().y));
-                        }
-
-                        LayoutNode cur = e.from;
-                        LayoutNode other = e.to;
-                        LayoutEdge curEdge = e;
-                        while (cur.vertex == null && cur.preds.size() != 0) {
-                            if (points.size() > 1 && points.get(points.size() - 1).x == cur.x + cur.width / 2 && points.get(points.size() - 2).x == cur.x + cur.width / 2) {
-                                points.remove(points.size() - 1);
-                            }
-                            points.add(new Point(cur.x + cur.width / 2, cur.y + cur.height));
-                            if (points.size() > 1 && points.get(points.size() - 1).x == cur.x + cur.width / 2 && points.get(points.size() - 2).x == cur.x + cur.width / 2) {
-                                points.remove(points.size() - 1);
-                            }
-                            points.add(new Point(cur.x + cur.width / 2, cur.y));
-                            assert cur.preds.size() == 1;
-                            curEdge = cur.preds.get(0);
-                            cur = curEdge.from;
-                        }
-
-                        p = new Point(cur.x + curEdge.relativeFrom, cur.y + cur.height - cur.bottomYOffset + (curEdge.link == null ? 0 : curEdge.link.getFrom().getRelativePosition().y));
-                        if (curEdge.from.outOffsets.containsKey(curEdge.relativeFrom)) {
-                            points.add(new Point(p.x, p.y + curEdge.from.outOffsets.get(curEdge.relativeFrom) + (curEdge.link == null ? 0 : curEdge.link.getFrom().getRelativePosition().y)));
-                        }
-                        points.add(p);
-
-                        Collections.reverse(points);
-
-
-
-                        if (cur.vertex == null && cur.preds.size() == 0) {
-
-                            if (reversedLinkEndPoints.containsKey(e.link)) {
-                                for (Point p1 : reversedLinkEndPoints.get(e.link)) {
-                                    points.add(new Point(p1.x + e.to.x, p1.y + e.to.y));
-                                }
-                            }
-
-                            if (splitStartPoints.containsKey(e.link)) {
-                                points.add(0, null);
-                                points.addAll(0, splitStartPoints.get(e.link));
-
-                                //checkPoints(points);
-                                if (reversedLinks.contains(e.link)) {
-                                    Collections.reverse(points);
-                                }
-                                assert !linkPositions.containsKey(e.link);
-                                linkPositions.put(e.link, points);
-                            } else {
-                                splitEndPoints.put(e.link, points);
-                            }
-
-                        } else {
-                            if (reversedLinks.contains(e.link)) {
-                                Collections.reverse(points);
-                            }
-                            if (reversedLinkStartPoints.containsKey(e.link)) {
-                                for (Point p1 : reversedLinkStartPoints.get(e.link)) {
-                                    points.add(new Point(p1.x + cur.x, p1.y + cur.y));
-                                }
-                            }
-
-                            if (reversedLinkEndPoints.containsKey(e.link)) {
-                                for (Point p1 : reversedLinkEndPoints.get(e.link)) {
-                                    points.add(0, new Point(p1.x + other.x, p1.y + other.y));
-                                }
-                            }
-
-                            assert !linkPositions.containsKey(e.link);
-                            linkPositions.put(e.link, points);
-                        }
-                        pointCount += points.size();
-
-                        // No longer needed!
-                        e.link = null;
-                    }
-                }
-
-                for (LayoutEdge e : n.succs) {
-                    if (e.link != null) {
-                        ArrayList<Point> points = new ArrayList<>();
-                        Point p = new Point(e.from.x + e.relativeFrom, e.from.y + e.from.height - e.from.bottomYOffset + e.link.getFrom().getRelativePosition().y);
-                        points.add(p);
-                        if (e.from.outOffsets.containsKey(e.relativeFrom)) {
-                            points.add(new Point(p.x, p.y + e.from.outOffsets.get(e.relativeFrom) + e.link.getFrom().getRelativePosition().y));
-                        }
-
-                        LayoutNode cur = e.to;
-                        LayoutNode other = e.from;
-                        LayoutEdge curEdge = e;
-                        while (cur.vertex == null && cur.succs.size() != 0) {
-                            if (points.size() > 1 && points.get(points.size() - 1).x == cur.x + cur.width / 2 && points.get(points.size() - 2).x == cur.x + cur.width / 2) {
-                                points.remove(points.size() - 1);
-                            }
-                            points.add(new Point(cur.x + cur.width / 2, cur.y));
-                            if (points.size() > 1 && points.get(points.size() - 1).x == cur.x + cur.width / 2 && points.get(points.size() - 2).x == cur.x + cur.width / 2) {
-                                points.remove(points.size() - 1);
-                            }
-                            points.add(new Point(cur.x + cur.width / 2, cur.y + cur.height));
-                            if (cur.succs.size() == 0) {
-                                break;
-                            }
-                            assert cur.succs.size() == 1;
-                            curEdge = cur.succs.get(0);
-                            cur = curEdge.to;
-                        }
-
-
-                        p = new Point(cur.x + curEdge.relativeTo, cur.y + cur.yOffset + ((curEdge.link == null) ? 0 : curEdge.link.getTo().getRelativePosition().y));
-                        points.add(p);
-                        if (curEdge.to.inOffsets.containsKey(curEdge.relativeTo)) {
-                            points.add(new Point(p.x, p.y + curEdge.to.inOffsets.get(curEdge.relativeTo) + ((curEdge.link == null) ? 0 : curEdge.link.getTo().getRelativePosition().y)));
-                        }
-
-
-                        if (cur.succs.size() == 0 && cur.vertex == null) {
-                            if (reversedLinkStartPoints.containsKey(e.link)) {
-                                for (Point p1 : reversedLinkStartPoints.get(e.link)) {
-                                    points.add(0, new Point(p1.x + other.x, p1.y + other.y));
-                                }
-                            }
-
-                            if (splitEndPoints.containsKey(e.link)) {
-                                points.add(null);
-                                points.addAll(splitEndPoints.get(e.link));
-
-                                //checkPoints(points);
-                                if (reversedLinks.contains(e.link)) {
-                                    Collections.reverse(points);
-                                }
-                                assert !linkPositions.containsKey(e.link);
-                                linkPositions.put(e.link, points);
-                            } else {
-                                splitStartPoints.put(e.link, points);
-                            }
-                        } else {
-
-                            if (reversedLinkStartPoints.containsKey(e.link)) {
-                                for (Point p1 : reversedLinkStartPoints.get(e.link)) {
-                                    points.add(0, new Point(p1.x + other.x, p1.y + other.y));
-                                }
-                            }
-                            if (reversedLinkEndPoints.containsKey(e.link)) {
-                                for (Point p1 : reversedLinkEndPoints.get(e.link)) {
-                                    points.add(new Point(p1.x + cur.x, p1.y + cur.y));
-                                }
-                            }
-                            if (reversedLinks.contains(e.link)) {
-                                Collections.reverse(points);
-                            }
-                            //checkPoints(points);
-                            assert !linkPositions.containsKey(e.link);
-                            linkPositions.put(e.link, points);
-                        }
-
-                        pointCount += points.size();
-                        e.link = null;
-                    }
-                }
-            }
-
-            int minX = Integer.MAX_VALUE;
-            int minY = Integer.MAX_VALUE;
-            for (Vertex v : vertexPositions.keySet()) {
-                Point p = vertexPositions.get(v);
-                minX = Math.min(minX, p.x);
-                minY = Math.min(minY, p.y);
-            }
-
-            for (Link l : linkPositions.keySet()) {
-                List<Point> points = linkPositions.get(l);
-                for (Point p : points) {
-                    if (p != null) {
-                        minX = Math.min(minX, p.x);
-                        minY = Math.min(minY, p.y);
-                    }
-                }
-
-            }
-
-            for (Vertex v : vertexPositions.keySet()) {
-                Point p = vertexPositions.get(v);
-                p.x -= minX;
-                p.y -= minY;
-                v.setPosition(p);
-            }
-
-            for (Link l : linkPositions.keySet()) {
-                List<Point> points = linkPositions.get(l);
-                for (Point p : points) {
-                    if (p != null) {
-                        p.x -= minX;
-                        p.y -= minY;
-                    }
-                }
-                l.setControlPoints(points);
-
-            }
-        }
-
-        @Override
-        protected void printStatistics() {
-            System.out.println("Number of nodes: " + nodes.size());
-            int edgeCount = 0;
-            for (LayoutNode n : nodes) {
-                edgeCount += n.succs.size();
-            }
-            System.out.println("Number of edges: " + edgeCount);
-            System.out.println("Number of points: " + pointCount);
-        }
-    }
-
-    private static class Segment {
-
-        public float d;
-        public int orderNumber = -1;
-        public ArrayList<LayoutNode> nodes = new ArrayList<>();
-        public HashSet<Segment> succs = new HashSet<>();
-        public HashSet<Segment> preds = new HashSet<>();
-        public Region region;
-    }
-    private static final Comparator<Segment> segmentComparator = new Comparator<Segment>() {
-
-        @Override
-        public int compare(Segment s1, Segment s2) {
-            return s1.orderNumber - s2.orderNumber;
-        }
-    };
-
-    private static class Region {
-
-        public float d;
-        public int minOrderNumber;
-        public SortedSet<Segment> segments = new TreeSet<>(segmentComparator);
-        public HashSet<Region> succs = new HashSet<>(4);
-        public HashSet<Region> preds = new HashSet<>(4);
-    }
-    private static final Comparator<Region> regionComparator = new Comparator<Region>() {
-
-        @Override
-        public int compare(Region r1, Region r2) {
-            return r1.minOrderNumber - r2.minOrderNumber;
-        }
-    };
-    private static final Comparator<LayoutNode> nodePositionComparator = new Comparator<LayoutNode>() {
-
-        @Override
-        public int compare(LayoutNode n1, LayoutNode n2) {
-            return n1.pos - n2.pos;
-        }
-    };
-    private static final Comparator<LayoutNode> nodeProcessingDownComparator = new Comparator<LayoutNode>() {
-        @Override
-        public int compare(LayoutNode n1, LayoutNode n2) {
-            if (n1.vertex == null) {
-                if (n2.vertex == null) {
-                    return 0;
-                }
-                return -1;
-            }
-            if (n2.vertex == null) {
-                return 1;
-            }
-            return n1.preds.size() - n2.preds.size();
-        }
-    };
-    private static final Comparator<LayoutNode> nodeProcessingUpComparator = new Comparator<LayoutNode>() {
-
-        @Override
-        public int compare(LayoutNode n1, LayoutNode n2) {
-            if (n1.vertex == null) {
-                if (n2.vertex == null) {
-                    return 0;
-                }
-                return -1;
-            }
-            if (n2.vertex == null) {
-                return 1;
-            }
-            return n1.succs.size() - n2.succs.size();
-        }
-    };
-
-    private class AssignXCoordinates extends AlgorithmPart {
-
-        private ArrayList<Integer>[] space;
-        private ArrayList<LayoutNode>[] downProcessingOrder;
-        private ArrayList<LayoutNode>[] upProcessingOrder;
-
-        private void initialPositions() {
-            for (LayoutNode n : nodes) {
-                n.x = space[n.layer].get(n.pos);
-            }
-        }
-        
-        @SuppressWarnings("unchecked")
-        private void createArrays() {
-            space = new ArrayList[layers.length];
-            downProcessingOrder = new ArrayList[layers.length];
-            upProcessingOrder = new ArrayList[layers.length];
-        }
-
-        @Override
-        protected void run() {
-            createArrays();
-
-            for (int i = 0; i < layers.length; i++) {
-                space[i] = new ArrayList<>();
-                downProcessingOrder[i] = new ArrayList<>();
-                upProcessingOrder[i] = new ArrayList<>();
-
-                int curX = 0;
-                for (LayoutNode n : layers[i]) {
-                    space[i].add(curX);
-                    curX += n.width + xOffset;
-                    downProcessingOrder[i].add(n);
-                    upProcessingOrder[i].add(n);
-                }
-
-                Collections.sort(downProcessingOrder[i], nodeProcessingDownComparator);
-                Collections.sort(upProcessingOrder[i], nodeProcessingUpComparator);
-            }
-
-            initialPositions();
-            for (int i = 0; i < SWEEP_ITERATIONS; i++) {
-                sweepDown();
-                sweepUp();
-            }
- 
-            sweepDown();
-            //for (int i = 0; i < SWEEP_ITERATIONS; i++) {
-            //    doubleSweep();
-            //}            
-        }
-
-        private int calculateOptimalDown(LayoutNode n) {
-            int size = n.preds.size();
-            if (size == 0) {
-                return n.x;
-            }
-            int[] values = new int[size];
-            for (int i = 0; i < size; i++) {
-                LayoutEdge e = n.preds.get(i);
-                values[i] = e.from.x + e.relativeFrom - e.relativeTo;
-                if (e.vip) {
-                    return values[i];
-                }
-            }
-            return median(values);
-        }
-
-        private int calculateOptimalBoth(LayoutNode n) {
-            if (n.preds.size() == n.succs.size()) {
-                return n.x;
-            }
-            
-            int[] values = new int[n.preds.size() + n.succs.size()];
-            int i = 0;
-
-            for (LayoutEdge e : n.preds) {
-                values[i] = e.from.x + e.relativeFrom - e.relativeTo;
-                i++;
-            }
-
-            for (LayoutEdge e : n.succs) {
-                values[i] = e.to.x + e.relativeTo - e.relativeFrom;
-                i++;
-            }
-
-            return median(values);
-        }
-
-        private int calculateOptimalUp(LayoutNode n) {
-            int size = n.succs.size();
-            if (size == 0) {
-                return n.x;
-            }
-            int[] values = new int[size];
-            for (int i = 0; i < size; i++) {
-                LayoutEdge e = n.succs.get(i);
-                values[i] = e.to.x + e.relativeTo - e.relativeFrom;
-                if (e.vip) {
-                    return values[i];
-                }
-            }
-            return median(values);
-        }
-
-        private int median(int[] values) {
-            Arrays.sort(values);
-            if (values.length % 2 == 0) {
-                return (values[values.length / 2 - 1] + values[values.length / 2]) / 2;
-            } else {
-                return values[values.length / 2];
-            }
-        }
-
-        private void sweepUp() {
-            for (int i = layers.length - 1; i >= 0; i--) {
-                NodeRow r = new NodeRow(space[i]);
-                for (LayoutNode n : upProcessingOrder[i]) {
-                    int optimal = calculateOptimalUp(n);
-                    r.insert(n, optimal);
-                }
-            }
-        }
-
-        private void doubleSweep() {
-            for (int i = layers.length - 2; i >= 0; i--) {
-                NodeRow r = new NodeRow(space[i]);
-                for (LayoutNode n : upProcessingOrder[i]) {
-                    int optimal = calculateOptimalBoth(n);
-                    r.insert(n, optimal);
-                }
-            }
-        }
-
-        private void sweepDown() {
-            for (int i = 1; i < layers.length; i++) {
-                NodeRow r = new NodeRow(space[i]);
-                for (LayoutNode n : downProcessingOrder[i]) {
-                    int optimal = calculateOptimalDown(n);
-                    r.insert(n, optimal);
-                }
-            }
-        }
-    }
-
-    private static class NodeRow {
-
-        private TreeSet<LayoutNode> treeSet;
-        private ArrayList<Integer> space;
-
-        public NodeRow(ArrayList<Integer> space) {
-            treeSet = new TreeSet<>(nodePositionComparator);
-            this.space = space;
-        }
-
-        public int offset(LayoutNode n1, LayoutNode n2) {
-            int v1 = space.get(n1.pos) + n1.width;
-            int v2 = space.get(n2.pos);
-            return v2 - v1;
-        }
-
-        public void insert(LayoutNode n, int pos) {
-
-            SortedSet<LayoutNode> headSet = treeSet.headSet(n);
-
-            LayoutNode leftNeighbor = null;
-            int minX = Integer.MIN_VALUE;
-            if (!headSet.isEmpty()) {
-                leftNeighbor = headSet.last();
-                minX = leftNeighbor.x + leftNeighbor.width + offset(leftNeighbor, n);
-            }
-
-            if (pos < minX) {
-                n.x = minX;
-            } else {
-
-                LayoutNode rightNeighbor = null;
-                SortedSet<LayoutNode> tailSet = treeSet.tailSet(n);
-                int maxX = Integer.MAX_VALUE;
-                if (!tailSet.isEmpty()) {
-                    rightNeighbor = tailSet.first();
-                    maxX = rightNeighbor.x - offset(n, rightNeighbor) - n.width;
-                }
-
-                if (pos > maxX) {
-                    n.x = maxX;
-                } else {
-                    n.x = pos;
-                }
-
-                assert minX <= maxX;
-            }
-
-            treeSet.add(n);
-        }
-    }
-    private static Comparator<LayoutNode> crossingNodeComparator = new Comparator<LayoutNode>() {
-
-        @Override
-        public int compare(LayoutNode n1, LayoutNode n2) {
-            return n1.crossingNumber - n2.crossingNumber;
-        }
-    };
-
-    private class CrossingReduction extends AlgorithmPart {
-
-        @Override
-        public void preCheck() {
-            for (LayoutNode n : nodes) {
-                assert n.layer < layerCount;
-            }
-        }
-        
-        @SuppressWarnings("unchecked")
-        private void createLayers() {
-            layers = new List[layerCount];
-
-            for (int i = 0; i < layerCount; i++) {
-                layers[i] = new ArrayList<>();
-            }
-        }
-
-        @Override
-        protected void run() {
-            createLayers();
-
-            // Generate initial ordering
-            HashSet<LayoutNode> visited = new HashSet<>();
-            for (LayoutNode n : nodes) {
-                if (n.layer == 0) {
-                    layers[0].add(n);
-                    visited.add(n);
-                } else if (n.preds.size() == 0) {
-                    layers[n.layer].add(n);
-                    visited.add(n);
-                }
-            }
-
-            for (int i = 0; i < layers.length - 1; i++) {
-                for (LayoutNode n : layers[i]) {
-                    for (LayoutEdge e : n.succs) {
-                        if (!visited.contains(e.to)) {
-                            visited.add(e.to);
-                            layers[i + 1].add(e.to);
-                        }
-                    }
-                }
-            }
-
-
-            updatePositions();
-
-            initX();
-
-            // Optimize
-            for (int i = 0; i < CROSSING_ITERATIONS; i++) {
-                downSweep();
-                upSweep();
-            }
-            if (reversedLinks.isEmpty()) {
-                // This graph seems to be a tree or forest.
-                // A final down-sweep will usually give us a better layout.
-                downSweep();
-            }
-        }
-
-        private void initX() {
-
-            for (int i = 0; i < layers.length; i++) {
-                updateXOfLayer(i);
-            }
-        }
-
-        private void updateXOfLayer(int index) {
-            int x = 0;
-
-            for (LayoutNode n : layers[index]) {
-                n.x = x;
-                x += n.width + X_OFFSET;
-            }
-        }
-
-        private void updatePositions() {
-
-            for (int i = 0; i < layers.length; i++) {
-                int z = 0;
-                for (LayoutNode n : layers[i]) {
-                    n.pos = z;
-                    z++;
-                }
-            }
-        }
-
-        private void downSweep() {
-
-            // Downsweep
-            for (int i = 1; i < layerCount; i++) {
-
-                for (LayoutNode n : layers[i]) {
-                    n.crossingNumber = 0;
-                }
-
-                for (LayoutNode n : layers[i]) {
-
-                    int sum = 0;
-                    int count = 0;
-                    for (LayoutEdge e : n.preds) {
-                        int cur = e.from.x + e.relativeFrom;
-                        int factor = 1;
-                        if (e.vip) {
-                            factor = VIP_BONUS;
-                        }
-                        sum += cur*factor;
-                        count+=factor;
-                    }
-
-                    if (count > 0) {
-                        sum /= count;
-                        n.crossingNumber = sum;
-                    }
-                }
-
-
-                updateCrossingNumbers(i, true);
-                Collections.sort(layers[i], crossingNodeComparator);
-                updateXOfLayer(i);
-
-                int z = 0;
-                for (LayoutNode n : layers[i]) {
-                    n.pos = z;
-                    z++;
-                }
-            }
-        }
-
-        private void updateCrossingNumbers(int index, boolean down) {
-            for (int i = 0; i < layers[index].size(); i++) {
-                LayoutNode n = layers[index].get(i);
-                LayoutNode prev = null;
-                if (i > 0) {
-                    prev = layers[index].get(i - 1);
-                }
-                LayoutNode next = null;
-                if (i < layers[index].size() - 1) {
-                    next = layers[index].get(i + 1);
-                }
-
-                boolean cond = n.succs.isEmpty();
-                if (down) {
-                    cond = n.preds.isEmpty();
-                }
-
-                if (cond) {
-
-                    if (prev != null && next != null) {
-                        n.crossingNumber = (prev.crossingNumber + next.crossingNumber) / 2;
-                    } else if (prev != null) {
-                        n.crossingNumber = prev.crossingNumber;
-                    } else if (next != null) {
-                        n.crossingNumber = next.crossingNumber;
-                    }
-                }
-            }
-        }
-
-        private void upSweep() {
-            // Upsweep
-            for (int i = layerCount - 2; i >= 0; i--) {
-
-                for (LayoutNode n : layers[i]) {
-                    n.crossingNumber = 0;
-                }
-
-                for (LayoutNode n : layers[i]) {
-
-                    int count = 0;
-                    int sum = 0;
-                    for (LayoutEdge e : n.succs) {
-                        int cur = e.to.x + e.relativeTo;
-                        int factor = 1;
-                        if (e.vip) {
-                            factor = VIP_BONUS;
-                        }
-                        sum += cur*factor;
-                        count+=factor;
-                    }
-
-                    if (count > 0) {
-                        sum /= count;
-                        n.crossingNumber = sum;
-                    }
-
-                }
-
-                updateCrossingNumbers(i, false);
-                Collections.sort(layers[i], crossingNodeComparator);
-                updateXOfLayer(i);
-
-                int z = 0;
-                for (LayoutNode n : layers[i]) {
-                    n.pos = z;
-                    z++;
-                }
-            }
-        }
-
-        @Override
-        public void postCheck() {
-
-            HashSet<LayoutNode> visited = new HashSet<>();
-            for (int i = 0; i < layers.length; i++) {
-                for (LayoutNode n : layers[i]) {
-                    assert !visited.contains(n);
-                    assert n.layer == i;
-                    visited.add(n);
-                }
-            }
-
-        }
-    }
-
-    private class AssignYCoordinates extends AlgorithmPart {
-
-        @Override
-        protected void run() {
-            int curY = 0;
-
-            for (int i = 0; i < layers.length; i++) {
-                int maxHeight = 0;
-                int baseLine = 0;
-                int bottomBaseLine = 0;
-                for (LayoutNode n : layers[i]) {
-                    maxHeight = Math.max(maxHeight, n.height - n.yOffset - n.bottomYOffset);
-                    baseLine = Math.max(baseLine, n.yOffset);
-                    bottomBaseLine = Math.max(bottomBaseLine, n.bottomYOffset);
-                }
-
-                int maxXOffset = 0;
-                for (LayoutNode n : layers[i]) {
-                    if (n.vertex == null) {
-                        // Dummy node
-                        n.y = curY;
-                        n.height = maxHeight + baseLine + bottomBaseLine;
-
-                    } else {
-                        n.y = curY + baseLine + (maxHeight - (n.height - n.yOffset - n.bottomYOffset)) / 2 - n.yOffset;
-                    }
-
-                    for (LayoutEdge e : n.succs) {
-                        int curXOffset = Math.abs(n.x - e.to.x);
-                        maxXOffset = Math.max(curXOffset, maxXOffset);
-                    }
-                }
-
-                curY += maxHeight + baseLine + bottomBaseLine;
-                curY += layerOffset + (int) Math.sqrt(maxXOffset);
-            }
-        }
-    }
-
-    private class CreateDummyNodes extends AlgorithmPart {
-
-        private int oldNodeCount;
-
-        @Override
-        protected void preCheck() {
-            for (LayoutNode n : nodes) {
-                for (LayoutEdge e : n.succs) {
-                    assert e.from != null;
-                    assert e.from == n;
-                    assert e.from.layer < e.to.layer;
-                }
-
-                for (LayoutEdge e : n.preds) {
-                    assert e.to != null;
-                    assert e.to == n;
-                }
-            }
-        }
-
-        @Override
-        protected void run() {
-            oldNodeCount = nodes.size();
-
-
-            if (combine == Combine.SAME_OUTPUTS) {
-
-                Comparator<LayoutEdge> comparator = new Comparator<LayoutEdge>() {
-
-                    @Override
-                    public int compare(LayoutEdge e1, LayoutEdge e2) {
-                        return e1.to.layer - e2.to.layer;
-                    }
-                };
-                HashMap<Integer, List<LayoutEdge>> portHash = new HashMap<>();
-                ArrayList<LayoutNode> currentNodes = new ArrayList<>(nodes);
-                for (LayoutNode n : currentNodes) {
-                    portHash.clear();
-
-                    ArrayList<LayoutEdge> succs = new ArrayList<>(n.succs);
-                    HashMap<Integer, LayoutNode> topNodeHash = new HashMap<>();
-                    HashMap<Integer, HashMap<Integer, LayoutNode>> bottomNodeHash = new HashMap<>();
-                    for (LayoutEdge e : succs) {
-                        assert e.from.layer < e.to.layer;
-                        if (e.from.layer != e.to.layer - 1) {
-                            if (maxLayerLength != -1 && e.to.layer - e.from.layer > maxLayerLength/* && e.to.preds.size() > 1 && e.from.succs.size() > 1*/) {
-                                assert maxLayerLength > 2;
-                                e.to.preds.remove(e);
-                                e.from.succs.remove(e);
-
-                                LayoutEdge topEdge = null;
-
-                                if (combine == Combine.SAME_OUTPUTS && topNodeHash.containsKey(e.relativeFrom)) {
-                                    LayoutNode topNode = topNodeHash.get(e.relativeFrom);
-                                    topEdge = new LayoutEdge();
-                                    topEdge.relativeFrom = e.relativeFrom;
-                                    topEdge.from = e.from;
-                                    topEdge.relativeTo = topNode.width / 2;
-                                    topEdge.to = topNode;
-                                    topEdge.link = e.link;
-                                    topEdge.vip = e.vip;
-                                    e.from.succs.add(topEdge);
-                                    topNode.preds.add(topEdge);
-                                } else {
-
-                                    LayoutNode topNode = new LayoutNode();
-                                    topNode.layer = e.from.layer + 1;
-                                    topNode.width = DUMMY_WIDTH;
-                                    topNode.height = DUMMY_HEIGHT;
-                                    nodes.add(topNode);
-                                    topEdge = new LayoutEdge();
-                                    topEdge.relativeFrom = e.relativeFrom;
-                                    topEdge.from = e.from;
-                                    topEdge.relativeTo = topNode.width / 2;
-                                    topEdge.to = topNode;
-                                    topEdge.link = e.link;
-                                    topEdge.vip = e.vip;
-                                    e.from.succs.add(topEdge);
-                                    topNode.preds.add(topEdge);
-                                    topNodeHash.put(e.relativeFrom, topNode);
-                                    bottomNodeHash.put(e.relativeFrom, new HashMap<Integer, LayoutNode>());
-                                }
-
-                                HashMap<Integer, LayoutNode> hash = bottomNodeHash.get(e.relativeFrom);
-
-                                LayoutNode bottomNode = null;
-                                if (hash.containsKey(e.to.layer)) {
-                                    bottomNode = hash.get(e.to.layer);
-                                } else {
-
-                                    bottomNode = new LayoutNode();
-                                    bottomNode.layer = e.to.layer - 1;
-                                    bottomNode.width = DUMMY_WIDTH;
-                                    bottomNode.height = DUMMY_HEIGHT;
-                                    nodes.add(bottomNode);
-                                    hash.put(e.to.layer, bottomNode);
-                                }
-
-                                LayoutEdge bottomEdge = new LayoutEdge();
-                                bottomEdge.relativeTo = e.relativeTo;
-                                bottomEdge.to = e.to;
-                                bottomEdge.relativeFrom = bottomNode.width / 2;
-                                bottomEdge.from = bottomNode;
-                                bottomEdge.link = e.link;
-                                bottomEdge.vip = e.vip;
-                                e.to.preds.add(bottomEdge);
-                                bottomEdgeHash.put(topEdge, bottomEdge);
-                                bottomNode.succs.add(bottomEdge);
-
-                            } else {
-                                Integer i = e.relativeFrom;
-                                if (!portHash.containsKey(i)) {
-                                    portHash.put(i, new ArrayList<LayoutEdge>());
-                                }
-                                portHash.get(i).add(e);
-                            }
-                        }
-                    }
-
-                    succs = new ArrayList<>(n.succs);
-                    for (LayoutEdge e : succs) {
-
-                        Integer i = e.relativeFrom;
-                        if (portHash.containsKey(i)) {
-
-                            List<LayoutEdge> list = portHash.get(i);
-                            Collections.sort(list, comparator);
-
-                            if (list.size() == 1) {
-                                processSingleEdge(list.get(0));
-                            } else {
-
-                                int maxLayer = list.get(0).to.layer;
-                                for (LayoutEdge curEdge : list) {
-                                    maxLayer = Math.max(maxLayer, curEdge.to.layer);
-                                }
-
-
-                                int cnt = maxLayer - n.layer - 1;
-                                LayoutEdge[] edges = new LayoutEdge[cnt];
-                                LayoutNode[] nodes = new LayoutNode[cnt];
-                                edges[0] = new LayoutEdge();
-                                edges[0].from = n;
-                                edges[0].relativeFrom = i;
-                                edges[0].vip = e.vip;
-                                n.succs.add(edges[0]);
-
-                                nodes[0] = new LayoutNode();
-                                nodes[0].width = dummyWidth;
-                                nodes[0].height = dummyHeight;
-                                nodes[0].layer = n.layer + 1;
-                                nodes[0].preds.add(edges[0]);
-                                edges[0].to = nodes[0];
-                                edges[0].relativeTo = nodes[0].width / 2;
-                                for (int j = 1; j < cnt; j++) {
-                                    edges[j] = new LayoutEdge();
-                                    edges[j].vip = e.vip;
-                                    edges[j].from = nodes[j - 1];
-                                    edges[j].relativeFrom = nodes[j - 1].width / 2;
-                                    nodes[j - 1].succs.add(edges[j]);
-                                    nodes[j] = new LayoutNode();
-                                    nodes[j].width = dummyWidth;
-                                    nodes[j].height = dummyHeight;
-                                    nodes[j].layer = n.layer + j + 1;
-                                    nodes[j].preds.add(edges[j]);
-                                    edges[j].to = nodes[j];
-                                    edges[j].relativeTo = nodes[j].width / 2;
-                                }
-
-                                for (LayoutEdge curEdge : list) {
-                                    assert curEdge.to.layer - n.layer - 2 >= 0;
-                                    assert curEdge.to.layer - n.layer - 2 < cnt;
-                                    LayoutNode anchor = nodes[curEdge.to.layer - n.layer - 2];
-                                    anchor.succs.add(curEdge);
-                                    curEdge.from = anchor;
-                                    curEdge.relativeFrom = anchor.width / 2;
-                                    n.succs.remove(curEdge);
-                                }
-
-                            }
-
-                            portHash.remove(i);
-                        }
-                    }
-                }
-            } else if (combine == Combine.SAME_INPUTS) {
-                throw new UnsupportedOperationException("Currently not supported");
-            } else {
-                ArrayList<LayoutNode> currentNodes = new ArrayList<>(nodes);
-                for (LayoutNode n : currentNodes) {
-                    for (LayoutEdge e : n.succs) {
-                        processSingleEdge(e);
-                    }
-                }
-            }
-        }
-
-        private void processSingleEdge(LayoutEdge e) {
-            LayoutNode n = e.from;
-            if (e.to.layer > n.layer + 1) {
-                LayoutEdge last = e;
-                for (int i = n.layer + 1; i < last.to.layer; i++) {
-                    last = addBetween(last, i);
-                }
-            }
-        }
-
-        private LayoutEdge addBetween(LayoutEdge e, int layer) {
-            LayoutNode n = new LayoutNode();
-            n.width = dummyWidth;
-            n.height = dummyHeight;
-            n.layer = layer;
-            n.preds.add(e);
-            nodes.add(n);
-            LayoutEdge result = new LayoutEdge();
-            result.vip = e.vip;
-            n.succs.add(result);
-            result.from = n;
-            result.relativeFrom = n.width / 2;
-            result.to = e.to;
-            result.relativeTo = e.relativeTo;
-            e.relativeTo = n.width / 2;
-            e.to.preds.remove(e);
-            e.to.preds.add(result);
-            e.to = n;
-            return result;
-        }
-
-        @Override
-        public void printStatistics() {
-            System.out.println("Dummy nodes created: " + (nodes.size() - oldNodeCount));
-        }
-
-        @Override
-        public void postCheck() {
-            ArrayList<LayoutNode> currentNodes = new ArrayList<>(nodes);
-            for (LayoutNode n : currentNodes) {
-                for (LayoutEdge e : n.succs) {
-                    assert e.from.layer == e.to.layer - 1;
-                }
-            }
-
-            for (int i = 0; i < layers.length; i++) {
-                assert layers[i].size() > 0;
-                for (LayoutNode n : layers[i]) {
-                    assert n.layer == i;
-                }
-            }
-        }
-    }
-
-    private class AssignLayers extends AlgorithmPart {
-
-        @Override
-        public void preCheck() {
-            for (LayoutNode n : nodes) {
-                assert n.layer == -1;
-            }
-        }
-
-        @Override
-        protected void run() {
-
-            List<LayoutNode> insertOrder = new ArrayList<>();
-
-            HashSet<LayoutNode> set = new HashSet<>();
-            for (LayoutNode n : nodes) {
-                if (n.preds.size() == 0) {
-                    set.add(n);
-                    insertOrder.add(n);
-                    n.layer = 0;
-                }
-            }
-
-            int z = minLayerDifference;
-            HashSet<LayoutNode> newSet = new HashSet<>();
-            HashSet<LayoutNode> failed = new HashSet<>();
-            while (!set.isEmpty()) {
-
-                newSet.clear();
-                failed.clear();
-
-                for (LayoutNode n : set) {
-
-                    for (LayoutEdge se : n.succs) {
-                        LayoutNode s = se.to;
-                        if (!newSet.contains(s) && !failed.contains(s)) {
-                            boolean ok = true;
-                            for (LayoutEdge pe : s.preds) {
-                                LayoutNode p = pe.from;
-                                if (p.layer == -1) {
-                                    ok = false;
-                                    break;
-                                }
-                            }
-
-                            if (ok) {
-                                newSet.add(s);
-                            } else {
-                                failed.add(s);
-                            }
-                        }
-                    }
-
-                }
-
-                for (LayoutNode n : newSet) {
-                    n.layer = z;
-                    insertOrder.add(n);
-                }
-
-                // Swap sets
-                HashSet<LayoutNode> tmp = set;
-                set = newSet;
-                newSet = tmp;
-                z += minLayerDifference;
-            }
-
-            optimize(insertOrder);
-
-            layerCount = z - minLayerDifference;
-
-            for (Vertex v : lastLayerHint) {
-
-                LayoutNode n = vertexToLayoutNode.get(v);
-                assert n.succs.size() == 0;
-                n.layer = layerCount - 1;
-            }
-
-            for (Vertex v : firstLayerHint) {
-                LayoutNode n = vertexToLayoutNode.get(v);
-                assert n.preds.size() == 0;
-                n.layer = 0;
-                assert n.layer == 0;
-            }
-        }
-
-        public void optimize(List<LayoutNode> insertOrder) {
-            for (int i = insertOrder.size() - 1; i >= 0; i--) {
-                LayoutNode cur = insertOrder.get(i);
-                if (cur.succs.size() > cur.preds.size()) {
-                    int minLayer = cur.succs.get(0).to.layer;
-                    for (LayoutEdge e : cur.succs) {
-                        minLayer = Math.min(minLayer, e.to.layer);
-                    }
-                    cur.layer = minLayer - 1;
-                }
-            }
-        }
-
-        @Override
-        public void postCheck() {
-            for (LayoutNode n : nodes) {
-                assert n.layer >= 0;
-                assert n.layer < layerCount;
-                for (LayoutEdge e : n.succs) {
-                    assert e.from.layer < e.to.layer;
-                }
-            }
-        }
-    }
-
-    private class ReverseEdges extends AlgorithmPart {
-
-        private HashSet<LayoutNode> visited;
-        private HashSet<LayoutNode> active;
-
-        @Override
-        protected void run() {
-
-            // Remove self-edges
-            for (LayoutNode node : nodes) {
-                ArrayList<LayoutEdge> succs = new ArrayList<>(node.succs);
-                for (LayoutEdge e : succs) {
-                    assert e.from == node;
-                    if (e.to == node) {
-                        node.succs.remove(e);
-                        node.preds.remove(e);
-                    }
-                }
-            }
-
-            // Reverse inputs of roots
-            for (LayoutNode node : nodes) {
-                if (node.vertex.isRoot()) {
-                    boolean ok = true;
-                    for (LayoutEdge e : node.preds) {
-                        if (e.from.vertex.isRoot()) {
-                            ok = false;
-                            break;
-                        }
-                    }
-                    if (ok) {
-                        reverseAllInputs(node);
-                    }
-                }
-            }
-
-
-            // Start DFS and reverse back edges
-            visited = new HashSet<>();
-            active = new HashSet<>();
-            for (LayoutNode node : nodes) {
-                DFS(node);
-            }
-
-
-            for (LayoutNode node : nodes) {
-
-                SortedSet<Integer> reversedDown = new TreeSet<>();
-
-                for (LayoutEdge e : node.succs) {
-                    if (reversedLinks.contains(e.link)) {
-                        reversedDown.add(e.relativeFrom);
-                    }
-                }
-
-
-                SortedSet<Integer> reversedUp = null;
-                if (reversedDown.size() == 0) {
-                    reversedUp = new TreeSet<>(Collections.reverseOrder());
-                } else {
-                    reversedUp = new TreeSet<>();
-                }
-
-                for (LayoutEdge e : node.preds) {
-                    if (reversedLinks.contains(e.link)) {
-                        reversedUp.add(e.relativeTo);
-                    }
-                }
-
-                final int offset = X_OFFSET + DUMMY_WIDTH;
-
-                int curX = 0;
-                int curWidth = node.width + reversedDown.size() * offset;
-                for (int pos : reversedDown) {
-                    ArrayList<LayoutEdge> reversedSuccs = new ArrayList<>();
-                    for (LayoutEdge e : node.succs) {
-                        if (e.relativeFrom == pos && reversedLinks.contains(e.link)) {
-                            reversedSuccs.add(e);
-                            e.relativeFrom = curWidth;
-                        }
-                    }
-
-                    ArrayList<Point> startPoints = new ArrayList<>();
-                    startPoints.add(new Point(curWidth, curX));
-                    startPoints.add(new Point(pos, curX));
-                    startPoints.add(new Point(pos, reversedDown.size() * offset));
-                    for (LayoutEdge e : reversedSuccs) {
-                        reversedLinkStartPoints.put(e.link, startPoints);
-                    }
-
-                    node.inOffsets.put(pos, -curX);
-                    curX += offset;
-                    node.height += offset;
-                    node.yOffset += offset;
-                    curWidth -= offset;
-                }
-                node.width += reversedDown.size() * offset;
-
-                if (reversedDown.size() == 0) {
-                    curX = offset;
-                } else {
-                    curX = -offset;
-                }
-
-                curX = 0;
-                int minX = 0;
-                if (reversedDown.size() != 0) {
-                    minX = -offset * reversedUp.size();
-                }
-
-                int oldNodeHeight = node.height;
-                for (int pos : reversedUp) {
-                    ArrayList<LayoutEdge> reversedPreds = new ArrayList<>();
-                    for (LayoutEdge e : node.preds) {
-                        if (e.relativeTo == pos && reversedLinks.contains(e.link)) {
-                            if (reversedDown.size() == 0) {
-                                e.relativeTo = node.width + offset;
-                            } else {
-                                e.relativeTo = curX - offset;
-                            }
-
-                            reversedPreds.add(e);
-                        }
-                    }
-                    node.height += offset;
-                    ArrayList<Point> endPoints = new ArrayList<>();
-
-                    if (reversedDown.size() == 0) {
-
-                        curX += offset;
-                        node.width += offset;
-                        endPoints.add(new Point(node.width, node.height));
-
-                    } else {
-                        curX -= offset;
-                        node.width += offset;
-                        endPoints.add(new Point(curX, node.height));
-                    }
-
-                    node.outOffsets.put(pos - minX, curX);
-                    curX += offset;
-                    node.bottomYOffset += offset;
-
-
-                    endPoints.add(new Point(pos, node.height));
-                    endPoints.add(new Point(pos, oldNodeHeight));
-                    for (LayoutEdge e : reversedPreds) {
-                        reversedLinkEndPoints.put(e.link, endPoints);
-                    }
-                }
-
-
-                if (minX < 0) {
-                    for (LayoutEdge e : node.preds) {
-                        e.relativeTo -= minX;
-                    }
-
-                    for (LayoutEdge e : node.succs) {
-                        e.relativeFrom -= minX;
-                    }
-
-                    node.xOffset = -minX;
-                    node.width += -minX;
-                }
-            }
-
-        }
-
-        private void DFS(LayoutNode startNode) {
-            if (visited.contains(startNode)) {
-                return;
-            }
-
-            Stack<LayoutNode> stack = new Stack<>();
-            stack.push(startNode);
-
-            while (!stack.empty()) {
-                LayoutNode node = stack.pop();
-
-                if (visited.contains(node)) {
-                    // Node no longer active
-                    active.remove(node);
-                    continue;
-                }
-
-                // Repush immediately to know when no longer active
-                stack.push(node);
-                visited.add(node);
-                active.add(node);
-
-                ArrayList<LayoutEdge> succs = new ArrayList<>(node.succs);
-                for (LayoutEdge e : succs) {
-                    if (active.contains(e.to)) {
-                        assert visited.contains(e.to);
-                        // Encountered back edge
-                        reverseEdge(e);
-                    } else if (!visited.contains(e.to) && (linksToFollow.size() == 0 || linksToFollow.contains(e.link))) {
-                        stack.push(e.to);
-                    }
-                }
-            }
-        }
-
-        private void reverseAllInputs(LayoutNode node) {
-            for (LayoutEdge e : node.preds) {
-                assert !reversedLinks.contains(e.link);
-                reversedLinks.add(e.link);
-                node.succs.add(e);
-                e.from.preds.add(e);
-                e.from.succs.remove(e);
-                int oldRelativeFrom = e.relativeFrom;
-                int oldRelativeTo = e.relativeTo;
-                e.to = e.from;
-                e.from = node;
-                e.relativeFrom = oldRelativeTo;
-                e.relativeTo = oldRelativeFrom;
-            }
-            node.preds.clear();
-        }
-
-        private void reverseEdge(LayoutEdge e) {
-            assert !reversedLinks.contains(e.link);
-            reversedLinks.add(e.link);
-
-            LayoutNode oldFrom = e.from;
-            LayoutNode oldTo = e.to;
-            int oldRelativeFrom = e.relativeFrom;
-            int oldRelativeTo = e.relativeTo;
-
-            e.from = oldTo;
-            e.to = oldFrom;
-            e.relativeFrom = oldRelativeTo;
-            e.relativeTo = oldRelativeFrom;
-
-            oldFrom.succs.remove(e);
-            oldFrom.preds.add(e);
-            oldTo.preds.remove(e);
-            oldTo.succs.add(e);
-        }
-
-        @Override
-        public void postCheck() {
-
-            for (LayoutNode n : nodes) {
-
-                HashSet<LayoutNode> curVisited = new HashSet<>();
-                Queue<LayoutNode> queue = new LinkedList<>();
-                for (LayoutEdge e : n.succs) {
-                    LayoutNode s = e.to;
-                    queue.add(s);
-                    curVisited.add(s);
-                }
-
-                while (!queue.isEmpty()) {
-                    LayoutNode curNode = queue.remove();
-
-                    for (LayoutEdge e : curNode.succs) {
-                        assert e.to != n;
-                        if (!curVisited.contains(e.to)) {
-                            queue.add(e.to);
-                            curVisited.add(e.to);
-                        }
-                    }
-                }
-            }
-        }
-    }
-    private Comparator<Link> linkComparator = new Comparator<Link>() {
-
-        @Override
-        public int compare(Link l1, Link l2) {
-
-            int result = l1.getFrom().getVertex().compareTo(l2.getFrom().getVertex());
-            if (result != 0) {
-                return result;
-            }
-            result = l1.getTo().getVertex().compareTo(l2.getTo().getVertex());
-            if (result != 0) {
-                return result;
-            }
-            result = l1.getFrom().getRelativePosition().x - l2.getFrom().getRelativePosition().x;
-            if (result != 0) {
-                return result;
-            }
-            result = l1.getTo().getRelativePosition().x - l2.getTo().getRelativePosition().x;
-            return result;
-        }
-    };
-
-    private class BuildDatastructure extends AlgorithmPart {
-
-        @Override
-        protected void run() {
-            // Set up nodes
-            List<Vertex> vertices = new ArrayList<>(graph.getVertices());
-            Collections.sort(vertices);
-
-            for (Vertex v : vertices) {
-                LayoutNode node = new LayoutNode();
-                Dimension size = v.getSize();
-                node.width = (int) size.getWidth();
-                node.height = (int) size.getHeight();
-                node.vertex = v;
-                nodes.add(node);
-                vertexToLayoutNode.put(v, node);
-            }
-
-            // Set up edges
-            List<Link> links = new ArrayList<>(graph.getLinks());
-            Collections.sort(links, linkComparator);
-            for (Link l : links) {
-                LayoutEdge edge = new LayoutEdge();
-                assert vertexToLayoutNode.containsKey(l.getFrom().getVertex());
-                assert vertexToLayoutNode.containsKey(l.getTo().getVertex());
-                edge.from = vertexToLayoutNode.get(l.getFrom().getVertex());
-                edge.to = vertexToLayoutNode.get(l.getTo().getVertex());
-                edge.relativeFrom = l.getFrom().getRelativePosition().x;
-                edge.relativeTo = l.getTo().getRelativePosition().x;
-                edge.link = l;
-                edge.from.succs.add(edge);
-                edge.to.preds.add(edge);
-                edge.vip = l.isVIP();
-            //assert edge.from != edge.to; // No self-loops allowed
-            }
-
-            for (Link l : importantLinks) {
-                if (!vertexToLayoutNode.containsKey(l.getFrom().getVertex()) ||
-                        vertexToLayoutNode.containsKey(l.getTo().getVertex())) {
-                    continue;
-                }
-                LayoutNode from = vertexToLayoutNode.get(l.getFrom().getVertex());
-                LayoutNode to = vertexToLayoutNode.get(l.getTo().getVertex());
-                for (LayoutEdge e : from.succs) {
-                    if (e.to == to) {
-                        linksToFollow.add(e.link);
-                    }
-                }
-            }
-        }
-
-        @Override
-        public void postCheck() {
-
-            assert vertexToLayoutNode.keySet().size() == nodes.size();
-            assert nodes.size() == graph.getVertices().size();
-
-            for (Vertex v : graph.getVertices()) {
-
-                LayoutNode node = vertexToLayoutNode.get(v);
-                assert node != null;
-
-                for (LayoutEdge e : node.succs) {
-                    assert e.from == node;
-                }
-
-                for (LayoutEdge e : node.preds) {
-                    assert e.to == node;
-                }
-
-            }
-        }
-    }
-
-    @Override
-    public void doRouting(LayoutGraph graph) {
-        // Do nothing for now
-    }
-}
--- a/visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/Node.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.hierarchicallayout;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Node<N, E> {
-
-    private N data;
-    private List<Edge<N, E>> inEdges;
-    private List<Edge<N, E>> outEdges;
-    private boolean visited;
-    private boolean active;
-    private boolean reachable;
-    private Graph<N, E> graph;
-
-    protected boolean isVisited() {
-        return visited;
-    }
-
-    protected void setVisited(boolean b) {
-        visited = b;
-    }
-
-    protected boolean isReachable() {
-        return reachable;
-    }
-
-    protected void setReachable(boolean b) {
-        reachable = b;
-    }
-
-    protected boolean isActive() {
-        return active;
-    }
-
-    protected void setActive(boolean b) {
-        active = b;
-    }
-
-    public int getInDegree() {
-        return getInDegree(true);
-    }
-
-    public int getInDegree(boolean countSelfLoops) {
-        if (countSelfLoops) {
-            return inEdges.size();
-        } else {
-            int cnt = 0;
-            for (Edge<N, E> e : inEdges) {
-                if (e.getSource() != this) {
-                    cnt++;
-                }
-            }
-            return cnt;
-        }
-    }
-
-    public int getOutDegree() {
-        return outEdges.size();
-    }
-
-    protected Node(Graph<N, E> graph, N data) {
-        setData(data);
-        this.graph = graph;
-        inEdges = new ArrayList<>();
-        outEdges = new ArrayList<>();
-    }
-
-    protected void addInEdge(Edge<N, E> e) {
-        inEdges.add(e);
-    }
-
-    public Graph<N, E> getGraph() {
-        return graph;
-    }
-
-    protected void addOutEdge(Edge<N, E> e) {
-        outEdges.add(e);
-    }
-
-    protected void removeInEdge(Edge<N, E> e) {
-        //assert inEdges.contains(e);
-        inEdges.remove(e);
-    }
-
-    protected void removeOutEdge(Edge<N, E> e) {
-        //assert outEdges.contains(e);
-        outEdges.remove(e);
-    }
-
-    public List<Edge<N, E>> getInEdges() {
-        return Collections.unmodifiableList(inEdges);
-    }
-
-    public List<Edge<N, E>> getOutEdges() {
-        return Collections.unmodifiableList(outEdges);
-    }
-
-    public List<Node<N, E>> getSuccessors() {
-        ArrayList<Node<N, E>> succ = new ArrayList<>();
-        for (Edge<N, E> e : getOutEdges()) {
-            Node<N, E> n = e.getDest();
-            if (!succ.contains(n)) {
-                succ.add(n);
-            }
-        }
-        return succ;
-    }
-
-    public List<Node<N, E>> getPredecessors() {
-        ArrayList<Node<N, E>> pred = new ArrayList<>();
-        for (Edge<N, E> e : getInEdges()) {
-            Node<N, E> n = e.getSource();
-            if (!pred.contains(n)) {
-                pred.add(n);
-            }
-        }
-        return pred;
-    }
-
-    public N getData() {
-        return data;
-    }
-
-    public void setData(N d) {
-        data = d;
-    }
-
-    @Override
-    public String toString() {
-        return "Node: " + data;
-    }
-}
--- a/visualizer/HierarchicalLayout/src/com/sun/hotspot/igv/hierarchicallayout/Timing.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.hierarchicallayout;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Timing {
-
-    private long lastValue;
-    private long sum;
-    private String name;
-
-    public Timing(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public String toString() {
-        long val = sum;
-        if (lastValue != 0) {
-            // Timer running
-            long newValue = System.nanoTime();
-            val += (newValue - lastValue);
-        }
-        return "Timing for " + name + " is: " + val / 1000000 + " ms";
-    }
-
-    public void print() {
-        System.out.println(toString());
-    }
-
-    public void start() {
-        lastValue = System.nanoTime();
-    }
-
-    public void stop() {
-        if (lastValue == 0) {
-            throw new IllegalStateException("You must call start before stop");
-        }
-        long newValue = System.nanoTime();
-        sum += newValue - lastValue;
-        lastValue = 0;
-    }
-}
--- a/visualizer/Layout/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.layout" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.layout.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Layout/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.layout
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/layout/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Layout/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.layout-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Layout/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=cb0889d9
-build.xml.script.CRC32=d65fccb9
-build.xml.stylesheet.CRC32=79c3b980
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=cb0889d9
-nbproject/build-impl.xml.script.CRC32=7f82736d
-nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
--- a/visualizer/Layout/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/Layout/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/Layout/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.layout</code-name-base>
-            <suite-component/>
-            <module-dependencies/>
-            <public-packages>
-                <package>com.sun.hotspot.igv.layout</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Layout/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/Layout/src/com/sun/hotspot/igv/layout/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=Layout
--- a/visualizer/Layout/src/com/sun/hotspot/igv/layout/LayoutGraph.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.layout;
-
-import java.util.*;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class LayoutGraph {
-
-    private Set<? extends Link> links;
-    private SortedSet<Vertex> vertices;
-    private HashMap<Vertex, Set<Port>> inputPorts;
-    private HashMap<Vertex, Set<Port>> outputPorts;
-    private HashMap<Port, Set<Link>> portLinks;
-
-    public LayoutGraph(Set<? extends Link> links) {
-        this(links, new HashSet<Vertex>());
-    }
-
-    public LayoutGraph(Set<? extends Link> links, Set<? extends Vertex> additionalVertices) {
-        this.links = links;
-        assert verify();
-
-        vertices = new TreeSet<>();
-        portLinks = new HashMap<>(links.size());
-        inputPorts = new HashMap<>(links.size());
-        outputPorts = new HashMap<>(links.size());
-
-        for (Link l : links) {
-            Port p = l.getFrom();
-            Port p2 = l.getTo();
-            Vertex v1 = p.getVertex();
-            Vertex v2 = p2.getVertex();
-
-            if (!vertices.contains(v1)) {
-
-                outputPorts.put(v1, new HashSet<Port>(1));
-                inputPorts.put(v1, new HashSet<Port>(3));
-                vertices.add(v1);
-                assert vertices.contains(v1);
-            }
-
-            if (!vertices.contains(v2)) {
-                vertices.add(v2);
-                assert vertices.contains(v2);
-                outputPorts.put(v2, new HashSet<Port>(1));
-                inputPorts.put(v2, new HashSet<Port>(3));
-            }
-
-            if (!portLinks.containsKey(p)) {
-                HashSet<Link> hashSet = new HashSet<>(3);
-                portLinks.put(p, hashSet);
-            }
-
-            if (!portLinks.containsKey(p2)) {
-                portLinks.put(p2, new HashSet<Link>(3));
-            }
-
-            outputPorts.get(v1).add(p);
-            inputPorts.get(v2).add(p2);
-
-            portLinks.get(p).add(l);
-            portLinks.get(p2).add(l);
-        }
-
-        for (Vertex v : additionalVertices) {
-            if (!vertices.contains(v)) {
-                outputPorts.put(v, new HashSet<Port>(1));
-                inputPorts.put(v, new HashSet<Port>(3));
-                vertices.add(v);
-                vertices.contains(v);
-            }
-        }
-    }
-
-    public Set<Port> getInputPorts(Vertex v) {
-        return this.inputPorts.get(v);
-    }
-
-    public Set<Port> getOutputPorts(Vertex v) {
-        return this.outputPorts.get(v);
-    }
-
-    public Set<Link> getPortLinks(Port p) {
-        return portLinks.get(p);
-    }
-
-    public Set<? extends Link> getLinks() {
-        return links;
-    }
-
-    public boolean verify() {
-        return true;
-    }
-
-    public SortedSet<Vertex> getVertices() {
-        return vertices;
-    }
-
-    private void markNotRoot(Set<Vertex> notRootSet, Vertex v, Vertex startingVertex) {
-
-        if (notRootSet.contains(v)) {
-            return;
-        }
-        if (v != startingVertex) {
-            notRootSet.add(v);
-        }
-        Set<Port> outPorts = getOutputPorts(v);
-        for (Port p : outPorts) {
-            Set<Link> portLinks = getPortLinks(p);
-            for (Link l : portLinks) {
-                Port other = l.getTo();
-                Vertex otherVertex = other.getVertex();
-                if (otherVertex != startingVertex) {
-                    markNotRoot(notRootSet, otherVertex, startingVertex);
-                }
-            }
-        }
-    }
-
-    // Returns a set of vertices with the following properties:
-    // - All Vertices in the set startingRoots are elements of the set.
-    // - When starting a DFS at every vertex in the set, every vertex of the 
-    //   whole graph is visited.
-    public Set<Vertex> findRootVertices(Set<Vertex> startingRoots) {
-
-        Set<Vertex> notRootSet = new HashSet<>();
-        for (Vertex v : startingRoots) {
-            if (!notRootSet.contains(v)) {
-                markNotRoot(notRootSet, v, v);
-            }
-        }
-
-        Set<Vertex> tmpVertices = getVertices();
-        for (Vertex v : tmpVertices) {
-            if (!notRootSet.contains(v)) {
-                if (this.getInputPorts(v).size() == 0) {
-                    markNotRoot(notRootSet, v, v);
-                }
-            }
-        }
-
-        for (Vertex v : tmpVertices) {
-            if (!notRootSet.contains(v)) {
-                markNotRoot(notRootSet, v, v);
-            }
-        }
-
-        Set<Vertex> result = new HashSet<>();
-        for (Vertex v : tmpVertices) {
-            if (!notRootSet.contains(v)) {
-                result.add(v);
-            }
-        }
-        assert tmpVertices.size() == 0 || result.size() > 0;
-        return result;
-    }
-
-    public Set<Vertex> findRootVertices() {
-        return findRootVertices(new HashSet<Vertex>());
-    }
-}
--- a/visualizer/Layout/src/com/sun/hotspot/igv/layout/LayoutManager.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.layout;
-
-import java.util.Set;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface LayoutManager {
-
-    public void doLayout(LayoutGraph graph);
-
-    public void doLayout(LayoutGraph graph, Set<? extends Vertex> firstLayerHint, Set<? extends Vertex> lastLayerHint, Set<? extends Link> importantLinks);
-
-    public void doRouting(LayoutGraph graph);
-}
--- a/visualizer/Layout/src/com/sun/hotspot/igv/layout/Link.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.layout;
-
-import java.awt.Point;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface Link {
-
-    public Port getFrom();
-
-    public Port getTo();
-    
-    public boolean isVIP();
-
-    public List<Point> getControlPoints();
-
-    public void setControlPoints(List<Point> list);
-}
--- a/visualizer/Layout/src/com/sun/hotspot/igv/layout/Port.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.layout;
-
-import java.awt.Point;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface Port {
-
-    public Vertex getVertex();
-
-    public Point getRelativePosition();
-}
--- a/visualizer/Layout/src/com/sun/hotspot/igv/layout/Vertex.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.layout;
-
-import java.awt.Dimension;
-import java.awt.Point;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface Vertex extends Comparable<Vertex> {
-
-    public Dimension getSize();
-
-    public Point getPosition();
-
-    public void setPosition(Point p);
-
-    public boolean isRoot();
-}
--- a/visualizer/LogViewer/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.oracle.graal.visualizer.logviewer" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.oracle.graal.visualizer.logviewer.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/LogViewer/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.oracle.graal.visualizer.logviewer
-OpenIDE-Module-Layer: com/oracle/graal/visualizer/logviewer/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/oracle/graal/visualizer/logviewer/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/LogViewer/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.oracle.graal.visualizer.logviewer-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/LogViewer/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=979ec129
-build.xml.script.CRC32=1c914106
-build.xml.stylesheet.CRC32=a56c6a5b@2.47.2
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=979ec129
-nbproject/build-impl.xml.script.CRC32=712ab216
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.47.2
--- a/visualizer/LogViewer/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/LogViewer/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.oracle.graal.visualizer.logviewer</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.oracle.graal.visualizer.editor</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.oracle.graal.visualizer.sharedactions</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.eclipse.draw2d</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.jdesktop.layout</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.19.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.api.visual</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>2.30.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.options.api</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.24.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.projectapi</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.40.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.actions</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.24.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.awt</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.39.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.dialogs</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.23.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.loaders</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.32.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.nodes</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.25.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.19.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.11.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.39.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.oracle.graal.visualizer.logviewer</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/LogViewer/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/LogViewer/src/META-INF/services/com.oracle.graal.visualizer.editor.CompilationViewerFactory	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-com.oracle.graal.visualizer.logviewer.LogCompilationViewerFactory
\ No newline at end of file
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=LogViewer
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/LogCompilationViewer.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer;
-
-import com.oracle.graal.visualizer.logviewer.scene.LogScene;
-import com.oracle.graal.visualizer.editor.CompilationViewer;
-import com.sun.hotspot.igv.data.InputGraph;
-import java.awt.Component;
-import org.openide.util.Lookup;
-import org.openide.util.lookup.Lookups;
-
-class LogCompilationViewer implements CompilationViewer {
-
-    private LogScene scene;
-
-    public LogCompilationViewer() {
-        this.scene = new LogScene();
-    }
-
-    @Override
-    public Lookup getLookup() {
-        return Lookups.fixed();
-    }
-
-    @Override
-    public Component getComponent() {
-        return scene;
-    }
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/LogCompilationViewerFactory.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer;
-
-import com.oracle.graal.visualizer.editor.CompilationViewer;
-import com.oracle.graal.visualizer.editor.SplitCompilationViewerFactory;
-import com.sun.hotspot.igv.data.InputGraph;
-
-public class LogCompilationViewerFactory extends SplitCompilationViewerFactory {
-
-    @Override
-    public String getName() {
-        return "Log";
-    }
-
-    @Override
-    protected CompilationViewer createViewer(InputGraph graph) {
-        return new LogCompilationViewer();
-    }
-
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
-<filesystem>
-    <folder name="CompilationViewer">
-        <folder name="Log">
-            <folder name="Actions">
-                <file name="com-oracle-graal-visualizer-logviewer-scene-actions-ImportLogAction.shadow">
-                    <attr name="originalFile" stringvalue="Actions/File/com-oracle-graal-visualizer-logviewer-scene-actions-ImportLogActions.instance"/>
-                </file>
-            </folder>
-        </folder>
-    </folder>
-</filesystem>
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/LogLine.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model;
-
-public class LogLine {
-
-    private final int lineNum;
-	private final CharSequence text;
-	private final Method method;
-	private final Scope scope;
-	private final Node node;
-	
-	LogLine(int lineNum, CharSequence text, Method method, Scope scope, Node node) {
-		this.lineNum = lineNum;
-        this.text = text;
-		this.method = method;
-		this.scope = scope;
-		this.node = node;
-	}
-    
-    /**
-     * Returns the number of the line in the log file
-     * @return file line number
-     */
-    public int getLineNumber() {
-        return lineNum;
-    }
-	
-	/**
-	 * Returns the text of the log line
-	 * @return log line text
-	 */
-	public String getText() {
-		return text.toString();
-	}
-	
-	/**
-	 * Returns the parent method
-	 * @return the parent method
-	 */
-	public Method getMethod() {
-		return method;
-	}
-	
-	/**
-	 * Returns the parent scope
-	 * @return the parent scope
-	 */
-	public Scope getScope() {
-		return scope;
-	}
-	
-	/**
-	 * Returns the parent node
-	 * @return the parent node (or <code>null</code> if the log is not in a node's context)
-	 */
-	public Node getNode() {
-		return node;
-	}
-	
-	/**
-	 * The string representation of a log line is the text of it.
-	 */
-	@Override
-	public String toString() {
-		return getText();
-	}
-	
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/LogModel.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-public class LogModel {
-
-	private List<Method> methods = new ArrayList<>();
-	private List<LogLine> logs = new ArrayList<>();
-	
-	void add(Method method) {
-		methods.add(method);
-	}
-	
-	/**
-	 * Returns a list of all methods within the log model.
-	 * @return list of methods
-	 */
-	public List<Method> getMethods() {
-		return Collections.unmodifiableList(methods);
-	}
-	
-	void add(LogLine log) {
-		logs.add(log);
-	}
-	
-	/**
-	 * Returns a list of all logs
-	 * @return list of log lines
-	 */
-	public List<LogLine> getLogs() {
-		return Collections.unmodifiableList(logs);
-	}
-	
-	/**
-	 * Returns a list of logs which are before and after a specific log line (and the line itself).
-	 * @param log reference log line
-	 * @param pre number of lines before the reference line
-	 * @param post number of lines after the reference line
-	 * @return list of log lines (size: pre + post + 1)
-	 */
-	public List<LogLine> range(LogLine log, int pre, int post) {
-		if(log == null) throw new NoSuchElementException();
-		
-		List<LogLine> logs = getLogs();
-		int index = logs.indexOf(log);
-		
-		if(index == -1) throw new NoSuchElementException();
-		
-		int fromIndex = index - pre;
-		int toIndex = index + post + 1;
-		
-		return getLogs().subList(fromIndex > 0 ? fromIndex : 0, toIndex < logs.size() ? toIndex : logs.size());
-	}
-	
-	/**
-	 * Returns a string with log l which are before and after a specific log line (and the line itself).
-	 * @param log reference log line
-	 * @param pre number of lines before the reference line
-	 * @param post number of lines after the reference line
-	 * @return list of log lines (size: pre + post + 1)
-	 */
-	public String rangeAsString(LogLine log, int pre, int post) {
-		List<LogLine> list = range(log, pre, post);
-		
-		String ls = System.getProperty("line.separator");
-		
-		boolean first = true;
-		StringBuilder buf = new StringBuilder();
-		for(LogLine line : list) {
-			if(!first) buf.append(ls);
-			else first = false;
-			
-			buf.append(line);
-		}
-		
-		return buf.toString();
-	}
-	
-	public LogLine getLogLine(int lineNum) {
-		int index = lineNum;
-		if(index >= logs.size()) index = logs.size()-1;
-		
-		LogLine logLine = logs.get(lineNum);
-		while(logLine.getLineNumber() > lineNum) {
-			logLine = logs.get(--index);
-		}
-		while(logLine.getLineNumber() < lineNum) {
-			logLine = logs.get(++index);
-		}
-		
-		return logLine;
-	}
-	
-	public List<LogLine> range(int lineNum, int pre, int post) {
-		LogLine logLine = getLogLine(lineNum);
-		return range(logLine, pre, post);
-	}
-	
-	
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/LogParser.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,230 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model;
-
-import com.oracle.graal.visualizer.logviewer.model.io.FileLine;
-import com.oracle.graal.visualizer.logviewer.model.io.ProgressMonitor;
-import com.oracle.graal.visualizer.logviewer.model.io.SeekableFile;
-import com.oracle.graal.visualizer.logviewer.model.io.SeekableFileReader;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class LogParser {
-	
-	private static final Pattern METHOD_PATTERN =
-		Pattern.compile("Finished target method HotSpotMethod<(.+?)>, isStub (true|false)");
-	private static final Pattern SCOPE_PATTERN =
-		Pattern.compile("scope: (.+?)");
-	private static final Pattern NODE_PATTERN =
-		Pattern.compile(".*?([0-9]+)\\|([0-9a-zA-Z.]+).*?");
-	
-	private final List<ParseErrorListener> errorListeners = new ArrayList<>();
-	private final List<ParseError> errors = new ArrayList<>();
-	
-	/**
-	 * Parses a log file without any feedback. When the parsing process is finished, the method returns a LogModel-object.
-	 * @param file log file
-	 * @return model-object
-	 * @throws IOException
-	 * @throws LogParserException
-	 */
-	public LogModel parse(File file) throws IOException {
-		return parse(file, null);
-	}
-	
-	/**
-	 * Parses a log file and uses a ProgressMonitor to give the caller a progress feedback. It returns a LogModel-object.
-	 * @param file log file
-	 * @param monitor monitor for progress monitoring (uses default gap)
-	 * @return model-object
-	 * @throws IOException
-	 * @throws LogParserException
-	 */
-	public LogModel parse(File file, ProgressMonitor monitor) throws IOException {
-		return parse(file, monitor, SeekableFileReader.DEFAULT_GAP);
-	} 
-	
-	/**
-	 * Parses a log file and uses a ProgressMonitor to give the caller a progress feedback. It returns a LogModel-object.
-	 * @param file log file
-	 * @param monitor monitor for progress monitoring (uses custom gap)
-	 * @param gap custom gap (every x bytes read from the file, the monitor will be informed)
-	 * @return model-object
-	 * @throws IOException
-	 * @throws LogParserException
-	 */
-	public LogModel parse(File file, ProgressMonitor monitor, int gap) throws IOException {
-		errors.clear();
-		SeekableFileReader reader = new SeekableFileReader(file, monitor, gap);
-		SeekableFile seekableFile = reader.getSeekableFile();
-		BufferedReader r = new BufferedReader(reader);
-		
-		LogModel model = new LogModel();
-		Method currentMethod = new Method(model);
-		Scope currentScope = null;
-		
-		Matcher matcher;
-		boolean methodNameSet = false;
-		
-		int lineNum = -1;
-		String line;
-		while((line = r.readLine()) != null) {
-			lineNum++;
-			
-			methodNameSet = false;
-			
-			matcher = SCOPE_PATTERN.matcher(line);
-			if(matcher.matches()) {
-				String name = matcher.group(1);
-				currentScope = new Scope(name, currentMethod);
-				currentMethod.add(currentScope);
-			}
-            
-            matcher = METHOD_PATTERN.matcher(line);
-            boolean methodPatternMatches = matcher.matches();
-            
-            if(methodPatternMatches){
-                currentScope = null;
-				String name = matcher.group(1);
-				boolean isStub = Boolean.parseBoolean(matcher.group(2));
-				currentMethod.init(name, isStub);
-				model.add(currentMethod);
-				methodNameSet = true;
-            }
-			
-			Node currentNode = null;
-			matcher = NODE_PATTERN.matcher(line);
-			if(matcher.matches()) {
-                if(currentScope == null){
-                	raiseError(lineNum, line, "scope is missing");
-                	continue;
-                }
-				int number = Integer.parseInt(matcher.group(1));
-				currentNode = currentScope.getNode(number);
-				if(currentNode == null) {
-					String name = matcher.group(2);
-					currentNode = new Node(number, name, currentScope);
-					currentScope.add(currentNode);
-				}
-			}
-			
-			FileLine fileLine = seekableFile.get(lineNum);
-			LogLine log = new LogLine(lineNum, fileLine, currentMethod, currentScope, currentNode);
-			if(currentNode != null) currentNode.add(log);
-			if(currentScope != null) currentScope.add(log);
-			currentMethod.add(log);
-			model.add(log);
-            
-            if(methodPatternMatches) {
-				currentMethod = new Method(model);
-			}
-		}
-		
-		if(!methodNameSet) raiseError(lineNum, line, "unexpected end of stream");
-		
-		return model;
-	}
-	
-	private void raiseError(int lineNum, String line, String message) {
-		ParseError error = new ParseError(lineNum, line, message);
-		errors.add(error);
-		for(ParseErrorListener listener : errorListeners) {
-			listener.errorOccurred(error);
-		}
-	}
-	
-	/**
-	 * Adds a ParseErrorListener to the listeners
-	 * @param listener
-	 */
-	public void addParseErrorListener(ParseErrorListener listener) {
-		errorListeners.add(listener);
-	}
-	
-	public void removeParseErrorListener(ParseErrorListener listener) {
-		errorListeners.remove(listener);
-	}
-	
-	/**
-	 * Checks if errors occurred during the parsing process
-	 * @return <code>true</code> if there are errors stored, <code>false</code> otherwise
-	 */
-	public boolean hasErrors() {
-		return !errors.isEmpty();
-	}
-	
-	/**
-	 * Returns a list of all errors.
-	 * @return error list
-	 */
-	public List<ParseError> getErrors() {
-		return Collections.unmodifiableList(errors);
-	}
-	
-	public static class ParseError {
-		
-		private final int lineNum;
-		private final String line;
-		private final String message;
-		
-		private ParseError(int lineNum, String line, String message) {
-			this.lineNum = lineNum;
-			this.message = message;
-			this.line = line;
-		}
-		
-		public int getLineNumber() {
-			return lineNum;
-		}
-		
-		public String getLine() {
-			return line;
-		}
-		
-		public String getMessage() {
-			return message;
-		}
-		
-	}
-	
-	public static interface ParseErrorListener {
-		
-		/**
-		 * Called when a new error occurs.<br><br>
-		 * <b>Attention</b>: This method runs on the same thread as the parsing process.
-		 * If time-consuming tasks should be executed, please consider multithreading.
-		 * @param error
-		 */
-		public void errorOccurred(ParseError error);
-		
-	}
-	
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/Method.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public class Method {
-
-	private String name;
-	private boolean isStub;
-	private final LogModel model;
-	private List<Scope> scopes = new ArrayList<>();
-	private List<LogLine> logs = new ArrayList<>();
-	
-	Method(LogModel model) {
-		name = null;
-		isStub = false;
-		this.model = model;
-	}
-	
-	void init(String name, boolean isStub) {
-		this.name = name;
-		this.isStub = isStub;
-	}
-	
-	/**
-	 * Returns the name of the method
-	 * @return the method name
-	 */
-	public String getName() {
-		return name;
-	}
-	
-	/**
-	 * Returns <code>true</code> if this is a stub method.
-	 * @return <code>true</code> if is stub, <code>false</code> otherwise
-	 */
-	public boolean isStub() {
-		return isStub;
-	}
-	
-	/**
-	 * Returns the model which holds this method.
-	 * @return model-object
-	 */
-	public LogModel getModel() {
-		return model;
-	}
-	
-	void add(Scope scope) {
-		scopes.add(scope);
-	}
-	
-	/**
-	 * Returns a list of all scopes inside a target method.
-	 * @return list of scopes
-	 */
-	public List<Scope> getScopes() {
-		return scopes;
-	}
-	
-	void add(LogLine log) {
-		logs.add(log);
-	}
-	
-	/**
-	 * Returns a list of all logs in the context of the method.
-	 * @return list of log lines
-	 */
-	public List<LogLine> getLogs() {
-		return Collections.unmodifiableList(logs);
-	}
-	
-	/**
-	 * The string representation of a method is its name.
-	 */
-	@Override
-	public String toString() {
-		return getName();
-	}
-	
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/Node.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public class Node {
-
-	private final int number;
-	private final String name;
-	private final Scope scope;
-	private List<LogLine> logs = new ArrayList<>();
-	
-	
-	Node(int number, String name, Scope scope) {
-		this.number = number;
-		this.name = name;
-		this.scope = scope;
-	}
-	
-	/**
-	 * Returns the node number.
-	 * @return the node number
-	 */
-	public int getNumber() {
-		return number;
-	}
-	
-	/**
-	 * Returns the node name.
-	 * @return the node name
-	 */
-	public String getName() {
-		return name;
-	}
-	
-	/**
-	 * Returns the parent scope.
-	 * @return the parent scope
-	 */
-	public Scope getScope() {
-		return scope;
-	}
-	
-	void add(LogLine log) {
-		logs.add(log);
-	}
-	
-	/**
-	 * Returns a list of all logs within a nodes context.
-	 * @return list of log lines
-	 */
-	public List<LogLine> getLogs() {
-		return Collections.unmodifiableList(logs);
-	}
-	
-	/**
-	 * The string represenation of a node is &quot;&lt;name&gt; (&lt;number&gt;)&quot;.
-	 */
-	@Override
-	public String toString() {
-		return getName() + "(" + getNumber() + ")";
-	}
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/Scope.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public class Scope {
-
-	private final String name;
-	private final Method method;
-	private List<Node> nodes = new ArrayList<>();
-	private List<LogLine> logs = new ArrayList<>();
-	
-	Scope(String name, Method method) {
-		this.name = name;
-		this.method = method;
-	}
-	
-	/**
-	 * Returns the scope name.
-	 * @return the scope name
-	 */
-	public String getName() {
-		return name;
-	}
-	
-	/**
-	 * Returns the parent method.
-	 * @return the parent method
-	 */
-	public Method getMethod() {
-		return method;
-	}
-	
-	void add(Node node) {
-		nodes.add(node);
-	}
-	
-	/**
-	 * Returns a list of all node-objects inside a scope.
-	 * @return list of nodes
-	 */
-	public List<Node> getNodes() {
-		return Collections.unmodifiableList(nodes);
-	}
-	
-	void add(LogLine log) {
-		logs.add(log);
-	}
-	
-	/**
-	 * Returns a list of all logs inside a scope.
-	 * @return list of log lines
-	 */
-	public List<LogLine> getLogs() {
-		return logs;
-	}
-	
-	/**
-	 * Returns the node inside a scope with the given number.
-	 * @param number node number
-	 * @return node-object
-	 */
-	public Node getNode(int number) {
-		for(Node node : nodes) {
-			if(node.getNumber() == number) return node;
-		}
-		return null;
-	}
-	
-	/**
-	 * The string representation of a scope is its name.
-	 * @see java.lang.Object#toString()
-	 */
-	@Override
-	public String toString() {
-		return getName();
-	}
-
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/Filter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model.filter;
-
-import com.oracle.graal.visualizer.logviewer.model.LogLine;
-
-public interface Filter {
-
-	/**
-	 * Sets the constraints for a filter.<br>
-	 * They can be every type of objects. In general these are strings, but it can also be
-	 * a Integer (like in the <code>NodeFilter</code>):<br>
-	 * <code>Filter nodeFilter = filterManager.getNodeFilter();
-	 * filter.setConstraints((String)nodeName, (Integer)nodeNumber);</code>
-	 * @param constraints filter constraints
-	 */
-	void setConstraints(Object ... constraints);
-	
-	/**
-	 * Indicates whether to keep a log line in the filter results, or not.
-	 * @param line log line which should be checked
-	 * @return <code>true</code> if the line should be kept, <code>false</code> otherwise
-	 */
-	boolean keep(LogLine line);
-	
-	/**
-	 * Activates or deactivates a filter. Deactivated filters will be ignored.
-	 * @param active <code>true</code> to activate, <code>false</code> to deactivate
-	 */
-	void setActive(boolean active);
-	
-	/**
-	 * Returns the activation status
-	 * @return <code>true</code> for an active filter, <code>false</code> otherwise
-	 */
-	boolean isActive();
-	
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/FilterManager.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model.filter;
-
-import com.oracle.graal.visualizer.logviewer.model.LogLine;
-import com.oracle.graal.visualizer.logviewer.model.LogModel;
-import java.util.ArrayList;
-import java.util.List;
-
-public class FilterManager {
-	
-	private final List<Filter> filters = new ArrayList<>();
-	private final Filter methodFilter, scopeFilter, nodeFilter, fulltextFilter;
-	
-	/**
-	 * Creates a new instance of the filter manager.
-	 */
-	public FilterManager() {
-		add(methodFilter = new MethodFilter());
-		add(scopeFilter = new ScopeFilter());
-		add(nodeFilter = new NodeFilter());
-		add(fulltextFilter = new FullTextFilter());
-	}
-	
-	/**
-	 * Executes a filtering process with the given log model as subject. Inactive filters will be ignored.
-	 * @param model subject
-	 * @return filtered list of log lines
-	 * @throws InterruptedException 
-	 */
-	public List<LogLine> execute(LogModel model) throws InterruptedException {
-		List<LogLine> input = model.getLogs();
-		List<LogLine> output = new ArrayList<>();
-		
-		for(LogLine line : input) {
-			if(Thread.interrupted()) throw new InterruptedException();
-			if(keep(line)) output.add(line);
-		}
-		
-		if(Thread.interrupted()) throw new InterruptedException();
-		
-		return output;
-	}
-	
-	private boolean keep(LogLine line) {
-		boolean keep = true;
-		for(Filter filter : filters) {
-			keep = keep && (!filter.isActive() || filter.keep(line));
-		}
-		return keep;
-	}
-	
-	private Filter add(Filter filter) {
-		filters.add(filter);
-		return filter;
-	}
-	
-	/**
-	 * Returns the instance of a method filter
-	 * @return method filter
-	 */
-	public Filter getMethodFilter() {
-		return methodFilter;
-	}
-	
-	/**
-	 * Returns the instance of a scope filter
-	 * @return scope filter
-	 */
-	public Filter getScopeFilter() {
-		return scopeFilter;
-	}
-	
-	/**
-	 * Returns the instance of a node filter
-	 * @return node filter
-	 */
-	public Filter getNodeFilter() {
-		return nodeFilter;
-	}
-	
-	/**
-	 * Returns the instance of a full text filter
-	 * @return full text filter
-	 */
-	public Filter getFullTextFilter() {
-		return fulltextFilter;
-	}
-	
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/FullTextFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model.filter;
-
-import com.oracle.graal.visualizer.logviewer.model.LogLine;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-class FullTextFilter implements Filter {
-
-	private Pattern p;
-	private boolean active = true;
-	
-	@Override
-	public void setConstraints(Object ... constraints) {
-        this.p = null;
-		for(Object constraint : constraints) {
-			setConstraint(constraint);
-		}
-	}
-	
-	private void setConstraint(Object constraint) {
-		if(constraint instanceof String) {
-			if(((String)constraint).trim().length() > 0) {
-				this.p = Pattern.compile((String)constraint);
-			}
-			else {
-				this.p = null;
-			}
-		}
-	}
-
-	@Override
-	public boolean keep(LogLine line) {
-		if(p == null) return true;
-		
-		Matcher matcher = p.matcher(line.getText());
-		return matcher.find();
-	}
-
-	@Override
-	public void setActive(boolean active) {
-		this.active = active;
-	}
-
-	@Override
-	public boolean isActive() {
-		return active;
-	}
-
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/MethodFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model.filter;
-
-import com.oracle.graal.visualizer.logviewer.model.LogLine;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-class MethodFilter implements Filter {
-
-	private Pattern p;
-	private boolean active = true;
-	
-	@Override
-	public void setConstraints(Object ... constraints) {
-        this.p = null;
-		for(Object constraint : constraints) {
-			setConstraint(constraint);
-		}
-	}
-	
-	private void setConstraint(Object constraint) {
-		if(constraint instanceof String) {
-			if(((String)constraint).trim().length() > 0) {
-				this.p = Pattern.compile((String)constraint);
-			}
-			else {
-				this.p = null;
-			}
-		}
-	}
-
-	@Override
-	public boolean keep(LogLine line) {
-		if(p == null) return true;
-		
-		Matcher matcher = p.matcher(line.getMethod().getName());
-		return matcher.find();
-	}
-
-	@Override
-	public void setActive(boolean active) {
-		this.active = active;
-	}
-
-	@Override
-	public boolean isActive() {
-		return active;
-	}
-
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/NodeFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model.filter;
-
-import com.oracle.graal.visualizer.logviewer.model.LogLine;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-class NodeFilter implements Filter {
-
-	private Pattern p;
-	private Integer nodeNum;
-	private boolean active = true;
-	
-	@Override
-	public void setConstraints(Object ... constraints) {
-        this.nodeNum = null;
-        this.p = null;
-		for(Object constraint : constraints) {
-			setConstraint(constraint);
-		}
-	}
-	
-	private void setConstraint(Object constraint) {
-		if(constraint instanceof String) {
-		
-			if(((String)constraint).trim().length() > 0) {
-				this.p = Pattern.compile((String)constraint);
-			}
-			else {
-				this.p = null;
-			}
-		}
-		else if(constraint instanceof Integer) {
-			this.nodeNum = (Integer)constraint;
-		}
-		
-	}
-
-	@Override
-	public boolean keep(LogLine line) {
-		if(p == null && nodeNum == null) return true; 
-		
-		if(line.getNode() == null) return false;
-		
-		boolean keep = false;
-		
-		if(p != null) {
-			Matcher matcher = p.matcher(line.getNode().getName());
-			keep = keep || matcher.find();
-		}
-		if(nodeNum != null) {
-			keep = keep || nodeNum.equals(line.getNode().getNumber());
-		}
-		
-		return keep;		
-	}
-
-	@Override
-	public void setActive(boolean active) {
-		this.active = active;
-	}
-
-	@Override
-	public boolean isActive() {
-		return active;
-	}
-
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/filter/ScopeFilter.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model.filter;
-
-import com.oracle.graal.visualizer.logviewer.model.LogLine;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-class ScopeFilter implements Filter {
-
-	private Pattern p;
-	private boolean active = true;
-	
-	@Override
-	public void setConstraints(Object ... constraints) {
-        this.p = null;
-		for(Object constraint : constraints) {
-			setConstraint(constraint);
-		}
-	}
-	
-	private void setConstraint(Object constraint) {
-		if(constraint instanceof String) {
-			if(((String)constraint).trim().length() > 0) {
-				this.p = Pattern.compile((String)constraint);
-			}
-			else {
-				this.p = null;
-			}
-		}
-	}
-
-	@Override
-	public boolean keep(LogLine line) {
-		if(p == null) return true;
-        
-        if(line.getScope() == null) return false;
-		
-		Matcher matcher = p.matcher(line.getScope().getName());
-		return matcher.find();
-	}
-
-	@Override
-	public void setActive(boolean active) {
-		this.active = active;
-	}
-
-	@Override
-	public boolean isActive() {
-		return active;
-	}
-
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/io/FileLine.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model.io;
-
-import java.io.IOException;
-import java.lang.ref.WeakReference;
-
-public class FileLine implements CharSequence {
-
-	private final SeekableFile seekableFile;
-	private WeakReference<String> cache;
-	public final long off;
-	public final int len;
-	
-	public FileLine(SeekableFile seekableFile, long off, int len) {
-		this.seekableFile = seekableFile;
-		this.off = off;
-		this.len = len;
-	}
-	
-	@Override
-	public String toString() {
-		String line = null;
-		
-		if(cache != null) line = cache.get();
-		
-		if(line == null) {
-			try {
-				line = seekableFile.read(this);
-				cache = new WeakReference<>(line);
-			} catch (IOException e) {
-				e.printStackTrace();
-			}
-		}
-		
-		return line;
-	}
-
-	@Override
-	public int length() {
-		return len;
-	}
-
-	@Override
-	public char charAt(int index) {
-		String line = toString();
-		return line != null ? line.charAt(index) : 0;
-	}
-
-	@Override
-	public CharSequence subSequence(int start, int end) {
-		String line = toString();
-		return line != null ? line.subSequence(start, end) : "";
-	}
-	
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/io/ProgressMonitor.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model.io;
-
-public interface ProgressMonitor {
-
-	/**
-	 * Triggered when some work has been done.<br><br>
-	 * <b>Attention</b>: This method runs on the same thread as the reading process.
-	 * If time-consuming tasks should be executed, please consider multithreading.
-	 * @param percentage Value in range between 0 and 1 to indicate how much work has been done.
-	 */
-	public void worked(float percentage);
-	
-	/**
-	 * Triggered when work is done completely.<br><br>
-	 * <b>Attention</b>: This method runs on the same thread as the reading process.
-	 * If time-consuming tasks should be executed, please consider multithreading.
-	 */
-	public void finished();
-	
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/io/SeekableFile.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model.io;
-
-import java.io.*;
-import java.util.ArrayList;
-import java.util.List;
-
-public class SeekableFile implements Closeable {
-
-	private final RandomAccessFile raf;
-	private List<FileLine> lines = new ArrayList<>();
-	
-	SeekableFile(File file) throws FileNotFoundException {
-		raf = new RandomAccessFile(file, "r");
-	}
-	
-	void addLine(long off, int len) {
-		lines.add(new FileLine(this, off, len));
-	}
-	
-	public int size() {
-		return lines.size();
-	}
-	
-	public FileLine get(int lineNum) throws IOException {
-		FileLine line = lines.get(lineNum);
-		return line;
-	}
-	
-	String read(FileLine line) throws IOException {
-		if(line == null) throw new IllegalArgumentException("line is null");
-		raf.seek(line.off);
-
-		byte [] buf = new byte[line.len];
-		
-		if(raf.read(buf) != line.len) throw new IOException("error while reading line");
-		
-		return new String(buf);
-	}
-
-	@Override
-	public void close() throws IOException {
-		raf.close();
-	}
-	
-	
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/model/io/SeekableFileReader.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.model.io;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;
-
-public class SeekableFileReader extends Reader {
-	
-	public static final int DEFAULT_GAP = 1024; // in bytes
-
-	private final FileReader reader;
-	private SeekableFile seekableFile;
-	private ProgressMonitor monitor;
-	private long filelen;
-	private int gap;
-	
-	public SeekableFileReader(File file) throws IOException {
-		super(file);
-		reader = new FileReader(file);
-		seekableFile = new SeekableFile(file);
-	}
-	
-	public SeekableFileReader(File file, ProgressMonitor monitor, int gap) throws IOException {
-		this(file);
-		this.monitor = monitor;
-		this.filelen = file.length();
-		this.gap = gap;
-	}
-	
-	public SeekableFileReader(File file, ProgressMonitor monitor) throws IOException {
-		this(file, monitor, DEFAULT_GAP);
-	}
-	
-	public SeekableFile getSeekableFile() {
-		return seekableFile;
-	}
-
-    @Override
-	public void close() throws IOException {
-		reader.close();		
-	}
-	
-	private long bytes = 0;
-	private boolean skipLF = false;
-	private long off;
-	private long lastGapped = 0;
-	private boolean finished = false;
-
-	@Override
-	public int read(char[] cbuf, int offset, int length) throws IOException {
-		
-		int l = reader.read(cbuf, offset, length);
-		
-		if(l == -1 && !finished) {
-			seekableFile.addLine(off, (int)(bytes-off));
-			finished = true;
-			if(monitor != null) {
-				monitor.worked(1);
-				monitor.finished();
-			}
-		}
-		
-		for(int i = 0; i < l; ++i) {
-			Character ch = new Character(cbuf[i]);
-			int chlen = ch.toString().getBytes(reader.getEncoding()).length;
-				
-			if(skipLF && ch != '\n') {
-				seekableFile.addLine(off, (int)(bytes-off-chlen));
-				off = bytes;
-				skipLF = false;
-			}
-			
-			bytes += chlen;
-			
-			if(monitor != null) {
-				if(bytes > lastGapped+gap) {
-					lastGapped = bytes;
-					monitor.worked(((float)bytes)/((float)filelen));
-				}
-			}
-			
-			if(ch == '\r') {
-				skipLF = true;
-			}
-			if(ch == '\n') {
-				seekableFile.addLine(off, (int)(bytes-off-(skipLF ? 2*chlen : chlen)));
-				off = bytes;
-				skipLF = false;
-			}
-		}
-		
-		return l;
-	}
-	
-	
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/BookmarkDialog.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.scene;
-
-import com.oracle.graal.visualizer.logviewer.model.LogLine;
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.GridLayout;
-import java.awt.Window;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.util.List;
-import javax.swing.*;
-
-public class BookmarkDialog extends JDialog {
-    
-    private JList lstBookmarks;
-    private List<LogLine> logLines;
-    
-    public BookmarkDialog(List<LogLine> bookmarks, Window parent) {
-        super(parent, JDialog.ModalityType.APPLICATION_MODAL);
-        
-        this.logLines = bookmarks;
-        
-        DefaultListModel mdlBookmarks = new DefaultListModel();
-        lstBookmarks = new JList(mdlBookmarks);
-        JScrollPane jspBookmarks = new JScrollPane(lstBookmarks);
-        
-        for (LogLine bookmark : bookmarks) {
-            mdlBookmarks.addElement(bookmark.getLineNumber() + ": Method " + bookmark.getMethod() + " - Scope " + bookmark.getScope() + " - " + bookmark.getText());
-        }
-        
-        JButton btnOk = new JButton("Go to");
-        JButton btnCancel = new JButton("Cancel");
-
-        // init listeners
-        lstBookmarks.addMouseListener(new MouseAdapter() {
-            @Override
-            public void mouseClicked(MouseEvent e) {
-                if (e.getClickCount() == 2) {
-                    close();
-                }
-            }
-        });
-        
-        btnOk.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent ae) {
-                if (lstBookmarks.isSelectionEmpty())
-                    return;
-                close();
-            }
-        });
-        btnCancel.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent ae) {
-                lstBookmarks.clearSelection();
-                close();
-            }
-        });
-        
-        // build layout
-        JPanel pnlButtons = new JPanel();
-        
-        pnlButtons.setLayout(new GridLayout(1, 2));
-        pnlButtons.add(btnOk);
-        pnlButtons.add(btnCancel);
-        
-        this.setLayout(new BorderLayout());
-        this.add(jspBookmarks, BorderLayout.CENTER);
-        this.add(pnlButtons, BorderLayout.SOUTH);
-        
-        this.pack();
-        this.setMinimumSize(new Dimension(600, this.getPreferredSize().height));
-        this.setLocationRelativeTo(parent);
-        this.setResizable(false);
-        this.setVisible(true);
-    }
-    
-    public LogLine getTarget() {
-        if (lstBookmarks.isSelectionEmpty())
-            return null;
-        return logLines.get(lstBookmarks.getSelectedIndex());
-    }
-    
-    private void close() {
-        this.setVisible(false);
-        this.dispose();
-    }
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/BookmarkableLogViewer.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,378 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.scene;
-
-import com.oracle.graal.visualizer.logviewer.model.LogLine;
-import java.awt.*;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextPane;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.DefaultHighlighter;
-import javax.swing.text.Highlighter;
-import javax.swing.text.JTextComponent;
-import org.openide.util.Exceptions;
-
-public class BookmarkableLogViewer extends JPanel {
-
-    private static final Color BOOKMARK_COLOR = Color.CYAN;
-    
-    private static final Highlighter.HighlightPainter BOOKMARK_PAINTER =
-            new DefaultHighlighter.DefaultHighlightPainter(BOOKMARK_COLOR);
-    
-    private JTextPane txpText;
-    private JTextPane txpLines;
-    private Highlighter textHighlighter;
-    private Highlighter lineHighlighter;
-    private FontMetrics fm;
-    private Map<Integer, Bookmark> bookmarks = new TreeMap<>();
-    private List<LogLine> logLines = new ArrayList<>();
-
-    public BookmarkableLogViewer() {
-        init();
-    }
-
-    private void init() {
-        txpText = new JTextPane();
-        txpLines = new JTextPane();
-
-        // needed for correct layouting
-        Insets ins = txpLines.getInsets();
-        txpLines.setMargin(new Insets(ins.top + 1, ins.left, ins.bottom, ins.right));
-
-        textHighlighter = new BookmarkHighlighter();
-        lineHighlighter = new BookmarkHighlighter();
-
-        txpText.setHighlighter(textHighlighter);
-        //txpText.setMinimumSize(new Dimension(100, 100));
-        txpText.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
-        txpText.setEditable(false);
-
-        txpLines.setHighlighter(lineHighlighter);
-        txpLines.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
-        txpLines.setBackground(Color.LIGHT_GRAY);
-        txpLines.setEnabled(false);
-        txpLines.setForeground(Color.BLACK);
-        txpLines.addMouseListener(mouseInputListener);
-
-        fm = txpText.getFontMetrics(txpText.getFont());
-
-        JPanel pnlBookmarks = new JPanel();
-        pnlBookmarks.setLayout(new BorderLayout());
-        pnlBookmarks.add(txpText, BorderLayout.CENTER);
-
-        JScrollPane jspBookmarks = new JScrollPane(pnlBookmarks);
-        jspBookmarks.setRowHeaderView(txpLines);
-        jspBookmarks.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
-        jspBookmarks.getVerticalScrollBar().setUnitIncrement(15);
-
-        this.setLayout(new BorderLayout());
-        this.add(jspBookmarks, BorderLayout.CENTER);
-    }
-   
-    public int getCurrentlyDisplayedTopLine() {
-        Rectangle view = txpText.getVisibleRect();
-        return getAbsoluteLine((int) Math.ceil(view.y/fm.getHeight()));
-    }
-    
-    public int getCurrentTopLine() {
-        return logLines.get(0).getLineNumber();
-    }
-    
-    public int getCurrentBottomLine() {
-        return logLines.get(logLines.size()-1).getLineNumber();
-    }
-
-    public void clearLogLines() {
-        this.logLines = new ArrayList<>();
-        txpText.setText("");
-        txpLines.setText("");
-        clearHighlighter();
-    }
-
-    public void setLogLines(List<LogLine> logLines) {
-        this.logLines = logLines;
-
-        clearHighlighter();
-        clearLineNumbers();
-        String text = "";
-        for (int i = 0; i < logLines.size(); i++) {
-            text += logLines.get(i).getText();
-            if (i < logLines.size() - 1) {
-                text += "\n";
-            }
-        }
-        txpText.setText(text);
-        setLineNumbers();
-   
-        txpText.setCaretPosition(0);
-        txpLines.setCaretPosition(0);
-
-        for (int bookmark : bookmarks.keySet()) {
-            if (bookmark < logLines.get(0).getLineNumber()) {
-                continue;
-            }
-            if (bookmark > logLines.get(logLines.size() - 1).getLineNumber()) {
-                break;
-            }
-
-            int line = getRelativeLine(bookmark);
-
-            addHighlight(logLines.get(line));
-        }
-    }
-
-    public void setLogLines(List<LogLine> logLines, int focus) {
-        setLogLines(logLines);
-        
-        //does not work for some reason - jtextpane jumps to caret position afterwards
-        //moveToBookmark(focus);
-        
-        //workaround - set caret position bevore moving
-        Rectangle visible = txpText.getVisibleRect();
-        int visibleLines = (int)(Math.ceil(visible.height/fm.getHeight()));
-
-        String text = txpText.getText();
-        int line = logLines.get(0).getLineNumber();
-        for (int i = 0; i < text.length(); i++) {
-            if (text.charAt(i) == '\n')
-                line++;
-            if (line == focus+visibleLines || i == text.length() - 1) {
-                txpText.setCaretPosition(i);
-                break;
-            }
-        }
-        moveToBookmark(focus);
-    }
-
-    public List<LogLine> getBookmarkedLines() {
-        List<LogLine> lines = new ArrayList<>();
-        for (int bookmark : bookmarks.keySet()) {
-            lines.add(bookmarks.get(bookmark).logLine);
-        }
-        return lines;
-    }
-
-    public int tryLastBookmark() {
-        int line = getCurrentlyDisplayedTopLine();
-        
-        int firstShownLine = getCurrentTopLine();
-
-        int bookmarkKey = -1;
-        for (int key : bookmarks.keySet()) {
-            if (key >= line) {
-                break;
-            }
-
-            bookmarkKey = key;
-        }
-
-        if (bookmarkKey >= firstShownLine) {
-            moveToBookmark(bookmarkKey);
-            return -1;
-        }
-
-        return bookmarkKey;
-    }
-
-    public int tryNextBookmark() {
-        Rectangle visible = txpText.getVisibleRect();
-        int lastLine = (int) Math.floor((visible.y + visible.height) / fm.getHeight());
-        lastLine = getAbsoluteLine(lastLine);
-
-        int lastShownLine = getCurrentBottomLine();
-
-        int bookmarkKey = -1;
-        for (int key : bookmarks.keySet()) {
-            if (key > lastLine) {
-                bookmarkKey = key;
-                break;
-            }
-            if (key > lastShownLine) {
-                break;
-            }
-        }
-
-        if (bookmarkKey > 0 && bookmarkKey <= lastShownLine) {
-            moveToBookmark(bookmarkKey);
-            return -1;
-        }
-
-        return bookmarkKey;
-    }
-
-    private void moveToBookmark(int line) {
-        int relLine = getRelativeLine(line);
-        Rectangle visible = txpText.getVisibleRect();
-        Rectangle position = new Rectangle(0, relLine * fm.getHeight(), visible.width, visible.height);
-        txpText.scrollRectToVisible(position);
-    }
-
-    private int getAbsoluteLine(int line) {
-        return logLines.get(0).getLineNumber() + line;
-    }
-
-    private int getRelativeLine(int line) {
-        return line - logLines.get(0).getLineNumber();
-    }
-
-    private int getStartOffset(JTextComponent component, int line) {
-        return component.getDocument().getDefaultRootElement().getElement(line).getStartOffset();
-    }
-
-    private int getEndOffset(JTextComponent component, int line) {
-        return component.getDocument().getDefaultRootElement().getElement(line).getEndOffset();
-    }
-
-    private void addHighlight(LogLine logLine) {
-        try {
-            int line = logLine.getLineNumber();
-            int relativeLine = getRelativeLine(line);
-
-            Object hl1 = textHighlighter.addHighlight(getStartOffset(txpText, relativeLine), getEndOffset(txpText, relativeLine), BOOKMARK_PAINTER);
-            Object hl2 = lineHighlighter.addHighlight(getStartOffset(txpLines, relativeLine), getEndOffset(txpLines, relativeLine), BOOKMARK_PAINTER);
-            bookmarks.put(line, new Bookmark(logLine, hl1, hl2));
-        } catch (BadLocationException ex) {
-            Exceptions.printStackTrace(ex);
-        }
-    }
-
-    private void removeHighlight(int line) {
-        int abs = getAbsoluteLine(line);
-        Bookmark bookmark = bookmarks.get(abs);
-        textHighlighter.removeHighlight(bookmark.hl1);
-        lineHighlighter.removeHighlight(bookmark.hl2);
-        bookmarks.remove(abs);
-    }
-
-    public void clearBookmarks() {
-        bookmarks = new TreeMap<>();
-        clearHighlighter();
-    }
-
-    private void clearHighlighter() {
-        textHighlighter.removeAllHighlights();
-        lineHighlighter.removeAllHighlights();
-    }
-
-    private void clearLineNumbers() {
-        txpLines.setText("");
-    }
-
-    private void setLineNumbers() {
-        clearLineNumbers();
-
-        if (logLines.isEmpty()) {
-            return;
-        }
-
-        int colCnt = String.valueOf(logLines.get(logLines.size() - 1).getLineNumber()).length() + 2;
-
-        int firstNr = logLines.get(0).getLineNumber();
-        String text = String.format("%" + colCnt + "s", firstNr + " ");
-        for (int i = 1; i < logLines.size(); i++) {
-            text += "\n";
-            text += String.format("%" + colCnt + "s", (firstNr + i) + " ");
-        }
-        txpLines.setText(text);
-    }
-
-    private MouseListener mouseInputListener = new MouseAdapter() {
-
-        @Override
-        public void mouseClicked(MouseEvent me) {
-            if (txpLines.getText().length() == 0) {
-                return;
-            }
-            if (me.getClickCount() == 2) {
-                int caretPos = txpLines.getCaretPosition();
-
-                int lineOffset = txpLines.getDocument().getDefaultRootElement().getElementIndex(caretPos);
-                if (txpLines.getText().charAt(caretPos - 1) == '\n') {
-                    lineOffset--;
-                }
-
-                if (bookmarks.containsKey(getAbsoluteLine(lineOffset))) {
-                    removeHighlight(lineOffset);
-                } else {
-                    addHighlight(logLines.get(lineOffset));
-                }
-            }
-        }
-    };
-
-    class Bookmark {
-
-        public final LogLine logLine;
-        public final Object hl1;
-        public final Object hl2;
-
-        public Bookmark(LogLine logLine, Object hl1, Object hl2) {
-            this.logLine = logLine;
-            this.hl1 = hl1;
-            this.hl2 = hl2;
-        }
-    }
-
-    class BookmarkHighlighter extends DefaultHighlighter {
-
-        private JTextComponent component;
-
-        @Override
-        public void install(JTextComponent component) {
-            super.install(component);
-            this.component = component;
-        }
-
-        @Override
-        public void deinstall(JTextComponent component) {
-            super.deinstall(component);
-            this.component = null;
-        }
-
-        @Override
-        public void paint(Graphics g) {
-            Highlighter.Highlight[] highlights = getHighlights();
-
-            for (int i = 0; i < highlights.length; i++) {
-                Highlighter.Highlight hl = highlights[i];
-                Rectangle bg = component.getBounds();
-                Insets insets = component.getInsets();
-                bg.x = insets.left;
-                bg.y = insets.top;
-                bg.height = insets.top + insets.bottom;
-                Highlighter.HighlightPainter painter = hl.getPainter();
-                painter.paint(g, hl.getStartOffset(), hl.getEndOffset(), bg, component);
-            }
-        }
-    }
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/ImportLogErrorDialog.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.scene;
-
-import com.oracle.graal.visualizer.logviewer.model.LogParser;
-import java.awt.Component;
-import java.util.List;
-import javax.swing.JOptionPane;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-
-public class ImportLogErrorDialog {
-    
-    public static void showDialog(Component parent, List<LogParser.ParseError> errors) {
-        JTextArea txaErrors = new JTextArea();
-        
-        for (LogParser.ParseError error : errors) {
-            txaErrors.append("Error at line " + error.getLineNumber());
-            txaErrors.append(": " + error.getMessage());
-            txaErrors.append("\n");
-            txaErrors.append("Log line: " + error.getLine());
-            txaErrors.append("\n");
-        }
-        
-        JScrollPane scpErrors = new JScrollPane(txaErrors);
-        
-        JOptionPane.showMessageDialog(parent, scpErrors, "Parse errors", JOptionPane.ERROR_MESSAGE);
-    }
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/LogScene.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,671 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.scene;
-
-import com.oracle.graal.visualizer.logviewer.model.LogLine;
-import com.oracle.graal.visualizer.logviewer.model.LogModel;
-import com.oracle.graal.visualizer.logviewer.model.LogParser;
-import com.oracle.graal.visualizer.logviewer.model.filter.Filter;
-import com.oracle.graal.visualizer.logviewer.model.filter.FilterManager;
-import com.oracle.graal.visualizer.logviewer.model.io.ProgressMonitor;
-import com.oracle.graal.visualizer.logviewer.scene.model.LogTableModel;
-import com.oracle.graal.visualizer.logviewer.scene.model.TableLine;
-import java.awt.*;
-import java.awt.event.*;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.regex.PatternSyntaxException;
-import javax.swing.*;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.table.TableCellRenderer;
-import javax.swing.table.TableColumn;
-import org.openide.util.Exceptions;
-import org.openide.util.NbPreferences;
-import sun.awt.CausedFocusEvent;
-
-public class LogScene extends JPanel {
-    private static final String PREFERENCE_DIR = "dir";
-    
-    private static final String ICON_PREFIX = "/com/oracle/graal/visualizer/logviewer/scene/icons/";
-    private static final String ICON_ARROW_DOWN = ICON_PREFIX + "arrow_down.png";
-    private static final String ICON_ARROW_UP = ICON_PREFIX + "arrow_up.png";
-    private static final String ICON_BOOKMARK_BACK = ICON_PREFIX + "bookmark_back.png";
-    private static final String ICON_BOOKMARK_FWD = ICON_PREFIX + "bookmark_forward.png";
-    private static final String ICON_BOOKMARK_LIST = ICON_PREFIX + "bookmark_list.png";
-    private static final String ICON_LOAD = ICON_PREFIX + "loading.gif";
-    
-    private static final ImageIcon IMGICON_LOAD = new ImageIcon(LogScene.class.getResource(ICON_LOAD));
-    
-    private static final int LOG_LINES = 50;
-    private static final int KEYSTROKE_RATE = 100; // rate at which the keystrokes are checked
-    private static final int KEYSTROKE_TRESHOLD = 400; // time in ms after which a search is triggered
-            
-    private FilterManager filterManager;
-    private Thread filterRunThread;
-    
-    private int timeSinceLastKeystroke = -1;
-    
-    private JLabel lblMessage;
-    private JLabel lblIcon;
-    
-    private JLabel lblMethodFilter;
-    private JLabel lblScopeFilter;
-    private JLabel lblNodeFilter;
-    private JLabel lblFulltextFilter;
-    private JTextField txfMethodFilter;
-    private JTextField txfScopeFilter;
-    private JTextField txfNodeFilter;
-    private JTextField txfFulltextFilter;
-    
-    private JTable tblResult;
-    private LogTableModel tblResultModel;
-    
-    private BookmarkableLogViewer logViewer;
-    private JButton btnBookmarkBack;
-    private JButton btnBookmarkFwd;
-    private JButton btnBookmarkList;
-    private JButton btnLoadMoreUp;
-    private JButton btnLoadMoreDown;
-    
-    private LogParser parser = new LogParser();
-    private LogModel logModel = null;
-    private LogStatus logStatus = LogStatus.NO_LOG;
-    
-    private static LogScene instance;
-    
-    private enum LogStatus {
-        NO_LOG, LOADING, ACTIVE
-    }
-
-    public static LogScene getInstance() {
-        return instance;
-    }
-    
-    public LogScene() {
-        initComponents();
-    }
-    
-    private void initComponents() {
-        filterManager = new FilterManager();
-        
-        lblMessage = new JLabel("No logfile loaded.");
-        lblIcon = new JLabel("");
-        
-        // Initialize filter components
-        lblMethodFilter = new JLabel("Target Method:");
-        lblScopeFilter = new JLabel("Scope:");
-        lblNodeFilter = new JLabel("Node:");
-        lblFulltextFilter = new JLabel("Fulltext:");
-        
-        txfMethodFilter = new JTextField();
-        txfScopeFilter = new JTextField();
-        txfNodeFilter = new JTextField();
-        txfFulltextFilter = new JTextField();
-        
-        tblResultModel = new LogTableModel();
-        tblResult = new JTable(tblResultModel);
-        tblResult.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-        tblResult.getTableHeader().setReorderingAllowed(false);
-        tblResult.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
-        
-        Dimension dim = tblResult.getPreferredScrollableViewportSize();
-        tblResult.setPreferredScrollableViewportSize(new Dimension(dim.width, 10*tblResult.getRowHeight() + tblResult.getTableHeader().getHeight()));
-        JScrollPane scpTblResult = new JScrollPane(tblResult);
-        scpTblResult.setMinimumSize(new Dimension(dim.width, 10*tblResult.getRowHeight() + tblResult.getTableHeader().getHeight()));
-        
-        logViewer = new BookmarkableLogViewer();
-        
-        btnLoadMoreUp = new JButton(new ImageIcon(LogScene.class.getResource(ICON_ARROW_UP)));
-        btnLoadMoreDown = new JButton(new ImageIcon(LogScene.class.getResource(ICON_ARROW_DOWN)));
-        
-        btnLoadMoreUp.setFocusable(false);
-        btnLoadMoreUp.setToolTipText("Load more previous log lines");
-        
-        btnLoadMoreDown.setFocusable(false);
-        btnLoadMoreDown.setToolTipText("Load more following log lines");
-        
-        btnBookmarkBack = new JButton(new ImageIcon(LogScene.class.getResource(ICON_BOOKMARK_BACK)));
-        btnBookmarkList = new JButton(new ImageIcon(LogScene.class.getResource(ICON_BOOKMARK_LIST)));
-        btnBookmarkFwd = new JButton(new ImageIcon(LogScene.class.getResource(ICON_BOOKMARK_FWD)));
-        
-        btnBookmarkBack.setFocusable(false);
-        btnBookmarkBack.setToolTipText("Navigate to the last bookmark.");
-        
-        btnBookmarkFwd.setFocusable(false);
-        btnBookmarkFwd.setToolTipText("Navigate to the next bookmark.");
-        
-        btnBookmarkList.setFocusable(false);
-        btnBookmarkList.setToolTipText("List all known bookmarks.");
-        
-        JPanel pnl = new JPanel();
-        pnl.setLayout(new GridBagLayout());
-        pnl.setOpaque(false);
-        
-        JPanel logViewerPanel = new JPanel();
-        logViewerPanel.setLayout(new GridBagLayout());
-        logViewerPanel.setOpaque(false);
-        
-        JPanel messagePanel = new JPanel();
-        messagePanel.setLayout(new BoxLayout(messagePanel, BoxLayout.LINE_AXIS));
-        messagePanel.setOpaque(false);
-        
-        // Initialize Listeners
-        initListeners();
-        
-        // Layout components
-        GridBagConstraints gbc = new GridBagConstraints();
-        
-        messagePanel.add(lblMessage);
-        messagePanel.add(Box.createHorizontalGlue());
-        messagePanel.add(lblIcon);
-        
-        Insets standardInsets = gbc.insets;
-        
-        gbc.gridx = 0;
-        gbc.gridy = 0;
-        gbc.anchor = GridBagConstraints.WEST;
-        gbc.fill = GridBagConstraints.HORIZONTAL;
-        gbc.weightx = 1;
-        gbc.weighty = 0;
-        gbc.gridwidth = 2;
-        gbc.insets = new Insets(2, 0, 2, 0);
-        pnl.add(messagePanel, gbc);
-        
-        gbc.fill = GridBagConstraints.NONE;
-        gbc.gridwidth = 1;
-        gbc.weightx = 0;
-        gbc.weighty = 0;
-        gbc.gridy++;
-        gbc.insets = standardInsets;
-        pnl.add(lblMethodFilter, gbc);
-        
-        gbc.gridy++;
-        pnl.add(lblScopeFilter, gbc);
-        
-        gbc.gridy++;
-        pnl.add(lblNodeFilter, gbc);
-        
-        gbc.gridy++;
-        pnl.add(lblFulltextFilter, gbc);
-        
-        gbc.gridx++;
-        gbc.gridy = 1;
-        gbc.fill = GridBagConstraints.HORIZONTAL;
-        gbc.weightx = 0.75;
-        pnl.add(txfMethodFilter, gbc);
-        
-        gbc.gridy++;
-        pnl.add(txfScopeFilter, gbc);
-        
-        gbc.gridy++;
-        pnl.add(txfNodeFilter, gbc);
-        
-        gbc.gridy++;
-        pnl.add(txfFulltextFilter, gbc);
-        
-        gbc.gridx = 0;
-        //gbc.gridy++;
-        gbc.gridwidth = 2;
-        gbc.weightx = 1;
-        gbc.anchor = GridBagConstraints.FIRST_LINE_START;
-        //pnl.add(btnSearch, gbc);
-        
-        gbc.gridy++;
-        pnl.add(scpTblResult, gbc);
-        
-        gbc.gridy++;
-        gbc.weighty = 1;
-        gbc.fill = GridBagConstraints.BOTH;
-        pnl.add(logViewerPanel, gbc);
-        
-        gbc = new GridBagConstraints();
-        gbc.gridx = 0;
-        gbc.gridy = 0;
-        gbc.gridheight = 6;
-        gbc.weightx = 1;
-        gbc.weighty = 1;
-        gbc.fill = GridBagConstraints.BOTH;
-        logViewerPanel.add(logViewer, gbc);
-        
-        gbc.gridx++;
-        gbc.weightx = 0;
-        gbc.weighty = 0;
-        gbc.fill = GridBagConstraints.NONE;
-        gbc.anchor = GridBagConstraints.PAGE_START;
-        gbc.gridheight = 1;
-        logViewerPanel.add(btnLoadMoreUp, gbc);
-        
-        gbc.gridy++;
-        logViewerPanel.add(btnLoadMoreDown, gbc);
-        
-        gbc.gridy++;
-        logViewerPanel.add(Box.createRigidArea(btnLoadMoreUp.getSize()));
-        
-        gbc.gridy++;
-        logViewerPanel.add(btnBookmarkBack, gbc);
-        
-        gbc.gridy++;
-        logViewerPanel.add(btnBookmarkFwd, gbc);
-        
-        gbc.gridy++;
-        logViewerPanel.add(btnBookmarkList, gbc);
-        
-        this.setLayout(new BorderLayout());
-        this.add(pnl, BorderLayout.CENTER);
-        
-        Timer keyTimer = new Timer();
-        keyTimer.scheduleAtFixedRate(new KeystrokeTimer(), KEYSTROKE_RATE, KEYSTROKE_RATE);
-        
-        LogScene.instance = this;
-    }
-    
-    private void initListeners() {
-        txfMethodFilter.addKeyListener(new FilterKeyListener());
-        txfScopeFilter.addKeyListener(new FilterKeyListener());
-        txfNodeFilter.addKeyListener(new FilterKeyListener());
-        txfFulltextFilter.addKeyListener(new FilterKeyListener());
-        
-        txfMethodFilter.addFocusListener(new FilterFocusListener());
-        txfScopeFilter.addFocusListener(new FilterFocusListener());
-        txfNodeFilter.addFocusListener(new FilterFocusListener());
-        txfFulltextFilter.addFocusListener(new FilterFocusListener());
-        
-        btnLoadMoreUp.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent ae) {
-                int line = logViewer.getCurrentlyDisplayedTopLine();
-                int top = logViewer.getCurrentTopLine();
-                int bottom = logViewer.getCurrentBottomLine();
-                logViewer.setLogLines(logModel.range(line, line - top + LOG_LINES, bottom - line), line); 
-            } 
-        });
-        
-        btnLoadMoreDown.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent ae) {
-                int line = logViewer.getCurrentlyDisplayedTopLine();
-                int top = logViewer.getCurrentTopLine();
-                int bottom = logViewer.getCurrentBottomLine();
-                logViewer.setLogLines(logModel.range(line, line - top, bottom - line + LOG_LINES), line); 
-            } 
-        });
-        
-        btnBookmarkBack.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent ae) {
-                int result = logViewer.tryLastBookmark();
-                if (result >= 0) {
-                    tblResult.clearSelection();
-                    logViewer.setLogLines(logModel.range(result, LOG_LINES, LOG_LINES), result); 
-                }
-            }
-        });
-        
-        btnBookmarkFwd.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent ae) {
-                int result = logViewer.tryNextBookmark();
-                if (result >= 0) {
-                    tblResult.clearSelection();
-                    logViewer.setLogLines(logModel.range(result, LOG_LINES, LOG_LINES), result);
-                }
-            }
-        });
-        
-        btnBookmarkList.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent ae) {
-                List<LogLine> bookmarkedLines = logViewer.getBookmarkedLines();
-                if (bookmarkedLines.size() > 0) {
-                    BookmarkDialog bd = new BookmarkDialog(bookmarkedLines, null);
-                    if (bd.getTarget() != null) {
-                        LogLine target = bd.getTarget();
-                        int line = target.getLineNumber();
-                        logViewer.setLogLines(logModel.range(line, LOG_LINES, LOG_LINES), line); 
-                    }
-                } else {
-                    JOptionPane.showMessageDialog(LogScene.this, "No bookmarks set.", "", JOptionPane.INFORMATION_MESSAGE);
-                }
-            }
-        });
-        
-        tblResult.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
-            @Override
-            public void valueChanged(ListSelectionEvent lse) {
-                if (tblResult.getSelectedRow() == -1) {
-                    logViewer.clearLogLines();
-                    return;
-                }
-                
-                TableLine selectedLine = tblResultModel.getTableLine(tblResult.getSelectedRow());
-                int firstLine = selectedLine.getFirstLine();
-                int lastLine = selectedLine.getLastLine();
-                
-                if (firstLine == lastLine) { 
-                    // only display selected line
-                    List<LogLine> line = new ArrayList<>();
-                    line.add(selectedLine.getLogLine());
-                    logViewer.setLogLines(line);
-                } else {
-                    // display selected range
-                    int pre = firstLine==lastLine?LOG_LINES:selectedLine.getLogLine().getLineNumber()-firstLine;
-                    int post = firstLine==lastLine?LOG_LINES:lastLine-selectedLine.getLogLine().getLineNumber();
-
-                    logViewer.setLogLines(logModel.range(selectedLine.getLogLine(), pre, post));           
-                }
-            }
-        });
-    }
-    
-    private boolean executeFilters() {
-        if (logStatus == LogStatus.NO_LOG) {
-            loadLogFile();
-            return false;
-        }
-        if (logStatus == LogStatus.LOADING) {
-            return false;
-        }
-
-        boolean execute = trySetFilter(filterManager.getMethodFilter(), txfMethodFilter.getText().trim(), lblMethodFilter);
-        execute = trySetFilter(filterManager.getScopeFilter(), txfScopeFilter.getText().trim(), lblScopeFilter) || execute;
-        try {
-            // node number
-            int node = Integer.parseInt(txfNodeFilter.getText().trim());
-            execute = trySetFilter(filterManager.getNodeFilter(), node, lblNodeFilter) || execute;
-        } catch (Exception e) {
-            // node name
-            execute = trySetFilter(filterManager.getNodeFilter(), txfNodeFilter.getText().trim(), lblNodeFilter) || execute;
-        }
-        execute = trySetFilter(filterManager.getFullTextFilter(), txfFulltextFilter.getText().trim(), lblFulltextFilter) || execute;
-
-        if (!execute)
-            return true;
-        
-        tryInterruptFilter();
-
-        filterRunThread = new Thread(new Runnable() {
-
-            @Override
-            public void run() {
-                try {
-                    List<LogLine> result = filterManager.execute(logModel);
-                    lblIcon.setIcon(null);
-
-                    if (!Thread.interrupted())
-                        buildTableEntries(result);
-                } catch (InterruptedException e) {
-                }
-            }
-
-        });
-        lblIcon.setIcon(IMGICON_LOAD);
-        filterRunThread.start();
-        
-        return true;
-    }
-    
-    private boolean trySetFilter(Filter filter, Object constraint, JLabel marker) {
-        try {
-            filter.setConstraints(constraint);
-            marker.setForeground(Color.BLACK);
-            return constraint != null && (!(constraint instanceof String) || (constraint instanceof String && ((String)constraint).trim().length() > 0));
-        } catch (PatternSyntaxException e) {
-            filter.setConstraints(new Object[]{});
-            marker.setForeground(Color.RED);
-            return false;
-        }
-    }
-    
-    private void tryInterruptFilter() {
-        if (filterRunThread != null && (filterRunThread.isAlive() || !filterRunThread.isInterrupted())) {
-            lblIcon.setIcon(null);
-            filterRunThread.interrupt();
-        }
-    }
-    
-    private void buildTableEntries(List<LogLine> filterResult) {
-        List<TableLine> tableEntries;
-        
-        int methodLength = txfMethodFilter.getText().trim().length();
-        int scopeLength = txfScopeFilter.getText().trim().length();
-        int nodeLength = txfNodeFilter.getText().trim().length();
-        int fulltextLength = txfFulltextFilter.getText().trim().length();
-        
-        boolean preventGrouping = nodeLength != 0 || fulltextLength != 0;
-        
-        if (!preventGrouping && methodLength > 0 && scopeLength == 0) {
-            tableEntries = groupByMethod(filterResult);
-        } else if (!preventGrouping && scopeLength > 0) {
-            tableEntries = groupByScope(filterResult);
-        } else {
-            tableEntries = showAllLines(filterResult);
-        }
-        
-        tblResultModel.setLogEntries(tableEntries);
-        
-        int width = 0;
-        for (int i = 0; i < tableEntries.size(); i++) {
-            TableCellRenderer tcr = tblResult.getCellRenderer(i, 0);
-            Component c = tcr.getTableCellRendererComponent(tblResult, tblResultModel.getValueAt(i, 0), false, false, i, 0);
-            if (c instanceof JLabel) {
-                JLabel l = (JLabel) c;
-                FontMetrics fm = l.getFontMetrics(l.getFont());
-                width = Math.max(width, fm.stringWidth(l.getText()));
-            }
-        }
-       
-        // proper resizing of column
-        // setWidth and setPreferredWidth do not trigger resize
-        TableColumn col = tblResult.getColumnModel().getColumn(0);
-        col.setMinWidth(width+5);
-        col.setMaxWidth(width+5);
-        
-        // reenable resizing for user
-        col.setMinWidth(0);
-        col.setMaxWidth(999);
-    }
-    
-    private List<TableLine> groupByMethod(List<LogLine> filterResult) {
-        List<TableLine> tableEntries = new ArrayList<>();
-        int firstLine = -1;
-        for (int i = 0; i < filterResult.size(); i++) {
-            LogLine line = filterResult.get(i);
-            
-            if (firstLine < 0)
-                firstLine = line.getLineNumber();
-
-            if (i < filterResult.size() - 1) {
-                LogLine next = filterResult.get(i+1);
-                if (line.getMethod() != next.getMethod()) {
-                    tableEntries.add(new TableLine(line, firstLine));
-                    firstLine = next.getLineNumber();
-                }
-            } else {
-                tableEntries.add(new TableLine(line, firstLine));
-            }
-        }
-        return tableEntries;
-    }
-    
-    private List<TableLine> groupByScope(List<LogLine> filterResult) {
-        List<TableLine> tableEntries = new ArrayList<>();
-        LogLine firstScopeLine = null;
-        for (int i = 0; i < filterResult.size(); i++) {
-            LogLine line = filterResult.get(i);
-            
-            if (firstScopeLine == null)
-                firstScopeLine = line;
-
-            if (i < filterResult.size() - 1) {
-                LogLine next = filterResult.get(i+1);
-                if (line.getScope() != next.getScope()) {
-                    tableEntries.add(new TableLine(firstScopeLine, line.getLineNumber()));
-                    firstScopeLine = next;
-                }
-            } else {
-                tableEntries.add(new TableLine(firstScopeLine, line.getLineNumber()));
-            }
-        }
-        return tableEntries;
-    }
-    
-    private List<TableLine> showAllLines(List<LogLine> filterResult) {
-        List<TableLine> tableEntries = new ArrayList<>();
-        for (LogLine line : filterResult) {
-            tableEntries.add(new TableLine(line));
-        }
-        return tableEntries;
-    }
-    
-    public void loadLogFile() {
-        JFileChooser fc = new JFileChooser();
-        fc.setFileFilter(new javax.swing.filechooser.FileFilter() {
-
-            @Override
-            public boolean accept(File f) {
-                return f.isDirectory() ||
-                       f.getName().toLowerCase().endsWith(".txt") ||
-                       f.getName().toLowerCase().endsWith(".log");
-            }
-
-            @Override
-            public String getDescription() {
-                return "Log files (*.txt, *.log)";
-            }
-        });
-        fc.setCurrentDirectory(new File(NbPreferences.forModule(LogScene.class).get(PREFERENCE_DIR, "~")));
-        fc.setDialogTitle("Load log file");
-
-        if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
-            tryInterruptFilter();
-            
-            final File file = fc.getSelectedFile();
-            
-            NbPreferences.forModule(LogScene.class).put(PREFERENCE_DIR, file.getParent());
-            
-            lblIcon.setIcon(IMGICON_LOAD);
-            logStatus = LogStatus.LOADING;
-            new Thread(new Runnable(){
-
-                @Override
-                public void run() {
-                    try {
-                        logModel = parser.parse(file, new LoadProgressMonitor(lblMessage, "Loading file " + file.getName() + "..."));
-                        lblIcon.setIcon(null);
-                        lblMessage.setText("Current logfile: " + file.getName());
-                        logStatus = LogStatus.ACTIVE;
-                    } catch (IOException ex) {
-                        Exceptions.printStackTrace(ex);
-                    }
-                }
-
-            }).start();
-        }
-    }
-    
-    private class FilterKeyListener extends KeyAdapter {
-        @Override
-        public void keyTyped(KeyEvent e) {
-            tryInterruptFilter();
-            timeSinceLastKeystroke = 0;
-        }
-    }
-    
-    private class FilterFocusListener implements FocusListener {
-        private boolean ignore = false;
-        
-        @Override
-        public void focusGained(FocusEvent fe) {
-            if (!ignore && logStatus == LogStatus.NO_LOG) {
-                ignore = true;
-                loadLogFile();
-            }
-        }
-
-        @Override
-        public void focusLost(FocusEvent fe) {
-            if (fe instanceof CausedFocusEvent) {
-                CausedFocusEvent cfe = (CausedFocusEvent) fe;
-                ignore = ignore && // don't change ignore to true if it is already false
-                         cfe.getCause() == CausedFocusEvent.Cause.ACTIVATION; // ACTIVATION is triggered if the
-                                                                              // FileChooser is opened
-            }
-        }
-        
-    }
-    
-    private class KeystrokeTimer extends TimerTask {
-        @Override
-        public void run() {
-            if (timeSinceLastKeystroke < 0)
-                return;
-            
-            timeSinceLastKeystroke += KEYSTROKE_RATE;
-            
-            if (timeSinceLastKeystroke >= KEYSTROKE_TRESHOLD) {
-                int save = timeSinceLastKeystroke;
-                timeSinceLastKeystroke = -1; // needs to be set to -1 to prevent 
-                                             // multiple parallel filter execution
-                
-                if (!executeFilters())
-                    timeSinceLastKeystroke = save;
-            }
-        }
-    }
-    
-    private class LoadProgressMonitor implements ProgressMonitor {
-        private String staticText;
-        private JLabel lblStatus;
-        
-        public LoadProgressMonitor(JLabel lblStatus, String staticText) {
-            this.lblStatus = lblStatus;
-            this.staticText = staticText;
-            
-            lblStatus.setText(staticText);
-        }
-        
-        @Override
-        public void worked(float percentage) {
-            int perc = Math.round(percentage*100);
-            lblStatus.setText(staticText + " (" + perc + " %)");
-        }
-
-        @Override
-        public void finished() {
-            if (parser.hasErrors()) {
-                if (JOptionPane.showConfirmDialog(LogScene.this, "Parsing log file finished with errors. Show error messages?", "Warning", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) {
-                    List<LogParser.ParseError> errors = parser.getErrors();
-                    ImportLogErrorDialog.showDialog(LogScene.this, errors);
-                }
-            }
-        }
-        
-    };
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/actions/ImportLogAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.scene.actions;
-
-import com.oracle.graal.visualizer.logviewer.scene.LogScene;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "com.oracle.graal.visualizer.logviewer.scene.actions.ImportLogActions", category = "File")
-@ActionRegistration(displayName = "Import Log", iconBase = "com/oracle/graal/visualizer/logviewer/scene/icons/import_log.png")
-@ActionReference(path = "Menu/File", position = 600)
-public class ImportLogAction implements ActionListener {
-
-    @Override
-    public void actionPerformed(ActionEvent ae) {
-        LogScene.getInstance().loadLogFile();
-    }
-}
Binary file visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/arrow_down.png has changed
Binary file visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/arrow_up.png has changed
Binary file visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/bookmark_back.png has changed
Binary file visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/bookmark_forward.png has changed
Binary file visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/bookmark_list.png has changed
Binary file visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/import_log.png has changed
Binary file visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/icons/loading.gif has changed
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/model/LogTableModel.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.scene.model;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.swing.table.AbstractTableModel;
-
-public class LogTableModel extends AbstractTableModel {
-    private final static String[] columnNames = {"Line #", "Method", "Scope", "Node", "Log Text"};
-    
-    private List<TableLine> entries = new ArrayList<>();
-    
-    public void setLogEntries(List<TableLine> entries) {
-        this.entries = entries;
-        fireTableDataChanged();
-    }
-    
-    public TableLine getTableLine(int line) {
-        return entries.get(line);
-    }
-    
-    @Override
-    public int getRowCount() {
-        return entries.size();
-    }
-
-    @Override
-    public int getColumnCount() {
-        return columnNames.length;
-    }
-
-    @Override
-    public String getColumnName(int column) {
-        return columnNames[column];
-    }
-
-    @Override
-    public Object getValueAt(int i, int i1) {
-        switch (i1) {
-            case 0:
-                return entries.get(i).getLineNr();
-            case 1:
-                return entries.get(i).getLogLine().getMethod().getName();
-            case 2:
-                return entries.get(i).getLogLine().getScope()!=null?
-                           entries.get(i).getLogLine().getScope().getName():"";
-            case 3:
-                return entries.get(i).getLogLine().getNode()!=null?
-                           entries.get(i).getLogLine().getNode().getName():"";
-            case 4:
-                return entries.get(i).getLogLine().getText();
-        }
-        return null;
-    }
-    
-}
--- a/visualizer/LogViewer/src/com/oracle/graal/visualizer/logviewer/scene/model/TableLine.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.logviewer.scene.model;
-
-import com.oracle.graal.visualizer.logviewer.model.LogLine;
-
-public class TableLine {
-
-    private int lineNr;
-    private LogLine logLine;
-    
-    // display single log line
-    public TableLine(LogLine logLine) {
-        this(logLine, logLine.getLineNumber());
-    }
-    
-    // display line number range (from logLine to lineNr or vice versa)
-    public TableLine(LogLine logLine, int lineNr) {
-        this.logLine = logLine;
-        this.lineNr = lineNr;
-    }
-    
-    public int getFirstLine() {
-        return lineNr < logLine.getLineNumber()?lineNr:logLine.getLineNumber();
-    }
-    
-    public int getLastLine() {
-        return lineNr > logLine.getLineNumber()?lineNr:logLine.getLineNumber();
-    }
-    
-    public String getLineNr() {
-        if (lineNr == logLine.getLineNumber()) {
-            return String.valueOf(lineNr);
-        }
-        return getFirstLine() + "-" + getLastLine();
-    }
-    
-    public LogLine getLogLine() {
-        return logLine;
-    }
-}
--- a/visualizer/OutlineView/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.coordinator" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.oracle.graal.visualizer.outline.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/OutlineView/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.oracle.graal.visualizer.outline
-OpenIDE-Module-Layer: com/oracle/graal/visualizer/outline/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/oracle/graal/visualizer/outline/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/OutlineView/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.coordinator-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/OutlineView/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=077de97c
-build.xml.script.CRC32=d29d586c
-build.xml.stylesheet.CRC32=79c3b980
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=077de97c
-nbproject/build-impl.xml.script.CRC32=03daa42d
-nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
--- a/visualizer/OutlineView/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/OutlineView/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/OutlineView/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.oracle.graal.visualizer.outline</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>at.ssw.visualizer.cfg</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.difference</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.settings</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.api.progress</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.23.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.actions</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.21.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.awt</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.30.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.dialogs</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.18.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.explorer</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.34.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.filesystems</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.46.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.loaders</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.20.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.nodes</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.20.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.14.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.6.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.39.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.oracle.graal.visualizer.outline</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/OutlineView/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-AdvancedOption_DisplayName_Coordinator=Settings
-AdvancedOption_Tooltip_Coordinator=Visualization Tool Settings
-CTL_OutlineTopComponent=Outline
-HINT_OutlineTopComponent=Displays loaded compilations.
-OpenIDE-Module-Name=OutlineView
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/CompilationNode.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.outline;
-
-import com.sun.hotspot.igv.data.*;
-import com.sun.hotspot.igv.data.services.GraphViewer;
-import java.awt.Image;
-import java.util.ArrayList;
-import java.util.List;
-import javax.swing.Action;
-import javax.swing.JOptionPane;
-import org.openide.actions.OpenAction;
-import org.openide.cookies.OpenCookie;
-import org.openide.nodes.AbstractNode;
-import org.openide.nodes.Children;
-import org.openide.nodes.Node;
-import org.openide.util.ImageUtilities;
-import org.openide.util.Lookup;
-import org.openide.util.lookup.AbstractLookup;
-import org.openide.util.lookup.InstanceContent;
-import org.openide.util.lookup.Lookups;
-
-public class CompilationNode extends AbstractNode implements ChangedListener {
-
-    private CompilationNode(final Folder folder, Children children, InstanceContent content) {
-        super(children, new AbstractLookup(content));
-        this.setDisplayName(folder.getName());
-
-        if (folder instanceof Group) {
-            content.add(new OpenCookie() {
-
-                @Override
-                public void open() {
-                    final List<InputGraph> graphs = ((Group) folder).getGraphs();
-                    if (graphs.isEmpty()) {
-                        JOptionPane.showMessageDialog(null, "Cannot open compilation, because there was no snapshots recorded!");
-                    } else {
-                        Lookup.getDefault().lookup(GraphViewer.class).view(graphs.get(0));
-                    }
-                }
-            });
-        }
-        content.add(folder);
-        folder.getChangedEvent().addListener(this);
-    }
-
-    @Override
-    public void changed(Object folder) {
-        if (this.getChildren() == Children.LEAF) {
-            setChildren(createFolderChildren((Folder) folder));
-            this.fireIconChange();
-        }
-    }
-
-    private static class FolderChildren extends Children.Keys<Folder> {
-
-        private final Folder folder;
-
-        public FolderChildren(Folder folder) {
-            this.folder = folder;
-            folder.getChangedEvent().addListener(changedListener);
-        }
-
-        @Override
-        protected Node[] createNodes(Folder e) {
-            return new Node[]{new CompilationNode(e)};
-        }
-
-        @Override
-        public void addNotify() {
-            List<Folder> result = new ArrayList<>();
-            for (FolderElement o : folder.getElements()) {
-                if (o instanceof Folder) {
-                    result.add((Folder) o);
-                }
-            }
-            this.setKeys(result);
-        }
-        private final ChangedListener changedListener = new ChangedListener() {
-
-            @Override
-            public void changed(Object source) {
-                addNotify();
-            }
-        };
-    }
-
-    @Override
-    public Image getIcon(int i) {
-        if (this.getChildren() == Children.LEAF) {
-            return ImageUtilities.loadImage("com/oracle/graal/visualizer/outline/images/leaf_node.gif");
-        } else {
-            return ImageUtilities.loadImage("com/oracle/graal/visualizer/outline/images/node.gif");
-        }
-    }
-
-    protected CompilationNode(Folder folder) {
-        this(folder, createFolderChildren(folder), new InstanceContent());
-    }
-
-    private static Children createFolderChildren(Folder folder) {
-        for (FolderElement elem : folder.getElements()) {
-            if (elem instanceof Folder) {
-                return new FolderChildren(folder);
-            }
-        }
-        return Children.LEAF;
-    }
-
-    @Override
-    public Action[] getActions(boolean context) {
-        List<Action> actions = new ArrayList<>();
-        actions.add((Action) OpenAction.findObject(OpenAction.class, true));
-        actions.addAll(Lookups.forPath(OutlineTopComponent.NODE_ACTIONS_FOLDER).lookupAll(Action.class));
-        return actions.toArray(new Action[actions.size()]);
-    }
-
-    @Override
-    public Action getPreferredAction() {
-        return (Action) OpenAction.findObject(OpenAction.class, true);
-    }
-
-    @Override
-    public Image getOpenedIcon(int i) {
-        return getIcon(i);
-    }
-}
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/OutlineTopComponent.form	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JScrollPane" name="treeView">
-      <AuxValues>
-        <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new BeanTreeView();"/>
-      </AuxValues>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-          <BorderConstraints direction="Center"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-    </Container>
-  </SubComponents>
-</Form>
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/OutlineTopComponent.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.outline;
-
-import com.oracle.graal.visualizer.outline.server.ServerPanel;
-import com.oracle.graal.visualizer.util.LookupUtils;
-import com.sun.hotspot.igv.data.GraphDocument;
-import java.awt.BorderLayout;
-import javax.swing.Action;
-import org.openide.actions.GarbageCollectAction;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.Toolbar;
-import org.openide.explorer.ExplorerManager;
-import org.openide.explorer.ExplorerUtils;
-import org.openide.explorer.view.BeanTreeView;
-import org.openide.util.NbBundle;
-import org.openide.windows.TopComponent;
-import org.openide.windows.WindowManager;
-
-@TopComponent.Description(preferredID = OutlineTopComponent.PREFERRED_ID, persistenceType = TopComponent.PERSISTENCE_ALWAYS)
-@TopComponent.Registration(mode = "explorer", openAtStartup = true)
-@ActionID(category = "Window", id = "com.oracle.graal.visualizer.outline.OutlineTopComponent")
-@ActionReference(path = "Menu/Window")
-@TopComponent.OpenActionRegistration(displayName = "Outline", preferredID = OutlineTopComponent.PREFERRED_ID)
-public final class OutlineTopComponent extends TopComponent implements ExplorerManager.Provider {
-
-    public static final String GLOBAL_ACTIONS_FOLDER = "Actions/Outline/Global";
-    public static final String NODE_ACTIONS_FOLDER = "Actions/Outline/Nodes";
-    public static OutlineTopComponent instance;
-    public static final String PREFERRED_ID = "OutlineTopComponent";
-    private ExplorerManager manager;
-    private GraphDocument document;
-
-    private OutlineTopComponent() {
-        initComponents();
-
-        setName(NbBundle.getMessage(OutlineTopComponent.class, "CTL_OutlineTopComponent"));
-        setToolTipText(NbBundle.getMessage(OutlineTopComponent.class, "HINT_OutlineTopComponent"));
-
-        document = new GraphDocument();
-        initListView();
-        initToolbar();
-    }
-
-    private void initListView() {
-        manager = new ExplorerManager();
-        manager.setRootContext(new CompilationNode(document));
-        ((BeanTreeView) this.treeView).setRootVisible(false);
-        associateLookup(ExplorerUtils.createLookup(manager, getActionMap()));
-    }
-
-    private void initToolbar() {
-        Toolbar toolbar = new Toolbar();
-        this.add(toolbar, BorderLayout.NORTH);
-        for (Action a : LookupUtils.lookupActions(GLOBAL_ACTIONS_FOLDER, getLookup())) {
-            toolbar.add(a);
-        }
-        toolbar.add(GarbageCollectAction.get(GarbageCollectAction.class).getToolbarPresenter());
-        toolbar.add(new ServerPanel(getDocument()));
-    }
-
-    @Override
-    public ExplorerManager getExplorerManager() {
-        return manager;
-    }
-
-    public GraphDocument getDocument() {
-        return document;
-    }
-
-    public static OutlineTopComponent findInstance() {
-        return (OutlineTopComponent) WindowManager.getDefault().findTopComponent(PREFERRED_ID);
-    }
-
-    @Override
-    public int getPersistenceType() {
-        return TopComponent.PERSISTENCE_NEVER;
-    }
-
-    @Override
-    protected String preferredID() {
-        return PREFERRED_ID;
-    }
-
-    /**
-     * This method is called from within the constructor to initialize the form.
-     * WARNING: Do NOT modify this code. The content of this method is always
-     * regenerated by the Form Editor.
-     */
-    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void initComponents() {
-
-        treeView = new BeanTreeView();
-
-        setLayout(new java.awt.BorderLayout());
-        add(treeView, java.awt.BorderLayout.CENTER);
-    }// </editor-fold>//GEN-END:initComponents
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.JScrollPane treeView;
-    // End of variables declaration//GEN-END:variables
-}
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/actions/ImportAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.outline.actions;
-
-import com.oracle.graal.visualizer.outline.OutlineTopComponent;
-import com.sun.hotspot.igv.data.GraphDocument;
-import com.sun.hotspot.igv.data.serialization.Parser;
-import com.sun.hotspot.igv.data.serialization.XMLParser;
-import com.sun.hotspot.igv.settings.Settings;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import javax.swing.JFileChooser;
-import javax.swing.SwingUtilities;
-import javax.swing.filechooser.FileFilter;
-import org.netbeans.api.progress.ProgressHandle;
-import org.netbeans.api.progress.ProgressHandleFactory;
-import org.openide.DialogDisplayer;
-import org.openide.NotifyDescriptor;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionReferences;
-import org.openide.awt.ActionRegistration;
-import org.openide.util.RequestProcessor;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-@ActionID(id = "com.oracle.graal.visualizer.outline.actions.ImportAction", category = "File")
-@ActionRegistration(displayName = "Import", iconBase="com/oracle/graal/visualizer/outline/images/import.png")
-@ActionReferences(value = {
-    @ActionReference(path = "Menu/File", position = 100),
-    @ActionReference(path = OutlineTopComponent.GLOBAL_ACTIONS_FOLDER)})
-public final class ImportAction implements ActionListener {
-
-    public static FileFilter getFileFilter() {
-        return new FileFilter() {
-
-            @Override
-            public boolean accept(File f) {
-                return f.getName().toLowerCase().endsWith(".xml") || f.isDirectory();
-            }
-
-            @Override
-            public String getDescription() {
-                return "XML files (*.xml)";
-            }
-        };
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-
-        JFileChooser fc = new JFileChooser();
-        fc.setFileFilter(ImportAction.getFileFilter());
-        fc.setCurrentDirectory(new File(Settings.get().get(Settings.DIRECTORY, Settings.DIRECTORY_DEFAULT)));
-
-        if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
-            File file = fc.getSelectedFile();
-
-            File dir = file;
-            if (!dir.isDirectory()) {
-                dir = dir.getParentFile();
-            }
-
-            Settings.get().put(Settings.DIRECTORY, dir.getAbsolutePath());
-
-            try {
-                final FileInputStream inputStream = new FileInputStream(file);
-                final InputSource is = new InputSource(inputStream);
-
-                final ProgressHandle handle = ProgressHandleFactory.createHandle("Opening file " + file.getName());
-                final int basis = 1000;
-                handle.start(basis);
-                final int start = inputStream.available();
-
-                final XMLParser.ParseMonitor parseMonitor = new XMLParser.ParseMonitor() {
-
-                    @Override
-                    public void setProgress(double d) {
-                        try {
-                            int curAvailable = inputStream.available();
-                            int prog = (int) (basis * (double) (start - curAvailable) / (double) start);
-                            handle.progress(prog);
-                        } catch (IOException ex) {
-                        }
-                    }
-
-                    @Override
-                    public void setState(String state) {
-                        setProgress(0.0);
-                        handle.progress(state);
-                    }
-                };
-                final Parser parser = new Parser();
-                final OutlineTopComponent component = OutlineTopComponent.findInstance();
-
-                component.requestActive();
-
-                RequestProcessor.getDefault().post(new Runnable() {
-
-                    @Override
-                    public void run() {
-                        try {
-                            final GraphDocument document = parser.parse(is, parseMonitor);
-                            parseMonitor.setState("Finishing");
-                            SwingUtilities.invokeLater(new Runnable(){
-
-                                @Override
-                                public void run() {
-                                    component.getDocument().addGraphDocument(document);
-                                }
-                            });
-                        } catch (SAXException ex) {
-                            String s = "Exception during parsing the XML file, could not load document!";
-                            if (ex instanceof XMLParser.MissingAttributeException) {
-                                XMLParser.MissingAttributeException e = (XMLParser.MissingAttributeException) ex;
-                                s += "\nMissing attribute \"" + e.getAttributeName() + "\"";
-                            }
-                            NotifyDescriptor d = new NotifyDescriptor.Message(s, NotifyDescriptor.ERROR_MESSAGE);
-                            DialogDisplayer.getDefault().notify(d);
-                        }
-                        handle.finish();
-                    }
-                });
-
-            } catch (IOException ex) {
-                DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message("Error reading file!", NotifyDescriptor.ERROR_MESSAGE));
-            }
-        }
-    }
-}
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/actions/RemoveAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.outline.actions;
-
-import com.oracle.graal.visualizer.outline.OutlineTopComponent;
-import com.sun.hotspot.igv.data.FolderElement;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.List;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionReferences;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "com.oracle.graal.visualizer.outline.actions.RemoveAction", category = "Edit")
-@ActionRegistration(displayName = "Remove", iconBase = "com/oracle/graal/visualizer/outline/images/remove.png")
-@ActionReferences(value = {
-    @ActionReference(path = "Menu/File", position = 400),
-    @ActionReference(path = OutlineTopComponent.NODE_ACTIONS_FOLDER)})
-public final class RemoveAction implements ActionListener {
-
-    List<FolderElement> elements;
-
-    public RemoveAction(List<FolderElement> elements) {
-        this.elements = elements;
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        for (FolderElement element : elements) {
-            element.getParent().removeElement(element);
-        }
-    }
-}
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/actions/RemoveAllAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.oracle.graal.visualizer.outline.actions;
-
-import com.oracle.graal.visualizer.outline.OutlineTopComponent;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionReferences;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "com.oracle.graal.visualizer.outline.actions.RemoveAllAction", category = "Edit")
-@ActionRegistration(displayName = "Remove all", iconBase = "com/oracle/graal/visualizer/outline/images/removeall.png")
-@ActionReferences(value = {
-    @ActionReference(path = "Menu/File", position = 500),
-    @ActionReference(path = OutlineTopComponent.GLOBAL_ACTIONS_FOLDER)})
-public final class RemoveAllAction implements ActionListener {
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        OutlineTopComponent.findInstance().getDocument().clear();
-    }
-}
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/actions/SaveAllAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.oracle.graal.visualizer.outline.actions;
-
-import com.oracle.graal.visualizer.outline.OutlineTopComponent;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionReferences;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "com.oracle.graal.visualizer.outline.actions.SaveAllAction", category = "File")
-@ActionRegistration(displayName = "Save all..", iconBase = "com/oracle/graal/visualizer/outline/images/saveall.gif")
-@ActionReferences(value = {
-    @ActionReference(path = "Menu/File", position = 300),
-    @ActionReference(path = OutlineTopComponent.GLOBAL_ACTIONS_FOLDER)})
-public final class SaveAllAction implements ActionListener {
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        final OutlineTopComponent component = OutlineTopComponent.findInstance();
-        SaveAsAction.save(component.getDocument());
-    }
-}
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/actions/SaveAsAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.outline.actions;
-
-import com.oracle.graal.visualizer.outline.OutlineTopComponent;
-import com.sun.hotspot.igv.data.Folder;
-import com.sun.hotspot.igv.data.FolderElement;
-import com.sun.hotspot.igv.data.GraphDocument;
-import com.sun.hotspot.igv.data.serialization.Printer;
-import com.sun.hotspot.igv.settings.Settings;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.*;
-import java.util.List;
-import javax.swing.JFileChooser;
-import javax.swing.JOptionPane;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionReferences;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "com.oracle.graal.visualizer.outline.actions.SaveAsAction", category = "File")
-@ActionRegistration(displayName = "Save as...", iconBase="com/oracle/graal/visualizer/outline/images/save.png")
-@ActionReferences(value = {
-    @ActionReference(path = "Menu/File", position = 200),
-    @ActionReference(path = OutlineTopComponent.NODE_ACTIONS_FOLDER)})
-public final class SaveAsAction implements ActionListener {
-
-    private final List<FolderElement> elements;
-    
-    public SaveAsAction(List<FolderElement> elements) {
-        this.elements = elements;
-    }
-
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        GraphDocument doc = new GraphDocument();
-        outer: for (FolderElement element : elements) {
-            Folder cur = element.getParent();
-            while (cur instanceof FolderElement) {
-                FolderElement curElement = (FolderElement) cur;
-                if (elements.contains(curElement)) {
-                    continue outer;
-                }
-                cur = curElement.getParent();
-            }
-            
-            Folder previousParent = element.getParent();
-            doc.addElement(element);
-            element.setParent(previousParent);
-        }
-
-        save(doc);
-    }
-
-    public static void save(GraphDocument doc) {
-        JFileChooser fc = new JFileChooser();
-        fc.setFileFilter(ImportAction.getFileFilter());
-        fc.setCurrentDirectory(new File(Settings.get().get(Settings.DIRECTORY, Settings.DIRECTORY_DEFAULT)));
-
-        if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
-            File file = fc.getSelectedFile();
-            if (!file.getName().contains(".")) {
-                file = new File(file.getAbsolutePath() + ".xml");
-            }
-
-            File dir = file;
-            if (!dir.isDirectory()) {
-                dir = dir.getParentFile();
-            }
-            Settings.get().put(Settings.DIRECTORY, dir.getAbsolutePath());
-            try {
-                try (Writer writer = new OutputStreamWriter(new FileOutputStream(file))) {
-                    Printer p = new Printer();
-                    p.export(writer, doc);
-                }
-            } catch (IOException e) {
-                JOptionPane.showMessageDialog(null, "Error writing file " + file.getAbsolutePath());
-            }
-        }
-    }
-}
Binary file visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/import.png has changed
Binary file visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/leaf_node.gif has changed
Binary file visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/node.gif has changed
Binary file visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/remove.png has changed
Binary file visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/removeall.png has changed
Binary file visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/save.png has changed
Binary file visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/images/saveall.gif has changed
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
-<filesystem>
-    <folder name="Actions"/>
-    
-    <folder name="Menu">
-        <folder name="File">
-            <file name="Separator2.instance_hidden"/>
-            <file name="Separator3.instance_hidden"/>
-            <file name="SeparatorOpen.instance_hidden"/>
-            <file name="SeparatorSave.instance">
-                <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
-                <attr name="position" intvalue="150"/>
-            </file>
-            <file name="SeparatorRemove.instance">
-                <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
-                <attr name="position" intvalue="350"/>
-            </file>
-            
-            <!-- Hidden menu entries from other modules -->
-            <file name="org-netbeans-modules-editor-ExportHtmlAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-openfile-OpenFileAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-openfile-RecentFileAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-print-action-PageSetupAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-print-action-PrintAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-project-ui-CloseProject.shadow_hidden"/>
-            <file name="org-netbeans-modules-project-ui-CustomizeProject.shadow_hidden"/>
-            <file name="org-netbeans-modules-project-ui-NewFile.shadow_hidden"/>
-            <file name="org-netbeans-modules-project-ui-NewProject.shadow_hidden"/>
-            <file name="org-netbeans-modules-project-ui-OpenProject.shadow_hidden"/>
-            <file name="org-netbeans-modules-project-ui-RecentProjects.shadow_hidden"/>
-            <file name="org-netbeans-modules-project-ui-groups-GroupsMenu.shadow_hidden"/>
-            <file name="org-openide-actions-SaveAction.shadow_hidden"/>
-            <file name="org-openide-actions-SaveAllAction.shadow_hidden"/>
-            <file name="org-openide-actions-SaveAsAction.shadow_hidden"/>
-        </folder>
-        
-        <folder name="Edit">
-            <!-- Hidden menu entries from other modules -->
-            <file name="Separator1.instance_hidden"/>
-            <file name="Separator2.instance_hidden"/>
-            <file name="SeparatorAfterFindPrevious.instance_hidden"/>
-            <file name="SeparatorAfterProjectsSearch.instance_hidden"/>
-            <file name="WhereUsedAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-editor-MainMenuAction$FindNextAction.instance_hidden"/>
-            <file name="org-netbeans-modules-editor-MainMenuAction$FindPreviousAction.instance_hidden"/>
-            <file name="org-netbeans-modules-editor-MainMenuAction$FindSelectionAction.instance_hidden"/>
-            <file name="org-netbeans-modules-editor-MainMenuAction$PasteFormattedAction.instance_hidden"/>
-            <file name="org-netbeans-modules-editor-MainMenuAction$SelectAllAction.instance_hidden"/>
-            <file name="org-netbeans-modules-editor-MainMenuAction$SelectIdentifierAction.instance_hidden"/>
-            <file name="org-netbeans-modules-editor-MainMenuAction$StartMacroRecordingAction.instance_hidden"/>
-            <file name="org-netbeans-modules-editor-MainMenuAction$StopMacroRecordingAction.instance_hidden"/>
-            <file name="org-netbeans-modules-search-FindInFilesAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-search-ReplaceInFilesAction.shadow_hidden"/>
-            <file name="org-openide-actions-CopyAction.shadow_hidden"/>
-            <file name="org-openide-actions-CutAction.shadow_hidden"/>
-            <file name="org-openide-actions-DeleteAction.shadow_hidden"/>
-            <file name="org-openide-actions-FindAction.shadow_hidden"/>
-            <file name="org-openide-actions-PasteAction.shadow_hidden"/>
-            <file name="org-openide-actions-ReplaceAction.shadow_hidden"/>
-            <file name="sep-before-reposearch.instance_hidden"/>
-        </folder>
-        
-        <folder name="View">
-            <!-- Hidden menu entries from other modules -->
-            <file name="Separator1.instance_hidden"/>
-            <file name="Separator2.instance_hidden"/>
-            <file name="org-netbeans-core-actions-HTMLViewAction.shadow_hidden"/>
-            <file name="org-netbeans-core-actions-LogAction.shadow_hidden"/>
-            <file name="org-netbeans-core-multiview-EditorsAction.instance_hidden"/>
-            <file name="org-netbeans-core-windows-actions-ToolbarsListAction.instance_hidden"/>
-            <file name="org-netbeans-modules-editor-NbCodeFoldingAction.instance_hidden"/>
-            <file name="org-netbeans-modules-project-ui-SyncEditorWithViewsAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-versioning-ShowTextAnnotationsAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-versioning-diff-ShowDiffSidebarAction.shadow_hidden"/>
-            <file name="toggle-line-numbers.shadow_hidden"/>
-            <file name="toggle-non-printable-characters.shadow_hidden"/>
-            <file name="toggle-toolbar.shadow_hidden"/>
-        </folder>
-        
-        <!-- Hidden menus -->
-        <folder name="GoTo_hidden"/>
-        <folder name="Source_hidden"/>
-        <folder name="Refactoring_hidden"/>
-        <folder name="BuildProject_hidden"/>
-        <folder name="RunProject_hidden"/>
-        <folder name="Versioning_hidden"/>
-        
-        <folder name="Tools">
-            <!-- Hidden menu entries from other modules -->
-            <file name="LibrariesCustomizerAction.shadow_hidden"/>
-            <file name="PaletteManager_hidden"/>
-            <file name="Separator1.instance_hidden"/>
-            <file name="Separator2.instance_hidden"/>
-            <file name="ServerManagerAction3.shadow_hidden"/>
-            <file name="VariablesCustomizerAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-autoupdate-ui-actions-PluginManagerAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-favorites-templates-TemplatesAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-options-OptionsWindowAction-separatorBefore.instance_hidden"/>
-            <file name="org-netbeans-modules-xml-catalog-CatalogAction.shadow_hidden"/>
-            <file name="org-openide-actions-ToolsAction.shadow_hidden"/>
-        </folder>
-        
-        <folder name="Window">
-            
-            <!-- Hidden menu entries from other modules -->
-            <file name="Debug_hidden"/>
-            <file name="Navigator_hidden"/>
-            <file name="Other_hidden"/>
-            <file name="Output_hidden"/>
-            <file name="ProgressListAction.shadow_hidden"/>
-            <file name="ShowPaletteAction.shadow_hidden"/>
-            <file name="SwitchToRecentDocumentAction.shadow_hidden"/>
-            <file name="Versioning_hidden"/>
-            <file name="org-netbeans-core-ide-ServicesTabAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-favorites-View.shadow_hidden"/>
-            <file name="org-netbeans-modules-project-ui-logical-tab-action.shadow_hidden"/>
-            <file name="org-netbeans-modules-project-ui-physical-tab-action.shadow_hidden"/>
-            <file name="org-netbeans-modules-tasklist-ui-TaskListAction.shadow_hidden"/>
-            <file name="CloneDocumentAction.shadow_hidden"/>
-        </folder>
-
-        <folder name="Help">
-            <!-- Hidden menu entries from other modules -->
-            <file name="Separator1.instance_hidden"/>
-            <file name="netbeans-kb.url_hidden"/>
-            <file name="org-netbeans-modules-autoupdate-ui-actions-CheckForUpdatesAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-bugzilla-ReportNBIssueAction.shadow_hidden"/>
-            <file name="org-netbeans-modules-usersguide-master.xml_hidden"/>
-            <file name="shortcuts.xml_hidden"/>
-        </folder>
-    </folder>
-
-    <folder name="OptionsDialog">
-        <!-- Hidden option tabs from other modules -->
-        <file name="Editor.instance_hidden"/>
-        <file name="FontsAndColors.instance_hidden"/>
-        <file name="General.instance_hidden"/>
-        <file name="Keymaps.instance_hidden"/>
-        <folder name="Advanced">
-            <file name="Files.instance_hidden"/>
-            <file name="IssueTracking.instance_hidden"/>
-            <file name="JavaScript.instance_hidden"/>
-            <file name="Spellchecker.instance_hidden"/>
-            <file name="TermAdvancedOption.instance_hidden"/>
-            <file name="ToDo.instance_hidden"/>
-            <file name="Versioning.instance_hidden"/>
-        </folder>
-    </folder>
-    
-    <folder name="Toolbars">
-        <file name="Build_hidden"/>
-        <file name="Clipboard_hidden"/>
-        <file name="Debug_hidden"/>
-        <file name="Debugging.xml_hidden"/>
-        <file name="File_hidden"/>
-        <file name="Memory_hidden"/>
-        <file name="Standard.xml_hidden"/>
-        <file name="UndoRedo_hidden"/>
-    </folder>
-</filesystem>
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/server/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=NetworkConnection
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/server/Client.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.oracle.graal.visualizer.outline.server;
-
-import com.sun.hotspot.igv.data.serialization.Parser;
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.Socket;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-public class Client implements Runnable {
-
-    private Socket socket;
-    private ServerCallback callback;
-
-    public Client(Socket socket, ServerCallback callback) {
-        this.callback = callback;
-        this.socket = socket;
-    }
-
-    @Override
-    public void run() {
-        callback.connectionOpened(socket.getInetAddress());
-        try {
-            InputStream inputStream = new BufferedInputStream(socket.getInputStream());
-            InputSource is = new InputSource(inputStream);
-
-            try {
-                Parser parser = new Parser(callback);
-                parser.parse(is, null);
-            } catch (SAXException ex) {
-                throw new IOException(ex);
-            }
-        } catch (IOException ex) {
-        } finally {
-            try {
-                socket.close();
-            } catch (IOException ex) {
-            }
-            callback.connectionClosed();
-        }
-    }
-}
\ No newline at end of file
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/server/Server.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.oracle.graal.visualizer.outline.server;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.net.Socket;
-import org.openide.DialogDisplayer;
-import org.openide.NotifyDescriptor;
-import org.openide.util.RequestProcessor;
-
-public class Server {
-
-    private Runnable serverRunnable;
-    private ServerSocket serverSocket;
-    
-    private Server() {}
-    
-
-    public static Server start(final ServerCallback callback, int port) {
-
-        final Server server = new Server();
-        
-        try {
-            server.serverSocket = new java.net.ServerSocket(port);
-        } catch (IOException ex) {
-            NotifyDescriptor message = new NotifyDescriptor.Message("Could not create server. Listening for incoming data is disabled.", NotifyDescriptor.ERROR_MESSAGE);
-            DialogDisplayer.getDefault().notifyLater(message);
-            return null;
-        }
-
-        Runnable runnable = new Runnable() {
-
-            @Override
-            public void run() {
-                while (true) {
-                    try {
-                        Socket clientSocket = server.serverSocket.accept();
-                        if (server.serverRunnable != this) {
-                            clientSocket.close();
-                            return;
-                        }
-                        RequestProcessor.getDefault().post(new Client(clientSocket, callback), 0, Thread.MAX_PRIORITY);
-                    } catch (IOException ex) {
-                        server.serverSocket = null;
-                        NotifyDescriptor message = new NotifyDescriptor.Message("Error during listening for incoming connections. Listening for incoming data is disabled.", NotifyDescriptor.ERROR_MESSAGE);
-                        DialogDisplayer.getDefault().notifyLater(message);
-                        return;
-                    }
-                }
-            }
-        };
-
-        server.serverRunnable = runnable;
-        RequestProcessor.getDefault().post(runnable, 0, Thread.MAX_PRIORITY);
-        return server;
-    }
-
-    void shutdown() {
-        try {
-            serverSocket.close();
-        } catch (IOException ex) {
-        }
-        
-        serverSocket = null;
-    }
-}
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/server/ServerCallback.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.oracle.graal.visualizer.outline.server;
-
-import com.sun.hotspot.igv.data.services.GroupCallback;
-import java.net.InetAddress;
-
-public interface ServerCallback extends GroupCallback {
-    
-    public void connectionOpened(InetAddress inetAddress);
-
-    public void connectionClosed();
-
-}
--- a/visualizer/OutlineView/src/com/oracle/graal/visualizer/outline/server/ServerPanel.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.oracle.graal.visualizer.outline.server;
-
-import com.sun.hotspot.igv.data.GraphDocument;
-import com.sun.hotspot.igv.data.Group;
-import com.sun.hotspot.igv.settings.Settings;
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Font;
-import java.net.InetAddress;
-import java.util.prefs.PreferenceChangeEvent;
-import java.util.prefs.PreferenceChangeListener;
-import javax.swing.BorderFactory;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.SwingUtilities;
-
-public class ServerPanel extends JPanel {
-
-    private final static int BORDER_SIZE = 2;
-    JLabel label;
-    private Server server;
-    private int port = -1;
-    private int numberOfConnections;
-    private final GraphDocument document;
-    private final PreferenceChangeListener preferenceChanged = new PreferenceChangeListener() {
-
-        @Override
-        public void preferenceChange(PreferenceChangeEvent evt) {
-            updateServer();
-        }
-    };
-    private ServerCallback callback = new ServerCallback() {
-
-        @Override
-        public void connectionOpened(InetAddress inetAddress) {
-            SwingUtilities.invokeLater(new Runnable() {
-
-                @Override
-                public void run() {
-                    numberOfConnections++;
-                    updateLabel();
-                }
-            });
-        }
-
-        @Override
-        public void connectionClosed() {
-            SwingUtilities.invokeLater(new Runnable() {
-
-                @Override
-                public void run() {
-                    numberOfConnections--;
-                    updateLabel();
-                }
-            });
-        }
-
-        @Override
-        public void started(Group g) {
-            document.addElement(g);
-        }
-    };
-
-    private void updateLabel() {
-        if (numberOfConnections == 0) {
-            label.setText(String.format("Listening on %d", port));
-            label.setFont(label.getFont().deriveFont(Font.PLAIN));
-        } else {
-            label.setText(String.format("%d connections", numberOfConnections));
-            label.setFont(label.getFont().deriveFont(Font.BOLD));
-        }
-    }
-
-    private void updateServer() {
-        int curPort = Integer.parseInt(Settings.get().get(Settings.PORT, Settings.PORT_DEFAULT));
-        if (curPort != port) {
-            port = curPort;
-            if (server != null) {
-                server.shutdown();
-            }
-            server = Server.start(callback, port);
-            SwingUtilities.invokeLater(new Runnable() {
-
-                @Override
-                public void run() {
-                    updateLabel();
-                }
-            });
-        }
-    }
-
-    public ServerPanel(GraphDocument document) {
-
-        this.document = document;
-        Settings.get().addPreferenceChangeListener(preferenceChanged);
-        label = new JLabel();
-        label.setBorder(BorderFactory.createEmptyBorder(0, BORDER_SIZE, 0, BORDER_SIZE));
-        this.setLayout(new BorderLayout());
-        this.add(label, BorderLayout.WEST);
-        updateServer();
-    }
-
-    public Component getToolbarPresenter() {
-        return label;
-    }
-}
--- a/visualizer/SelectionCoordinator/src/com/sun/hotspot/igv/selectioncoordinator/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=SelectionCoordinator
--- a/visualizer/SelectionCoordinator/src/com/sun/hotspot/igv/selectioncoordinator/SelectionCoordinator.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.selectioncoordinator;
-
-import com.sun.hotspot.igv.data.ChangedEvent;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- *
- * @author Thomas
- */
-public class SelectionCoordinator {
-
-    private static SelectionCoordinator singleInstance = new SelectionCoordinator();
-    private Set<Object> selectedObjects;
-    private Set<Object> highlightedObjects;
-    private ChangedEvent<SelectionCoordinator> selectedChangedEvent;
-    private ChangedEvent<SelectionCoordinator> highlightedChangedEvent;
-
-    public static SelectionCoordinator getInstance() {
-        return singleInstance;
-    }
-
-    private SelectionCoordinator() {
-        selectedChangedEvent = new ChangedEvent<>(this);
-        highlightedChangedEvent = new ChangedEvent<>(this);
-        selectedObjects = new HashSet<>();
-        highlightedObjects = new HashSet<>();
-    }
-
-    public Set<Object> getSelectedObjects() {
-        return Collections.unmodifiableSet(selectedObjects);
-    }
-
-    public Set<Object> getHighlightedObjects() {
-        return Collections.unmodifiableSet(highlightedObjects);
-    }
-
-    public ChangedEvent<SelectionCoordinator> getHighlightedChangedEvent() {
-        return highlightedChangedEvent;
-    }
-
-    public ChangedEvent<SelectionCoordinator> getSelectedChangedEvent() {
-        return selectedChangedEvent;
-    }
-
-    public void addHighlighted(Object o) {
-        if (!highlightedObjects.contains(o)) {
-            highlightedObjects.add(o);
-            highlightedObjectsChanged();
-        }
-    }
-
-    public void removeHighlighted(Object o) {
-        if (highlightedObjects.contains(o)) {
-            highlightedObjects.remove(o);
-            highlightedObjectsChanged();
-        }
-    }
-
-    public void addAllHighlighted(Set<? extends Object> s) {
-        int oldSize = highlightedObjects.size();
-        highlightedObjects.addAll(s);
-        if (oldSize != highlightedObjects.size()) {
-            highlightedObjectsChanged();
-        }
-    }
-
-    public void removeAllHighlighted(Set<? extends Object> s) {
-        int oldSize = highlightedObjects.size();
-        highlightedObjects.removeAll(s);
-        if (oldSize != highlightedObjects.size()) {
-            highlightedObjectsChanged();
-        }
-    }
-
-    private void highlightedObjectsChanged() {
-        highlightedChangedEvent.fire();
-    }
-
-    public void addAllSelected(Set<? extends Object> s) {
-        int oldSize = selectedObjects.size();
-        selectedObjects.addAll(s);
-        if (oldSize != selectedObjects.size()) {
-            selectedObjectsChanged();
-        }
-    }
-
-    public void removeAllSelected(Set<? extends Object> s) {
-        int oldSize = selectedObjects.size();
-        selectedObjects.removeAll(s);
-        if (oldSize != selectedObjects.size()) {
-            selectedObjectsChanged();
-        }
-    }
-
-    public void setSelectedObjects(Set<? extends Object> s) {
-        assert s != null;
-        selectedObjects.clear();
-        selectedObjects.addAll(s);
-        selectedObjectsChanged();
-    }
-
-    private void selectedObjectsChanged() {
-        selectedChangedEvent.fire();
-    }
-
-    public void setHighlightedObjects(Set<? extends Object> s) {
-        assert s != null;
-        this.highlightedObjects.clear();
-        this.highlightedObjects.addAll(s);
-        highlightedObjectsChanged();
-    }
-}
--- a/visualizer/Settings/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.settings" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.settings.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Settings/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.settings
-OpenIDE-Module-Layer: com/sun/hotspot/igv/settings/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/settings/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Settings/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.settings-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Settings/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=8869440a
-build.xml.script.CRC32=7ef09117
-build.xml.stylesheet.CRC32=79c3b980
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=8869440a
-nbproject/build-impl.xml.script.CRC32=1a0e7f21
-nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
--- a/visualizer/Settings/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/Settings/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/Settings/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.settings</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>org.jdesktop.layout</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.16.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.options.api</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.21.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.awt</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.30.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.14.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.6.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.sun.hotspot.igv.settings</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Settings/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/Settings/src/com/sun/hotspot/igv/settings/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-AdvancedOption_DisplayName_Settings=Settings
-AdvancedOption_Tooltip_Settings=Application Settings
-OpenIDE-Module-Name=Settings
-OptionsCategory_Name_View=General
-OptionsCategory_Title_View=View Settings
--- a/visualizer/Settings/src/com/sun/hotspot/igv/settings/Settings.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.settings;
-
-import java.util.prefs.Preferences;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class Settings {
-
-    public final static String NODE_TEXT = "nodeText";
-    public final static String NODE_TEXT_DEFAULT = "[idx] [name]";
-    public final static String NODE_WIDTH = "nodeWidth";
-    public final static String NODE_WIDTH_DEFAULT = "100";
-    public final static String PORT = "port";
-    public final static String PORT_DEFAULT = "4444";
-    public final static String DIRECTORY = "directory";
-    public final static String DIRECTORY_DEFAULT = System.getProperty("user.dir");
-
-    public static Preferences get() {
-        return Preferences.userNodeForPackage(Settings.class);
-    }
-}
--- a/visualizer/Settings/src/com/sun/hotspot/igv/settings/ViewOptionsCategory.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.settings;
-
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-import org.netbeans.spi.options.OptionsCategory;
-import org.netbeans.spi.options.OptionsPanelController;
-import org.openide.util.ImageUtilities;
-import org.openide.util.NbBundle;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public final class ViewOptionsCategory extends OptionsCategory {
-
-    @Override
-    public Icon getIcon() {
-        return new ImageIcon(ImageUtilities.loadImage("com/sun/hotspot/igv/settings/settings.png"));
-    }
-
-    @Override
-    public String getCategoryName() {
-        return NbBundle.getMessage(ViewOptionsCategory.class, "OptionsCategory_Name_View");
-    }
-
-    @Override
-    public String getTitle() {
-        return NbBundle.getMessage(ViewOptionsCategory.class, "OptionsCategory_Title_View");
-    }
-
-    @Override
-    public OptionsPanelController create() {
-        return new ViewOptionsPanelController();
-    }
-}
--- a/visualizer/Settings/src/com/sun/hotspot/igv/settings/ViewOptionsPanelController.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.settings;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import javax.swing.JComponent;
-import org.netbeans.spi.options.OptionsPanelController;
-import org.openide.util.HelpCtx;
-import org.openide.util.Lookup;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-final class ViewOptionsPanelController extends OptionsPanelController {
-
-    private ViewPanel panel;
-    private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
-    private boolean changed;
-
-    @Override
-    public void update() {
-        getPanel().load();
-        changed = false;
-    }
-
-    @Override
-    public void applyChanges() {
-        getPanel().store();
-        changed = false;
-    }
-
-    @Override
-    public void cancel() {
-    // need not do anything special, if no changes have been persisted yet
-    }
-
-    @Override
-    public boolean isValid() {
-        return getPanel().valid();
-    }
-
-    @Override
-    public boolean isChanged() {
-        return changed;
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return null; // new HelpCtx("...ID") if you have a help set
-    }
-
-    @Override
-    public JComponent getComponent(Lookup masterLookup) {
-        return getPanel();
-    }
-
-    @Override
-    public void addPropertyChangeListener(PropertyChangeListener l) {
-        pcs.addPropertyChangeListener(l);
-    }
-
-    @Override
-    public void removePropertyChangeListener(PropertyChangeListener l) {
-        pcs.removePropertyChangeListener(l);
-    }
-
-    private ViewPanel getPanel() {
-        if (panel == null) {
-            panel = new ViewPanel(this);
-        }
-        return panel;
-    }
-
-    void changed() {
-        if (!changed) {
-            changed = true;
-            pcs.firePropertyChange(OptionsPanelController.PROP_CHANGED, false, true);
-        }
-        pcs.firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
-    }
-}
--- a/visualizer/Settings/src/com/sun/hotspot/igv/settings/ViewPanel.form	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.3" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout>
-    <DimensionLayout dim="0">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" alignment="0" attributes="0">
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="jPanel1" max="32767" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-          </Group>
-      </Group>
-    </DimensionLayout>
-    <DimensionLayout dim="1">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" alignment="0" attributes="0">
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="jPanel1" min="-2" max="-2" attributes="0"/>
-              <EmptySpace pref="206" max="32767" attributes="0"/>
-          </Group>
-      </Group>
-    </DimensionLayout>
-  </Layout>
-  <SubComponents>
-    <Container class="javax.swing.JPanel" name="jPanel1">
-
-      <Layout>
-        <DimensionLayout dim="0">
-          <Group type="103" groupAlignment="0" attributes="0">
-              <Group type="102" alignment="1" attributes="0">
-                  <EmptySpace max="-2" attributes="0"/>
-                  <Group type="103" groupAlignment="0" attributes="0">
-                      <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
-                      <Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/>
-                      <Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
-                  </Group>
-                  <EmptySpace min="-2" pref="39" max="-2" attributes="0"/>
-                  <Group type="103" groupAlignment="0" attributes="0">
-                      <Component id="portSpinner" alignment="0" min="-2" pref="63" max="-2" attributes="0"/>
-                      <Component id="nodeWidthSpinner" alignment="0" min="-2" pref="63" max="-2" attributes="0"/>
-                      <Component id="jScrollPane1" alignment="0" min="-2" pref="365" max="-2" attributes="0"/>
-                  </Group>
-                  <EmptySpace max="-2" attributes="0"/>
-              </Group>
-          </Group>
-        </DimensionLayout>
-        <DimensionLayout dim="1">
-          <Group type="103" groupAlignment="0" attributes="0">
-              <Group type="102" alignment="0" attributes="0">
-                  <EmptySpace max="-2" attributes="0"/>
-                  <Group type="103" groupAlignment="0" attributes="0">
-                      <Group type="102" alignment="0" attributes="0">
-                          <Component id="jScrollPane1" min="-2" max="-2" attributes="0"/>
-                          <EmptySpace type="separate" max="-2" attributes="0"/>
-                          <Group type="103" groupAlignment="3" attributes="0">
-                              <Component id="nodeWidthSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
-                              <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
-                          </Group>
-                          <EmptySpace type="separate" max="-2" attributes="0"/>
-                          <Group type="103" groupAlignment="3" attributes="0">
-                              <Component id="portSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
-                              <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
-                          </Group>
-                      </Group>
-                      <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
-                  </Group>
-                  <EmptySpace min="-2" pref="73" max="-2" attributes="0"/>
-              </Group>
-          </Group>
-        </DimensionLayout>
-      </Layout>
-      <SubComponents>
-        <Component class="javax.swing.JLabel" name="jLabel1">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Node Text"/>
-          </Properties>
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel2">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Node Width"/>
-          </Properties>
-        </Component>
-        <Component class="javax.swing.JSpinner" name="portSpinner">
-        </Component>
-        <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-          <AuxValues>
-            <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-          </AuxValues>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-          <SubComponents>
-            <Component class="javax.swing.JTextArea" name="nodeTextArea">
-              <Properties>
-                <Property name="columns" type="int" value="20"/>
-                <Property name="rows" type="int" value="5"/>
-              </Properties>
-            </Component>
-          </SubComponents>
-        </Container>
-        <Component class="javax.swing.JSpinner" name="nodeWidthSpinner">
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel3">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Network Port"/>
-          </Properties>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
--- a/visualizer/Settings/src/com/sun/hotspot/igv/settings/ViewPanel.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.settings;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-final class ViewPanel extends javax.swing.JPanel {
-
-    private final ViewOptionsPanelController controller;
-
-    ViewPanel(ViewOptionsPanelController controller) {
-        this.controller = controller;
-        initComponents();
-    }
-
-    /** This method is called from within the constructor to
-     * initialize the form.
-     * WARNING: Do NOT modify this code. The content of this method is
-     * always regenerated by the Form Editor.
-     */
-    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void initComponents() {
-
-        jPanel1 = new javax.swing.JPanel();
-        jLabel1 = new javax.swing.JLabel();
-        jLabel2 = new javax.swing.JLabel();
-        portSpinner = new javax.swing.JSpinner();
-        jScrollPane1 = new javax.swing.JScrollPane();
-        nodeTextArea = new javax.swing.JTextArea();
-        nodeWidthSpinner = new javax.swing.JSpinner();
-        jLabel3 = new javax.swing.JLabel();
-
-        org.openide.awt.Mnemonics.setLocalizedText(jLabel1, "Node Text");
-
-        org.openide.awt.Mnemonics.setLocalizedText(jLabel2, "Node Width");
-
-        nodeTextArea.setColumns(20);
-        nodeTextArea.setRows(5);
-        jScrollPane1.setViewportView(nodeTextArea);
-
-        org.openide.awt.Mnemonics.setLocalizedText(jLabel3, "Network Port");
-
-        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
-        jPanel1.setLayout(jPanel1Layout);
-        jPanel1Layout.setHorizontalGroup(
-            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
-                .addContainerGap()
-                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                    .add(jLabel1)
-                    .add(jLabel3)
-                    .add(jLabel2))
-                .add(39, 39, 39)
-                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                    .add(portSpinner, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 63, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                    .add(nodeWidthSpinner, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 63, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                    .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 365, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
-                .addContainerGap())
-        );
-        jPanel1Layout.setVerticalGroup(
-            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(jPanel1Layout.createSequentialGroup()
-                .addContainerGap()
-                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-                    .add(jPanel1Layout.createSequentialGroup()
-                        .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                        .add(18, 18, 18)
-                        .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
-                            .add(nodeWidthSpinner, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                            .add(jLabel2))
-                        .add(18, 18, 18)
-                        .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
-                            .add(portSpinner, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                            .add(jLabel3)))
-                    .add(jLabel1))
-                .add(73, 73, 73))
-        );
-
-        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
-        this.setLayout(layout);
-        layout.setHorizontalGroup(
-            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(layout.createSequentialGroup()
-                .addContainerGap()
-                .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                .addContainerGap())
-        );
-        layout.setVerticalGroup(
-            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(layout.createSequentialGroup()
-                .addContainerGap()
-                .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 232, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                .addContainerGap(206, Short.MAX_VALUE))
-        );
-    }// </editor-fold>//GEN-END:initComponents
-    void load() {
-        nodeTextArea.setText(Settings.get().get(Settings.NODE_TEXT, Settings.NODE_TEXT_DEFAULT));
-        nodeWidthSpinner.setValue(Integer.parseInt(Settings.get().get(Settings.NODE_WIDTH, Settings.NODE_WIDTH_DEFAULT)));
-        portSpinner.setValue(Integer.parseInt(Settings.get().get(Settings.PORT, Settings.PORT_DEFAULT)));
-    }
-
-    void store() {
-        Settings.get().put(Settings.NODE_TEXT, nodeTextArea.getText());
-        Settings.get().put(Settings.NODE_WIDTH, nodeWidthSpinner.getValue().toString());
-        Settings.get().put(Settings.PORT, portSpinner.getValue().toString());
-    }
-
-    boolean valid() {
-        return true;
-    }
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.JLabel jLabel1;
-    private javax.swing.JLabel jLabel2;
-    private javax.swing.JLabel jLabel3;
-    private javax.swing.JPanel jPanel1;
-    private javax.swing.JScrollPane jScrollPane1;
-    private javax.swing.JTextArea nodeTextArea;
-    private javax.swing.JSpinner nodeWidthSpinner;
-    private javax.swing.JSpinner portSpinner;
-    // End of variables declaration//GEN-END:variables
-}
--- a/visualizer/Settings/src/com/sun/hotspot/igv/settings/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
-<filesystem>
-    <folder name="OptionsDialog">
-      <!-- <file name="Advanced.instance_hidden"/>
-        <file name="General.instance_hidden"/>-->
-        <file name="com-sun-hotspot-igv-settings-ViewOptionsCategory.instance">
-            <attr name="position" intvalue="100" />
-        </file>
-    </folder>
-</filesystem>
Binary file visualizer/Settings/src/com/sun/hotspot/igv/settings/settings.png has changed
--- a/visualizer/SharedActions/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.oracle.graal.visualizer.sharedactions" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.oracle.graal.visualizer.sharedactions.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/SharedActions/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.oracle.graal.visualizer.sharedactions
-OpenIDE-Module-Localizing-Bundle: com/oracle/graal/visualizer/sharedactions/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/SharedActions/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.oracle.graal.visualizer.sharedactions-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/SharedActions/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=c3bdef4e
-build.xml.script.CRC32=da3659b1
-build.xml.stylesheet.CRC32=a56c6a5b@2.47.1
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=c3bdef4e
-nbproject/build-impl.xml.script.CRC32=567ad23a
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.47.1
--- a/visualizer/SharedActions/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/SharedActions/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.oracle.graal.visualizer.sharedactions</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.svg</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.actions</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.24.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.awt</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.39.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.dialogs</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.23.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.19.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.oracle.graal.visualizer.sharedactions</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/SharedActions/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=SharedActions
--- a/visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ExportSVGAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.sharedactions;
-
-import com.sun.hotspot.igv.svg.BatikSVG;
-import java.awt.Graphics2D;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.*;
-import javax.swing.JFileChooser;
-import org.openide.DialogDisplayer;
-import org.openide.NotifyDescriptor;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-import org.openide.util.NbPreferences;
-
-@ActionID(id = "com.oracle.graal.visualizer.sharedactions.ExportSVGAction", category = "File")
-@ActionRegistration(displayName = "Export", iconBase = "com/oracle/graal/visualizer/sharedactions/images/export.png")
-@ActionReference(path = "Menu/File", position = 600)
-public class ExportSVGAction implements ActionListener {
-
-    private static final String PREFERENCE_DIR = "dir";
-    private ExportSVGCookie exportCookie;
-
-    public ExportSVGAction(ExportSVGCookie exportCookie) {
-        this.exportCookie = exportCookie;
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent actionEvent) {
-        Graphics2D svgGenerator = BatikSVG.createGraphicsObject();
-        if (svgGenerator == null) {
-            NotifyDescriptor message = new NotifyDescriptor.Message("For export to SVG files the Batik SVG Toolkit must be intalled.", NotifyDescriptor.ERROR_MESSAGE);
-            DialogDisplayer.getDefault().notifyLater(message);
-            return;
-        }
-        
-        File f = selectFile();
-        if (f != null) {
-            exportCookie.paint(svgGenerator);
-            FileOutputStream os = null;
-            try {
-                os = new FileOutputStream(f);
-                Writer out = new OutputStreamWriter(os, "UTF-8");
-                BatikSVG.printToStream(svgGenerator, out, true);
-            } catch (FileNotFoundException e) {
-                NotifyDescriptor message = new NotifyDescriptor.Message("For export to SVG files the Batik SVG Toolkit must be intalled.", NotifyDescriptor.ERROR_MESSAGE);
-                DialogDisplayer.getDefault().notifyLater(message);
-
-            } catch (UnsupportedEncodingException e) {
-            } finally {
-                if (os != null) {
-                    try {
-                        os.close();
-                    } catch (IOException e) {
-                    }
-                }
-            }
-        }
-    }
-
-    private File selectFile() {
-        JFileChooser fc = new JFileChooser();
-        fc.setFileFilter(new javax.swing.filechooser.FileFilter() {
-
-            @Override
-            public boolean accept(File f) {
-                return true;
-            }
-
-            @Override
-            public String getDescription() {
-                return "SVG files (*.svg)";
-            }
-        });
-        fc.setCurrentDirectory(new File(NbPreferences.forModule(ExportSVGAction.class).get(PREFERENCE_DIR, "~")));
-
-
-        if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
-            File file = fc.getSelectedFile();
-            if (!file.getName().contains(".")) {
-                file = new File(file.getAbsolutePath() + ".svg");
-            }
-
-            File dir = file;
-            if (!dir.isDirectory()) {
-                dir = dir.getParentFile();
-            }
-
-            NbPreferences.forModule(ExportSVGAction.class).put(PREFERENCE_DIR, dir.getAbsolutePath());
-            return file;
-        }
-
-        return null;
-    }
-}
--- a/visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ExportSVGCookie.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.sharedactions;
-
-import java.awt.Graphics2D;
-
-public interface ExportSVGCookie {
-    void paint(Graphics2D g);
-}
--- a/visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ShowAllAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.sharedactions;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.List;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "com.oracle.graal.visualizer.sharedactions.ShowAllAction", category = "View")
-@ActionRegistration(displayName = "Fit Scene to Window", iconBase="com/oracle/graal/visualizer/sharedactions/images/autosize.gif")
-@ActionReference(path = "Menu/View", position = 500)
-public class ShowAllAction implements ActionListener {
-       
-    private List<ZoomCookie> zoomCookies;
-    
-    public ShowAllAction(List<ZoomCookie> zoomCookies) {
-        this.zoomCookies = zoomCookies;
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        for (ZoomCookie c : zoomCookies) {
-            c.showAll();
-        }
-    }
-}   
--- a/visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ZoomCookie.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.sharedactions;
-
-public interface ZoomCookie {
-    void zoomIn();
-    void zoomOut();
-    void showAll();
-    
-}
--- a/visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ZoomInAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.sharedactions;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.List;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "com.oracle.graal.visualizer.sharedactions.ZoomInAction", category = "View")
-@ActionRegistration(displayName = "Zoom In", iconBase="com/oracle/graal/visualizer/sharedactions/images/zoomin.gif")
-@ActionReference(path = "Menu/View", position = 600)
-public class ZoomInAction implements ActionListener {
-    
-    private List<ZoomCookie> zoomCookies;
-    
-    public ZoomInAction(List<ZoomCookie> zoomCookies) {
-        this.zoomCookies = zoomCookies;
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        for (ZoomCookie c : zoomCookies) {
-            c.zoomIn();
-        }
-    }
-}   
--- a/visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/ZoomOutAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.sharedactions;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.List;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "com.oracle.graal.visualizer.sharedactions.ZoomOutAction", category = "View")
-@ActionRegistration(displayName = "Zoom Out", iconBase="com/oracle/graal/visualizer/sharedactions/images/zoomout.gif")
-@ActionReference(path = "Menu/View", position = 700)
-public class ZoomOutAction implements ActionListener {
-   
-    private List<ZoomCookie> zoomCookies;
-    
-    public ZoomOutAction(List<ZoomCookie> zoomCookies) {
-        this.zoomCookies = zoomCookies;
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        for (ZoomCookie c : zoomCookies) {
-            c.zoomOut();
-        }
-    } 
-}   
Binary file visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/images/autosize.gif has changed
Binary file visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/images/export.png has changed
Binary file visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/images/zoomin.gif has changed
Binary file visualizer/SharedActions/src/com/oracle/graal/visualizer/sharedactions/images/zoomout.gif has changed
--- a/visualizer/SnapshotsView/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.oracle.graal.visualizer.snapshots" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.oracle.graal.visualizer.snapshots.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/SnapshotsView/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.oracle.graal.visualizer.snapshots
-OpenIDE-Module-Layer: com/oracle/graal/visualizer/snapshots/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/oracle/graal/visualizer/snapshots/Bundle.properties
-OpenIDE-Module-Requires: org.openide.windows.WindowManager
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/SnapshotsView/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.oracle.graal.visualizer.snapshots-impl" basedir="..">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/SnapshotsView/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=8a85c130
-build.xml.script.CRC32=d28dc95d
-build.xml.stylesheet.CRC32=a56c6a5b@2.47.1
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=8a85c130
-nbproject/build-impl.xml.script.CRC32=dfcb8f66
-nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.47.1
--- a/visualizer/SnapshotsView/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-cluster.path=\
-    ${nbplatform.active.dir}/ide:\
-    ${nbplatform.active.dir}/platform
-disabled.modules=\
-    com.jcraft.jsch,\
-    com.jcraft.jzlib,\
-    org.apache.commons.codec,\
-    org.apache.commons.httpclient,\
-    org.apache.commons.io,\
-    org.apache.commons.lang,\
-    org.apache.commons.logging,\
-    org.apache.ws.commons.util,\
-    org.apache.xml.resolver,\
-    org.apache.xmlrpc,\
-    org.eclipse.core.contenttype,\
-    org.eclipse.core.jobs,\
-    org.eclipse.core.net,\
-    org.eclipse.core.runtime,\
-    org.eclipse.core.runtime.compatibility.auth,\
-    org.eclipse.equinox.app,\
-    org.eclipse.equinox.common,\
-    org.eclipse.equinox.preferences,\
-    org.eclipse.equinox.registry,\
-    org.eclipse.equinox.security,\
-    org.eclipse.jgit,\
-    org.eclipse.mylyn.bugzilla.core,\
-    org.eclipse.mylyn.commons.core,\
-    org.eclipse.mylyn.commons.net,\
-    org.eclipse.mylyn.commons.xmlrpc,\
-    org.eclipse.mylyn.tasks.core,\
-    org.mozilla.rhino.patched,\
-    org.netbeans.api.debugger,\
-    org.netbeans.api.java.classpath,\
-    org.netbeans.api.xml,\
-    org.netbeans.core.browser,\
-    org.netbeans.core.execution,\
-    org.netbeans.core.ide,\
-    org.netbeans.core.io.ui,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.nativeaccess,\
-    org.netbeans.core.osgi,\
-    org.netbeans.lib.cvsclient,\
-    org.netbeans.lib.terminalemulator,\
-    org.netbeans.libs.antlr3.runtime,\
-    org.netbeans.libs.bytelist,\
-    org.netbeans.libs.commons_net,\
-    org.netbeans.libs.freemarker,\
-    org.netbeans.libs.git,\
-    org.netbeans.libs.ini4j,\
-    org.netbeans.libs.jaxb,\
-    org.netbeans.libs.jsr223,\
-    org.netbeans.libs.junit4,\
-    org.netbeans.libs.jvyamlb,\
-    org.netbeans.libs.lucene,\
-    org.netbeans.libs.smack,\
-    org.netbeans.libs.svnClientAdapter,\
-    org.netbeans.libs.svnClientAdapter.javahl,\
-    org.netbeans.libs.svnClientAdapter.svnkit,\
-    org.netbeans.libs.swingx,\
-    org.netbeans.libs.xerces,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.bugtracking,\
-    org.netbeans.modules.bugtracking.bridge,\
-    org.netbeans.modules.bugzilla,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.csl.api,\
-    org.netbeans.modules.css.editor,\
-    org.netbeans.modules.css.lib,\
-    org.netbeans.modules.css.visual,\
-    org.netbeans.modules.db,\
-    org.netbeans.modules.db.core,\
-    org.netbeans.modules.db.dataview,\
-    org.netbeans.modules.db.drivers,\
-    org.netbeans.modules.db.kit,\
-    org.netbeans.modules.db.metadata.model,\
-    org.netbeans.modules.db.mysql,\
-    org.netbeans.modules.db.sql.editor,\
-    org.netbeans.modules.db.sql.visualeditor,\
-    org.netbeans.modules.dbapi,\
-    org.netbeans.modules.defaults,\
-    org.netbeans.modules.derby,\
-    org.netbeans.modules.dlight.nativeexecution,\
-    org.netbeans.modules.dlight.terminal,\
-    org.netbeans.modules.editor.bookmarks,\
-    org.netbeans.modules.editor.bracesmatching,\
-    org.netbeans.modules.editor.codetemplates,\
-    org.netbeans.modules.editor.completion,\
-    org.netbeans.modules.editor.guards,\
-    org.netbeans.modules.editor.indent.project,\
-    org.netbeans.modules.editor.kit,\
-    org.netbeans.modules.editor.macros,\
-    org.netbeans.modules.editor.structure,\
-    org.netbeans.modules.extbrowser,\
-    org.netbeans.modules.extexecution,\
-    org.netbeans.modules.extexecution.destroy,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.git,\
-    org.netbeans.modules.glassfish.common,\
-    org.netbeans.modules.gototest,\
-    org.netbeans.modules.gsf.codecoverage,\
-    org.netbeans.modules.gsf.testrunner,\
-    org.netbeans.modules.html,\
-    org.netbeans.modules.html.editor,\
-    org.netbeans.modules.html.editor.lib,\
-    org.netbeans.modules.html.lexer,\
-    org.netbeans.modules.html.parser,\
-    org.netbeans.modules.html.validation,\
-    org.netbeans.modules.httpserver,\
-    org.netbeans.modules.hudson,\
-    org.netbeans.modules.hudson.git,\
-    org.netbeans.modules.hudson.mercurial,\
-    org.netbeans.modules.hudson.subversion,\
-    org.netbeans.modules.hudson.tasklist,\
-    org.netbeans.modules.ide.kit,\
-    org.netbeans.modules.image,\
-    org.netbeans.modules.javascript.editing,\
-    org.netbeans.modules.javascript.hints,\
-    org.netbeans.modules.javascript.kit,\
-    org.netbeans.modules.javascript.refactoring,\
-    org.netbeans.modules.jellytools.ide,\
-    org.netbeans.modules.jumpto,\
-    org.netbeans.modules.keyring.impl,\
-    org.netbeans.modules.languages,\
-    org.netbeans.modules.languages.diff,\
-    org.netbeans.modules.languages.manifest,\
-    org.netbeans.modules.languages.yaml,\
-    org.netbeans.modules.lexer.nbbridge,\
-    org.netbeans.modules.localhistory,\
-    org.netbeans.modules.mercurial,\
-    org.netbeans.modules.netbinox,\
-    org.netbeans.modules.parsing.api,\
-    org.netbeans.modules.parsing.lucene,\
-    org.netbeans.modules.print.editor,\
-    org.netbeans.modules.project.ant,\
-    org.netbeans.modules.project.libraries,\
-    org.netbeans.modules.projectui,\
-    org.netbeans.modules.projectui.buildmenu,\
-    org.netbeans.modules.projectuiapi,\
-    org.netbeans.modules.properties,\
-    org.netbeans.modules.properties.syntax,\
-    org.netbeans.modules.refactoring.api,\
-    org.netbeans.modules.schema2beans,\
-    org.netbeans.modules.server,\
-    org.netbeans.modules.servletapi,\
-    org.netbeans.modules.spellchecker,\
-    org.netbeans.modules.spellchecker.apimodule,\
-    org.netbeans.modules.spellchecker.bindings.htmlxml,\
-    org.netbeans.modules.spellchecker.bindings.properties,\
-    org.netbeans.modules.spellchecker.dictionary_en,\
-    org.netbeans.modules.spellchecker.kit,\
-    org.netbeans.modules.spi.actions,\
-    org.netbeans.modules.subversion,\
-    org.netbeans.modules.swing.validation,\
-    org.netbeans.modules.target.iterator,\
-    org.netbeans.modules.tasklist.kit,\
-    org.netbeans.modules.tasklist.projectint,\
-    org.netbeans.modules.tasklist.todo,\
-    org.netbeans.modules.tasklist.ui,\
-    org.netbeans.modules.terminal,\
-    org.netbeans.modules.usersguide,\
-    org.netbeans.modules.utilities,\
-    org.netbeans.modules.utilities.project,\
-    org.netbeans.modules.versioning,\
-    org.netbeans.modules.versioning.indexingbridge,\
-    org.netbeans.modules.versioning.system.cvss.installer,\
-    org.netbeans.modules.versioning.util,\
-    org.netbeans.modules.web.client.tools.api,\
-    org.netbeans.modules.web.common,\
-    org.netbeans.modules.web.indent,\
-    org.netbeans.modules.xml,\
-    org.netbeans.modules.xml.axi,\
-    org.netbeans.modules.xml.catalog,\
-    org.netbeans.modules.xml.core,\
-    org.netbeans.modules.xml.jaxb.api,\
-    org.netbeans.modules.xml.lexer,\
-    org.netbeans.modules.xml.multiview,\
-    org.netbeans.modules.xml.retriever,\
-    org.netbeans.modules.xml.schema.completion,\
-    org.netbeans.modules.xml.schema.model,\
-    org.netbeans.modules.xml.tax,\
-    org.netbeans.modules.xml.text,\
-    org.netbeans.modules.xml.tools,\
-    org.netbeans.modules.xml.wsdl.model,\
-    org.netbeans.modules.xml.xam,\
-    org.netbeans.modules.xml.xdm,\
-    org.netbeans.modules.xsl,\
-    org.netbeans.spi.debugger.ui,\
-    org.netbeans.spi.editor.hints,\
-    org.netbeans.spi.navigator,\
-    org.netbeans.spi.palette,\
-    org.netbeans.spi.tasklist,\
-    org.netbeans.spi.viewmodel,\
-    org.netbeans.swing.dirchooser,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.options,\
-    org.openide.util.enumerations
-## Not disabled because of NetBeans bug 206347:
-## Applications not using OSGi don't start on NbP 7.1
-#   org.netbeans.core.netigso,\
-#   org.netbeans.libs.felix,\
-#   org.netbeans.libs.osgi,\
-nbplatform.active=default
--- a/visualizer/SnapshotsView/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.6
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/SnapshotsView/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.oracle.graal.visualizer.snapshots</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.oracle.graal.visualizer.editor</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.settings</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.33.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.awt</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.39.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.19.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.11.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.48.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages/>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/SnapshotsView/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=SnapshotsView
--- a/visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/SnapshotTopComponent.form	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout>
-    <DimensionLayout dim="0">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <EmptySpace min="0" pref="400" max="32767" attributes="0"/>
-      </Group>
-    </DimensionLayout>
-    <DimensionLayout dim="1">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <EmptySpace min="0" pref="300" max="32767" attributes="0"/>
-      </Group>
-    </DimensionLayout>
-  </Layout>
-</Form>
--- a/visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/SnapshotTopComponent.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.snapshots;
-
-import com.oracle.graal.visualizer.editor.EditorTopComponent;
-import com.oracle.graal.visualizer.util.LookupUtils;
-import com.sun.hotspot.igv.data.ChangedEvent;
-import com.sun.hotspot.igv.data.ChangedListener;
-import com.sun.hotspot.igv.util.RangeSlider;
-import com.sun.hotspot.igv.util.RangeSliderModel;
-import java.awt.BorderLayout;
-import javax.swing.JScrollPane;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.util.Lookup.Result;
-import org.openide.util.LookupEvent;
-import org.openide.util.LookupListener;
-import org.openide.windows.TopComponent;
-import org.openide.windows.WindowManager;
-
-@TopComponent.Description(preferredID = SnapshotTopComponent.PREFERRED_ID, persistenceType = TopComponent.PERSISTENCE_ALWAYS)
-@TopComponent.Registration(mode = "belowExplorer", openAtStartup = true)
-@ActionID(category = "Window", id = "com.oracle.graal.visualizer.snapshots.SnapshotTopComponent")
-@ActionReference(path = "Menu/Window")
-@TopComponent.OpenActionRegistration(displayName = "Snapshot", preferredID = SnapshotTopComponent.PREFERRED_ID)
-public final class SnapshotTopComponent extends TopComponent {
-    public static final String PREFERRED_ID = "SnapshotTopComponent";
-
-    private final Result<RangeSliderModel> result;
-    private final RangeSlider rangeSlider;
-    private final ChangedEvent<RangeSliderModel> rangeSliderChangedEvent = new ChangedEvent<RangeSliderModel>(null);
-    private final LookupListener lookupListener = new LookupListener() {
-
-        @Override
-        public void resultChanged(LookupEvent le) {
-            update();
-        }
-    };
-
-    private final ChangedListener<RangeSliderModel> rangeSliderChangedListener = new ChangedListener<RangeSliderModel>(){
-
-        @Override
-        public void changed(RangeSliderModel source) {
-            rangeSliderChangedEvent.fire();
-        }
-    };
-
-    public SnapshotTopComponent() {
-        initComponents();
-        setName("Snapshot Window");
-        setToolTipText("This is a Snapshot window");
-
-        result = LookupUtils.getLastActiveDelegatingLookup(EditorTopComponent.class).lookupResult(RangeSliderModel.class);
-        result.addLookupListener(lookupListener);
-        this.rangeSlider = new RangeSlider(null);
-        this.setLayout(new BorderLayout());
-        final JScrollPane scrollPane = new JScrollPane(rangeSlider);
-        scrollPane.getVerticalScrollBar().setUnitIncrement(RangeSlider.ITEM_HEIGHT);
-        this.add(scrollPane, BorderLayout.CENTER);
-        update();
-    }
-
-    private void update() {
-        RangeSliderModel newModel;
-        if (result.allInstances().size() > 0) {
-            newModel = result.allInstances().iterator().next();
-        } else {
-            newModel = null;
-        }
-        if (rangeSlider.getModel() != null) {
-            rangeSlider.getModel().getChangedEvent().removeListener(rangeSliderChangedListener);
-        }
-        rangeSlider.setModel(newModel);
-        rangeSliderChangedEvent.changeObject(newModel);
-        if (newModel != null) {
-            newModel.getChangedEvent().addListener(rangeSliderChangedListener);
-        }
-    }
-
-    public ChangedEvent<RangeSliderModel> getRangeSliderChangedEvent() {
-        return rangeSliderChangedEvent;
-    }
-
-    public static SnapshotTopComponent findInstance() {
-        return (SnapshotTopComponent) WindowManager.getDefault().findTopComponent(PREFERRED_ID);
-    }
-
-    /**
-     * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-     * regenerated by the Form Editor.
-     */
-    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void initComponents() {
-
-        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
-        this.setLayout(layout);
-        layout.setHorizontalGroup(
-            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGap(0, 400, Short.MAX_VALUE)
-        );
-        layout.setVerticalGroup(
-            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGap(0, 300, Short.MAX_VALUE)
-        );
-    }// </editor-fold>//GEN-END:initComponents
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    // End of variables declaration//GEN-END:variables
-
-}
--- a/visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/actions/NextSnapshotAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.snapshots.actions;
-
-import com.oracle.graal.visualizer.snapshots.SnapshotTopComponent;
-import com.sun.hotspot.igv.data.ChangedListener;
-import com.sun.hotspot.igv.util.RangeSliderModel;
-import java.awt.event.ActionEvent;
-import javax.swing.AbstractAction;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "com.oracle.graal.visualizer.editor.actions.NextSnapshotAction", category = "View")
-@ActionRegistration(displayName = "Next snapshot", iconBase = "com/oracle/graal/visualizer/snapshots/images/next_snapshot.png")
-@ActionReference(path = "Menu/View", position = 150)
-public final class NextSnapshotAction extends AbstractAction{
-
-    private RangeSliderModel model;
-
-    public NextSnapshotAction() {
-        SnapshotTopComponent.findInstance().getRangeSliderChangedEvent().addListenerAndFire(changeListener);
-    }
-    private final ChangedListener<RangeSliderModel> changeListener = new ChangedListener<RangeSliderModel>() {
-
-        @Override
-        public void changed(RangeSliderModel source) {
-            model = source;
-            setEnabled(model != null && model.getSecondPosition() != model.getPositions().size() - 1);
-        }
-    };
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        if (model != null) {
-            int fp = model.getFirstPosition();
-            int sp = model.getSecondPosition();
-            if (sp != model.getPositions().size() - 1) {
-                int nfp = fp + 1;
-                int nsp = sp + 1;
-                model.setPositions(nfp, nsp);
-            }
-        }
-    }
-}
--- a/visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/actions/PrevSnapshotAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.oracle.graal.visualizer.snapshots.actions;
-
-import com.oracle.graal.visualizer.snapshots.SnapshotTopComponent;
-import com.sun.hotspot.igv.data.ChangedListener;
-import com.sun.hotspot.igv.util.RangeSliderModel;
-import java.awt.event.ActionEvent;
-import javax.swing.AbstractAction;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-
-@ActionID(id = "com.oracle.graal.visualizer.editor.actions.PrevSnapshotAction", category = "View")
-@ActionRegistration(displayName = "Previous snapshot", iconBase = "com/oracle/graal/visualizer/snapshots/images/prev_snapshot.png")
-@ActionReference(path = "Menu/View", position = 100)
-public final class PrevSnapshotAction extends AbstractAction {
-
-    private RangeSliderModel model;
-
-    public PrevSnapshotAction() {
-        SnapshotTopComponent.findInstance().getRangeSliderChangedEvent().addListenerAndFire(changeListener);
-    }
-    private final ChangedListener<RangeSliderModel> changeListener = new ChangedListener<RangeSliderModel>() {
-
-        @Override
-        public void changed(RangeSliderModel source) {
-            model = source;
-            setEnabled(model != null && model.getFirstPosition() != 0);
-        }
-    };
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        if (model != null) {
-            int fp = model.getFirstPosition();
-            int sp = model.getSecondPosition();
-            if (fp != 0) {
-                int nfp = fp - 1;
-                int nsp = sp - 1;
-                model.setPositions(nfp, nsp);
-            }
-        }
-    }
-}
--- a/visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/belowExplorerWsmode.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mode version="2.4">
-    <name unique="belowExplorer"/>
-    <kind type="view"/>
-    <state type="joined"/>
-    <constraints>
-        <path orientation="horizontal" number="20" weight="0.3"/>
-        <path orientation="vertical" number="21" weight="0.548"/>
-    </constraints>
-    <bounds x="0" y="0" width="0" height="0"/>
-    <frame state="0"/>
-    
-    <empty-behavior permanent="false"/>
-</mode>
Binary file visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/images/next_snapshot.png has changed
Binary file visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/images/prev_snapshot.png has changed
--- a/visualizer/SnapshotsView/src/com/oracle/graal/visualizer/snapshots/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
-<filesystem> 
-    <folder name="Windows2">
-        <folder name="Modes">  
-            <file name="belowExplorer.wsmode" url="belowExplorerWsmode.xml"/>
-        </folder>
-    </folder>
-</filesystem>
--- a/visualizer/Util/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.util" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.util.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/Util/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.util
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/util/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/Util/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.util-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/Util/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=a470a16f
-build.xml.script.CRC32=466cf03b
-build.xml.stylesheet.CRC32=05353c81
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=a470a16f
-nbproject/build-impl.xml.script.CRC32=39f45e01
-nbproject/build-impl.xml.stylesheet.CRC32=3f8b4615
--- a/visualizer/Util/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/Util/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/Util/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.util</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.api.visual</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>2.27.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.nodes</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.20.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.14.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.6.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.48.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.oracle.graal.visualizer.util</package>
-                <package>com.sun.hotspot.igv.util</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/Util/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/Util/src/com/oracle/graal/visualizer/util/LookupUtils.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.oracle.graal.visualizer.util;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.ArrayList;
-import java.util.List;
-import javax.swing.Action;
-import org.openide.util.ContextAwareAction;
-import org.openide.util.Lookup;
-import org.openide.util.Lookup.Provider;
-import org.openide.util.lookup.Lookups;
-import org.openide.windows.TopComponent;
-
-/**
- * Utilities that build upon the Lookup API.
- */
-public class LookupUtils {
-
-    
-    /**
-     * Creates a new lookup that will delegate to the last open window of a specified top component class. If the window is closed, the lookup will be empty.
-     * @param clazz the class identifying the top component type
-     * @return a delegating lookup
-     */
-    public static Lookup getLastActiveDelegatingLookup(Class<?> clazz) {
-        final TopComponentLookup topComponentLookupImpl = new TopComponentLookup(clazz);
-        TopComponent.getRegistry().addPropertyChangeListener(topComponentLookupImpl);
-        return topComponentLookupImpl.lookup;
-    }
-    
-    public static Iterable<Action> lookupActions(String path) {
-        return lookupActions(path, null);
-    }
-
-    public static Iterable<Action> lookupActions(String path, Lookup context) {
-        List<Action> actions = new ArrayList<>();
-        for (Action a : Lookups.forPath(path).lookupAll(Action.class)) {
-            Action newAction = a;
-            if (a instanceof ContextAwareAction && context != null) {
-                newAction = ((ContextAwareAction) a).createContextAwareInstance(context);
-            }
-            newAction.putValue(Action.SHORT_DESCRIPTION, newAction.getValue(Action.NAME));
-            actions.add(newAction);
-            
-        }
-        return actions;
-    }
-    
-    private static class TopComponentLookup implements PropertyChangeListener {
-        private final Class<?> clazz;
-        private final Lookup lookup;
-        private TopComponent lastActive;
-        
-        private final Provider lookupProvider = new Provider() {
-
-            @Override
-            public Lookup getLookup() {
-                if (lastActive == null) {
-                    return Lookup.EMPTY;
-                } else {
-                    return lastActive.getLookup();
-                }
-            }
-        };
-        
-        public TopComponentLookup(Class<?> clazz) {
-            this.clazz = clazz;
-            lookup = Lookups.proxy(lookupProvider);
-            update();
-        }
-        
-        @Override
-        public void propertyChange(PropertyChangeEvent evt) {
-            update();
-        }
-
-        private void update() {
-            TopComponent curActivated = TopComponent.getRegistry().getActivated();
-            if (curActivated != lastActive) {
-                if (clazz.isAssignableFrom(curActivated.getClass())) {
-                    // We have a new top component for our lookup.
-                    lastActive = curActivated;
-                    refreshLookup();
-                } else {
-                    // We have no new top component. Check if the old one is still opened.
-                    if (lastActive != null && !TopComponent.getRegistry().getOpened().contains(lastActive)) {
-                        // The top component was closed => Remove lookup.
-                        lastActive = null;
-                        refreshLookup();
-                    }
-                }
-            }
-        }
-
-        private void refreshLookup() {
-            lookup.lookup(Object.class);
-        }
-    };
-}
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/BoundedZoomAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.util;
-
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Point;
-import java.awt.Rectangle;
-import javax.swing.JComponent;
-import javax.swing.JScrollPane;
-import org.netbeans.api.visual.action.WidgetAction;
-import org.netbeans.api.visual.action.WidgetAction.State;
-import org.netbeans.api.visual.action.WidgetAction.WidgetMouseWheelEvent;
-import org.netbeans.api.visual.animator.SceneAnimator;
-import org.netbeans.api.visual.widget.Scene;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class BoundedZoomAction extends WidgetAction.Adapter {
-
-    private double minFactor = 0.0;
-    private double maxFactor = Double.MAX_VALUE;
-    private double zoomMultiplier;
-    private boolean useAnimator;
-
-    public BoundedZoomAction(double zoomMultiplier, boolean useAnimator) {
-        this.zoomMultiplier = zoomMultiplier;
-        this.useAnimator = useAnimator;
-    }
-
-    public double getMinFactor() {
-        return minFactor;
-    }
-
-    public void setMinFactor(double d) {
-        minFactor = d;
-    }
-
-    public double getMaxFactor() {
-        return maxFactor;
-    }
-
-    public void setMaxFactor(double d) {
-        maxFactor = d;
-    }
-
-    private JScrollPane findScrollPane(JComponent component) {
-        for (;;) {
-            if (component == null) {
-                return null;
-            }
-            if (component instanceof JScrollPane) {
-                return ((JScrollPane) component);
-            }
-            Container parent = component.getParent();
-            if (!(parent instanceof JComponent)) {
-                return null;
-            }
-            component = (JComponent) parent;
-        }
-    }
-
-    @Override
-    public State mouseWheelMoved(Widget widget, WidgetMouseWheelEvent event) {
-        final Scene scene = widget.getScene();
-        int amount = event.getWheelRotation();
-        JScrollPane scrollPane = findScrollPane(scene.getView());
-        Point viewPosition = null;
-        Point mouseLocation = scene.convertSceneToView(event.getPoint());
-        int xOffset = 0;
-        int yOffset = 0;
-        Rectangle bounds = new Rectangle(scene.getBounds());
-        Dimension componentSize = new Dimension(scene.getView().getPreferredSize());
-
-        if (scrollPane != null) {
-            viewPosition = new Point(scrollPane.getViewport().getViewPosition());
-            xOffset = (mouseLocation.x - viewPosition.x);
-            yOffset = (mouseLocation.y - viewPosition.y);
-            viewPosition.x += xOffset;
-            viewPosition.y += yOffset;
-        }
-
-        if (useAnimator) {
-            SceneAnimator sceneAnimator = scene.getSceneAnimator();
-            synchronized (sceneAnimator) {
-                double zoom = sceneAnimator.isAnimatingZoomFactor() ? sceneAnimator.getTargetZoomFactor() : scene.getZoomFactor();
-                while (amount > 0 && zoom / zoomMultiplier >= minFactor && zoom / zoomMultiplier <= maxFactor) {
-                    zoom /= zoomMultiplier;
-                    if (viewPosition != null) {
-                        viewPosition.x /= zoomMultiplier;
-                        viewPosition.y /= zoomMultiplier;
-                        bounds.width /= zoomMultiplier;
-                        bounds.height /= zoomMultiplier;
-                        componentSize.width /= zoomMultiplier;
-                        componentSize.height /= zoomMultiplier;
-                    }
-                    amount--;
-                }
-                while (amount < 0 && zoom * zoomMultiplier >= minFactor && zoom * zoomMultiplier <= maxFactor) {
-                    zoom *= zoomMultiplier;
-                    if (viewPosition != null) {
-                        viewPosition.x *= zoomMultiplier;
-                        viewPosition.y *= zoomMultiplier;
-                        bounds.width *= zoomMultiplier;
-                        bounds.height *= zoomMultiplier;
-                        componentSize.width *= zoomMultiplier;
-                        componentSize.height *= zoomMultiplier;
-                    }
-                    amount++;
-                }
-                sceneAnimator.animateZoomFactor(zoom);
-            }
-        } else {
-            double zoom = scene.getZoomFactor();
-            while (amount > 0 && zoom / zoomMultiplier >= minFactor && zoom / zoomMultiplier <= maxFactor) {
-                zoom /= zoomMultiplier;
-                if (viewPosition != null) {
-                    viewPosition.x /= zoomMultiplier;
-                    viewPosition.y /= zoomMultiplier;
-                    bounds.width /= zoomMultiplier;
-                    bounds.height /= zoomMultiplier;
-                    componentSize.width /= zoomMultiplier;
-                    componentSize.height /= zoomMultiplier;
-                }
-                amount--;
-            }
-            while (amount < 0 && zoom * zoomMultiplier >= minFactor && zoom * zoomMultiplier <= maxFactor) {
-                zoom *= zoomMultiplier;
-                if (viewPosition != null) {
-                    viewPosition.x *= zoomMultiplier;
-                    viewPosition.y *= zoomMultiplier;
-                    bounds.width *= zoomMultiplier;
-                    bounds.height *= zoomMultiplier;
-                    componentSize.width *= zoomMultiplier;
-                    componentSize.height *= zoomMultiplier;
-                }
-                amount++;
-            }
-            scene.setZoomFactor(zoom);
-        }
-
-        if (scrollPane != null) {
-            scene.validate(); // Call validate to update size of scene
-            Dimension size = scrollPane.getViewport().getExtentSize();
-            viewPosition.x -= xOffset;
-            viewPosition.y -= yOffset;
-            scene.resolveBounds(scene.getLocation(), bounds);
-            scene.getView().setPreferredSize(componentSize);
-            scene.getView().revalidate();
-            scene.getView().addNotify();
-            scrollPane.getViewport().setViewPosition(viewPosition);
-        }
-
-        return WidgetAction.State.CONSUMED;
-    }
-}
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=Util
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/ColorIcon.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.util;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-import javax.swing.Icon;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class ColorIcon implements Icon {
-
-    private Color color;
-
-    public ColorIcon(Color c) {
-        color = c;
-    }
-
-    @Override
-    public void paintIcon(Component c, Graphics g, int x, int y) {
-        g.setColor(color);
-        g.fillRect(x, y, 16, 16);
-    }
-
-    @Override
-    public int getIconWidth() {
-        return 16;
-    }
-
-    @Override
-    public int getIconHeight() {
-        return 16;
-    }
-}
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/CompilationViewModel.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
-package com.sun.hotspot.igv.util;
-
-import com.sun.hotspot.igv.data.*;
-import java.awt.Color;
-import java.util.List;
-
-public class CompilationViewModel implements ChangedEventProvider<CompilationViewModel> {
-    
-    private final ChangedEvent<CompilationViewModel> changedEvent = new ChangedEvent<>(this);
-    private final RangeSliderModel model;
-    private final Group group;
-
-    @Override
-    public ChangedEvent<CompilationViewModel> getChangedEvent() {
-        return changedEvent;
-    }
-    
-    public CompilationViewModel(RangeSliderModel model, Group group) {
-        this.model = model;
-        this.group = group;
-        model.getChangedEvent().addListener(rangeSliderChangedListener);
-    }
-    
-    private final ChangedListener<RangeSliderModel> rangeSliderChangedListener = new ChangedListener<RangeSliderModel>() {
-        @Override
-        public void changed(RangeSliderModel source) {
-            changedEvent.fire();
-        }
-    };
-    
-    public InputGraph getFirstSnapshot() {
-        return group.getGraphs().get(model.getFirstPosition());
-    }
-    
-    public InputGraph getSecondSnapshot() {
-        return group.getGraphs().get(model.getSecondPosition());
-    }
-
-    public void setColors(List<Color> colors) {
-        model.setColors(colors);
-    }
-}
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/DoubleClickAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.util;
-
-import org.netbeans.api.visual.action.WidgetAction;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class DoubleClickAction extends WidgetAction.Adapter {
-
-    private DoubleClickHandler handler;
-
-    public DoubleClickAction(DoubleClickHandler handler) {
-        this.handler = handler;
-    }
-
-    @Override
-    public WidgetAction.State mouseClicked(Widget widget, WidgetAction.WidgetMouseEvent event) {
-        if (event.getClickCount() > 1) {
-            handler.handleDoubleClick(widget, event);
-            return WidgetAction.State.CONSUMED;
-        }
-        return WidgetAction.State.REJECTED;
-    }
-}
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/DoubleClickHandler.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.util;
-
-import org.netbeans.api.visual.action.WidgetAction.WidgetMouseEvent;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public interface DoubleClickHandler {
-
-    public void handleDoubleClick(Widget w, WidgetMouseEvent e);
-}
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/ExtendedSatelliteComponent.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.util;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.JComponent;
-import org.netbeans.api.visual.widget.Scene;
-
-/**
- * @author David Kaspar
- * @author Thomas Wuerthinger
- */
-public class ExtendedSatelliteComponent extends JComponent implements MouseListener, MouseMotionListener, Scene.SceneListener, ComponentListener {
-
-    private Scene scene;
-    private Image image;
-    private int imageWidth;
-    private int imageHeight;
-
-    public ExtendedSatelliteComponent(Scene scene) {
-        this.scene = scene;
-        setDoubleBuffered(true);
-        setPreferredSize(new Dimension(128, 128));
-        addMouseListener(this);
-        addMouseMotionListener(this);
-    }
-
-    @Override
-    public void addNotify() {
-        super.addNotify();
-        scene.addSceneListener(this);
-        JComponent viewComponent = scene.getView();
-        if (viewComponent == null) {
-            viewComponent = scene.createView();
-        }
-        viewComponent.addComponentListener(this);
-        repaint();
-    }
-
-    @Override
-    public void removeNotify() {
-        scene.getView().removeComponentListener(this);
-        scene.removeSceneListener(this);
-        super.removeNotify();
-    }
-
-    public void update() {
-        this.image = null;
-        repaint();
-    }
-
-    @Override
-    public void paint(Graphics g) {
-        Graphics2D gr = (Graphics2D) g;
-        super.paint(g);
-        Rectangle bounds = scene.getBounds();
-        Dimension size = getSize();
-
-        double sx = bounds.width > 0 ? (double) size.width / bounds.width : 0.0;
-        double sy = bounds.width > 0 ? (double) size.height / bounds.height : 0.0;
-        double scale = Math.min(sx, sy);
-
-        int vw = (int) (scale * bounds.width);
-        int vh = (int) (scale * bounds.height);
-        int vx = (size.width - vw) / 2;
-        int vy = (size.height - vh) / 2;
-
-
-        if (image == null || vw != imageWidth || vh != imageHeight) {
-
-            imageWidth = vw;
-            imageHeight = vh;
-            image = this.createImage(imageWidth, imageHeight);
-            Graphics2D ig = (Graphics2D) image.getGraphics();
-            ig.scale(scale, scale);
-            scene.paint(ig);
-        }
-
-        gr.drawImage(image, vx, vy, this);
-
-        JComponent component = scene.getView();
-        double zoomFactor = scene.getZoomFactor();
-        Rectangle viewRectangle = component != null ? component.getVisibleRect() : null;
-        if (viewRectangle != null) {
-            Rectangle window = new Rectangle(
-                    (int) ((double) viewRectangle.x * scale / zoomFactor),
-                    (int) ((double) viewRectangle.y * scale / zoomFactor),
-                    (int) ((double) viewRectangle.width * scale / zoomFactor),
-                    (int) ((double) viewRectangle.height * scale / zoomFactor));
-            window.translate(vx, vy);
-            gr.setColor(new Color(200, 200, 200, 128));
-            gr.fill(window);
-            gr.setColor(Color.BLACK);
-            gr.drawRect(window.x, window.y, window.width - 1, window.height - 1);
-        }
-    }
-
-    @Override
-    public void mouseClicked(MouseEvent e) {
-    }
-
-    @Override
-    public void mousePressed(MouseEvent e) {
-        moveVisibleRect(e.getPoint());
-    }
-
-    @Override
-    public void mouseReleased(MouseEvent e) {
-        moveVisibleRect(e.getPoint());
-    }
-
-    @Override
-    public void mouseEntered(MouseEvent e) {
-    }
-
-    @Override
-    public void mouseExited(MouseEvent e) {
-    }
-
-    @Override
-    public void mouseDragged(MouseEvent e) {
-        moveVisibleRect(e.getPoint());
-    }
-
-    @Override
-    public void mouseMoved(MouseEvent e) {
-    }
-
-    private void moveVisibleRect(Point center) {
-        JComponent component = scene.getView();
-        if (component == null) {
-            return;
-        }
-        double zoomFactor = scene.getZoomFactor();
-        Rectangle bounds = scene.getBounds();
-        Dimension size = getSize();
-
-        double sx = bounds.width > 0 ? (double) size.width / bounds.width : 0.0;
-        double sy = bounds.width > 0 ? (double) size.height / bounds.height : 0.0;
-        double scale = Math.min(sx, sy);
-
-        int vw = (int) (scale * bounds.width);
-        int vh = (int) (scale * bounds.height);
-        int vx = (size.width - vw) / 2;
-        int vy = (size.height - vh) / 2;
-
-        int cx = (int) ((double) (center.x - vx) / scale * zoomFactor);
-        int cy = (int) ((double) (center.y - vy) / scale * zoomFactor);
-
-        Rectangle visibleRect = component.getVisibleRect();
-        visibleRect.x = cx - visibleRect.width / 2;
-        visibleRect.y = cy - visibleRect.height / 2;
-        component.scrollRectToVisible(visibleRect);
-
-    }
-
-    @Override
-    public void sceneRepaint() {
-    }
-
-    @Override
-    public void sceneValidating() {
-    }
-
-    @Override
-    public void sceneValidated() {
-    }
-
-    @Override
-    public void componentResized(ComponentEvent e) {
-        repaint();
-    }
-
-    @Override
-    public void componentMoved(ComponentEvent e) {
-        repaint();
-    }
-
-    @Override
-    public void componentShown(ComponentEvent e) {
-    }
-
-    @Override
-    public void componentHidden(ComponentEvent e) {
-    }
-}
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/ExtendedSelectAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.util;
-
-import java.awt.event.MouseEvent;
-import javax.swing.JPanel;
-import org.netbeans.api.visual.action.ActionFactory;
-import org.netbeans.api.visual.action.SelectProvider;
-import org.netbeans.api.visual.action.WidgetAction;
-import org.netbeans.api.visual.action.WidgetAction.State;
-import org.netbeans.api.visual.action.WidgetAction.WidgetKeyEvent;
-import org.netbeans.api.visual.action.WidgetAction.WidgetMouseEvent;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class ExtendedSelectAction extends WidgetAction.Adapter {
-
-    private WidgetAction innerAction;
-    private JPanel panel;
-
-    public ExtendedSelectAction(SelectProvider provider) {
-        innerAction = ActionFactory.createSelectAction(provider);
-        panel = new JPanel();
-    }
-
-    @Override
-    public State mousePressed(Widget widget, WidgetMouseEvent event) {
-        // TODO: Solve this differently?
-        if (event.getButton() != MouseEvent.BUTTON2) {
-            return innerAction.mousePressed(widget, new WidgetMouseEvent(event.getEventID(), new MouseEvent(panel, (int) event.getEventID(), event.getWhen(), event.getModifiersEx(), event.getPoint().x, event.getPoint().y, event.getClickCount(), event.isPopupTrigger(), MouseEvent.BUTTON1)));
-        } else {
-            return super.mousePressed(widget, event);
-        }
-    }
-
-    @Override
-    public State mouseReleased(Widget widget, WidgetMouseEvent event) {
-        return innerAction.mouseReleased(widget, event);
-    }
-
-    @Override
-    public State keyTyped(Widget widget, WidgetKeyEvent event) {
-        return innerAction.keyTyped(widget, event);
-    }
-}
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/PropertiesSheet.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.util;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.data.Property;
-import java.lang.reflect.InvocationTargetException;
-import org.openide.nodes.Node;
-import org.openide.nodes.Sheet;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class PropertiesSheet {
-
-    public static void initializeSheet(final Properties properties, Sheet s) {
-
-        Sheet.Set set1 = Sheet.createPropertiesSet();
-        set1.setDisplayName("Properties");
-        for (final Property p : properties) {
-            Node.Property<String> prop = new Node.Property<String>(String.class) {
-
-                @Override
-                public boolean canRead() {
-                    return true;
-                }
-
-                @Override
-                public String getValue() throws IllegalAccessException, InvocationTargetException {
-                    return p.getValue();
-                }
-
-                @Override
-                public boolean canWrite() {
-                    return false;
-                }
-
-                @Override
-                public void setValue(String arg0) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
-                    properties.setProperty(p.getName(), arg0);
-                }
-            };
-            prop.setName(p.getName());
-            set1.put(prop);
-        }
-        s.put(set1);
-    }
-}
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/RangeSlider.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.util;
-
-import com.sun.hotspot.igv.data.ChangedListener;
-import java.awt.*;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-import java.util.List;
-import javax.swing.JComponent;
-
-public final class RangeSlider extends JComponent {
-
-    public static final int BAR_THICKNESS = 2;
-    public static final int BAR_CIRCLE_SIZE = 9;
-    public static final int MOUSE_ENDING_OFFSET = 3;
-    public static final Color BACKGROUND_COLOR = Color.white;
-    public static final Color BAR_COLOR = Color.black;
-    public static final Color BAR_SELECTION_COLOR = new Color(255, 0, 0, 120);
-    public static final Color TEXT_SELECTION_COLOR = new Color(200, 200, 200, 255);
-    public static final int ITEM_HEIGHT = 30;
-    public static final int ITEM_WIDTH = 30;
-    private RangeSliderModel model;
-    private Point startPoint;
-    private RangeSliderModel tempModel;
-    private Point lastMouseMove;
-
-    public RangeSlider(RangeSliderModel newModel) {
-        this.addMouseMotionListener(mouseMotionListener);
-        this.addMouseListener(mouseListener);
-        setModel(newModel);
-    }
-
-    private RangeSliderModel getPaintingModel() {
-        if (tempModel != null) {
-            return tempModel;
-        }
-        return model;
-    }
-
-    @Override
-    public Dimension getPreferredSize() {
-        if (getPaintingModel() != null) {
-            Graphics g = this.getGraphics();
-            int maxWidth = 0;
-            List<String> list = getPaintingModel().getPositions();
-            for (int i = 0; i < list.size(); i++) {
-                String curS = list.get(i);
-                if (curS != null && curS.length() > 0) {
-                    FontMetrics metrics = g.getFontMetrics();
-                    Rectangle bounds = metrics.getStringBounds(curS, g).getBounds();
-                    maxWidth = Math.max(maxWidth, (int) bounds.getWidth());
-                }
-            }
-            return new Dimension(maxWidth + ITEM_WIDTH, ITEM_HEIGHT * list.size());
-        }
-        return super.getPreferredSize();
-    }
-    private ChangedListener<RangeSliderModel> modelChangedListener = new ChangedListener<RangeSliderModel>() {
-
-        @Override
-        public void changed(RangeSliderModel source) {
-            update();
-        }
-    };
-
-    private void update() {
-        this.revalidate();
-        this.repaint();
-    }
-
-    private Rectangle getItemBounds(int index) {
-        Rectangle r = new Rectangle();
-        r.width = ITEM_WIDTH;
-        r.height = ITEM_HEIGHT;
-        r.x = 0;
-        r.y = ITEM_HEIGHT * index;
-        return r;
-    }
-
-    @Override
-    public void paint(Graphics g) {
-        super.paint(g);
-        Graphics2D g2 = (Graphics2D) g;
-        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
-                RenderingHints.VALUE_ANTIALIAS_ON);
-        int width = getWidth();
-        int height = getHeight();
-
-        g2.setColor(BACKGROUND_COLOR);
-        g2.fillRect(0, 0, width, height);
-
-        // Nothing to paint?
-        if (getPaintingModel() == null || getPaintingModel().getPositions().isEmpty()) {
-            return;
-        }
-
-        paintSelected(g2);
-        paintBar(g2);
-
-    }
-
-    private void fillRect(Graphics2D g, int startX, int startY, int endY, int thickness) {
-        g.fillRect(startX - thickness / 2, startY, thickness, endY - startY);
-    }
-
-    private void paintBar(Graphics2D g) {
-        List<String> list = getPaintingModel().getPositions();
-
-        g.setColor(BAR_COLOR);
-        Rectangle firstItemBounds = getItemBounds(0);
-        Rectangle lastItemBounds = getItemBounds(list.size() - 1);
-        fillRect(g, (int) firstItemBounds.getCenterX(), (int) firstItemBounds.getCenterY(), (int) lastItemBounds.getCenterY(), BAR_THICKNESS);
-
-        for (int i = 0; i < list.size(); i++) {
-            Rectangle curItemBounds = getItemBounds(i);
-            g.setColor(getPaintingModel().getColors().get(i));
-            g.fillOval((int) curItemBounds.getCenterX() - BAR_CIRCLE_SIZE / 2, (int) curItemBounds.getCenterY() - BAR_CIRCLE_SIZE / 2, BAR_CIRCLE_SIZE, BAR_CIRCLE_SIZE);
-            g.setColor(Color.black);
-            g.drawOval((int) curItemBounds.getCenterX() - BAR_CIRCLE_SIZE / 2, (int) curItemBounds.getCenterY() - BAR_CIRCLE_SIZE / 2, BAR_CIRCLE_SIZE, BAR_CIRCLE_SIZE);
-
-            String curS = list.get(i);
-            if (curS != null && curS.length() > 0) {
-                FontMetrics metrics = g.getFontMetrics();
-                Rectangle bounds = metrics.getStringBounds(curS, g).getBounds();
-                g.setColor(Color.black);
-                g.drawString(curS, curItemBounds.x + curItemBounds.width, (int) curItemBounds.getCenterY() + bounds.height / 2 - 2);
-            }
-        }
-
-    }
-
-    private void paintSelected(Graphics2D g) {
-        List<String> list = getPaintingModel().getPositions();
-        for (int i = 0; i < list.size(); i++) {
-            Rectangle curItemBounds = getItemBounds(i);
-            if (lastMouseMove != null && curItemBounds.y <= lastMouseMove.y && curItemBounds.y + curItemBounds.height > lastMouseMove.y) {
-                g.setColor(TEXT_SELECTION_COLOR);
-                g.fillRect(0, curItemBounds.y, getWidth(), curItemBounds.height);
-            }
-        }
-        final Rectangle barBounds = getBarBounds();
-
-        g.setColor(BAR_SELECTION_COLOR);
-        g.fill(barBounds);
-    }
-
-    private Rectangle getBarBounds() {
-        final Rectangle startItemBounds = getItemBounds(getPaintingModel().getFirstPosition());
-        final Rectangle endItemBounds = getItemBounds(getPaintingModel().getSecondPosition());
-        int startY = startItemBounds.y;
-        int endY = endItemBounds.y + endItemBounds.height;
-        return new Rectangle(0, startY, getWidth(), endY - startY);
-    }
-
-    private int getIndexFromPosition(int y) {
-        for (int i = 0; i < getPaintingModel().getPositions().size() - 1; i++) {
-            Rectangle bounds = getItemBounds(i);
-            if (bounds.y <= y && bounds.y + bounds.height >= y) {
-                return i;
-            }
-        }
-        return getPaintingModel().getPositions().size() - 1;
-    }
-    private final MouseMotionListener mouseMotionListener = new MouseMotionListener() {
-
-        @Override
-        public void mouseDragged(MouseEvent e) {
-            if (startPoint != null) {
-                int startIndex = getIndexFromPosition(startPoint.y);
-                int curIndex = getIndexFromPosition(e.getPoint().y);
-                tempModel.setPositions(startIndex, curIndex);
-            }
-        }
-
-        @Override
-        public void mouseMoved(MouseEvent e) {
-            lastMouseMove = e.getPoint();
-            update();
-        }
-    };
-    private final MouseListener mouseListener = new MouseListener() {
-
-        @Override
-        public void mouseClicked(MouseEvent e) {
-            if (model != null) {
-                int index = getIndexFromPosition(e.getPoint().y);
-                model.setPositions(index, index);
-            }
-        }
-
-        @Override
-        public void mousePressed(MouseEvent e) {
-            if (model != null) {
-                int index = getIndexFromPosition(e.getPoint().y);
-                startPoint = e.getPoint();
-                tempModel = model.copy();
-                tempModel.getChangedEvent().addListener(modelChangedListener);
-                tempModel.setPositions(index, index);
-            }
-        }
-
-        @Override
-        public void mouseReleased(MouseEvent e) {
-            if (tempModel != null) {
-                model.setPositions(tempModel.getFirstPosition(), tempModel.getSecondPosition());
-                tempModel = null;
-                startPoint = null;
-            }
-        }
-
-        @Override
-        public void mouseEntered(MouseEvent e) {
-        }
-
-        @Override
-        public void mouseExited(MouseEvent e) {
-            lastMouseMove = null;
-            repaint();
-        }
-    };
-
-    public RangeSliderModel getModel() {
-        return model;
-    }
-
-    public void setModel(RangeSliderModel newModel) {
-        if (newModel != this.model) {
-            if (this.model != null) {
-                this.model.getChangedEvent().removeListener(modelChangedListener);
-            }
-            this.model = newModel;
-            if (newModel != null) {
-                newModel.getChangedEvent().addListener(modelChangedListener);
-            }
-            this.tempModel = null;
-            update();
-        }
-    }
-}
--- a/visualizer/Util/src/com/sun/hotspot/igv/util/RangeSliderModel.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.sun.hotspot.igv.util;
-
-import com.sun.hotspot.igv.data.ChangedEvent;
-import com.sun.hotspot.igv.data.ChangedEventProvider;
-import java.awt.Color;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class RangeSliderModel implements ChangedEventProvider<RangeSliderModel> {
-
-    // Warning: Update setData method if fields are added
-    private ChangedEvent<RangeSliderModel> changedEvent;
-    private List<String> positions;
-    private int firstPosition;
-    private int secondPosition;
-    private List<Color> colors;
-
-    public void setData(RangeSliderModel model) {
-        boolean changed = false;
-        changed |= (positions != model.positions);
-        positions = model.positions;
-        changed |= (firstPosition != model.firstPosition);
-        firstPosition = model.firstPosition;
-        changed |= (secondPosition != model.secondPosition);
-        secondPosition = model.secondPosition;
-        changed |= (colors != model.colors);
-        colors = model.colors;
-        if (changed) {
-            changedEvent.fire();
-        }
-    }
-
-    public RangeSliderModel(List<String> positions) {
-        assert positions.size() > 0;
-        this.changedEvent = new ChangedEvent<>(this);
-        setPositions(positions);
-    }
-
-    protected final void setPositions(List<String> positions) {
-        this.positions = positions;
-        colors = new ArrayList<>();
-        for (int i = 0; i < positions.size(); i++) {
-            colors.add(Color.black);
-        }
-        firstPosition = Math.min(firstPosition, positions.size() - 1);
-        secondPosition = Math.min(secondPosition, positions.size() - 1);
-        changedEvent.fire();
-    }
-
-    public void setColors(List<Color> colors) {
-        this.colors = colors;
-        changedEvent.fire();
-    }
-
-    public List<Color> getColors() {
-        return colors;
-    }
-
-    public RangeSliderModel copy() {
-        RangeSliderModel newModel = new RangeSliderModel(positions);
-        newModel.setData(this);
-        return newModel;
-    }
-
-    public List<String> getPositions() {
-        return Collections.unmodifiableList(positions);
-    }
-
-    public int getFirstPosition() {
-        return firstPosition;
-    }
-
-    public int getSecondPosition() {
-        return secondPosition;
-    }
-
-    public void setPositions(int fp, int sp) {
-        assert fp >= 0 && fp < positions.size();
-        assert sp >= 0 && sp < positions.size();
-        firstPosition = fp;
-        secondPosition = sp;
-        ensureOrder();
-        changedEvent.fire();
-    }
-
-    private void ensureOrder() {
-        if (secondPosition < firstPosition) {
-            int tmp = secondPosition;
-            secondPosition = firstPosition;
-            firstPosition = tmp;
-        }
-    }
-
-    @Override
-    public ChangedEvent<RangeSliderModel> getChangedEvent() {
-        return changedEvent;
-    }
-}
--- a/visualizer/View/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="com.sun.hotspot.igv.view" default="netbeans" basedir=".">
-    <description>Builds, tests, and runs the project com.sun.hotspot.igv.view.</description>
-    <import file="nbproject/build-impl.xml"/>
-</project>
--- a/visualizer/View/manifest.mf	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.sun.hotspot.igv.view
-OpenIDE-Module-Layer: com/sun/hotspot/igv/view/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/sun/hotspot/igv/view/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.0
-
--- a/visualizer/View/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="com.sun.hotspot.igv.view-impl" basedir="..">
-    <property file="nbproject/private/suite-private.properties"/>
-    <property file="nbproject/suite.properties"/>
-    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
-    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
-    <property file="${suite.dir}/nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <nbmproject2:property name="netbeans.dest.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
-    <fail message="You must define 'nbplatform.${nbplatform.active}.harness.dir'">
-        <condition>
-            <not>
-                <available file="${harness.dir}" type="dir"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/build.xml"/>
-</project>
--- a/visualizer/View/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-build.xml.data.CRC32=2de95ef6
-build.xml.script.CRC32=31afe4b1
-build.xml.stylesheet.CRC32=79c3b980
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=2de95ef6
-nbproject/build-impl.xml.script.CRC32=fa7a4119
-nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
--- a/visualizer/View/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Deprecated since 5.0u1; for compatibility with 5.0:
-disabled.clusters=\
-    apisupport1,\
-    harness,\
-    ide8,\
-    java1,\
-    nb6.0,\
-    profiler2
-disabled.modules=\
-    org.netbeans.core.execution,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.output2,\
-    org.netbeans.modules.applemenu,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.javahelp,\
-    org.netbeans.modules.masterfs,\
-    org.netbeans.modules.options.keymap,\
-    org.netbeans.modules.sendopts,\
-    org.netbeans.modules.templates,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.util.enumerations
-enabled.clusters=\
-    platform7
-nbjdk.active=JDK_1.6
-nbplatform.active=default
--- a/visualizer/View/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-javac.source=1.7
-javac.compilerargs=-Xlint -Xlint:-serial
--- a/visualizer/View/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
-            <code-name-base>com.sun.hotspot.igv.view</code-name-base>
-            <suite-component/>
-            <module-dependencies>
-                <dependency>
-                    <code-name-base>com.oracle.graal.visualizer.editor</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.oracle.graal.visualizer.sharedactions</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.data</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.difference</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.filter</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.graph</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.hierarchicallayout</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.layout</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.settings</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.svg</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>com.sun.hotspot.igv.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.api.visual</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>2.27.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.spi.quicksearch</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>1.0</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.actions</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.21.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.awt</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.30.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.dialogs</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.18.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.loaders</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.20.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.nodes</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>7.20.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.14.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.util.lookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>8.6.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.openide.windows</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <specification-version>6.39.1</specification-version>
-                    </run-dependency>
-                </dependency>
-            </module-dependencies>
-            <public-packages>
-                <package>com.sun.hotspot.igv.view</package>
-            </public-packages>
-        </data>
-    </configuration>
-</project>
--- a/visualizer/View/nbproject/suite.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-suite.dir=${basedir}/..
--- a/visualizer/View/src/META-INF/services/com.oracle.graal.visualizer.editor.CompilationViewerFactory	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-com.sun.hotspot.igv.view.scene.GraphCompilationViewerFactory
--- a/visualizer/View/src/com/sun/hotspot/igv/view/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-OpenIDE-Module-Name=View
\ No newline at end of file
--- a/visualizer/View/src/com/sun/hotspot/igv/view/actions/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-CTL_EditorAction=Open Editor Window
-CTL_EnableBlockLayoutAction=Enable block layout
-CTL_NodeFindAction=Find
-CTL_ExportAction=Export current graph...
--- a/visualizer/View/src/com/sun/hotspot/igv/view/actions/ExpandPredecessorsAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.actions;
-
-import com.oracle.graal.visualizer.editor.EditorTopComponent;
-import org.openide.util.HelpCtx;
-import org.openide.util.actions.CallableSystemAction;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public final class ExpandPredecessorsAction extends CallableSystemAction {
-
-    @Override
-    public void performAction() {
-        EditorTopComponent editor = EditorTopComponent.getActive();
-        if (editor != null) {
-            //editor.expandPredecessors();
-        }
-    }
-
-    @Override
-    public String getName() {
-        return "Expand Above";
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/actions/ExpandSuccessorsAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.actions;
-
-import com.oracle.graal.visualizer.editor.EditorTopComponent;
-import org.openide.util.HelpCtx;
-import org.openide.util.actions.CallableSystemAction;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public final class ExpandSuccessorsAction extends CallableSystemAction {
-
-    @Override
-    public void performAction() {
-        EditorTopComponent editor = EditorTopComponent.getActive();
-        if (editor != null) {
-            //editor.expandSuccessors();
-        }
-    }
-
-    @Override
-    public String getName() {
-        return "Expand Below";
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/actions/ExtractAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.actions;
-
-import com.oracle.graal.visualizer.editor.EditorTopComponent;
-import java.awt.Event;
-import java.awt.event.KeyEvent;
-import javax.swing.Action;
-import javax.swing.KeyStroke;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-import org.openide.util.HelpCtx;
-import org.openide.util.actions.CallableSystemAction;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-@ActionID(id = "com.sun.hotspot.igv.view.actions.ExtractAction", category = "View")
-@ActionRegistration(displayName = "Extract nodes")
-@ActionReference(path = "Menu/View", position = 300)
-public final class ExtractAction extends CallableSystemAction {
-
-    @Override
-    public void performAction() {
-        EditorTopComponent editor = EditorTopComponent.getActive();
-        if (editor != null) {
-            //editor.extract();
-        }
-    }
-
-    public ExtractAction() {
-        putValue(Action.SHORT_DESCRIPTION, "Extract current set of selected nodes");
-        putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.CTRL_MASK, false));
-    }
-
-    @Override
-    public String getName() {
-        return "Extract action";
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-
-    @Override
-    protected String iconResource() {
-        return "com/sun/hotspot/igv/view/images/extract.gif";
-    }
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/actions/HideAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.actions;
-
-import com.oracle.graal.visualizer.editor.EditorTopComponent;
-import java.awt.Event;
-import java.awt.event.KeyEvent;
-import javax.swing.Action;
-import javax.swing.KeyStroke;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.awt.ActionRegistration;
-import org.openide.util.HelpCtx;
-import org.openide.util.actions.CallableSystemAction;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-@ActionID(id = "com.sun.hotspot.igv.view.actions.HideAction", category = "View")
-@ActionRegistration(displayName = "Hide nodes")
-@ActionReference(path = "Menu/View", position = 400)
-public final class HideAction extends CallableSystemAction {
-
-    @Override
-    public void performAction() {
-        EditorTopComponent editor = EditorTopComponent.getActive();
-        if (editor != null) {
-            //editor.hideNodes();
-        }
-    }
-
-    public HideAction() {
-        putValue(Action.SHORT_DESCRIPTION, "Hide selected nodes");
-        putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_H, Event.CTRL_MASK, false));
-    }
-
-    @Override
-    public String getName() {
-        return "Hide";
-    }
-
-    @Override
-    protected void initialize() {
-        super.initialize();
-    }
-
-    @Override
-    public HelpCtx getHelpCtx() {
-        return HelpCtx.DEFAULT_HELP;
-    }
-
-    @Override
-    protected boolean asynchronous() {
-        return false;
-    }
-
-    @Override
-    protected String iconResource() {
-        return "com/sun/hotspot/igv/view/images/hide.gif";
-    }
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/actions/MouseOverAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.actions;
-
-import org.netbeans.api.visual.action.HoverProvider;
-import org.netbeans.api.visual.action.WidgetAction;
-import org.netbeans.api.visual.action.WidgetAction.State;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class MouseOverAction extends WidgetAction.Adapter {
-
-    private long eventID = Integer.MIN_VALUE;
-    private HoverProvider provider;
-
-    public MouseOverAction(HoverProvider provider) {
-        this.provider = provider;
-    }
-
-    @Override
-    public State mouseMoved(Widget widget, WidgetMouseEvent event) {
-        long id = event.getEventID();
-        if (id != eventID) {
-            eventID = id;
-            provider.widgetHovered(widget);
-        }
-        return State.REJECTED;
-    }
-
-    @Override
-    public State mouseExited(Widget widget, WidgetMouseEvent event) {
-        provider.widgetHovered(null);
-        return State.REJECTED;
-    }
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/actions/PredSuccAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.actions;
-
-import java.awt.event.ActionEvent;
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.ImageIcon;
-import org.openide.util.ImageUtilities;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class PredSuccAction extends AbstractAction {
-
-    private boolean state;
-    public static final String STATE = "state";
-
-    public PredSuccAction() {
-        state = true;
-        putValue(AbstractAction.SMALL_ICON, new ImageIcon(ImageUtilities.loadImage(iconResource())));
-        putValue(STATE, true);
-        putValue(Action.SHORT_DESCRIPTION, "Show neighboring nodes of fully visible nodes semi-transparent");
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent ev) {
-        this.state = !state;
-        this.putValue(STATE, state);
-    }
-
-    protected String iconResource() {
-        return "com/sun/hotspot/igv/view/images/predsucc.gif";
-    }
-}
Binary file visualizer/View/src/com/sun/hotspot/igv/view/images/blocks.gif has changed
Binary file visualizer/View/src/com/sun/hotspot/igv/view/images/expand.gif has changed
Binary file visualizer/View/src/com/sun/hotspot/igv/view/images/extract.gif has changed
Binary file visualizer/View/src/com/sun/hotspot/igv/view/images/hide.gif has changed
Binary file visualizer/View/src/com/sun/hotspot/igv/view/images/overview.png has changed
Binary file visualizer/View/src/com/sun/hotspot/igv/view/images/pan_mode.png has changed
Binary file visualizer/View/src/com/sun/hotspot/igv/view/images/predsucc.gif has changed
Binary file visualizer/View/src/com/sun/hotspot/igv/view/images/selection_mode.png has changed
Binary file visualizer/View/src/com/sun/hotspot/igv/view/images/zoom_in.png has changed
Binary file visualizer/View/src/com/sun/hotspot/igv/view/images/zoom_out.png has changed
--- a/visualizer/View/src/com/sun/hotspot/igv/view/layer.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
-<filesystem>
-    <folder name="CompilationViewer">
-        <folder name="Graph">
-            <folder name="Actions">
-                <file name="com-oracle-graal-visualizer-sharedactions-ShowAllAction.shadow">
-                    <attr name="originalFile" stringvalue="Actions/View/com-oracle-graal-visualizer-sharedactions-ShowAllAction.instance"/>
-                </file>
-                <file name="com-oracle-graal-visualizer-sharedactions-ZoomInAction.shadow">
-                    <attr name="originalFile" stringvalue="Actions/View/com-oracle-graal-visualizer-sharedactions-ZoomInAction.instance"/>
-                </file>
-                <file name="com-oracle-graal-visualizer-sharedactions-ZoomOutAction.shadow">
-                    <attr name="originalFile" stringvalue="Actions/View/com-oracle-graal-visualizer-sharedactions-ZoomOutAction.instance"/>
-                </file>
-                <file name="com-oracle-graal-visualizer-sharedactions-ExportSVGAction.shadow">
-                    <attr name="originalFile" stringvalue="Actions/File/com-oracle-graal-visualizer-sharedactions-ExportSVGAction.instance"/>
-                </file>
-            </folder>
-        </folder>
-    </folder>
-</filesystem>
--- a/visualizer/View/src/com/sun/hotspot/igv/view/scene/CustomizablePanWidgetAction.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
- *
- * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
- * Other names may be trademarks of their respective owners.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common
- * Development and Distribution License("CDDL") (collectively, the
- * "License"). You may not use this file except in compliance with the
- * License. You can obtain a copy of the License at
- * http://www.netbeans.org/cddl-gplv2.html
- * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
- * specific language governing permissions and limitations under the
- * License.  When distributing the software, include this License Header
- * Notice in each file and include the License file at
- * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the GPL Version 2 section of the License file that
- * accompanied this code. If applicable, add the following below the
- * License Header, with the fields enclosed by brackets [] replaced by
- * your own identifying information:
- * "Portions Copyrighted [year] [name of copyright owner]"
- *
- * Contributor(s):
- *
- * The Original Software is NetBeans. The Initial Developer of the Original
- * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
- * Microsystems, Inc. All Rights Reserved.
- *
- * If you wish your version of this file to be governed by only the CDDL
- * or only the GPL Version 2, indicate your decision by adding
- * "[Contributor] elects to include this software in this distribution
- * under the [CDDL or GPL Version 2] license." If you do not indicate a
- * single choice of license, a recipient has the option to distribute
- * your version of this file under either the CDDL, the GPL Version 2 or
- * to extend the choice of license to its licensees as provided above.
- * However, if you add GPL Version 2 code and therefore, elected the GPL
- * Version 2 license, then the option applies only if the new code is
- * made subject to such option by the copyright holder.
- */
-package com.sun.hotspot.igv.view.scene;
-
-import java.awt.Container;
-import java.awt.Point;
-import java.awt.Rectangle;
-import javax.swing.JComponent;
-import javax.swing.JScrollPane;
-import javax.swing.SwingUtilities;
-import org.netbeans.api.visual.action.WidgetAction;
-import org.netbeans.api.visual.action.WidgetAction.State;
-import org.netbeans.api.visual.action.WidgetAction.WidgetMouseEvent;
-import org.netbeans.api.visual.widget.Scene;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- * @author David Kaspar
- * @author Peter Hofer
- */
-public class CustomizablePanWidgetAction extends WidgetAction.LockedAdapter {
-    private boolean enabled = true;
-    
-    private Scene scene;
-    private JScrollPane scrollPane;
-    private Point lastLocation;
-    
-    private final int modifiersExMask;
-    private final int modifiersEx;
-
-    public CustomizablePanWidgetAction(int modifiersExMask, int modifiersEx) {
-        this.modifiersExMask = modifiersExMask;
-        this.modifiersEx = modifiersEx;
-    }
-
-    @Override
-    protected boolean isLocked() {
-        return scrollPane != null;
-    }
-    
-    public void setEnabled(boolean enabled) {
-        if (this.enabled != enabled) {
-            if (isLocked())
-                throw new IllegalStateException();
-            
-            this.enabled = enabled;
-        }
-    }
-
-    @Override
-    public State mousePressed (Widget widget, WidgetMouseEvent event) {
-        if (isLocked ())
-            return State.createLocked (widget, this);
-        if (enabled && (event.getModifiersEx() & modifiersExMask) == modifiersEx) {
-            scene = widget.getScene ();
-            scrollPane = findScrollPane (scene.getView ());
-            if (scrollPane != null) {
-                lastLocation = scene.convertSceneToView (widget.convertLocalToScene (event.getPoint ()));
-                SwingUtilities.convertPointToScreen (lastLocation, scene.getView ());
-                return State.createLocked (widget, this);
-            }
-        }
-        return State.REJECTED;
-    }
-
-    private JScrollPane findScrollPane (JComponent component) {
-        for (;;) {
-            if (component == null)
-                return null;
-            if (component instanceof JScrollPane)
-                return ((JScrollPane) component);
-            Container parent = component.getParent ();
-            if (! (parent instanceof JComponent))
-                return null;
-            component = (JComponent) parent;
-        }
-    }
-
-    @Override
-    public State mouseReleased (Widget widget, WidgetMouseEvent event) {
-        boolean state = pan (widget, event.getPoint ());
-        if (state)
-            scrollPane = null;
-        return state ? State.createLocked (widget, this) : State.REJECTED;
-    }
-
-    @Override
-    public State mouseDragged (Widget widget, WidgetMouseEvent event) {
-        return pan (widget, event.getPoint ()) ? State.createLocked (widget, this) : State.REJECTED;
-    }
-
-    private boolean pan (Widget widget, Point newLocation) {
-        if (scrollPane == null  ||  scene != widget.getScene ())
-            return false;
-        newLocation = scene.convertSceneToView (widget.convertLocalToScene (newLocation));
-        SwingUtilities.convertPointToScreen (newLocation, scene.getView ());
-        JComponent view = scene.getView ();
-        Rectangle rectangle = view.getVisibleRect ();
-        rectangle.x += lastLocation.x - newLocation.x;
-        rectangle.y += lastLocation.y - newLocation.y;
-        view.scrollRectToVisible (rectangle);
-        lastLocation = newLocation;
-        return true;
-    }
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/scene/DiagramScene.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,964 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.scene;
-
-import com.oracle.graal.visualizer.editor.DiagramViewModel;
-import com.oracle.graal.visualizer.sharedactions.ExportSVGCookie;
-import com.oracle.graal.visualizer.sharedactions.ZoomCookie;
-import com.sun.hotspot.igv.data.ChangedListener;
-import com.sun.hotspot.igv.data.Pair;
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.graph.*;
-import com.sun.hotspot.igv.hierarchicallayout.HierarchicalLayoutManager;
-import com.sun.hotspot.igv.layout.LayoutGraph;
-import com.sun.hotspot.igv.util.ColorIcon;
-import com.sun.hotspot.igv.util.DoubleClickAction;
-import com.sun.hotspot.igv.util.PropertiesSheet;
-import com.sun.hotspot.igv.view.widgets.*;
-import java.awt.*;
-import java.awt.event.*;
-import java.util.List;
-import java.util.*;
-import javax.swing.*;
-import org.netbeans.api.visual.action.*;
-import org.netbeans.api.visual.animator.SceneAnimator;
-import org.netbeans.api.visual.layout.LayoutFactory;
-import org.netbeans.api.visual.model.*;
-import org.netbeans.api.visual.widget.LayerWidget;
-import org.netbeans.api.visual.widget.Widget;
-import org.openide.nodes.AbstractNode;
-import org.openide.nodes.Children;
-import org.openide.nodes.Sheet;
-import org.openide.util.Lookup;
-import org.openide.util.lookup.AbstractLookup;
-import org.openide.util.lookup.InstanceContent;
-
-public class DiagramScene extends ObjectScene implements ExportSVGCookie, ZoomCookie {
-
-    private CustomizablePanWidgetAction panAction;
-    private WidgetAction hoverAction;
-    private WidgetAction selectAction;
-    private Lookup lookup;
-    private InstanceContent content;
-    private Action[] actions;
-    private LayerWidget connectionLayer;
-    private JScrollPane scrollPane;
-    private LayerWidget mainLayer;
-    private LayerWidget blockLayer;
-    private Widget topLeft;
-    private Widget bottomRight;
-    private DiagramViewModel model;
-    private WidgetAction zoomAction;
-    private boolean rebuilding;
-    /**
-     * The alpha level of partially visible figures.
-     */
-    public static final float ALPHA = 0.4f;
-    /**
-     * The offset of the graph to the border of the window showing it.
-     */
-    public static final int BORDER_SIZE = 20;
-    public static final int UNDOREDO_LIMIT = 100;
-    public static final int SCROLL_UNIT_INCREMENT = 80;
-    public static final int SCROLL_BLOCK_INCREMENT = 400;
-    public static final float ZOOM_MAX_FACTOR = 3.0f;
-    public static final float ZOOM_MIN_FACTOR = 0.0f;//0.15f;
-    public static final float ZOOM_INCREMENT = 1.5f;
-    public static final int SLOT_OFFSET = 6;
-    public static final int ANIMATION_LIMIT = 40;
-    private PopupMenuProvider popupMenuProvider = new PopupMenuProvider() {
-
-        @Override
-        public JPopupMenu getPopupMenu(Widget widget, Point localLocation) {
-            return DiagramScene.this.createPopupMenu();
-        }
-    };
-    private RectangularSelectDecorator rectangularSelectDecorator = new RectangularSelectDecorator() {
-
-        @Override
-        public Widget createSelectionWidget() {
-            Widget widget = new Widget(DiagramScene.this);
-            widget.setBorder(BorderFactory.createLineBorder(Color.black, 2));
-            widget.setForeground(Color.red);
-            return widget;
-        }
-    };
-
-    @SuppressWarnings("unchecked")
-    public <T> T getWidget(Object o) {
-        Widget w = this.findWidget(o);
-        return (T) w;
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T> T getWidget(Object o, Class<T> klass) {
-        Widget w = this.findWidget(o);
-        return (T) w;
-    }
-
-    public void zoomOut() {
-        double zoom = getZoomFactor();
-        Point viewPosition = getScrollPane().getViewport().getViewPosition();
-        double newZoom = zoom / DiagramScene.ZOOM_INCREMENT;
-        if (newZoom > DiagramScene.ZOOM_MIN_FACTOR) {
-            setZoomFactor(newZoom);
-            validate();
-            getScrollPane().getViewport().setViewPosition(new Point((int) (viewPosition.x / DiagramScene.ZOOM_INCREMENT), (int) (viewPosition.y / DiagramScene.ZOOM_INCREMENT)));
-        }
-    }
-
-    public void zoomIn() {
-
-        double zoom = getZoomFactor();
-        Point viewPosition = getScrollPane().getViewport().getViewPosition();
-        double newZoom = zoom * DiagramScene.ZOOM_INCREMENT;
-        if (newZoom < DiagramScene.ZOOM_MAX_FACTOR) {
-            setZoomFactor(newZoom);
-            validate();
-            getScrollPane().getViewport().setViewPosition(new Point((int) (viewPosition.x * DiagramScene.ZOOM_INCREMENT), (int) (viewPosition.y * DiagramScene.ZOOM_INCREMENT)));
-        }
-    }
-
-    private void centerFigures(Collection<Figure> list) {
-        gotoFigures(list);
-    }
-
-    private RectangularSelectProvider rectangularSelectProvider = new RectangularSelectProvider() {
-
-        @Override
-        public void performSelection(Rectangle rectangle) {
-            if (rectangle.width < 0) {
-                rectangle.x += rectangle.width;
-                rectangle.width *= -1;
-            }
-
-            if (rectangle.height < 0) {
-                rectangle.y += rectangle.height;
-                rectangle.height *= -1;
-            }
-
-            Set<Object> selectedObjects = new HashSet<>();
-            for (Figure f : getModel().getDiagramToView().getFigures()) {
-                FigureWidget w = getWidget(f);
-                if (w != null) {
-                    Rectangle r = new Rectangle(w.getBounds());
-                    r.setLocation(w.getLocation());
-
-                    if (r.intersects(rectangle)) {
-                        selectedObjects.add(f);
-                    }
-
-                    for (Slot s : f.getSlots()) {
-                        SlotWidget sw = getWidget(s);
-                        Rectangle r2 = new Rectangle(sw.getBounds());
-                        r2.setLocation(sw.convertLocalToScene(new Point(0, 0)));
-
-                        if (r2.intersects(rectangle)) {
-                            selectedObjects.add(s);
-                        }
-                    }
-                } else {
-                    assert false : "w should not be null here!";
-                }
-            }
-
-            setSelectedObjects(selectedObjects);
-        }
-    };
-    private MouseWheelListener mouseWheelListener = new MouseWheelListener() {
-
-        @Override
-        public void mouseWheelMoved(MouseWheelEvent e) {
-            if (e.isControlDown()) {
-                DiagramScene.this.relayoutWithoutLayout(null);
-            }
-        }
-    };
-
-    public Point getScrollPosition() {
-        return getScrollPane().getViewport().getViewPosition();
-    }
-
-    public void setScrollPosition(Point p) {
-        getScrollPane().getViewport().setViewPosition(p);
-    }
-
-    private JScrollPane createScrollPane() {
-        JComponent comp = this.createView();
-        comp.setDoubleBuffered(true);
-        comp.setBackground(Color.WHITE);
-        comp.setOpaque(true);
-        this.setBackground(Color.WHITE);
-        this.setOpaque(true);
-        JScrollPane result = new JScrollPane(comp);
-        result.setBackground(Color.WHITE);
-        result.getVerticalScrollBar().setUnitIncrement(SCROLL_UNIT_INCREMENT);
-        result.getVerticalScrollBar().setBlockIncrement(SCROLL_BLOCK_INCREMENT);
-        result.getHorizontalScrollBar().setUnitIncrement(SCROLL_UNIT_INCREMENT);
-        result.getHorizontalScrollBar().setBlockIncrement(SCROLL_BLOCK_INCREMENT);
-        return result;
-    }
-    private ObjectSceneListener selectionChangedListener = new ObjectSceneListener() {
-
-        @Override
-        public void objectAdded(ObjectSceneEvent arg0, Object arg1) {
-        }
-
-        @Override
-        public void objectRemoved(ObjectSceneEvent arg0, Object arg1) {
-        }
-
-        @Override
-        public void objectStateChanged(ObjectSceneEvent e, Object o, ObjectState oldState, ObjectState newState) {
-        }
-
-        @Override
-        public void selectionChanged(ObjectSceneEvent e, Set<Object> oldSet, Set<Object> newSet) {
-            DiagramScene scene = (DiagramScene) e.getObjectScene();
-            if (scene.isRebuilding()) {
-                return;
-            }
-
-            content.set(newSet, null);
-
-            Set<Integer> nodeSelection = new HashSet<>();
-            for (Object o : newSet) {
-                if (o instanceof Properties.Provider) {
-                    final Properties.Provider provider = (Properties.Provider) o;
-                    AbstractNode node = new AbstractNode(Children.LEAF) {
-
-                        @Override
-                        protected Sheet createSheet() {
-                            Sheet s = super.createSheet();
-                            PropertiesSheet.initializeSheet(provider.getProperties(), s);
-                            return s;
-                        }
-                    };
-                    node.setDisplayName(provider.getProperties().get("name"));
-                    content.add(node);
-                }
-
-
-                if (o instanceof Figure) {
-                    nodeSelection.addAll(((Figure) o).getSource().getSourceNodesAsSet());
-                } else if (o instanceof Slot) {
-                    nodeSelection.addAll(((Slot) o).getSource().getSourceNodesAsSet());
-                }
-            }
-            getModel().setSelectedNodes(nodeSelection);
-        }
-
-        @Override
-        public void highlightingChanged(ObjectSceneEvent e, Set<Object> oldSet, Set<Object> newSet) {
-            Set<Integer> nodeHighlighting = new HashSet<>();
-            for (Object o : newSet) {
-                if (o instanceof Figure) {
-                    nodeHighlighting.addAll(((Figure) o).getSource().getSourceNodesAsSet());
-                } else if (o instanceof Slot) {
-                    nodeHighlighting.addAll(((Slot) o).getSource().getSourceNodesAsSet());
-                }
-            }
-//            boolean b = highlightedCoordinatorListener.isEnabled();
-//            highlightedCoordinatorListener.setEnabled(false);
-//            SelectionCoordinator.getInstance().setHighlightedObjects(nodeHighlighting);
-//            highlightedCoordinatorListener.setEnabled(b);
-            validate();
-        }
-
-        @Override
-        public void hoverChanged(ObjectSceneEvent e, Object oldObject, Object newObject) {
-            Set<Object> newHighlightedObjects = new HashSet<>(DiagramScene.this.getHighlightedObjects());
-            if (oldObject != null) {
-                newHighlightedObjects.remove(oldObject);
-            }
-            if (newObject != null) {
-                newHighlightedObjects.add(newObject);
-            }
-            DiagramScene.this.setHighlightedObjects(newHighlightedObjects);
-        }
-
-        @Override
-        public void focusChanged(ObjectSceneEvent arg0, Object arg1, Object arg2) {
-        }
-    };
-
-    public void setActions(Action[] actions) {
-        this.actions = actions;
-    }
-    
-    
-
-    public DiagramScene(DiagramViewModel model) {
-
-        this.model = model;
-        content = new InstanceContent();
-        lookup = new AbstractLookup(content);
-        content.add(this);
-
-        this.setCheckClipping(true);
-
-        scrollPane = createScrollPane();
-
-        hoverAction = createObjectHoverAction();
-
-        // This panAction handles the event only when the left mouse button is
-        // pressed without any modifier keys, otherwise it will not consume it
-        // and the selection action (below) will handle the event
-        panAction = new CustomizablePanWidgetAction(~0, MouseEvent.BUTTON1_DOWN_MASK);
-        this.getActions().addAction(panAction);
-
-        selectAction = createSelectAction();
-        this.getActions().addAction(selectAction);
-
-        blockLayer = new LayerWidget(this);
-        this.addChild(blockLayer);
-
-        mainLayer = new LayerWidget(this);
-        this.addChild(mainLayer);
-
-        topLeft = new Widget(this);
-        topLeft.setPreferredLocation(new Point(-BORDER_SIZE, -BORDER_SIZE));
-        this.addChild(topLeft);
-
-        bottomRight = new Widget(this);
-        bottomRight.setPreferredLocation(new Point(-BORDER_SIZE, -BORDER_SIZE));
-        this.addChild(bottomRight);
-
-        connectionLayer = new LayerWidget(this);
-        this.addChild(connectionLayer);
-
-        LayerWidget selectionLayer = new LayerWidget(this);
-        this.addChild(selectionLayer);
-
-        this.setLayout(LayoutFactory.createAbsoluteLayout());
-
-        this.getInputBindings().setZoomActionModifiers(KeyEvent.CTRL_MASK);
-        zoomAction = ActionFactory.createMouseCenteredZoomAction(1.2);
-        this.getActions().addAction(zoomAction);
-        this.getView().addMouseWheelListener(mouseWheelListener);
-        this.getActions().addAction(ActionFactory.createPopupMenuAction(popupMenuProvider));
-
-        this.getActions().addAction(ActionFactory.createWheelPanAction());
-
-        LayerWidget selectLayer = new LayerWidget(this);
-        this.addChild(selectLayer);
-        this.getActions().addAction(ActionFactory.createRectangularSelectAction(rectangularSelectDecorator, selectLayer, rectangularSelectProvider));
-
-        this.addObjectSceneListener(selectionChangedListener, ObjectSceneEventType.OBJECT_SELECTION_CHANGED, ObjectSceneEventType.OBJECT_HIGHLIGHTING_CHANGED, ObjectSceneEventType.OBJECT_HOVER_CHANGED);
-        
-        update();
-    }
-
-    public DiagramViewModel getModel() {
-        return model;
-    }
-
-    public JScrollPane getScrollPane() {
-        return scrollPane;
-    }
-
-    Component getComponent() {
-        return scrollPane;
-    }
-
-    public boolean isAllVisible() {
-        return getModel().getHiddenNodes().isEmpty();
-    }
-
-    public Action createGotoAction(final Figure f) {
-        final DiagramScene diagramScene = this;
-        Action a = new AbstractAction() {
-
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                diagramScene.gotoFigure(f);
-            }
-        };
-
-        a.setEnabled(true);
-        a.putValue(Action.SMALL_ICON, new ColorIcon(f.getColor()));
-        String name = f.getLines()[0];
-
-        name += " (";
-
-        if (!this.getWidget(f, FigureWidget.class).isVisible()) {
-            name += "hidden";
-        }
-        name += ")";
-        a.putValue(Action.NAME, name);
-        return a;
-    }
-
-    private void update() {
-        mainLayer.removeChildren();
-        blockLayer.removeChildren();
-
-        rebuilding = true;
-
-        Collection<Object> objects = new ArrayList<>(this.getObjects());
-        for (Object o : objects) {
-            this.removeObject(o);
-        }
-
-        Diagram d = getModel().getDiagramToView();
-
-        for (Figure f : d.getFigures()) {
-            FigureWidget w = new FigureWidget(f, hoverAction, selectAction, this, mainLayer);
-            w.getActions().addAction(ActionFactory.createPopupMenuAction(w));
-            w.getActions().addAction(selectAction);
-            w.getActions().addAction(hoverAction);
-            w.setVisible(false);
-
-            this.addObject(f, w);
-
-            for (InputSlot s : f.getInputSlots()) {
-                SlotWidget sw = new InputSlotWidget(s, this, w, w);
-                addObject(s, sw);
-                sw.getActions().addAction(new DoubleClickAction(sw));
-                sw.getActions().addAction(hoverAction);
-                sw.getActions().addAction(selectAction);
-            }
-
-            for (OutputSlot s : f.getOutputSlots()) {
-                SlotWidget sw = new OutputSlotWidget(s, this, w, w);
-                addObject(s, sw);
-                sw.getActions().addAction(new DoubleClickAction(sw));
-                sw.getActions().addAction(hoverAction);
-                sw.getActions().addAction(selectAction);
-            }
-        }
-
-        rebuilding = false;
-        this.smallUpdate(true);
-    }
-
-    public boolean isRebuilding() {
-        return rebuilding;
-    }
-
-    private void smallUpdate(boolean relayout) {
-
-        this.updateHiddenNodes(model.getHiddenNodes(), relayout);
-        this.validate();
-    }
-
-    private boolean isVisible(Connection c) {
-        FigureWidget w1 = getWidget(c.getInputSlot().getFigure());
-        FigureWidget w2 = getWidget(c.getOutputSlot().getFigure());
-
-        if (w1.isVisible() && w2.isVisible()) {
-            return true;
-        }
-
-        return false;
-    }
-
-    private void relayout(Set<Widget> oldVisibleWidgets) {
-        System.out.println("relayout called with old visible widgets: " + oldVisibleWidgets);
-
-        Diagram diagram = getModel().getDiagramToView();
-
-        HashSet<Figure> figures = new HashSet<>();
-
-        for (Figure f : diagram.getFigures()) {
-            FigureWidget w = getWidget(f);
-            if (w.isVisible()) {
-                figures.add(f);
-            }
-        }
-
-        HashSet<Connection> edges = new HashSet<>();
-
-        for (Connection c : diagram.getConnections()) {
-            if (isVisible(c)) {
-                edges.add(c);
-            }
-        }
-
-        HierarchicalLayoutManager manager = new HierarchicalLayoutManager(HierarchicalLayoutManager.Combine.SAME_OUTPUTS);
-        manager.setMaxLayerLength(10);
-        manager.doLayout(new LayoutGraph(edges, figures));
-        relayoutWithoutLayout(oldVisibleWidgets);
-    }
-    private Set<Pair<Point, Point>> lineCache = new HashSet<>();
-
-    private void relayoutWithoutLayout(Set<Widget> oldVisibleWidgets) {
-
-        System.out.println("relayout without layout with visible widgets: " + oldVisibleWidgets);
-
-        Diagram diagram = getModel().getDiagramToView();
-
-        int maxX = -BORDER_SIZE;
-        int maxY = -BORDER_SIZE;
-        for (Figure f : diagram.getFigures()) {
-            FigureWidget w = getWidget(f);
-            if (w.isVisible()) {
-                Point p = f.getPosition();
-                Dimension d = f.getSize();
-                maxX = Math.max(maxX, p.x + d.width);
-                maxY = Math.max(maxY, p.y + d.height);
-            }
-        }
-
-        for (Connection c : diagram.getConnections()) {
-            List<Point> points = c.getControlPoints();
-            FigureWidget w1 = getWidget((Figure) c.getTo().getVertex());
-            FigureWidget w2 = getWidget((Figure) c.getFrom().getVertex());
-            if (w1.isVisible() && w2.isVisible()) {
-                for (Point p : points) {
-                    if (p != null) {
-                        maxX = Math.max(maxX, p.x);
-                        maxY = Math.max(maxY, p.y);
-                    }
-                }
-            }
-        }
-
-        bottomRight.setPreferredLocation(new Point(maxX + BORDER_SIZE, maxY + BORDER_SIZE));
-        int offx = 0;
-        int offy = 0;
-        int curWidth = maxX + 2 * BORDER_SIZE;
-        int curHeight = maxY + 2 * BORDER_SIZE;
-
-        Rectangle bounds = this.getScrollPane().getBounds();
-        bounds.width /= getZoomFactor();
-        bounds.height /= getZoomFactor();
-        if (curWidth < bounds.width) {
-            offx = (bounds.width - curWidth) / 2;
-        }
-
-        if (curHeight < bounds.height) {
-            offy = (bounds.height - curHeight) / 2;
-        }
-
-        final int offx2 = offx;
-        final int offy2 = offy;
-
-        SceneAnimator animator = this.getSceneAnimator();
-        connectionLayer.removeChildren();
-        int visibleFigureCount = 0;
-        for (Figure f : diagram.getFigures()) {
-            if (getWidget(f, FigureWidget.class).isVisible()) {
-                visibleFigureCount++;
-            }
-        }
-
-
-        Set<Pair<Point, Point>> lastLineCache = lineCache;
-        lineCache = new HashSet<>();
-        for (Figure f : diagram.getFigures()) {
-            for (OutputSlot s : f.getOutputSlots()) {
-                SceneAnimator anim = animator;
-                if (visibleFigureCount > ANIMATION_LIMIT || oldVisibleWidgets == null) {
-                    anim = null;
-                }
-                processOutputSlot(lastLineCache, s, s.getConnections(), 0, null, null, offx2, offy2, anim);
-            }
-        }
-
-        for (Figure f : diagram.getFigures()) {
-            FigureWidget w = getWidget(f);
-            if (w.isVisible()) {
-                Point p = f.getPosition();
-                Point p2 = new Point(p.x + offx2, p.y + offy2);
-                if ((visibleFigureCount <= ANIMATION_LIMIT && oldVisibleWidgets != null && oldVisibleWidgets.contains(w))) {
-                    animator.animatePreferredLocation(w, p2);
-                } else {
-                    w.setPreferredLocation(p2);
-                    animator.animatePreferredLocation(w, p2);
-                }
-            }
-        }
-
-        this.validate();
-    }
-    private final Point specialNullPoint = new Point(Integer.MAX_VALUE, Integer.MAX_VALUE);
-
-    private void processOutputSlot(Set<Pair<Point, Point>> lastLineCache, OutputSlot s, List<Connection> connections, int controlPointIndex, Point lastPoint, LineWidget predecessor, int offx, int offy, SceneAnimator animator) {
-        Map<Point, List<Connection>> pointMap = new HashMap<>(connections.size());
-
-        for (Connection c : connections) {
-
-            if (!isVisible(c)) {
-                continue;
-            }
-
-            List<Point> controlPoints = c.getControlPoints();
-            if (controlPointIndex >= controlPoints.size()) {
-                continue;
-            }
-
-            Point cur = controlPoints.get(controlPointIndex);
-            if (cur == null) {
-                cur = specialNullPoint;
-            } else if (controlPointIndex == 0 && !s.shouldShowName()) {
-                cur = new Point(cur.x, cur.y - SLOT_OFFSET);
-            } else if (controlPointIndex == controlPoints.size() - 1 && !c.getInputSlot().shouldShowName()) {
-                cur = new Point(cur.x, cur.y + SLOT_OFFSET);
-            }
-
-            if (pointMap.containsKey(cur)) {
-                pointMap.get(cur).add(c);
-            } else {
-                List<Connection> newList = new ArrayList<>(2);
-                newList.add(c);
-                pointMap.put(cur, newList);
-            }
-
-        }
-
-        for (Point p : pointMap.keySet()) {
-            List<Connection> connectionList = pointMap.get(p);
-
-            boolean isBold = false;
-            boolean isDashed = true;
-
-            for (Connection c : connectionList) {
-
-                if (c.getStyle() == Connection.ConnectionStyle.BOLD) {
-                    isBold = true;
-                }
-
-                if (c.getStyle() != Connection.ConnectionStyle.DASHED) {
-                    isDashed = false;
-                }
-            }
-
-            LineWidget newPredecessor = predecessor;
-            if (p == specialNullPoint) {
-            } else if (lastPoint == specialNullPoint) {
-            } else if (lastPoint != null) {
-                Point p1 = new Point(lastPoint.x + offx, lastPoint.y + offy);
-                Point p2 = new Point(p.x + offx, p.y + offy);
-
-                Pair<Point, Point> curPair = new Pair<>(p1, p2);
-                SceneAnimator curAnimator = animator;
-                if (lastLineCache.contains(curPair)) {
-                    curAnimator = null;
-                }
-                LineWidget w = new LineWidget(this, s, connectionList, p1, p2, predecessor, curAnimator, isBold, isDashed);
-                lineCache.add(curPair);
-
-                newPredecessor = w;
-                connectionLayer.addChild(w);
-                w.getActions().addAction(hoverAction);
-            }
-
-            processOutputSlot(lastLineCache, s, connectionList, controlPointIndex + 1, p, newPredecessor, offx, offy, animator);
-        }
-    }
-
-    @Override
-    public Lookup getLookup() {
-        return lookup;
-    }
-
-    private void gotoFigures(final Collection<Figure> figures) {
-        Rectangle overall = null;
-        getModel().showFigures(figures);
-        for (Figure f : figures) {
-
-            FigureWidget fw = getWidget(f);
-            if (fw != null) {
-                Rectangle r = fw.getBounds();
-                Point p = fw.getLocation();
-                Rectangle r2 = new Rectangle(p.x, p.y, r.width, r.height);
-
-                if (overall == null) {
-                    overall = r2;
-                } else {
-                    overall = overall.union(r2);
-                }
-            }
-        }
-        if (overall != null) {
-            centerRectangle(overall);
-        }
-    }
-
-    private Set<Object> idSetToObjectSet(Set<Object> ids) {
-
-        Set<Object> result = new HashSet<>();
-        for (Figure f : getModel().getDiagramToView().getFigures()) {
-            if (DiagramScene.doesIntersect(f.getSource().getSourceNodesAsSet(), ids)) {
-                result.add(f);
-            }
-
-            for (Slot s : f.getSlots()) {
-                if (DiagramScene.doesIntersect(s.getSource().getSourceNodesAsSet(), ids)) {
-                    result.add(s);
-                }
-            }
-        }
-        return result;
-    }
-
-    public void gotoSelection(Set<Object> ids) {
-
-        Rectangle overall = null;
-        Set<Integer> hiddenNodes = new HashSet<>(this.getModel().getHiddenNodes());
-        hiddenNodes.removeAll(ids);
-        this.getModel().showNot(hiddenNodes);
-
-        Set<Object> objects = idSetToObjectSet(ids);
-        for (Object o : objects) {
-
-            Widget w = getWidget(o);
-            if (w != null) {
-                Rectangle r = w.getBounds();
-                Point p = w.convertLocalToScene(new Point(0, 0));
-
-                Rectangle r2 = new Rectangle(p.x, p.y, r.width, r.height);
-
-                if (overall == null) {
-                    overall = r2;
-                } else {
-                    overall = overall.union(r2);
-                }
-            }
-        }
-        if (overall != null) {
-            centerRectangle(overall);
-        }
-
-        setSelectedObjects(objects);
-    }
-
-    private Point calcCenter(Rectangle r) {
-
-        Point center = new Point((int) r.getCenterX(), (int) r.getCenterY());
-        center.x -= getScrollPane().getViewport().getViewRect().width / 2;
-        center.y -= getScrollPane().getViewport().getViewRect().height / 2;
-
-        // Ensure to be within area
-        center.x = Math.max(0, center.x);
-        center.x = Math.min(getScrollPane().getViewport().getViewSize().width - getScrollPane().getViewport().getViewRect().width, center.x);
-        center.y = Math.max(0, center.y);
-        center.y = Math.min(getScrollPane().getViewport().getViewSize().height - getScrollPane().getViewport().getViewRect().height, center.y);
-
-        return center;
-    }
-
-    private void centerRectangle(Rectangle r) {
-
-        if (getScrollPane().getViewport().getViewRect().width == 0 || getScrollPane().getViewport().getViewRect().height == 0) {
-            return;
-        }
-
-        Rectangle r2 = new Rectangle(r.x, r.y, r.width, r.height);
-        r2 = convertSceneToView(r2);
-
-        double factorX = (double) r2.width / (double) getScrollPane().getViewport().getViewRect().width;
-        double factorY = (double) r2.height / (double) getScrollPane().getViewport().getViewRect().height;
-        double factor = Math.max(factorX, factorY);
-        if (factor >= 1.0) {
-            Point p = getScrollPane().getViewport().getViewPosition();
-            setZoomFactor(getZoomFactor() / factor);
-            r2.x /= factor;
-            r2.y /= factor;
-            r2.width /= factor;
-            r2.height /= factor;
-            getScrollPane().getViewport().setViewPosition(calcCenter(r2));
-        } else {
-            getScrollPane().getViewport().setViewPosition(calcCenter(r2));
-        }
-    }
-
-    void setSelection(Collection<Figure> list) {
-        super.setSelectedObjects(new HashSet<>(list));
-        centerFigures(list);
-    }
-
-    private boolean isVisible(Figure f) {
-        for (Integer n : f.getSource().getSourceNodesAsSet()) {
-            if (getModel().getHiddenNodes().contains(n)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    public static boolean doesIntersect(Set<?> s1, Set<?> s2) {
-        if (s1.size() > s2.size()) {
-            Set<?> tmp = s1;
-            s1 = s2;
-            s2 = tmp;
-        }
-
-        for (Object o : s1) {
-            if (s2.contains(o)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    private void updateHiddenNodes(Set<Integer> newHiddenNodes, boolean doRelayout) {
-
-        System.out.println("newHiddenNodes: " + newHiddenNodes);
-
-        Diagram diagram = getModel().getDiagramToView();
-        assert diagram != null;
-
-        Set<Widget> oldVisibleWidgets = new HashSet<>();
-
-        for (Figure f : diagram.getFigures()) {
-            FigureWidget w = getWidget(f);
-            if (w != null && w.isVisible()) {
-                oldVisibleWidgets.add(w);
-            }
-        }
-
-        for (Figure f : diagram.getFigures()) {
-            boolean hiddenAfter = doesIntersect(f.getSource().getSourceNodesAsSet(), newHiddenNodes);
-
-            FigureWidget w = getWidget(f);
-            w.setBoundary(false);
-            if (!hiddenAfter) {
-                // Figure is shown
-                w.setVisible(true);
-            } else {
-                // Figure is hidden
-                w.setVisible(false);
-            }
-        }
-
-        if (getModel().getShowNodeHull()) {
-            List<FigureWidget> boundaries = new ArrayList<>();
-            for (Figure f : diagram.getFigures()) {
-                FigureWidget w = getWidget(f);
-                if (!w.isVisible()) {
-                    Set<Figure> set = new HashSet<>(f.getPredecessorSet());
-                    set.addAll(f.getSuccessorSet());
-
-                    boolean b = false;
-                    for (Figure neighbor : set) {
-                        FigureWidget neighborWidget = getWidget(neighbor);
-                        if (neighborWidget.isVisible()) {
-                            b = true;
-                            break;
-                        }
-                    }
-
-                    if (b) {
-                        w.setBoundary(true);
-                        boundaries.add(w);
-                    }
-                }
-            }
-
-            for (FigureWidget w : boundaries) {
-                if (w.isBoundary()) {
-                    w.setVisible(true);
-                }
-            }
-        }
-
-        if (doRelayout) {
-            relayout(oldVisibleWidgets);
-        }
-        this.validate();
-    }
-
-    private void showFigure(Figure f) {
-        HashSet<Integer> newHiddenNodes = new HashSet<>(getModel().getHiddenNodes());
-        newHiddenNodes.removeAll(f.getSource().getSourceNodesAsSet());
-        updateHiddenNodes(newHiddenNodes, true);
-    }
-
-    public void show(final Figure f) {
-        showFigure(f);
-    }
-
-    public void setSelectedObjects(Object... args) {
-        Set<Object> set = new HashSet<>();
-        for (Object o : args) {
-            set.add(o);
-        }
-        super.setSelectedObjects(set);
-    }
-
-    private void centerWidget(Widget w) {
-        Rectangle r = w.getBounds();
-        Point p = w.getLocation();
-        centerRectangle(new Rectangle(p.x, p.y, r.width, r.height));
-    }
-
-    public void gotoFigure(final Figure f) {
-        if (!isVisible(f)) {
-            showFigure(f);
-        }
-
-        FigureWidget fw = getWidget(f);
-        if (fw != null) {
-            setSelection(new HashSet<>(Arrays.asList(f)));
-        }
-    }
-
-    public JPopupMenu createPopupMenu() {
-        JPopupMenu menu = new JPopupMenu();
-        for (Action a : actions) {
-            if (a == null) {
-                menu.addSeparator();
-            } else {
-                menu.add(a);
-            }
-        }
-        return menu;
-    }
-    
-    private final ChangedListener<DiagramViewModel> fullChange = new ChangedListener<DiagramViewModel>() {
-
-        @Override
-        public void changed(DiagramViewModel source) {
-            assert source == model : "Receive only changed event from current model!";
-            assert source != null;
-            update();
-        }
-    };
-    private final ChangedListener<DiagramViewModel> hiddenNodesChange = new ChangedListener<DiagramViewModel>() {
-
-        @Override
-        public void changed(DiagramViewModel source) {
-            assert source == model : "Receive only changed event from current model!";
-            assert source != null;
-            smallUpdate(true);
-        }
-    };
-    private final ChangedListener<DiagramViewModel> selectionChange = new ChangedListener<DiagramViewModel>() {
-
-        @Override
-        public void changed(DiagramViewModel source) {
-            assert source == model : "Receive only changed event from current model!";
-            assert source != null;
-            smallUpdate(false);
-        }
-    };
-
-    @Override
-    public void showAll() {
-        // TODO(tw): Implement.
-    }
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/scene/GraphCompilationViewer.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.view.scene;
-
-import com.sun.hotspot.igv.svg.BatikSVG;
-import com.oracle.graal.visualizer.editor.CompilationViewer;
-import com.oracle.graal.visualizer.editor.DiagramViewModel;
-import com.sun.hotspot.igv.graph.Figure;
-import com.sun.hotspot.igv.view.actions.*;
-import java.awt.Component;
-import java.awt.Graphics2D;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.io.*;
-import java.util.Collection;
-import javax.swing.Action;
-import javax.swing.JToggleButton;
-import javax.swing.JToolBar;
-import org.openide.DialogDisplayer;
-import org.openide.NotifyDescriptor;
-import org.openide.util.Lookup;
-import org.openide.util.lookup.Lookups;
-import org.openide.util.lookup.ProxyLookup;
-
-public class GraphCompilationViewer implements CompilationViewer, PropertyChangeListener {
-    
-    private DiagramScene scene;
-    private PredSuccAction predSuccAction;
-
-    GraphCompilationViewer(DiagramViewModel model) {
-        
-        scene = new DiagramScene(model);
-        
-        Action[] actions = new Action[]{
-        };
-        
-        scene.setActions(actions);
-    }
-
-    @Override
-    public Lookup getLookup() {
-        return scene.getLookup();
-    }
-
-    @Override
-    public Component getComponent() {
-        return scene.getComponent();
-    }
-
-    @Override
-    public void propertyChange(PropertyChangeEvent evt) {
-        if (evt.getSource() == this.predSuccAction) {
-            boolean b = (Boolean) predSuccAction.getValue(PredSuccAction.STATE);
-            scene.getModel().setShowNodeHull(b);
-        } else {
-            assert false : "Unknown event source";
-        }
-    }
-
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/scene/GraphCompilationViewerFactory.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package com.sun.hotspot.igv.view.scene;
-
-import com.oracle.graal.visualizer.editor.CompilationViewer;
-import com.oracle.graal.visualizer.editor.CompilationViewerFactory;
-import com.oracle.graal.visualizer.editor.DiagramViewModel;
-import com.sun.hotspot.igv.data.InputGraph;
-import com.sun.hotspot.igv.filter.FilterChain;
-import com.sun.hotspot.igv.filter.FilterChainProvider;
-import org.openide.util.Lookup;
-
-public class GraphCompilationViewerFactory implements CompilationViewerFactory{
-
-    @Override
-    public CompilationViewer createViewer(InputGraph firstGraph, InputGraph secondGraph) {
-        FilterChain filterChain;
-        FilterChain sequence;
-        FilterChainProvider provider = Lookup.getDefault().lookup(FilterChainProvider.class);
-        if (provider == null) {
-            filterChain = new FilterChain();
-            sequence = new FilterChain();
-        } else {
-            filterChain = provider.getFilterChain();
-            sequence = provider.getSequence();
-        }
-        DiagramViewModel model = new DiagramViewModel(firstGraph, secondGraph, firstGraph.getGroup(), filterChain, filterChain);
-        return new GraphCompilationViewer(model);
-    }
-
-    @Override
-    public String getName() {
-        return "Graph";
-    }
-
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/widgets/FigureWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,363 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.widgets;
-
-import com.sun.hotspot.igv.data.Properties;
-import com.sun.hotspot.igv.graph.Figure;
-import com.sun.hotspot.igv.util.DoubleClickAction;
-import com.sun.hotspot.igv.util.DoubleClickHandler;
-import com.sun.hotspot.igv.util.PropertiesSheet;
-import com.sun.hotspot.igv.view.scene.DiagramScene;
-import java.awt.*;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Set;
-import javax.swing.Action;
-import javax.swing.BorderFactory;
-import javax.swing.JMenu;
-import javax.swing.JPopupMenu;
-import javax.swing.event.MenuEvent;
-import javax.swing.event.MenuListener;
-import org.netbeans.api.visual.action.PopupMenuProvider;
-import org.netbeans.api.visual.action.WidgetAction;
-import org.netbeans.api.visual.layout.LayoutFactory;
-import org.netbeans.api.visual.model.ObjectState;
-import org.netbeans.api.visual.widget.LabelWidget;
-import org.netbeans.api.visual.widget.Widget;
-import org.openide.nodes.AbstractNode;
-import org.openide.nodes.Children;
-import org.openide.nodes.Node;
-import org.openide.nodes.Sheet;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class FigureWidget extends Widget implements Properties.Provider, PopupMenuProvider, DoubleClickHandler {
-
-    public static final boolean VERTICAL_LAYOUT = true;
-    //public static final int MAX_STRING_LENGTH = 20;
-    private static final double LABEL_ZOOM_FACTOR = 0.3;
-    private static final double ZOOM_FACTOR = 0.1;
-    private Font font;
-    private Font boldFont;
-    private Figure figure;
-    private Widget leftWidget;
-    private Widget rightWidget;
-    private Widget middleWidget;
-    private ArrayList<LabelWidget> labelWidgets;
-    private DiagramScene diagramScene;
-    private boolean boundary;
-    private Node node;
-    private Widget dummyTop;
-
-    public void setBoundary(boolean b) {
-        boundary = b;
-    }
-
-    public boolean isBoundary() {
-        return boundary;
-    }
-
-    public Node getNode() {
-        return node;
-    }
-
-	@Override
-	public boolean isHitAt(Point localLocation) {
-		return middleWidget.isHitAt(localLocation);
-	}
-    
-
-    public FigureWidget(final Figure f, WidgetAction hoverAction, WidgetAction selectAction, DiagramScene scene, Widget parent) {
-
-        super(scene);
-
-        assert this.getScene() != null;
-        assert this.getScene().getView() != null;
-
-        this.figure = f;
-        font = f.getDiagram().getFont();
-        boldFont = f.getDiagram().getFont().deriveFont(Font.BOLD);
-        this.setCheckClipping(true);
-        this.diagramScene = scene;
-        parent.addChild(this);
-
-	Widget outer = new Widget(scene);
-	outer.setBackground(f.getColor());
-	outer.setLayout(LayoutFactory.createOverlayLayout());
-	
-        middleWidget = new Widget(scene);
-        middleWidget.setLayout(LayoutFactory.createVerticalFlowLayout(LayoutFactory.SerialAlignment.CENTER, 0));
-        middleWidget.setBackground(f.getColor());
-        middleWidget.setOpaque(true);
-        //middleWidget.setBorder(BorderFactory.createLineBorder(Color.BLACK));
-        middleWidget.getActions().addAction(new DoubleClickAction(this));
-	middleWidget.setCheckClipping(true);
-
-        labelWidgets = new ArrayList<>();
-
-        String[] strings = figure.getLines();
-
-        dummyTop = new Widget(scene);
-        dummyTop.setMinimumSize(new Dimension(Figure.INSET / 2, 1));
-        middleWidget.addChild(dummyTop);
-
-
-        for (String cur : strings) {
-
-            String displayString = cur;
-
-            LabelWidget lw = new LabelWidget(scene);
-            labelWidgets.add(lw);
-            middleWidget.addChild(lw);
-            lw.setLabel(displayString);
-            lw.setFont(font);
-            lw.setForeground(Color.BLACK);
-            lw.setAlignment(LabelWidget.Alignment.CENTER);
-            lw.setVerticalAlignment(LabelWidget.VerticalAlignment.CENTER);
-	    lw.setBorder(BorderFactory.createEmptyBorder());
-        }
-
-        Widget dummyBottom = new Widget(scene);
-        dummyBottom.setMinimumSize(new Dimension(Figure.INSET / 2, 1));
-        middleWidget.addChild(dummyBottom);
-
-        middleWidget.setPreferredBounds(new Rectangle(0, Figure.SLOT_WIDTH - Figure.OVERLAPPING, f.getWidth(), f.getHeight()));
-	//outer.addChild(middleWidget);
-        this.addChild(middleWidget);
-
-        // Initialize node for property sheet
-        node = new AbstractNode(Children.LEAF) {
-
-            @Override
-            protected Sheet createSheet() {
-                Sheet s = super.createSheet();
-                PropertiesSheet.initializeSheet(f.getProperties(), s);
-                return s;
-            }
-        };
-        node.setDisplayName(getName());
-    }
-
-    public Widget getLeftWidget() {
-        return leftWidget;
-    }
-
-    public Widget getRightWidget() {
-        return rightWidget;
-    }
-
-    @Override
-    protected void notifyStateChanged(ObjectState previousState, ObjectState state) {
-        super.notifyStateChanged(previousState, state);
-
-        Color borderColor = Color.BLACK;
-	Color innerBorderColor = getFigure().getColor();
-        int thickness = 1;
-        boolean repaint = false;
-        Font f = font;
-        if (state.isSelected() || state.isHighlighted()) {
-            thickness = 2;
-	}
-	if(state.isSelected()) {
-            f = boldFont;
-		innerBorderColor = borderColor;
-        } else {
-	}
-
-        if (state.isHighlighted()) {
-		innerBorderColor = borderColor = Color.BLUE;
-		repaint = true;
-        } else {
-		repaint = true;
-	}
-
-        if (state.isHovered() != previousState.isHovered()) {
-
-		/*
-            if (state.isHovered()) {
-                diagramScene.addAllHighlighted(this.getFigure().getSource().getSourceNodesAsSet());
-            } else {
-                diagramScene.removeAllHighlighted(this.getFigure().getSource().getSourceNodesAsSet());
-            }*/
-            repaint = true;
-        }
-
-        if (state.isSelected() != previousState.isSelected()) {
-            repaint = true;
-        }
-
-        if (repaint) {
-            middleWidget.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(borderColor, 1), BorderFactory.createLineBorder(innerBorderColor, 1)));
-            for (LabelWidget labelWidget : labelWidgets) {
-                labelWidget.setFont(f);
-            }
-            repaint();
-        }
-    }
-
-    public String getName() {
-        return getProperties().get("name");
-    }
-
-    @Override
-    public Properties getProperties() {
-        return figure.getProperties();
-    }
-
-    public Figure getFigure() {
-        return figure;
-    }
-
-    @Override
-    protected void paintChildren() {
-        Composite oldComposite = null;
-        if (boundary) {
-            oldComposite = getScene().getGraphics().getComposite();
-            float alpha = DiagramScene.ALPHA;
-            this.getScene().getGraphics().setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
-        }
-
-        if (diagramScene.getZoomFactor() < LABEL_ZOOM_FACTOR) {
-
-            for (LabelWidget labelWidget : labelWidgets) {
-                labelWidget.setVisible(false);
-            }
-            super.paintChildren();
-            for (LabelWidget labelWidget : labelWidgets) {
-                labelWidget.setVisible(true);
-            }
-
-        } else {
-            super.paintChildren();
-        }
-
-        if (boundary) {
-            getScene().getGraphics().setComposite(oldComposite);
-        }
-    }
- 
-    @Override
-    public JPopupMenu getPopupMenu(Widget widget, Point point) {
-        JPopupMenu menu = diagramScene.createPopupMenu();
-        menu.addSeparator();
-
-        JMenu predecessors = new JMenu("Nodes Above");
-        predecessors.addMenuListener(new NeighborMenuListener(predecessors, getFigure(), false));
-        menu.add(predecessors);
-
-        JMenu successors = new JMenu("Nodes Below");
-        successors.addMenuListener(new NeighborMenuListener(successors, getFigure(), true));
-        menu.add(successors);
-
-        return menu;
-    }
-
-    /**
-     * Builds the submenu for a figure's neighbors on demand.
-     */
-    private class NeighborMenuListener implements MenuListener {
-
-        private final JMenu menu;
-        private final Figure figure;
-        private final boolean successors;
-
-        public NeighborMenuListener(JMenu menu, Figure figure, boolean successors) {
-            this.menu = menu;
-            this.figure = figure;
-            this.successors = successors;
-        }
-
-        @Override
-        public void menuSelected(MenuEvent e) {
-            if (menu.getItemCount() > 0) {
-                // already built before
-                return;
-            }
-
-            Set<Figure> set = figure.getPredecessorSet();
-            if (successors) {
-                set = figure.getSuccessorSet();
-            }
-
-            boolean first = true;
-            for (Figure f : set) {
-                if (f == figure) {
-                    continue;
-                }
-
-                if (first) {
-                    first = false;
-                } else {
-                    menu.addSeparator();
-                }
-
-                Action go = diagramScene.createGotoAction(f);
-                menu.add(go);
-
-                JMenu preds = new JMenu("Nodes Above");
-                preds.addMenuListener(new NeighborMenuListener(preds, f, false));
-                menu.add(preds);
-
-                JMenu succs = new JMenu("Nodes Below");
-                succs.addMenuListener(new NeighborMenuListener(succs, f, true));
-                menu.add(succs);
-            }
-
-            if (menu.getItemCount() == 0) {
-                menu.add("(none)");
-            }
-        }
-
-        @Override
-        public void menuDeselected(MenuEvent e) {
-            // ignore
-        }
-
-        @Override
-        public void menuCanceled(MenuEvent e) {
-            // ignore
-        }
-    }
-
-    @Override
-    public void handleDoubleClick(Widget w, WidgetAction.WidgetMouseEvent e) {
-
-        if (diagramScene.isAllVisible()) {
-            final Set<Integer> hiddenNodes = new HashSet<>(diagramScene.getModel().getGraphToView().getGroup().getAllNodes());
-            hiddenNodes.removeAll(this.getFigure().getSource().getSourceNodesAsSet());
-            this.diagramScene.getModel().showNot(hiddenNodes);
-        } else if (isBoundary()) {
-
-            final Set<Integer> hiddenNodes = new HashSet<>(diagramScene.getModel().getHiddenNodes());
-            hiddenNodes.removeAll(this.getFigure().getSource().getSourceNodesAsSet());
-            this.diagramScene.getModel().showNot(hiddenNodes);
-        } else {
-            final Set<Integer> hiddenNodes = new HashSet<>(diagramScene.getModel().getHiddenNodes());
-            hiddenNodes.addAll(this.getFigure().getSource().getSourceNodesAsSet());
-            this.diagramScene.getModel().showNot(hiddenNodes);
-        }
-    }
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/widgets/InputSlotWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.widgets;
-
-import com.sun.hotspot.igv.graph.Figure;
-import com.sun.hotspot.igv.graph.InputSlot;
-import com.sun.hotspot.igv.view.scene.DiagramScene;
-import java.awt.Point;
-import java.util.List;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class InputSlotWidget extends SlotWidget {
-
-    private InputSlot inputSlot;
-
-    public InputSlotWidget(InputSlot slot, DiagramScene scene, Widget parent, FigureWidget fw) {
-        super(slot, scene, parent, fw);
-        inputSlot = slot;
-        //init();
-        //getFigureWidget().getLeftWidget().addChild(this);
-        Point p = inputSlot.getRelativePosition();
-        p.x -= this.calculateClientArea().width / 2;
-        p.y += Figure.SLOT_START;
-        this.setPreferredLocation(p);
-    }
-
-    public InputSlot getInputSlot() {
-        return inputSlot;
-    }
-    
-    @Override
-    protected int calculateSlotWidth() {
-        List<InputSlot> slots = getSlot().getFigure().getInputSlots();
-        assert slots.contains(getSlot());
-        return calculateWidth(slots.size());
-    }
-/*
-    protected Point calculateRelativeLocation() {
-        if (getFigureWidget().getBounds() == null) {
-            return new Point(0, 0);
-        }
-
-        double x = 0;
-        List<InputSlot> slots = inputSlot.getFigure().getInputSlots();
-        assert slots.contains(inputSlot);
-        return new Point((int) x, (int) (calculateRelativeY(slots.size(), slots.indexOf(inputSlot))));
-    }*/
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/widgets/LineWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,343 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.widgets;
-
-import com.sun.hotspot.igv.graph.Connection;
-import com.sun.hotspot.igv.graph.Figure;
-import com.sun.hotspot.igv.graph.InputSlot;
-import com.sun.hotspot.igv.graph.OutputSlot;
-import com.sun.hotspot.igv.view.scene.DiagramScene;
-import java.awt.*;
-import java.awt.geom.Line2D;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import javax.swing.JPopupMenu;
-import javax.swing.event.PopupMenuEvent;
-import javax.swing.event.PopupMenuListener;
-import org.netbeans.api.visual.action.ActionFactory;
-import org.netbeans.api.visual.action.PopupMenuProvider;
-import org.netbeans.api.visual.action.SelectProvider;
-import org.netbeans.api.visual.animator.SceneAnimator;
-import org.netbeans.api.visual.model.ObjectState;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class LineWidget extends Widget implements PopupMenuProvider {
-
-    public final int BORDER = 5;
-    public final int ARROW_SIZE = 6;
-    public final int BOLD_ARROW_SIZE = 7;
-    public final int HOVER_ARROW_SIZE = 8;
-    public final int BOLD_STROKE_WIDTH = 2;
-    public final int HOVER_STROKE_WIDTH = 3;
-    private static double ZOOM_FACTOR = 0.1;
-    private OutputSlot outputSlot;
-    private DiagramScene scene;
-    private List<Connection> connections;
-    private Point from;
-    private Point to;
-    private Rectangle clientArea;
-    private Color color = Color.BLACK;
-    private LineWidget predecessor;
-    private List<LineWidget> successors;
-    private boolean highlighted;
-    private boolean popupVisible;
-    private boolean isBold;
-    private boolean isDashed;
-
-    public LineWidget(DiagramScene scene, OutputSlot s, List<Connection> connections, Point from, Point to, LineWidget predecessor, SceneAnimator animator, boolean isBold, boolean isDashed) {
-        super(scene);
-        this.scene = scene;
-        this.outputSlot = s;
-        this.connections = connections;
-        this.from = from;
-        this.to = to;
-        this.predecessor = predecessor;
-        this.successors = new ArrayList<>();
-        if (predecessor != null) {
-            predecessor.addSuccessor(this);
-        }
-
-        this.isBold = isBold;
-        this.isDashed = isDashed;
-
-        int minX = from.x;
-        int minY = from.y;
-        int maxX = to.x;
-        int maxY = to.y;
-        if (minX > maxX) {
-            int tmp = minX;
-            minX = maxX;
-            maxX = tmp;
-        }
-
-        if (minY > maxY) {
-            int tmp = minY;
-            minY = maxY;
-            maxY = tmp;
-        }
-
-        clientArea = new Rectangle(minX, minY, maxX - minX + 1, maxY - minY + 1);
-        clientArea.grow(BORDER, BORDER);
-
-        if (connections.size() > 0) {
-            color = connections.get(0).getColor();
-        }
-
-        this.setToolTipText("<HTML>" + generateToolTipText(this.connections) + "</HTML>");
-
-        this.setCheckClipping(true);
-
-        this.getActions().addAction(ActionFactory.createPopupMenuAction(this));
-        if (animator == null) {
-            this.setBackground(color);
-        } else {
-            this.setBackground(Color.WHITE);
-            animator.animateBackgroundColor(this, color);
-        }
-
-        this.getActions().addAction(ActionFactory.createSelectAction(new SelectProvider() {
-
-            @Override
-            public boolean isAimingAllowed(Widget arg0, Point arg1, boolean arg2) {
-                return true;
-            }
-
-            @Override
-            public boolean isSelectionAllowed(Widget arg0, Point arg1, boolean arg2) {
-                return true;
-            }
-
-            @Override
-            public void select(Widget arg0, Point arg1, boolean arg2) {
-                Set<Figure> set = new HashSet<>();
-                for (Connection c : LineWidget.this.connections) {
-                    set.add(c.getInputSlot().getFigure());
-                    set.add(c.getOutputSlot().getFigure());
-                }
-                LineWidget.this.scene.setSelectedObjects(set);
-            }
-        }));
-    }
-
-    private String generateToolTipText(List<Connection> conn) {
-        StringBuilder sb = new StringBuilder();
-        for (Connection c : conn) {
-            sb.append(c.getToolTipText());
-            sb.append("<br>");
-        }
-        return sb.toString();
-    }
-
-    public Point getFrom() {
-        return from;
-    }
-
-    public Point getTo() {
-        return to;
-    }
-
-    private void addSuccessor(LineWidget widget) {
-        this.successors.add(widget);
-    }
-
-    @Override
-    protected Rectangle calculateClientArea() {
-        return clientArea;
-    }
-
-    @Override
-    protected void paintWidget() {
-        if (scene.getZoomFactor() < ZOOM_FACTOR) {
-            return;
-        }
-
-        Graphics2D g = getScene().getGraphics();
-        g.setPaint(this.getBackground());
-        float width = 1.0f;
-
-        if (isBold) {
-            width = BOLD_STROKE_WIDTH;
-        }
-
-        if (highlighted || popupVisible) {
-            width = HOVER_STROKE_WIDTH;
-        }
-
-        Stroke oldStroke = g.getStroke();
-        if (isDashed) {
-            float[] dashPattern = {5, 5, 5, 5};
-            g.setStroke(new BasicStroke(width, BasicStroke.CAP_BUTT,
-                    BasicStroke.JOIN_MITER, 10,
-                    dashPattern, 0));
-        } else {
-            g.setStroke(new BasicStroke(width));
-        }
-
-        g.drawLine(from.x, from.y, to.x, to.y);
-
-        boolean sameFrom = false;
-        boolean sameTo = successors.size() == 0;
-        for (LineWidget w : successors) {
-            if (w.getFrom().equals(getTo())) {
-                sameTo = true;
-            }
-        }
-
-        if (predecessor == null || predecessor.getTo().equals(getFrom())) {
-            sameFrom = true;
-        }
-
-
-        int size = ARROW_SIZE;
-        if (isBold) {
-            size = BOLD_ARROW_SIZE;
-        }
-        if (highlighted || popupVisible) {
-            size = HOVER_ARROW_SIZE;
-        }
-        if (!sameFrom) {
-            g.fillPolygon(
-                    new int[]{from.x - size / 2, from.x + size / 2, from.x},
-                    new int[]{from.y - size / 2, from.y - size / 2, from.y + size / 2},
-                    3);
-        }
-        if (!sameTo) {
-            g.fillPolygon(
-                    new int[]{to.x - size / 2, to.x + size / 2, to.x},
-                    new int[]{to.y - size / 2, to.y - size / 2, to.y + size / 2},
-                    3);
-        }
-        g.setStroke(oldStroke);
-    }
-
-    private void setHighlighted(boolean b) {
-        this.highlighted = b;
-	Set<Object> highlightedObjects = new HashSet<>(scene.getHighlightedObjects());
-	Set<Object> highlightedObjectsChange = new HashSet<>();
-        for (Connection c : connections) {
-		highlightedObjectsChange.add(c.getInputSlot().getFigure());
-		highlightedObjectsChange.add(c.getInputSlot());
-		highlightedObjectsChange.add(c.getOutputSlot().getFigure());
-		highlightedObjectsChange.add(c.getOutputSlot());
-        }
-	if(b) {
-		highlightedObjects.addAll(highlightedObjectsChange);
-	} else {
-		highlightedObjects.removeAll(highlightedObjectsChange);
-	}
-	scene.setHighlightedObjects(highlightedObjects);
-        this.revalidate(true);
-    }
-
-    private void setPopupVisible(boolean b) {
-        this.popupVisible = b;
-        this.revalidate(true);
-    }
-
-    @Override
-    public boolean isHitAt(Point localPoint) {
-        return Line2D.ptLineDistSq(from.x, from.y, to.x, to.y, localPoint.x, localPoint.y) <= BORDER * BORDER;
-    }
-
-    @Override
-    protected void notifyStateChanged(ObjectState previousState, ObjectState state) {
-        if (previousState.isHovered() != state.isHovered()) {
-            setRecursiveHighlighted(state.isHovered());
-        }
-    }
-
-    private void setRecursiveHighlighted(boolean b) {
-        LineWidget cur = predecessor;
-        while (cur != null) {
-            cur.setHighlighted(b);
-            cur = cur.predecessor;
-        }
-
-        highlightSuccessors(b);
-        this.setHighlighted(b);
-    }
-
-    private void highlightSuccessors(boolean b) {
-        for (LineWidget s : successors) {
-            s.setHighlighted(b);
-            s.highlightSuccessors(b);
-        }
-    }
-
-    private void setRecursivePopupVisible(boolean b) {
-        LineWidget cur = predecessor;
-        while (cur != null) {
-            cur.setPopupVisible(b);
-            cur = cur.predecessor;
-        }
-
-        popupVisibleSuccessors(b);
-        setPopupVisible(b);
-    }
-
-    private void popupVisibleSuccessors(boolean b) {
-        for (LineWidget s : successors) {
-            s.setPopupVisible(b);
-            s.popupVisibleSuccessors(b);
-        }
-    }
-
-    @Override
-    public JPopupMenu getPopupMenu(Widget widget, Point localLocation) {
-        JPopupMenu menu = new JPopupMenu();
-        menu.add(scene.createGotoAction(outputSlot.getFigure()));
-        menu.addSeparator();
-
-        for (Connection c : connections) {
-            InputSlot s = c.getInputSlot();
-            menu.add(scene.createGotoAction(s.getFigure()));
-        }
-
-        final LineWidget w = this;
-        menu.addPopupMenuListener(new PopupMenuListener() {
-
-            @Override
-            public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
-                w.setRecursivePopupVisible(true);
-            }
-
-            @Override
-            public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
-                w.setRecursivePopupVisible(false);
-            }
-
-            @Override
-            public void popupMenuCanceled(PopupMenuEvent e) {
-            }
-        });
-
-        return menu;
-    }
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/widgets/OutputSlotWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.widgets;
-
-import com.sun.hotspot.igv.graph.Figure;
-import com.sun.hotspot.igv.graph.OutputSlot;
-import com.sun.hotspot.igv.view.scene.DiagramScene;
-import java.awt.Point;
-import java.util.List;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public class OutputSlotWidget extends SlotWidget {
-
-    private OutputSlot outputSlot;
-
-    public OutputSlotWidget(OutputSlot slot, DiagramScene scene, Widget parent, FigureWidget fw) {
-        super(slot, scene, parent, fw);
-        outputSlot = slot;
-        //init();
-        //getFigureWidget().getRightWidget().addChild(this);
-        Point p = outputSlot.getRelativePosition();
-        p.y += getSlot().getFigure().getHeight() - Figure.SLOT_START;
-        p.x -= this.calculateClientArea().width / 2;
-        //p.x += this.calculateClientArea().width / 2;
-        this.setPreferredLocation(p);
-    }
-
-    public OutputSlot getOutputSlot() {
-        return outputSlot;
-    }
-
-    @Override
-    protected int calculateSlotWidth() {
-        
-        List<OutputSlot> slots = getSlot().getFigure().getOutputSlots();
-        assert slots.contains(getSlot());
-        return calculateWidth(slots.size());
-        
-    }
-    /*
-    protected Point calculateRelativeLocation() {
-        if (getFigureWidget().getBounds() == null) {
-            return new Point(0, 0);
-        }
-
-        double x = this.getFigureWidget().getBounds().width;
-        List<OutputSlot> slots = outputSlot.getFigure().getOutputSlots();
-        assert slots.contains(outputSlot);
-        return new Point((int) x, (int) (calculateRelativeY(slots.size(), slots.indexOf(outputSlot))));
-    }*/
-}
--- a/visualizer/View/src/com/sun/hotspot/igv/view/widgets/SlotWidget.java	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-package com.sun.hotspot.igv.view.widgets;
-
-import com.sun.hotspot.igv.graph.Figure;
-import com.sun.hotspot.igv.graph.OutputSlot;
-import com.sun.hotspot.igv.graph.Slot;
-import com.sun.hotspot.igv.util.DoubleClickHandler;
-import com.sun.hotspot.igv.view.scene.DiagramScene;
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Graphics2D;
-import java.awt.Rectangle;
-import java.awt.geom.Rectangle2D;
-import java.util.HashSet;
-import java.util.Set;
-import org.netbeans.api.visual.action.WidgetAction;
-import org.netbeans.api.visual.model.ObjectState;
-import org.netbeans.api.visual.widget.Widget;
-
-/**
- *
- * @author Thomas Wuerthinger
- */
-public abstract class SlotWidget extends Widget implements DoubleClickHandler {
-
-    private Slot slot;
-    private FigureWidget figureWidget;
-    private static double TEXT_ZOOM_FACTOR = 0.9;
-    private static double ZOOM_FACTOR = 0.6;
-    private DiagramScene diagramScene;
-
-    public SlotWidget(Slot slot, DiagramScene scene, Widget parent, FigureWidget fw) {
-        super(scene);
-        this.diagramScene = scene;
-        this.slot = slot;
-        figureWidget = fw;
-        this.setToolTipText("<HTML>" + slot.getToolTipText() + "</HTML>");
-        this.setCheckClipping(true);
-        parent.addChild(this);
-        
-        //this.setPreferredBounds(this.calculateClientArea());
-    }
-    
-    
-    @Override
-    protected void notifyStateChanged(ObjectState previousState, ObjectState state) {
-        super.notifyStateChanged(previousState, state);
-	repaint();
-    }
-    
-    public Slot getSlot() {
-        return slot;
-    }
-
-    public FigureWidget getFigureWidget() {
-        return figureWidget;
-    }
-
-    @Override
-    protected void paintWidget() {
-
-        if (getScene().getZoomFactor() < ZOOM_FACTOR) {
-            return;
-        }
-
-        Graphics2D g = this.getGraphics();
-       // g.setColor(Color.DARK_GRAY);
-        int w = this.getBounds().width;
-        int h = this.getBounds().height;
-
-        if(getSlot().getSource().getSourceNodes().size() > 0) {
-            final int SMALLER = 0;
-            g.setColor(getSlot().getColor());
-
-            int FONT_OFFSET = 2;
-            
-            int s = h - SMALLER;
-            int rectW = s;
-            
-            Font font = this.getSlot().getFigure().getDiagram().getSlotFont();
-            if(this.getState().isSelected()) {
-                font = font.deriveFont(Font.BOLD);
-            }
-            
-            if (getSlot().getShortName() != null && getSlot().getShortName().length() > 0) {
-                g.setFont(font);
-                Rectangle2D r1 = g.getFontMetrics().getStringBounds(getSlot().getShortName(), g);
-                rectW = (int)r1.getWidth() + FONT_OFFSET * 2;
-            }
-            g.fillRect(w/2 - rectW/2, 0, rectW-1, s-1);
-            
-            if(this.getState().isHighlighted()) {
-                g.setColor(Color.BLUE);
-            } else {
-                g.setColor(Color.BLACK);
-            }
-            g.drawRect(w/2 - rectW/2, 0, rectW-1, s-1);
-            
-            
-            if (getSlot().getShortName() != null && getSlot().getShortName().length() > 0 && getScene().getZoomFactor() >= TEXT_ZOOM_FACTOR) {
-                Rectangle2D r1 = g.getFontMetrics().getStringBounds(getSlot().getShortName(), g);
-                g.drawString(getSlot().getShortName(), (int) (w - r1.getWidth()) / 2, g.getFontMetrics().getAscent()-1);//(int) (r1.getHeight()));
-            }
-            
-        } else {
-
-            if(this.getState().isHighlighted()) {
-                g.setColor(Color.BLUE);
-            } else {
-                g.setColor(Color.BLACK);
-            }
-            int r = 2;
-            if (slot instanceof OutputSlot) {
-                g.fillOval(w/2-r, Figure.SLOT_WIDTH - Figure.SLOT_START - r, 2*r, 2*r);
-                //g.fillArc(w / 2 - r, -r, 2*r, 2*r, 180, 180);
-            } else {
-                g.fillOval(w/2-r, Figure.SLOT_START - r, 2*r, 2*r);
-                //g.fillArc(w / 2 - r, h - r, 2*r, 2*r, 0, 180);
-            }
-        }
-    }
-
-    @Override
-    protected Rectangle calculateClientArea() {
-        return new Rectangle(0, 0, slot.getWidth(), Figure.SLOT_WIDTH);
-    }
- 
-    protected abstract int calculateSlotWidth();
-    
-    protected int calculateWidth(int count) {
-        return getFigureWidget().getFigure().getWidth() / count;
-    }
-
-    @Override
-    public void handleDoubleClick(Widget w, WidgetAction.WidgetMouseEvent e) {
-        Set<Integer> hiddenNodes = new HashSet<>(diagramScene.getModel().getHiddenNodes());
-        if (diagramScene.isAllVisible()) {
-            hiddenNodes = new HashSet<>(diagramScene.getModel().getGraphToView().getGroup().getAllNodes());
-        } 
-
-        boolean progress = false;
-        for(Figure f : diagramScene.getModel().getDiagramToView().getFigures()) {
-            for(Slot s : f.getSlots()) {
-                if(DiagramScene.doesIntersect(s.getSource().getSourceNodesAsSet(), slot.getSource().getSourceNodesAsSet())) {
-                    progress = true;
-                    hiddenNodes.removeAll(f.getSource().getSourceNodesAsSet());
-                }
-            }
-        }
-
-        if(progress) {
-            this.diagramScene.getModel().showNot(hiddenNodes);
-        }
-    }
-}
--- a/visualizer/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-currentVersion=Graal Visualizer {0}
-LBL_splash_window_title=Starting Graal Visualizer
-SPLASH_WIDTH=475
-SplashProgressBarBounds=0,273,475,6
-SplashProgressBarColor=0xFFFFFF
-SplashRunningTextBounds=10,283,460,12
-SplashRunningTextColor=0xFFFFFF
Binary file visualizer/branding/core/core.jar/org/netbeans/core/startup/frame.gif has changed
Binary file visualizer/branding/core/core.jar/org/netbeans/core/startup/frame32.gif has changed
Binary file visualizer/branding/core/core.jar/org/netbeans/core/startup/frame48.gif has changed
Binary file visualizer/branding/core/core.jar/org/netbeans/core/startup/splash.gif has changed
--- a/visualizer/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-CTL_MainWindow_Title=Graal Visualizer {0}
-CTL_MainWindow_Title_No_Project=Graal Visualizer {0}
--- a/visualizer/build.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
-<!-- for some information on what you could do (e.g. targets to override). -->
-<!-- If you delete this file and reopen the project it will be recreated. -->
-<project name="Graal Visualizer" basedir=".">
-    <description>Builds the module suite Graal Visualizer.</description>
-    <import file="nbproject/build-impl.xml"/>
-    
-    <target name="build-launchers" depends="suite.build-launchers">
-        <!-- Drop memory presets (-Xms, -Xmx) from default_options of packaged builds and let the executing VM choose reasonable defaults -->
-        <replaceregexp file="${build.launcher.dir}/etc/${app.name}.conf" byline="true" match="^default_options=.*" replace='default_options="--branding graalvisualizer"' />
-    </target>
-    
-    <!-- Local (environment-specific) extensions/modifications to the build -->
-    <import file="build-local.xml" optional="true" />
-</project>
--- a/visualizer/nbproject/build-impl.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-*** GENERATED FROM project.xml - DO NOT EDIT  ***
-***         EDIT ../build.xml INSTEAD         ***
--->
-<project name="Graal Visualizer-impl" basedir=".." xmlns:sproject="http://www.netbeans.org/ns/nb-module-suite-project/1">
-    <fail message="Please build using Ant 1.7.1 or higher.">
-        <condition>
-            <not>
-                <antversion atleast="1.7.1"/>
-            </not>
-        </condition>
-    </fail>
-    <property file="nbproject/private/platform-private.properties"/>
-    <property file="nbproject/platform.properties"/>
-    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-suite-project/1">
-        <attribute name="name"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{name}" value="${@{value}}"/>
-        </sequential>
-    </macrodef>
-    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-suite-project/1">
-        <attribute name="property"/>
-        <attribute name="value"/>
-        <sequential>
-            <property name="@{property}" value="@{value}"/>
-        </sequential>
-    </macrodef>
-    <property file="${user.properties.file}"/>
-    <sproject:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir"/>
-    <sproject:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir"/>
-    <sproject:evalprops property="cluster.path.evaluated" value="${cluster.path}"/>
-    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
-        <condition>
-            <not>
-                <contains string="${cluster.path.evaluated}" substring="platform"/>
-            </not>
-        </condition>
-    </fail>
-    <ant antfile="nbproject/platform.xml"/>
-    <fail message="Cannot find NetBeans build harness. ${line.separator}Check that nbplatform.${nbplatform.active}.netbeans.dest.dir and nbplatform.${nbplatform.active}.harness.dir are defined. ${line.separator}On a developer machine these are normally defined in ${user.properties.file}=${netbeans.user}/build.properties ${line.separator}but for automated builds you should pass these properties to Ant explicitly. ${line.separator}You may instead download the harness and platform: -Dbootstrap.url=.../tasks.jar -Dautoupdate.catalog.url=.../updates.xml">
-        <condition>
-            <not>
-                <available file="${harness.dir}/suite.xml"/>
-            </not>
-        </condition>
-    </fail>
-    <import file="${harness.dir}/suite.xml"/>
-</project>
--- a/visualizer/nbproject/genfiles.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-build.xml.data.CRC32=3c2c6126
-build.xml.script.CRC32=48934e60
-build.xml.stylesheet.CRC32=eaf9f76a@1.45.1
-# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
-# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=3077accc
-nbproject/build-impl.xml.script.CRC32=17b494f7
-nbproject/build-impl.xml.stylesheet.CRC32=0f381476@2.47.1
-nbproject/platform.xml.data.CRC32=3077accc
-nbproject/platform.xml.script.CRC32=db9e1f43
-nbproject/platform.xml.stylesheet.CRC32=df8ac4dd@2.47.1
--- a/visualizer/nbproject/platform.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-nbplatform.active=default
-bootstrap.url=http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/netbeans/harness/tasks.jar
-autoupdate.catalog.url=http://updates.netbeans.org/netbeans/updates/7.1.1/uc/final/distribution/catalog.xml.gz
-suite.dir=${basedir}
-nbplatform.active.dir=${suite.dir}/nbplatform
-nbplatform.default.netbeans.dest.dir=${suite.dir}/nbplatform
-nbplatform.default.harness.dir=${nbplatform.default.netbeans.dest.dir}/harness
-harness.dir=${nbplatform.active.dir}/harness
-cluster.path=\
-    ${nbplatform.active.dir}/ide:\
-    ${nbplatform.active.dir}/platform
-disabled.modules=\
-    com.jcraft.jsch,\
-    com.jcraft.jzlib,\
-    org.apache.commons.codec,\
-    org.apache.commons.httpclient,\
-    org.apache.commons.io,\
-    org.apache.commons.lang,\
-    org.apache.commons.logging,\
-    org.apache.ws.commons.util,\
-    org.apache.xml.resolver,\
-    org.apache.xmlrpc,\
-    org.eclipse.core.contenttype,\
-    org.eclipse.core.jobs,\
-    org.eclipse.core.net,\
-    org.eclipse.core.runtime,\
-    org.eclipse.core.runtime.compatibility.auth,\
-    org.eclipse.equinox.app,\
-    org.eclipse.equinox.common,\
-    org.eclipse.equinox.preferences,\
-    org.eclipse.equinox.registry,\
-    org.eclipse.equinox.security,\
-    org.eclipse.jgit,\
-    org.eclipse.mylyn.bugzilla.core,\
-    org.eclipse.mylyn.commons.core,\
-    org.eclipse.mylyn.commons.net,\
-    org.eclipse.mylyn.commons.xmlrpc,\
-    org.eclipse.mylyn.tasks.core,\
-    org.mozilla.rhino.patched,\
-    org.netbeans.api.debugger,\
-    org.netbeans.api.java.classpath,\
-    org.netbeans.api.xml,\
-    org.netbeans.core.browser,\
-    org.netbeans.core.execution,\
-    org.netbeans.core.ide,\
-    org.netbeans.core.io.ui,\
-    org.netbeans.core.multiview,\
-    org.netbeans.core.nativeaccess,\
-    org.netbeans.core.osgi,\
-    org.netbeans.lib.cvsclient,\
-    org.netbeans.lib.terminalemulator,\
-    org.netbeans.libs.antlr3.runtime,\
-    org.netbeans.libs.bytelist,\
-    org.netbeans.libs.commons_net,\
-    org.netbeans.libs.freemarker,\
-    org.netbeans.libs.git,\
-    org.netbeans.libs.ini4j,\
-    org.netbeans.libs.jaxb,\
-    org.netbeans.libs.jsr223,\
-    org.netbeans.libs.junit4,\
-    org.netbeans.libs.jvyamlb,\
-    org.netbeans.libs.lucene,\
-    org.netbeans.libs.smack,\
-    org.netbeans.libs.svnClientAdapter,\
-    org.netbeans.libs.svnClientAdapter.javahl,\
-    org.netbeans.libs.svnClientAdapter.svnkit,\
-    org.netbeans.libs.swingx,\
-    org.netbeans.libs.xerces,\
-    org.netbeans.modules.autoupdate.services,\
-    org.netbeans.modules.autoupdate.ui,\
-    org.netbeans.modules.bugtracking,\
-    org.netbeans.modules.bugtracking.bridge,\
-    org.netbeans.modules.bugzilla,\
-    org.netbeans.modules.core.kit,\
-    org.netbeans.modules.csl.api,\
-    org.netbeans.modules.css.editor,\
-    org.netbeans.modules.css.lib,\
-    org.netbeans.modules.css.visual,\
-    org.netbeans.modules.db,\
-    org.netbeans.modules.db.core,\
-    org.netbeans.modules.db.dataview,\
-    org.netbeans.modules.db.drivers,\
-    org.netbeans.modules.db.kit,\
-    org.netbeans.modules.db.metadata.model,\
-    org.netbeans.modules.db.mysql,\
-    org.netbeans.modules.db.sql.editor,\
-    org.netbeans.modules.db.sql.visualeditor,\
-    org.netbeans.modules.dbapi,\
-    org.netbeans.modules.defaults,\
-    org.netbeans.modules.derby,\
-    org.netbeans.modules.dlight.nativeexecution,\
-    org.netbeans.modules.dlight.terminal,\
-    org.netbeans.modules.editor.bookmarks,\
-    org.netbeans.modules.editor.bracesmatching,\
-    org.netbeans.modules.editor.codetemplates,\
-    org.netbeans.modules.editor.completion,\
-    org.netbeans.modules.editor.guards,\
-    org.netbeans.modules.editor.indent.project,\
-    org.netbeans.modules.editor.kit,\
-    org.netbeans.modules.editor.macros,\
-    org.netbeans.modules.editor.structure,\
-    org.netbeans.modules.extbrowser,\
-    org.netbeans.modules.extexecution,\
-    org.netbeans.modules.extexecution.destroy,\
-    org.netbeans.modules.favorites,\
-    org.netbeans.modules.git,\
-    org.netbeans.modules.glassfish.common,\
-    org.netbeans.modules.gototest,\
-    org.netbeans.modules.gsf.codecoverage,\
-    org.netbeans.modules.gsf.testrunner,\
-    org.netbeans.modules.html,\
-    org.netbeans.modules.html.editor,\
-    org.netbeans.modules.html.editor.lib,\
-    org.netbeans.modules.html.lexer,\
-    org.netbeans.modules.html.parser,\
-    org.netbeans.modules.html.validation,\
-    org.netbeans.modules.httpserver,\
-    org.netbeans.modules.hudson,\
-    org.netbeans.modules.hudson.git,\
-    org.netbeans.modules.hudson.mercurial,\
-    org.netbeans.modules.hudson.subversion,\
-    org.netbeans.modules.hudson.tasklist,\
-    org.netbeans.modules.ide.kit,\
-    org.netbeans.modules.image,\
-    org.netbeans.modules.javascript.editing,\
-    org.netbeans.modules.javascript.hints,\
-    org.netbeans.modules.javascript.kit,\
-    org.netbeans.modules.javascript.refactoring,\
-    org.netbeans.modules.jellytools.ide,\
-    org.netbeans.modules.jumpto,\
-    org.netbeans.modules.keyring.impl,\
-    org.netbeans.modules.languages,\
-    org.netbeans.modules.languages.diff,\
-    org.netbeans.modules.languages.manifest,\
-    org.netbeans.modules.languages.yaml,\
-    org.netbeans.modules.lexer.nbbridge,\
-    org.netbeans.modules.localhistory,\
-    org.netbeans.modules.mercurial,\
-    org.netbeans.modules.netbinox,\
-    org.netbeans.modules.parsing.api,\
-    org.netbeans.modules.parsing.lucene,\
-    org.netbeans.modules.print.editor,\
-    org.netbeans.modules.project.ant,\
-    org.netbeans.modules.project.libraries,\
-    org.netbeans.modules.projectui,\
-    org.netbeans.modules.projectui.buildmenu,\
-    org.netbeans.modules.projectuiapi,\
-    org.netbeans.modules.properties,\
-    org.netbeans.modules.properties.syntax,\
-    org.netbeans.modules.refactoring.api,\
-    org.netbeans.modules.schema2beans,\
-    org.netbeans.modules.server,\
-    org.netbeans.modules.servletapi,\
-    org.netbeans.modules.spellchecker,\
-    org.netbeans.modules.spellchecker.apimodule,\
-    org.netbeans.modules.spellchecker.bindings.htmlxml,\
-    org.netbeans.modules.spellchecker.bindings.properties,\
-    org.netbeans.modules.spellchecker.dictionary_en,\
-    org.netbeans.modules.spellchecker.kit,\
-    org.netbeans.modules.spi.actions,\
-    org.netbeans.modules.subversion,\
-    org.netbeans.modules.swing.validation,\
-    org.netbeans.modules.target.iterator,\
-    org.netbeans.modules.tasklist.kit,\
-    org.netbeans.modules.tasklist.projectint,\
-    org.netbeans.modules.tasklist.todo,\
-    org.netbeans.modules.tasklist.ui,\
-    org.netbeans.modules.terminal,\
-    org.netbeans.modules.usersguide,\
-    org.netbeans.modules.utilities,\
-    org.netbeans.modules.utilities.project,\
-    org.netbeans.modules.versioning,\
-    org.netbeans.modules.versioning.indexingbridge,\
-    org.netbeans.modules.versioning.system.cvss.installer,\
-    org.netbeans.modules.versioning.util,\
-    org.netbeans.modules.web.client.tools.api,\
-    org.netbeans.modules.web.common,\
-    org.netbeans.modules.web.indent,\
-    org.netbeans.modules.xml,\
-    org.netbeans.modules.xml.axi,\
-    org.netbeans.modules.xml.catalog,\
-    org.netbeans.modules.xml.core,\
-    org.netbeans.modules.xml.jaxb.api,\
-    org.netbeans.modules.xml.lexer,\
-    org.netbeans.modules.xml.multiview,\
-    org.netbeans.modules.xml.retriever,\
-    org.netbeans.modules.xml.schema.completion,\
-    org.netbeans.modules.xml.schema.model,\
-    org.netbeans.modules.xml.tax,\
-    org.netbeans.modules.xml.text,\
-    org.netbeans.modules.xml.tools,\
-    org.netbeans.modules.xml.wsdl.model,\
-    org.netbeans.modules.xml.xam,\
-    org.netbeans.modules.xml.xdm,\
-    org.netbeans.modules.xsl,\
-    org.netbeans.spi.debugger.ui,\
-    org.netbeans.spi.editor.hints,\
-    org.netbeans.spi.navigator,\
-    org.netbeans.spi.palette,\
-    org.netbeans.spi.tasklist,\
-    org.netbeans.spi.viewmodel,\
-    org.netbeans.swing.dirchooser,\
-    org.openide.compat,\
-    org.openide.execution,\
-    org.openide.options,\
-    org.openide.util.enumerations
-## Not disabled because of NetBeans bug 206347:
-## Applications not using OSGi don't start on NbP 7.1
-#   org.netbeans.core.netigso,\
-#   org.netbeans.libs.felix,\
-#   org.netbeans.libs.osgi,\
-
--- a/visualizer/nbproject/platform.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="platform" default="download" basedir="..">
-    <condition property="download.required">
-        <and>
-            <not>
-                <available file="${harness.dir}/suite.xml"/>
-            </not>
-            <isset property="bootstrap.url"/>
-            <isset property="autoupdate.catalog.url"/>
-        </and>
-    </condition>
-    <target name="download" if="download.required">
-        <mkdir dir="${harness.dir}"/>
-        <pathconvert pathsep="|" property="download.clusters">
-            <mapper type="flatten"/>
-            <path path="${cluster.path}"/>
-        </pathconvert>
-        <property name="disabled.modules" value=""/>
-        <pathconvert property="module.includes" pathsep="">
-            <mapper type="glob" from="${basedir}${file.separator}*" to="(?!\Q*\E)"/>
-            <path>
-                <filelist files="${disabled.modules}" dir="."/>
-            </path>
-        </pathconvert>
-        <echo message="Downloading clusters ${download.clusters}"/>
-        <property name="tasks.jar" location="${java.io.tmpdir}/tasks.jar"/>
-        <get src="${bootstrap.url}" dest="${tasks.jar}" usetimestamp="true" verbose="true"/>
-        <taskdef name="autoupdate" classname="org.netbeans.nbbuild.AutoUpdate" classpath="${tasks.jar}"/>
-        <autoupdate installdir="${nbplatform.active.dir}" updatecenter="${autoupdate.catalog.url}">
-            <modules includes="${module.includes}.*" clusters="${download.clusters}"/>
-            <modules includes="org[.]netbeans[.]modules[.]apisupport[.]harness" clusters="harness"/>
-        </autoupdate>
-    </target>
-</project>
--- a/visualizer/nbproject/project.properties	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-app.icon=branding/core/core.jar/org/netbeans/core/startup/frame48.gif
-app.name=graalvisualizer
-app.title=Graal Visualizer
-branding.token=${app.name}
-modules=\
-    ${project.com.sun.hotspot.igv.graph}:\
-    ${project.com.sun.hotspot.igv.filter}:\
-    ${project.com.sun.hotspot.igv.hierarchicallayout}:\
-    ${project.com.sun.hotspot.igv.layout}:\
-    ${project.com.sun.hotspot.igv.data}:\
-    ${project.com.sun.hotspot.igv.view}:\
-    ${project.com.sun.hotspot.igv.bytecodes}:\
-    ${project.com.sun.hotspot.igv.difference}:\
-    ${project.com.sun.hotspot.igv.settings}:\
-    ${project.com.sun.hotspot.igv.util}:\
-    ${project.com.sun.hotspot.igv.svg}:\
-    ${project.com.sun.hotspot.igv.filterwindow}:\
-    ${project.com.sun.hotspot.igv.graal}:\
-    ${project.at.ssw.visualizer.cfg}:\
-    ${project.org.eclipse.draw2d}:\
-    ${project.com.oracle.graal.visualizer.editor}:\
-    ${project.com.oracle.graal.visualizer.outline}:\
-    ${project.com.oracle.graal.visualizer.snapshots}:\
-    ${project.com.oracle.graal.visualizer.sharedactions}:\
-    ${project.com.oracle.graal.visualizer.logviewer}
-project.at.ssw.visualizer.cfg=ControlFlowEditor
-project.com.oracle.graal.visualizer.logviewer=LogViewer
-project.com.oracle.graal.visualizer.editor=Editor
-project.com.oracle.graal.visualizer.outline=OutlineView
-project.com.oracle.graal.visualizer.sharedactions=SharedActions
-project.com.oracle.graal.visualizer.snapshots=SnapshotsView
-project.com.sun.hotspot.igv.bytecodes=Bytecodes
-project.com.sun.hotspot.igv.data=Data
-project.com.sun.hotspot.igv.difference=Difference
-project.com.sun.hotspot.igv.filter=Filter
-project.com.sun.hotspot.igv.filterwindow=FilterWindow
-project.com.sun.hotspot.igv.graal=Graal
-project.com.sun.hotspot.igv.graph=Graph
-project.com.sun.hotspot.igv.hierarchicallayout=HierarchicalLayout
-project.com.sun.hotspot.igv.layout=Layout
-project.com.sun.hotspot.igv.settings=Settings
-project.com.sun.hotspot.igv.svg=BatikSVGProxy
-project.com.sun.hotspot.igv.view=View
-project.com.sun.hotspot.igv.util=Util
-
-project.org.eclipse.draw2d=Draw2DLibrary
-# Disable assertions for RequestProcessor to prevent annoying messages in case
-# of multiple SceneAnimator update tasks in the default RequestProcessor.
-run.args.extra = -J-client -J-da:org.openide.util.RequestProcessor
-debug.args.extra = -J-client -J-da:org.openide.util.RequestProcessor
--- a/visualizer/nbproject/project.xml	Sat Jan 04 02:03:51 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://www.netbeans.org/ns/project/1">
-    <type>org.netbeans.modules.apisupport.project.suite</type>
-    <configuration>
-        <data xmlns="http://www.netbeans.org/ns/nb-module-suite-project/1">
-            <name>Graal Visualizer</name>
-        </data>
-    </configuration>
-</project>