List of usage examples for org.apache.commons.collections15 Transformer Transformer
Transformer
From source file:semgen.extraction.RadialGraph.Clusterer.java
public void setUpView() throws IOException { setTitle(SemGenTab.formatTabName(extractor.semsimmodel.getName())); layout = new AggregateLayout<String, Number>(new SemGenFRLayout<String, Number>(mygraph)); vv = new VisualizationViewer<String, Number>(layout); // this class will provide both label drawing and vertex shapes VertexLabelAsShapeRenderer<String, Number> vlasr = new VertexLabelAsShapeRenderer<String, Number>( vv.getRenderContext());//from w ww.j a v a 2 s . c om // customize the render context vv.getRenderContext().setVertexLabelTransformer( // this chains together Transformers so that the html tags // are prepended to the toString method output new ChainedTransformer<String, String>( new Transformer[] { new ToStringLabeller<String>(), new Transformer<String, String>() { public String transform(String input) { return input; } } })); vv.getRenderContext().setVertexShapeTransformer(vlasr); vv.getRenderContext().setVertexLabelRenderer(new DefaultVertexLabelRenderer(Color.red)); vv.getRenderContext().setEdgeDrawPaintTransformer(new ConstantTransformer(Color.yellow)); vv.getRenderContext().setEdgeStrokeTransformer(new ConstantTransformer(new BasicStroke(2.5f))); // customize the renderer vv.getRenderer().setVertexLabelRenderer(vlasr); vv.setBackground(Color.white); // Tell the renderer to use our own customized color rendering vv.getRenderContext() .setVertexFillPaintTransformer(MapTransformer.<String, Paint>getInstance(vertexPaints)); vv.getRenderContext().setVertexDrawPaintTransformer(new Transformer<String, Paint>() { public Paint transform(String v) { if (vv.getPickedVertexState().isPicked(v)) { if (selectioncheckbox != null) { extractor.clusterpanel.remove(selectioncheckbox); } Set<DataStructure> dsuris = new HashSet<DataStructure>(); for (String dsname : vv.getPickedVertexState().getPicked()) { dsuris.add(extractor.semsimmodel.getDataStructure(dsname)); } Component[] clusters = extractor.clusterpanel.checkboxpanel.getComponents(); extractor.clusterpanel.checkboxpanel.removeAll(); for (int x = -1; x < clusters.length; x++) { if (x == -1 && selectioncheckbox == null) { selectioncheckbox = new ExtractorJCheckBox("Selected node(s)", dsuris); selectioncheckbox.addItemListener(extractor); extractor.clusterpanel.checkboxpanel.add(selectioncheckbox); } else if (x > -1) { extractor.clusterpanel.checkboxpanel.add(clusters[x]); } } refreshModulePanel(); return Color.cyan; } else { if (vv.getPickedVertexState().getPicked().isEmpty()) { if (selectioncheckbox != null) { extractor.clusterpanel.checkboxpanel.remove(selectioncheckbox); selectioncheckbox = null; } } refreshModulePanel(); return Color.BLACK; } } }); vv.getRenderContext().setEdgeDrawPaintTransformer(MapTransformer.<Number, Paint>getInstance(edgePaints)); vv.getRenderContext().setEdgeStrokeTransformer(new Transformer<Number, Stroke>() { protected final Stroke THIN = new BasicStroke(1); protected final Stroke THICK = new BasicStroke(2); public Stroke transform(Number e) { Paint c = edgePaints.get(e); if (c == Color.LIGHT_GRAY) return THIN; else return THICK; } }); // add restart button JButton scramble = new JButton("Shake"); scramble.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Layout<String, Number> layout = vv.getGraphLayout(); layout.initialize(); Relaxer relaxer = vv.getModel().getRelaxer(); if (relaxer != null) { relaxer.stop(); relaxer.prerelax(); relaxer.relax(); } } }); DefaultModalGraphMouse<Object, Object> gm = new DefaultModalGraphMouse<Object, Object>(); vv.setGraphMouse(gm); groupVertices = new JToggleButton("Group Clusters"); // Create slider to adjust the number of edges to remove when clustering final JSlider edgeBetweennessSlider = new JSlider(JSlider.HORIZONTAL); edgeBetweennessSlider.setBackground(Color.WHITE); edgeBetweennessSlider.setPreferredSize(new Dimension(350, 50)); edgeBetweennessSlider.setPaintTicks(true); edgeBetweennessSlider.setMaximum(mygraph.getEdgeCount()); edgeBetweennessSlider.setMinimum(0); edgeBetweennessSlider.setValue(0); if (mygraph.getEdgeCount() > 10) { edgeBetweennessSlider.setMajorTickSpacing(mygraph.getEdgeCount() / 10); } else { edgeBetweennessSlider.setMajorTickSpacing(1); } edgeBetweennessSlider.setPaintLabels(true); edgeBetweennessSlider.setPaintTicks(true); // I also want the slider value to appear final JPanel eastControls = new JPanel(); eastControls.setOpaque(true); eastControls.setLayout(new BoxLayout(eastControls, BoxLayout.Y_AXIS)); eastControls.add(Box.createVerticalGlue()); eastControls.add(edgeBetweennessSlider); final String COMMANDSTRING = "Edges removed for clusters: "; final String eastSize = COMMANDSTRING + edgeBetweennessSlider.getValue(); final TitledBorder sliderBorder = BorderFactory.createTitledBorder(eastSize); eastControls.setBorder(sliderBorder); eastControls.add(Box.createVerticalGlue()); groupVertices.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { clusterAndRecolor(layout, edgeBetweennessSlider.getValue(), similarColors, e.getStateChange() == ItemEvent.SELECTED); vv.repaint(); } }); edgeBetweennessSlider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { JSlider source = (JSlider) e.getSource(); if (!source.getValueIsAdjusting()) { int numEdgesToRemove = source.getValue(); clusterAndRecolor(layout, numEdgesToRemove, similarColors, groupVertices.isSelected()); sliderBorder.setTitle(COMMANDSTRING + edgeBetweennessSlider.getValue()); eastControls.repaint(); vv.validate(); vv.repaint(); } } }); clusterAndRecolor(layout, 0, similarColors, groupVertices.isSelected()); clusterpanel = new JPanel(); clusterpanel.setLayout(new BoxLayout(clusterpanel, BoxLayout.Y_AXIS)); GraphZoomScrollPane gzsp = new GraphZoomScrollPane(vv); clusterpanel.add(gzsp); JPanel south = new JPanel(); JPanel grid = new JPanel(new GridLayout(2, 1)); grid.add(scramble); grid.add(groupVertices); south.add(grid); south.add(eastControls); JPanel p = new JPanel(); p.setBorder(BorderFactory.createTitledBorder("Mouse Mode")); p.add(gm.getModeComboBox()); south.add(p); clusterpanel.add(south); clusterpanel.add(Box.createGlue()); semscroller = new SemGenScrollPane(sempanel); splitpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, semscroller, clusterpanel); splitpane.setDividerLocation(initsempanelwidth); splitpane.setDividerLocation(initsempanelwidth + 10); this.add(splitpane); this.setPreferredSize(new Dimension(950, 800)); this.pack(); this.setLocationRelativeTo(null); this.setVisible(true); }
From source file:simcommunity.TheSim.java
public static void disegnapallocco(final Community c, final int[][] vicinato, final String titleFrame) { //Graph<String, String> g = new SparseMultigraph<String, String>(); //StaticLayout<String, String> layout = new StaticLayout<String, String>(g); final DirectedSparseGraph<String, String> g = new DirectedSparseGraph<>(); final Layout<String, String> layout = new StaticLayout<>(g); int lung, R, G, B; int[] vicini; String sR, sG, sB, nomeV, nomeE; String[] test2 = new String[GlobalVar.dimensionecom]; for (int i = 0; i < GlobalVar.dimensionecom; i++) { R = c.getPersona(i).getR();//from www. ja v a2s.c o m G = c.getPersona(i).getG(); B = c.getPersona(i).getB(); if (R > 255) { R = 255; } if (G > 255) { G = 255; } if (B > 255) { B = 255; } sR = Integer.toString(R); sG = Integer.toString(G); sB = Integer.toString(B); if (sR.length() == 2) { sR = "0" + sR; } if (sR.length() == 1) { sR = "00" + sR; } if (sG.length() == 2) { sG = "0" + sG; } if (sG.length() == 1) { sG = "00" + sG; } if (sB.length() == 2) { sB = "0" + sB; } if (sB.length() == 1) { sB = "00" + sB; } //nome=Integer.toString(R)+"a"+Integer.toString(G)+"a"+Integer.toString(B)+"a"+Integer.toString(i); test2[i] = sR + sG + sB + Integer.toString(i); } for (int i = 0; i < GlobalVar.dimensionecom; i++) { R = c.getPersona(i).getR(); G = c.getPersona(i).getG(); B = c.getPersona(i).getB(); if (R > 255) { R = 255; } if (G > 255) { G = 255; } if (B > 255) { B = 255; } sR = Integer.toString(R); sG = Integer.toString(G); sB = Integer.toString(B); if (sR.length() == 2) { sR = "0" + sR; } if (sR.length() == 1) { sR = "00" + sR; } if (sG.length() == 2) { sG = "0" + sG; } if (sG.length() == 1) { sG = "00" + sG; } if (sB.length() == 2) { sB = "0" + sB; } if (sB.length() == 1) { sB = "00" + sB; } nomeV = sR + sG + sB; g.addVertex(nomeV + Integer.toString(i)); Point2D point = new Point2D.Double(c.getPersona(i).getX(), c.getPersona(i).getY()); layout.setLocation(nomeV + Integer.toString(i), point); //layout.setLocation(i, c.getPersona(i).getX(), c.getPersona(i).getY()); //setto la posizione senza Point2D solo con Static Layout vicini = vicinato[i]; lung = vicini.length; for (int j = 0; j < lung; j++) { if (vicini[j] == -1) { } else { nomeE = "Edge" + Integer.toString(i) + Integer.toString(j); g.addEdge(nomeE, nomeV + Integer.toString(i), test2[vicini[j]]); } } } layout.setSize(new Dimension(GlobalVar.videoW, GlobalVar.videoH)); final VisualizationViewer<String, String> vv = new VisualizationViewer<>(layout); /* vv.getRenderContext().setVertexLabelTransformer(transformer); transformer = new Transformer<String, String>() { @Override public String transform(String arg0) { return arg0; } }; vv.getRenderContext().setEdgeLabelTransformer(transformer);*/ vv.setPreferredSize(new Dimension(1024, 768)); // The following code adds capability for mouse picking of vertices/edges. Vertices can even be moved! final DefaultModalGraphMouse<String, Number> graphMouse = new DefaultModalGraphMouse<>(); vv.setGraphMouse(graphMouse); graphMouse.setMode(ModalGraphMouse.Mode.PICKING); Transformer<String, String> transformer = new Transformer<String, String>() { @Override public String transform(String arg0) { return arg0; } }; vv.getRenderer().setVertexRenderer(new MyRenderer(c)); JFrame frame = new JFrame(); frame.setTitle(titleFrame); frame.getContentPane().add(vv); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); }
From source file:sk.stuba.fiit.kvasnicka.topologyvisual.facade.TopologyFacadeImpl.java
@Override public List<TopologyEdge> findShortestPath(AbstractGraph<TopologyVertex, TopologyEdge> graph, TopologyVertex begin, TopologyVertex end, boolean distanceVector) { if (distanceVector) {//unweight dijkstra = distance vector routing protocol logg.debug("findShortestPath - unweight = distance vector"); dijkstra = new DijkstraShortestPath(graph); } else {//from ww w . j a v a 2s . c om logg.debug("findShortestPath - weight = link state"); dijkstra = new DijkstraShortestPath(graph, new Transformer<TopologyEdge, Double>() { @Override public Double transform(TopologyEdge edge) { //higher bitrate means that this edge has smaller weight according to Dijkstra algorithm return 1.0 / edge.getEdge().getMaxSpeed();//this may produce some mathematical inaccuracy... } }); } return dijkstra.getPath(begin, end); }
From source file:sk.stuba.fiit.kvasnicka.topologyvisual.topology.Topology.java
/** * initialises JUNG stuff. here are all default plugins initialised * *//*from w ww . j a v a2 s . co m*/ public void initTopology() { logg.debug("init jung - creation"); //vertex as icon Transformer<TopologyVertex, Paint> vpf = new PickableVertexPaintTransformer<TopologyVertex>( vv.getPickedVertexState(), Color.white, Color.yellow); vv.getRenderContext().setVertexFillPaintTransformer(vpf); vv.getRenderContext().setEdgeDrawPaintTransformer( new PickableEdgePaintTransformer<TopologyEdge>(vv.getPickedEdgeState(), Color.black, Color.cyan)); final MyVertexIconShapeTransformer<TopologyVertex> vertexImageShapeFunction = new MyVertexIconShapeTransformer<TopologyVertex>(); final DefaultVertexIconTransformer<TopologyVertex> vertexIconFunction = new VertexToIconTransformer<TopologyVertex>(); vv.getRenderContext().setVertexShapeTransformer(vertexImageShapeFunction); vv.getRenderContext().setVertexIconTransformer(vertexIconFunction); //tooltips over the vertex vv.setVertexToolTipTransformer(new Transformer<TopologyVertex, String>() { @Override public String transform(TopologyVertex topologyVertex) { if (!PreferenciesHelper.isNodeTooltipName() && !PreferenciesHelper.isNodeTooltipDescription()) { return null; } StringBuilder sb = new StringBuilder("<html>"); if (PreferenciesHelper.isNodeTooltipName()) { sb.append("<b>Name: </b>").append(topologyVertex.getName()); } if (PreferenciesHelper.isNodeTooltipDescription()) { if (PreferenciesHelper.isNodeTooltipName()) { sb.append("<br>"); } sb.append("<b>Description: </b>").append(topologyVertex.getDescription()); } sb.append("</html>"); return sb.toString(); } }); vv.getRenderContext().setVertexLabelRenderer(new MyVertexLabelRenderer(Color.BLACK)); vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.S); vv.getRenderContext().setVertexLabelTransformer(new Transformer<TopologyVertex, String>() { @Override public String transform(TopologyVertex v) { if (PreferenciesHelper.isShowNodeNamesInTopology()) { return v.getName(); } return null; } }); //picking support, so that vertices can be selected vv.setPickSupport(new ShapePickSupport<TopologyVertex, TopologyEdge>(vv)); PickedState<TopologyVertex> pickedState = vv.getPickedVertexState(); pickedState.addItemListener( new VertexPickedTopolCreationListener(vertexIconFunction, topolElementTopComponent, pickedState)); }
From source file:sk.stuba.fiit.kvasnicka.topologyvisual.topology.Topology.java
/** * higlights edges from one vertex to other. to computer edges between these * two vertices will be used algorithm specified in file settings. This * method may be used only when Topology is in ROUTING mode * * @param sourceVertex//w w w . ja v a 2 s .c o m * @param destinationVertex * @param vertices between them * @param distanceVector true if distance vector routing protocol */ public void highlightEdgesFromTo(TopologyVertex source, TopologyVertex destination, List<TopologyVertex> fixedVertices, boolean distanceVector) throws RoutingException { if (TopologyModeEnum.ROUTING != topologyMode) { return; } //first retirieve edges between these two vertices final Collection<TopologyEdge> edges = RoutingHelper.retrieveEdges(getG(), source, destination, distanceVector, fixedVertices); if (!routingHelper.checkRouteForCycle(edges)) { throw new RoutingException(NbBundle.getMessage(Topology.class, "cycle_exception")); } //now highlight each edge vv.getRenderContext().setEdgeDrawPaintTransformer(new Transformer<TopologyEdge, Paint>() { @Override public Paint transform(TopologyEdge i) { for (TopologyEdge e : edges) { if (i == e) { //they are literally the same - the same object return Color.BLUE; } } return Color.BLACK; } }); vv.repaint(); //and do not forget to highlight source and destination vertices, too }
From source file:snepsui.Interface.DrawNetwork.java
/** * Initializes the components in the DrawNetwork panel *///from w ww . j a va2 s. co m private void initGUI() { nodesList = new LinkedList<Node>(); molNodes = new Hashtable<String, CaseFrame>(); builtMolNodes = new Hashtable<String, Node>(); this.setPreferredSize(new Dimension(815, 600)); graph = new DirectedOrderedSparseMultigraph<String, String>(); this.layout = new StaticLayout<String, String>(graph, new Dimension(700, 450)); shape = new Transformer<String, Integer>() { public Integer transform(String vertex) { int stringLength = 0; if (molNodes.containsKey(vertex)) { stringLength = 3; } else { for (Node node : nodesList) { if (vertex.equals(node.getIdentifier())) { stringLength = node.getIdentifier().length(); } } } return stringLength; } }; vertexPaint = new Transformer<String, Paint>() { public Paint transform(String vertex) { if (molNodes.containsKey(vertex)) { if (builtMolNodes.containsKey(vertex)) { Node node = builtMolNodes.get(vertex); if (node.getClass().getSimpleName().equals("PatternNode")) { return Color.blue; } else if (node.getClass().getSimpleName().equals("ClosedNode")) { return Color.yellow; } } else return Color.white; } else { for (Node node : nodesList) { if (node.getIdentifier().equals(vertex)) { if (node.getClass().getSimpleName().equals("BaseNode")) { return Color.green; } else if (node.getClass().getSimpleName().equals("VariableNode")) { return Color.gray; } else if (node.getClass().getSimpleName().equals("PatternNode")) { return Color.blue; } else if (node.getClass().getSimpleName().equals("ClosedNode")) { return Color.yellow; } else { return Color.magenta; } } } } return Color.white; } }; edgeLabel = new Transformer<String, String>() { public String transform(String edge) { String result = ""; if (edge.isEmpty()) graph.removeEdge(""); vv.repaint(); try { result = edge.substring(0, edge.indexOf(":")); } catch (StringIndexOutOfBoundsException e) { } return result; } }; VertexShapeSizeAspect<String> vssa = new VertexShapeSizeAspect<String>(graph, shape); vv = new VisualizationViewer<String, String>(layout, new Dimension(700, 470)); vv.setBackground(Color.white); vv.getRenderContext().setVertexLabelTransformer(MapTransformer.<String, String>getInstance( LazyMap.<String, String>decorate(new HashMap<String, String>(), new ToStringLabeller<String>()))); vv.getRenderContext().setEdgeLabelTransformer(MapTransformer.<String, String>getInstance( LazyMap.<String, String>decorate(new HashMap<String, String>(), new ToStringLabeller<String>()))); vv.setVertexToolTipTransformer(vv.getRenderContext().getVertexLabelTransformer()); vv.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR); vv.getRenderContext().setVertexShapeTransformer(vssa); vv.getRenderContext() .setEdgeLabelClosenessTransformer(new ConstantDirectionalEdgeValueTransformer(0.5, 0.5)); vv.getRenderContext().setEdgeLabelTransformer(edgeLabel); vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); vv.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { point = e.getPoint(); } public void mouseReleased(MouseEvent e) { vv.repaint(); } }); vssa.setScaling(true); final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv); this.add(panel); Factory<String> vertexFactory = new VertexFactory(); Factory<String> edgeFactory = new EdgeFactory(); final EditingModalGraphMouse<String, String> graphMouse = new EditingModalGraphMouse<String, String>( vv.getRenderContext(), vertexFactory, edgeFactory); graphMouse.add(new CustomEditingPopupGraphMousePlugin<String>(vertexFactory, edgeFactory)); graphMouse.remove(graphMouse.getPopupEditingPlugin()); vv.setGraphMouse(graphMouse); vv.addKeyListener(graphMouse.getModeKeyListener()); graphMouse.setMode(ModalGraphMouse.Mode.EDITING); final ScalingControl scaler = new CrossoverScalingControl(); vv.scaleToLayout(scaler); String path = "src/snepsui/Interface/resources/icons/"; JButton plus = new JButton(); plus.setIcon(new ImageIcon(path + "zoom_in.png")); plus.setSize(18, 18); plus.setFocusPainted(false); plus.setBorderPainted(false); plus.setContentAreaFilled(false); plus.setMargin(new Insets(0, 0, 0, 0)); plus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1.1f, vv.getCenter()); } }); JButton minus = new JButton(); minus.setIcon(new ImageIcon(path + "zoom_out.png")); minus.setSize(18, 18); minus.setFocusPainted(false); minus.setBorderPainted(false); minus.setContentAreaFilled(false); minus.setMargin(new Insets(0, 0, 0, 0)); minus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1 / 1.1f, vv.getCenter()); } }); JPanel scaleGrid = new JPanel(new GridLayout(1, 2)); scaleGrid.setBorder(BorderFactory.createTitledBorder("Zoom")); JButton colors = new JButton(new ImageIcon(path + "colors.png")); colors.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(getRootPane(), new NodeColors()); } }); JButton infoButton = new JButton(new ImageIcon(path + "info.png")); infoButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(vv, instructions, "Instructions", JOptionPane.INFORMATION_MESSAGE, new ImageIcon("src/snepsui/Interface/resources/icons/info.png")); } }); JButton resetbutton = new JButton(new ImageIcon(path + "refresh.png")); resetbutton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ImageIcon icon = new ImageIcon("src/snepsui/Interface/resources/icons/info.png"); int result = JOptionPane.showConfirmDialog(vv, "Are you sure you want to reset the drawing area?", "Reset", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, icon); if (result == JOptionPane.YES_OPTION) { builtMolNodes.clear(); molNodes.clear(); nodesList.clear(); LinkedList<String> vertexList = new LinkedList<String>(); Collection<String> vertices = graph.getVertices(); for (String vertex : vertices) { vertexList.add(vertex); } for (String item : vertexList) { graph.removeVertex(item); } vv.repaint(); } } }); JLabel caseframeLabel = new JLabel("Case Frames"); DefaultComboBoxModel caseframeComboBoxModel = new DefaultComboBoxModel( new String[] { "define-caseframe", "undefine-caseframe" }); caseframeComboBox = new JComboBox(); caseframeComboBox.setModel(caseframeComboBoxModel); caseframeComboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addCaseFrameCommands(e); } }); JLabel relationsLabel = new JLabel("Relations"); DefaultComboBoxModel relationsComboBoxModel = new DefaultComboBoxModel( new String[] { "define", "undefine" }); relationsComboBox = new JComboBox(); relationsComboBox.setModel(relationsComboBoxModel); relationsComboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addRelationCommands(e); } }); JPanel options = new JPanel(new GridLayout(3, 1)); options.add(infoButton); options.add(resetbutton); options.add(colors); this.add(options, BorderLayout.EAST); JPanel controls = new JPanel(); scaleGrid.add(plus); scaleGrid.add(minus); controls.add(scaleGrid); controls.add(relationsLabel); controls.add(relationsComboBox); controls.add(caseframeLabel); controls.add(caseframeComboBox); JComboBox modeBox = graphMouse.getModeComboBox(); controls.add(modeBox); this.add(controls, BorderLayout.SOUTH); }
From source file:snepsui.Interface.TestDraw.java
private void initGUI() { nodesList = new LinkedList<Node>(); molNodes = new Hashtable<String, CaseFrame>(); builtMolNodes = new Hashtable<String, Node>(); this.setPreferredSize(new Dimension(815, 600)); graph = new DirectedOrderedSparseMultigraph<String, String>(); this.layout = new StaticLayout<String, String>(graph, new Dimension(700, 450)); shape = new Transformer<String, Integer>() { public Integer transform(String vertex) { int stringLength = 0; if (molNodes.containsKey(vertex)) { stringLength = 3;/*ww w. j av a 2 s. c o m*/ } else { for (Node node : nodesList) { if (vertex.equals(node.getIdentifier())) { stringLength = node.getIdentifier().length(); } } } return stringLength; } }; vertexPaint = new Transformer<String, Paint>() { public Paint transform(String vertex) { // if(molNodes.containsKey(vertex)) { // if(builtMolNodes.containsKey(vertex)) { // Node node = builtMolNodes.get(vertex); // if (node.getClass().getSimpleName().equals("PatternNode")) { // return Color.blue; // } else if (node.getClass().getSimpleName().equals("ClosedNode")) { // return Color.yellow; // } // } else // return Color.white; // } else { // for(Node node : nodesList) { // if(node.getIdentifier().equals(vertex)) { // if(node.getClass().getSimpleName().equals("BaseNode")) { // return Color.green; // } else if (node.getClass().getSimpleName().equals("VariableNode")) { // return Color.gray; // } else if (node.getClass().getSimpleName().equals("PatternNode")) { // return Color.blue; // } else if (node.getClass().getSimpleName().equals("ClosedNode")) { // return Color.yellow; // } else { // return Color.magenta; // } // } // } // } return Color.white; } }; edgeLabel = new Transformer<String, String>() { public String transform(String edge) { String result = ""; if (edge.isEmpty()) graph.removeEdge(""); vv.repaint(); try { result = edge.substring(0, edge.indexOf(":")); } catch (StringIndexOutOfBoundsException e) { } return result; } }; VertexShapeSizeAspect<String> vssa = new VertexShapeSizeAspect<String>(graph, shape); vv = new VisualizationViewer<String, String>(layout, new Dimension(700, 470)); vv.setBackground(Color.white); vv.getRenderContext().setVertexLabelTransformer(MapTransformer.<String, String>getInstance( LazyMap.<String, String>decorate(new HashMap<String, String>(), new ToStringLabeller<String>()))); vv.getRenderContext().setEdgeLabelTransformer(MapTransformer.<String, String>getInstance( LazyMap.<String, String>decorate(new HashMap<String, String>(), new ToStringLabeller<String>()))); vv.setVertexToolTipTransformer(vv.getRenderContext().getVertexLabelTransformer()); vv.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR); vv.getRenderContext().setVertexShapeTransformer(vssa); vv.getRenderContext() .setEdgeLabelClosenessTransformer(new ConstantDirectionalEdgeValueTransformer(0.5, 0.5)); vv.getRenderContext().setEdgeLabelTransformer(edgeLabel); vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint); vv.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { point = e.getPoint(); } public void mouseReleased(MouseEvent e) { vv.repaint(); } }); vssa.setScaling(true); final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv); this.add(panel); Factory<String> vertexFactory = new VertexFactory(); Factory<String> edgeFactory = new EdgeFactory(); final EditingModalGraphMouse<String, String> graphMouse = new EditingModalGraphMouse<String, String>( vv.getRenderContext(), vertexFactory, edgeFactory); graphMouse.add(new CustomEditingPopupGraphMousePlugin<String>(vertexFactory, edgeFactory)); graphMouse.remove(graphMouse.getPopupEditingPlugin()); vv.setGraphMouse(graphMouse); vv.addKeyListener(graphMouse.getModeKeyListener()); graphMouse.setMode(ModalGraphMouse.Mode.EDITING); final ScalingControl scaler = new CrossoverScalingControl(); vv.scaleToLayout(scaler); JButton plus = new JButton("+"); plus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1.1f, vv.getCenter()); } }); JButton minus = new JButton("-"); minus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scaler.scale(vv, 1 / 1.1f, vv.getCenter()); } }); JPanel scaleGrid = new JPanel(new GridLayout(1, 0)); scaleGrid.setBorder(BorderFactory.createTitledBorder("Zoom")); String path = "src/snepsui/Interface/resources/icons/"; JButton infoButton = new JButton(new ImageIcon(path + "info.png")); infoButton.setBounds(710, 320, 16, 16); infoButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(vv, instructions); } }); JButton resetbutton = new JButton(new ImageIcon(path + "resetnet.png")); resetbutton.setBounds(710, 300, 16, 16); resetbutton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int result = JOptionPane.showConfirmDialog(vv, "Are you sure you want to reset the drawing area?", "Reset", JOptionPane.YES_NO_OPTION); if (result == JOptionPane.YES_OPTION) { builtMolNodes.clear(); molNodes.clear(); nodesList.clear(); LinkedList<String> vertexList = new LinkedList<String>(); Collection<String> vertices = graph.getVertices(); for (String vertex : vertices) { vertexList.add(vertex); } for (String item : vertexList) { graph.removeVertex(item); } vv.repaint(); } } }); JLabel caseframeLabel = new JLabel("Case Frames"); DefaultComboBoxModel caseframeComboBoxModel = new DefaultComboBoxModel( new String[] { "define-caseframe", "undefine-caseframe" }); caseframeComboBox = new JComboBox(); caseframeComboBox.setModel(caseframeComboBoxModel); JLabel relationsLabel = new JLabel("Relations"); DefaultComboBoxModel relationsComboBoxModel = new DefaultComboBoxModel( new String[] { "define", "undefine" }); relationsComboBox = new JComboBox(); relationsComboBox.setModel(relationsComboBoxModel); this.add(infoButton, BorderLayout.EAST); this.add(resetbutton); JPanel controls = new JPanel(); scaleGrid.add(plus); scaleGrid.add(minus); controls.add(scaleGrid); controls.add(relationsLabel); controls.add(relationsComboBox); controls.add(caseframeLabel); controls.add(caseframeComboBox); JComboBox modeBox = graphMouse.getModeComboBox(); controls.add(modeBox); this.add(controls, BorderLayout.SOUTH); }
From source file:statemachinedesigner.GraphDisplayApplet.java
@Override public void init() { //create a graph Graph<Number, PromoterEdge> ig = Graphs.<Number, PromoterEdge>synchronizedDirectedGraph( new DirectedSparseMultigraph<Number, PromoterEdge>()); ObservableGraph<Number, PromoterEdge> og = new ObservableGraph<Number, PromoterEdge>(ig); this._graph = og; //create a graphdraw layout = new SpringLayout<Number, PromoterEdge>(_graph); //scale this to the size of the design input panel vv = new VisualizationViewer<Number, PromoterEdge>(layout, new Dimension(500, 250)); getContentPane().setLayout(new BorderLayout()); vv.setGraphMouse(new DefaultModalGraphMouse<Number, PromoterEdge>()); vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.CNTR); vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<Number>()); //code below adds edge labels vv.getRenderContext().setEdgeLabelTransformer(new Transformer<PromoterEdge, String>() { public String transform(PromoterEdge e) { return (e.getWeight()); }//from ww w . j a va 2 s. c o m }); getContentPane().add(vv); _graph.addVertex(0); }
From source file:test.visualization.ClusteringDemo.java
private void setUpView(BufferedReader br) throws IOException { Factory<Number> vertexFactory = new Factory<Number>() { int n = 0; public Number create() { return n++; }/*from www. j a va 2 s .co m*/ }; Factory<Number> edgeFactory = new Factory<Number>() { int n = 0; public Number create() { return n++; } }; PajekNetReader<Graph<Number, Number>, Number, Number> pnr = new PajekNetReader<Graph<Number, Number>, Number, Number>( vertexFactory, edgeFactory); final Graph<Number, Number> graph = new SparseMultigraph<Number, Number>(); pnr.load(br, graph); //Create a simple layout frame //specify the Fruchterman-Rheingold layout algorithm final AggregateLayout<Number, Number> layout = new AggregateLayout<Number, Number>( new FRLayout<Number, Number>(graph)); vv = new VisualizationViewer<Number, Number>(layout); vv.setBackground(Color.white); //Tell the renderer to use our own customized color rendering vv.getRenderContext() .setVertexFillPaintTransformer(MapTransformer.<Number, Paint>getInstance(vertexPaints)); vv.getRenderContext().setVertexDrawPaintTransformer(new Transformer<Number, Paint>() { public Paint transform(Number v) { if (vv.getPickedVertexState().isPicked(v)) { return Color.cyan; } else { return Color.BLACK; } } }); vv.getRenderContext().setEdgeDrawPaintTransformer(MapTransformer.<Number, Paint>getInstance(edgePaints)); vv.getRenderContext().setEdgeStrokeTransformer(new Transformer<Number, Stroke>() { protected final Stroke THIN = new BasicStroke(1); protected final Stroke THICK = new BasicStroke(2); public Stroke transform(Number e) { Paint c = edgePaints.get(e); if (c == Color.LIGHT_GRAY) return THIN; else return THICK; } }); //add restart button JButton scramble = new JButton("Restart"); scramble.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Layout layout = vv.getGraphLayout(); layout.initialize(); Relaxer relaxer = vv.getModel().getRelaxer(); if (relaxer != null) { relaxer.stop(); relaxer.prerelax(); relaxer.relax(); } } }); DefaultModalGraphMouse gm = new DefaultModalGraphMouse(); vv.setGraphMouse(gm); final JToggleButton groupVertices = new JToggleButton("Group Clusters"); //Create slider to adjust the number of edges to remove when clustering final JSlider edgeBetweennessSlider = new JSlider(JSlider.HORIZONTAL); edgeBetweennessSlider.setBackground(Color.WHITE); edgeBetweennessSlider.setPreferredSize(new Dimension(210, 50)); edgeBetweennessSlider.setPaintTicks(true); edgeBetweennessSlider.setMaximum(graph.getEdgeCount()); edgeBetweennessSlider.setMinimum(0); edgeBetweennessSlider.setValue(0); edgeBetweennessSlider.setMajorTickSpacing(10); edgeBetweennessSlider.setPaintLabels(true); edgeBetweennessSlider.setPaintTicks(true); // edgeBetweennessSlider.setBorder(BorderFactory.createLineBorder(Color.black)); //TO DO: edgeBetweennessSlider.add(new JLabel("Node Size (PageRank With Priors):")); //I also want the slider value to appear final JPanel eastControls = new JPanel(); eastControls.setOpaque(true); eastControls.setLayout(new BoxLayout(eastControls, BoxLayout.Y_AXIS)); eastControls.add(Box.createVerticalGlue()); eastControls.add(edgeBetweennessSlider); final String COMMANDSTRING = "Edges removed for clusters: "; final String eastSize = COMMANDSTRING + edgeBetweennessSlider.getValue(); final TitledBorder sliderBorder = BorderFactory.createTitledBorder(eastSize); eastControls.setBorder(sliderBorder); //eastControls.add(eastSize); eastControls.add(Box.createVerticalGlue()); groupVertices.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { clusterAndRecolor(layout, edgeBetweennessSlider.getValue(), similarColors, e.getStateChange() == ItemEvent.SELECTED); vv.repaint(); } }); clusterAndRecolor(layout, 0, similarColors, groupVertices.isSelected()); edgeBetweennessSlider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { JSlider source = (JSlider) e.getSource(); if (!source.getValueIsAdjusting()) { int numEdgesToRemove = source.getValue(); clusterAndRecolor(layout, numEdgesToRemove, similarColors, groupVertices.isSelected()); sliderBorder.setTitle(COMMANDSTRING + edgeBetweennessSlider.getValue()); eastControls.repaint(); //vv.validate(); //vv.repaint(); } } }); Container content = getContentPane(); content.add(new GraphZoomScrollPane(vv)); JPanel south = new JPanel(); JPanel grid = new JPanel(new GridLayout(2, 1)); grid.add(scramble); grid.add(groupVertices); south.add(grid); south.add(eastControls); JPanel p = new JPanel(); p.setBorder(BorderFactory.createTitledBorder("Mouse Mode")); p.add(gm.getModeComboBox()); south.add(p); content.add(south, BorderLayout.SOUTH); }
From source file:tests.shortestpaths.SuurballeTarjanTest.java
@Test(expected = IllegalArgumentException.class) public void constructorTest1() { Graph<String, MyLink> g = null; Transformer<MyLink, Number> weightTrans = new Transformer<MyLink, Number>() { @Override/*from www . j a va2 s .c o m*/ public Number transform(MyLink link) { return link.getWeight(); } }; new SuurballeTarjan<String, MyLink>(g, weightTrans); }