Example usage for org.apache.commons.collections15 Transformer Transformer

List of usage examples for org.apache.commons.collections15 Transformer Transformer

Introduction

In this page you can find the example usage for org.apache.commons.collections15 Transformer Transformer.

Prototype

Transformer

Source Link

Usage

From source file:com.google.code.facebook.graph.sna.applet.FacebookGraphApplet.java

/**
 * create an instance of a simple graph with controls to
 * demo the zoom features./*from   www .j  a va2 s  .c o m*/
 * 
 */
@Override
public void init() {
    super.init();
    // create a simple graph for the demo
    fetchUserGraph();
    final Collection<? extends Entity<FieldEnum, ConnectionEnum>> vertices = graph.getVertices();

    // a Map for the labels
    Map<Entity<FieldEnum, ConnectionEnum>, String> map = new HashMap<Entity<FieldEnum, ConnectionEnum>, String>();
    Iterator<? extends Entity<FieldEnum, ConnectionEnum>> iterator = vertices.iterator();
    while (iterator.hasNext()) {
        Entity<FieldEnum, ConnectionEnum> entity = iterator.next();
        map.put(entity, entity.getLabel());
    }

    FRLayout<Entity<FieldEnum, ConnectionEnum>, EdgeAdapter<ConnectionEnum>> layout = new FRLayout<Entity<FieldEnum, ConnectionEnum>, EdgeAdapter<ConnectionEnum>>(
            (Graph<Entity<FieldEnum, ConnectionEnum>, EdgeAdapter<ConnectionEnum>>) graph);
    layout.setMaxIterations(100);
    vv = new VisualizationViewer<Entity<FieldEnum, ConnectionEnum>, EdgeAdapter<ConnectionEnum>>(layout,
            new Dimension(2000, 2000));

    Transformer<Entity<FieldEnum, ConnectionEnum>, Paint> vpf = new PickableVertexPaintTransformer<Entity<FieldEnum, ConnectionEnum>>(
            vv.getPickedVertexState(), Color.white, Color.yellow);
    vv.getRenderContext().setVertexFillPaintTransformer(vpf);
    vv.getRenderContext().setEdgeDrawPaintTransformer(
            new PickableEdgePaintTransformer<EdgeAdapter<ConnectionEnum>>(vv.getPickedEdgeState(), Color.black,
                    Color.cyan));

    vv.setBackground(Color.white);

    // a Map for the Icons
    final Map<Entity<FieldEnum, ConnectionEnum>, Icon> iconMap = new HashMap<Entity<FieldEnum, ConnectionEnum>, Icon>();
    new Thread(new Runnable() {
        public void run() {
            Iterator<? extends Entity<FieldEnum, ConnectionEnum>> iterator = vertices.iterator();
            while (iterator.hasNext()) {
                try {
                    Entity<FieldEnum, ConnectionEnum> entity = iterator.next();
                    //                     Icon icon = 
                    //                        new LayeredIcon(new ImageIcon("http://facebookgraph.appspot.com/proxy?url=" + entity.getPicture(PictureType.SQUARE), "Profile Picture").getImage());
                    //                       iconMap.put(entity, icon);

                    Image image = getImageFromEntity(entity);
                    if (image != null && image.getWidth(null) > 0 && image.getHeight(null) > 0) {
                        Icon icon = new LayeredIcon(image);
                        iconMap.put(entity, icon);
                        if ((iconMap.size() % 5) == 0) {
                            vv.repaint();
                        }
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
            vv.repaint();
        }

    }).start();

    final Transformer<Entity<FieldEnum, ConnectionEnum>, String> vertexStringerImpl = new VertexStringerImpl<Entity<FieldEnum, ConnectionEnum>>(
            map);
    Transformer<EdgeAdapter<ConnectionEnum>, String> edgeStringerImpl = new Transformer<EdgeAdapter<ConnectionEnum>, String>() {
        public String transform(EdgeAdapter<ConnectionEnum> edge) {
            return edge.toString();
        }
    };
    vv.getRenderContext().setEdgeLabelTransformer(edgeStringerImpl);
    vv.getRenderContext().setVertexLabelTransformer(vertexStringerImpl);
    vv.getRenderContext().setVertexLabelRenderer(new DefaultVertexLabelRenderer(Color.cyan));
    vv.getRenderContext().setEdgeLabelRenderer(new DefaultEdgeLabelRenderer(Color.cyan));

    // features on and off. For a real application, use VertexIconAndShapeFunction instead.
    final VertexIconShapeTransformer<Entity<FieldEnum, ConnectionEnum>> vertexImageShapeFunction = new VertexIconShapeTransformer<Entity<FieldEnum, ConnectionEnum>>(
            new EllipseVertexShapeTransformer<Entity<FieldEnum, ConnectionEnum>>());

    final DefaultVertexIconTransformer<Entity<FieldEnum, ConnectionEnum>> vertexIconFunction = new DefaultVertexIconTransformer<Entity<FieldEnum, ConnectionEnum>>();

    vertexImageShapeFunction.setIconMap(iconMap);
    vertexIconFunction.setIconMap(iconMap);

    vv.getRenderContext().setVertexShapeTransformer(vertexImageShapeFunction);
    vv.getRenderContext().setVertexIconTransformer(vertexIconFunction);

    // Get the pickedState and add a listener that will decorate the
    // Vertex images with a checkmark icon when they are picked
    PickedState<Entity<FieldEnum, ConnectionEnum>> ps = vv.getPickedVertexState();
    ps.addItemListener(new PickWithIconListener(vertexIconFunction));

    // add a listener for ToolTips
    vv.setVertexToolTipTransformer(new Transformer<Entity<FieldEnum, ConnectionEnum>, String>() {
        @Override
        public String transform(Entity<FieldEnum, ConnectionEnum> entity) {
            return entity.getDescription();
        }
    });

    Container content = getContentPane();
    final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv);
    content.add(panel);

    final DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse();
    vv.setGraphMouse(graphMouse);

    final ScalingControl scaler = new CrossoverScalingControl();

    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());
        }
    });

    JComboBox modeBox = graphMouse.getModeComboBox();
    JPanel modePanel = new JPanel();
    modePanel.setBorder(BorderFactory.createTitledBorder("Mouse Mode"));
    modePanel.add(modeBox);

    JPanel scaleGrid = new JPanel(new GridLayout(1, 0));
    scaleGrid.setBorder(BorderFactory.createTitledBorder("Zoom"));
    JPanel controls = new JPanel();
    scaleGrid.add(plus);
    scaleGrid.add(minus);
    controls.add(scaleGrid);

    controls.add(modePanel);
    content.add(controls, BorderLayout.SOUTH);

    this.viewSupport = new MagnifyImageLensSupport<Entity<FieldEnum, ConnectionEnum>, EdgeAdapter<ConnectionEnum>>(
            vv);
    //           new ViewLensSupport<Number,Number>(vv, new HyperbolicShapeTransformer(vv, 
    //              vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)), 
    //                new ModalLensGraphMouse());

    this.modelSupport = new LayoutLensSupport<Entity<FieldEnum, ConnectionEnum>, EdgeAdapter<ConnectionEnum>>(
            vv);

    graphMouse.addItemListener(modelSupport.getGraphMouse().getModeListener());
    graphMouse.addItemListener(viewSupport.getGraphMouse().getModeListener());

    ButtonGroup radio = new ButtonGroup();
    JRadioButton none = new JRadioButton("None");
    none.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            if (viewSupport != null) {
                viewSupport.deactivate();
            }
            if (modelSupport != null) {
                modelSupport.deactivate();
            }
        }
    });
    none.setSelected(true);

    JRadioButton hyperView = new JRadioButton("View");
    hyperView.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            viewSupport.activate(e.getStateChange() == ItemEvent.SELECTED);
        }
    });

    JRadioButton hyperModel = new JRadioButton("Layout");
    hyperModel.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            modelSupport.activate(e.getStateChange() == ItemEvent.SELECTED);
        }
    });
    radio.add(none);
    radio.add(hyperView);
    radio.add(hyperModel);

    JMenuBar menubar = new JMenuBar();
    JMenu modeMenu = graphMouse.getModeMenu();
    menubar.add(modeMenu);

    JPanel lensPanel = new JPanel(new GridLayout(2, 0));
    lensPanel.setBorder(BorderFactory.createTitledBorder("Lens"));
    lensPanel.add(none);
    lensPanel.add(hyperView);
    lensPanel.add(hyperModel);
    controls.add(lensPanel);
}

From source file:br.edu.unifei.mestrado.view.GraphPartitioningVisualization.java

private void createView(final int partitions) {

    clusterer = new PartitionClusterer(partitions);

    final Graph<NodeWrapper, EdgeWrapper> graph = getGraph();

    // Create a simple layout frame
    // specify the Fruchterman-Rheingold layout algorithm
    layout = new AggregateLayout<NodeWrapper, EdgeWrapper>(new FRLayout<NodeWrapper, EdgeWrapper>(graph));

    vv = new VisualizationViewer<NodeWrapper, EdgeWrapper>(layout);
    vv.setBackground(Color.white);

    if (vertexLabelTransformer == null) {
        vertexLabelTransformer = new Transformer<NodeWrapper, String>() {
            @Override//from w  ww. j  a  va 2s .c om
            public String transform(NodeWrapper v) {
                // TODO: voltar o D quando necessrio
                return "V" + v.getId() + ":" + v.getWeight();// + ":" +
                // v.getD();
            }
        };
    }
    vv.getRenderContext().setVertexLabelTransformer(vertexLabelTransformer);

    // MapTransformer.<NodeWrapper, String>
    // getInstance(LazyMap.<NodeWrapper, String> decorate(
    // new HashMap<NodeWrapper, String>(), new
    // ToStringLabeller<NodeWrapper>())));
    vv.getRenderContext().setEdgeLabelTransformer(edgeLabelTransformer);

    // UTIL: Alguma coisa, talvez o LazyMap no estava repintando a aresta
    // com o peso alterado

    // MapTransformer.<EdgeWrapper, String>
    // getInstance(LazyMap.<EdgeWrapper, String> decorate(
    // new HashMap<EdgeWrapper, String>(), new
    // ToStringLabeller<EdgeWrapper>() {
    // @Override
    // public String transform(EdgeWrapper v) {
    // logger.warn("A:" + v.getId() + ":" + v.getWeight());
    // return "A:" + v.getId() + ":" + v.getWeight();
    // }
    // })));
    // Tell the renderer to use our own customized color rendering

    vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.Line<NodeWrapper, EdgeWrapper>());

    vv.getRenderContext().setVertexShapeTransformer(vertexShapeTransformer);
    vv.getRenderContext().setVertexFillPaintTransformer(vertexFillPaintTransformer);
    vv.getRenderContext().setVertexDrawPaintTransformer(vertexDrawPaintTransformer);
    vv.getRenderContext().setVertexStrokeTransformer(vertexStrokeTransformer);

    vv.getRenderContext().setEdgeDrawPaintTransformer(new Transformer<EdgeWrapper, Paint>() {

        // UTIL: Define as cores das arestas
        @Override
        public Paint transform(EdgeWrapper linkToProcess) {
            // if para mostrar arestas com as duas pontas no mesmo vertices
            if (linkToProcess.getStartNode().getId() == linkToProcess.getEndNode().getId()) {
                return Color.red;
            }
            Set<NodeWrapper> nodes = vv.getPickedVertexState().getPicked();
            for (NodeWrapper node : nodes) {
                for (EdgeWrapper link : node.getEdges()) {
                    if (link.getId() == linkToProcess.getId()) {
                        return Color.orange;
                    }
                }
            }
            if (linkToProcess.isEdgeOnCut()) {
                return Color.green;
            }
            return Color.blue;
        }
    });

    // MapTransformer.<EdgeWrapper, Paint> getInstance(edgePaints));

    vv.getRenderContext().setEdgeStrokeTransformer(new Transformer<EdgeWrapper, Stroke>() {
        protected final Stroke THIN = new BasicStroke(1);
        // protected final Stroke THICK = new BasicStroke(2);
        protected final Stroke STRONG_THICK = new BasicStroke(3);

        public Stroke transform(EdgeWrapper e) {
            // if para mostrar arestas com as duas pontas no mesmo vertices
            if (e.getStartNode().getId() == e.getEndNode().getId()) {
                return STRONG_THICK;
            }

            // Paint c = edgePaints.get(e);
            // if (c == Color.red)
            return THIN;
            // else
            // return THIN;
        }
    });

    DefaultModalGraphMouse gm = new DefaultModalGraphMouse();
    vv.setGraphMouse(gm);

    groupVertices = new JToggleButton("Group Clusters");
    groupVertices.setSelected(true);

    groupVertices.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
            clusterAndRecolor(layout, e.getStateChange() == ItemEvent.SELECTED,
                    getGroupCircleVertices().isSelected());
            vv.repaint();
        }
    });

    clusterAndRecolor(layout, groupVertices.isSelected(), getGroupCircleVertices().isSelected());

    Container content = getContentPane();
    content.add(new GraphZoomScrollPane(vv));
    JPanel south = new JPanel(new GridLayout(1, 4));
    JPanel grid1 = new JPanel(new GridLayout(2, 1));
    grid1.add(groupVertices);
    grid1.add(getGroupCircleVertices());
    south.add(grid1);

    final ScalingControl scaler = new CrossoverScalingControl();
    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 grid2 = new JPanel(new GridLayout(2, 1));
    grid2.setBorder(BorderFactory.createTitledBorder("Scale"));
    south.add(grid2);
    grid2.add(plus);
    grid2.add(minus);
    JPanel grid3 = new JPanel(new GridLayout(1, 2));
    south.add(grid3);
    grid3.add(getIterationLabel());
    grid3.add(getCutLabel());

    JPanel p = new JPanel();
    p.setBorder(BorderFactory.createTitledBorder("Mouse Mode"));
    p.add(gm.getModeComboBox());
    south.add(p);
    content.add(south, BorderLayout.SOUTH);
    vv.repaint();
}

From source file:GrafosTroleBus.java

public GrafosTroleBus() {
    setLayout(new BorderLayout());

    //definir puntos de trolebus (latitude y longitude) @autor sa

    map.put("RECREO", new String[] { "-0.2516682", "-78.521524" }); //Recreo                       
    map.put("P14", new String[] { "-0.2445098", "-78.51902" }); //Villaflora
    map.put("P15", new String[] { "-0.2396436", "-78.51698" }); //Chimbacalle N-S                      
    map.put("P16", new String[] { "-0.2378458", "-78.515976" }); //Chimbacalle S-N
    map.put("P17", new String[] { "-0.2356805", "-78.514816" }); //Colina
    map.put("P18", new String[] { "-0.234052", "-78.514237" }); //Jefferson Perez
    map.put("P19", new String[] { "-0.2312856", "-78.513627" }); //Recoleta N-S        
    map.put("P20", new String[] { "-0.2307005", "-78.513051" }); //Recoleta S-N
    map.put("P21", new String[] { "-0.2263919", "-78.513011" }); //P21 Cumanda N-S
    map.put("P22", new String[] { "-0.226424", "-78.512803" }); //P22 Cumanda S-N
    map.put("P23", new String[] { "-0.2234658", "-78.512542" }); //P23 Santo Domingo
    map.put("P24", new String[] { "-0.2185857", "-78.508601" }); //P24 Plaza del Teatro N-S
    map.put("P25", new String[] { "-0.219605", "-78.50813" }); //P25 Plaza del Teatro S-N        
    map.put("P26", new String[] { "-0.2177808", "-78.505977" }); //P26 Hermano Miguel
    map.put("P27", new String[] { "-0.2169088", "-78.50521" }); //P27 Banco Central
    map.put("P28", new String[] { "-0.214267", "-78.502999" }); //P28 La Alameda S-N
    map.put("P29", new String[] { "-0.2137705", "-78.50293" }); //P29 La Alameda N-S                       
    map.put("P30", new String[] { "-0.2084939", "-78.500255" }); //P30 Ejido N-S
    map.put("P31", new String[] { "-0.2088076", "-78.500032" }); //P31 Ejido S-N
    map.put("P32", new String[] { "-0.2047989", "-78.4988" }); //P32 La Mariscal N-S
    map.put("P33", new String[] { "-0.2041972", "-78.498491" }); //P33 La Mariscal S-N
    map.put("P34", new String[] { "-0.2009718", "-78.49715" }); //P34 Santa Clara S-N
    map.put("P35", new String[] { "-0.201056", "-78.496979" }); //P35 Santa Clara N-S
    map.put("P36", new String[] { "-0.1986325", "-78.496141" }); //P36 La Colon S-N
    map.put("P37", new String[] { "-0.1978432", "-78.495563" }); //P37 La Colon N-S
    map.put("P38", new String[] { "-0.1921587", "-78.493445" }); //P38 Cuero y Caicedo S-N
    map.put("P39", new String[] { "-0.1915098", "-78.493001" }); //P39 Cuero y Caicedo N-S                        
    map.put("P40", new String[] { "-0.1889467", "-78.492149" }); //P40 Mariana de Jess S-N
    map.put("P41", new String[] { "-0.1875567", "-78.491303" }); //P41 Mariana de Jesus N-S
    map.put("P42", new String[] { "-0.1853693", "-78.490878" }); //P42 El Floron S-N
    map.put("P43", new String[] { "-0.1846687", "-78.490403" }); //P43 El Floron N-S        
    map.put("P44", new String[] { "-0.1817679", "-78.489808" }); //P44 Carolina S-N
    map.put("P45", new String[] { "-0.1810849", "-78.489336" }); //P45 Carolina N-S
    map.put("P46", new String[] { "-0.1787274", "-78.488954" }); //P46 Estadio S-N
    map.put("P47", new String[] { "-0.1780172", "-78.488621" }); //P47 Estadio N-S
    map.put("P48", new String[] { "-0.172087", "-78.487589" }); //P48 La Y S-N
    map.put("P49", new String[] { "-0.1713146", "-78.487277" }); //P49 La Y N-S        
    map.put("LA Y", new String[] { "-0.1635504", "-78.485374" }); //Estacin La Y                              

    nodoList = new ArrayList<String>(map.keySet());

    // create a simple graph for the demo        
    graph = new DirectedSparseMultigraph<String, Number>();
    createVertices();//from www  . j  av a 2s .com
    createEdges();

    ImageIcon mapIcon = null;
    String imageLocation = "/mapa_quito.png";

    try {
        mapIcon = new ImageIcon(getClass().getResource(imageLocation));

        ImageWidth = mapIcon.getIconWidth();
        ImageHeight = mapIcon.getIconHeight();

    } catch (Exception ex) {
        System.err.println("Can't load \"" + imageLocation + "\"");
    }

    final ImageIcon icon = mapIcon;

    Dimension layoutSize = new Dimension(ImageWidth, ImageHeight);

    Layout<String, Number> layout = new StaticLayout<String, Number>(graph,
            new ChainedTransformer<String, Point2D>(new Transformer[] { new CityTransformer(map),
                    new LatLonPixelTransformer(new Dimension(ImageWidth, ImageHeight)) }));

    layout.setSize(layoutSize);
    vv = new VisualizationViewer<String, Number>(layout, new Dimension(MonitorWidth, MonitorHeight));

    if (icon != null) {
        vv.addPreRenderPaintable(new VisualizationViewer.Paintable() {
            public void paint(Graphics g) {
                Graphics2D g2d = (Graphics2D) g;
                AffineTransform oldXform = g2d.getTransform();
                AffineTransform lat = vv.getRenderContext().getMultiLayerTransformer()
                        .getTransformer(Layer.LAYOUT).getTransform();
                AffineTransform vat = vv.getRenderContext().getMultiLayerTransformer()
                        .getTransformer(Layer.VIEW).getTransform();
                AffineTransform at = new AffineTransform();
                at.concatenate(g2d.getTransform());
                at.concatenate(vat);
                at.concatenate(lat);
                g2d.setTransform(at);
                g.drawImage(icon.getImage(), 0, 0, icon.getIconWidth(), icon.getIconHeight(), vv);
                g2d.setTransform(oldXform);
            }

            public boolean useTransform() {
                return false;
            }
        });
    }

    vv.getRenderer().setVertexRenderer(new GradientVertexRenderer<String, Number>(Color.white, Color.red,
            Color.white, Color.blue, vv.getPickedVertexState(), false));

    // add my listeners for ToolTips
    vv.setVertexToolTipTransformer(new ToStringLabeller<String>());
    vv.setEdgeToolTipTransformer(new Transformer<Number, String>() {
        public String transform(Number edge) {
            return "E" + graph.getEndpoints(edge).toString();
        }
    });

    vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<String>());
    vv.getRenderer().getVertexLabelRenderer().setPositioner(new InsidePositioner());
    vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.AUTO);

    final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv);
    add(panel);
    final AbstractModalGraphMouse graphMouse = new DefaultModalGraphMouse<Object, Object>();
    vv.setGraphMouse(graphMouse);

    vv.addKeyListener(graphMouse.getModeKeyListener());
    vv.setToolTipText("<html><center>Type 'p' for Pick mode<p>Type 't' for Transform mode");

    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());
        }
    });

    JButton reset = new JButton("reset");
    reset.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.LAYOUT).setToIdentity();
            vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW).setToIdentity();
        }
    });

    JPanel controls = new JPanel();
    controls.add(plus);
    controls.add(minus);
    controls.add(reset);
    add(controls, BorderLayout.SOUTH);
}

From source file:net.sourceforge.metware.binche.graph.ChebiGraph.java

/**
 * Method to return the color transformer of a node, working on its internal color value.
 *
 * @return the transformer/*from   w  w  w  .j  av a2  s.c  o  m*/
 */
private Transformer<ChebiVertex, Paint> getVertexTransformer() {

    Transformer<ChebiVertex, Paint> vertexPaint = new Transformer<ChebiVertex, Paint>() {
        public Paint transform(ChebiVertex vertex) {
            return vertex.getColor();
        }
    };
    return vertexPaint;
}

From source file:com.rapidminer.gui.graphs.GraphViewer.java

public GraphViewer(final GraphCreator<V, E> graphCreator) {
    try {// w  w  w . j  a  v  a 2 s.  c  om
        if (!RapidMiner.getExecutionMode().isHeadless()) {
            graphMouse = new DefaultModalGraphMouse(1 / 1.1f, 1.1f);
        }
    } catch (HeadlessException e) {
    }

    this.graphCreator = graphCreator;

    setLayout(new BorderLayout());

    Graph<V, E> graph = graphCreator.createGraph();
    this.layoutSelection = new LayoutSelection<>(this, graph);
    this.layout = new ISOMLayout<>(graph);
    vv = new VisualizationViewer<V, E>(layout) {

        private static final long serialVersionUID = 8247229781249216143L;

        private boolean initialized = false;

        /**
         * Necessary in order to re-change layout after first painting (starting position and
         * size).
         */
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            if (!initialized) {
                initialized = true;
                updateLayout();
                if (objectViewerSplitPane != null) {
                    objectViewerSplitPane.setDividerLocation(0.9);
                }
            }
        }
    };
    vv.setBorder(BorderFactory.createEmptyBorder());
    vv.setBackground(Color.white);

    // === design ===

    // ## edge layout ##
    // EDGE SHAPE
    int edgeShapeType = graphCreator.getEdgeShape();
    switch (edgeShapeType) {
    case GraphCreator.EDGE_SHAPE_LINE:
        vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.Line<V, E>());
        break;
    case GraphCreator.EDGE_SHAPE_QUAD_CURVE:
        vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.QuadCurve<V, E>());
        break;
    case GraphCreator.EDGE_SHAPE_CUBIC_CURVE:
        vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.CubicCurve<V, E>());
        break;
    case GraphCreator.EDGE_SHAPE_BENT_LINE:
        vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.BentLine<V, E>());
        break;
    case GraphCreator.EDGE_SHAPE_WEDGE:
        vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.Wedge<V, E>(5));
        break;
    default:
        vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.Line<V, E>());
        break;
    }

    // EDGE FONT
    vv.getRenderContext().setEdgeFontTransformer(new Transformer<E, Font>() {

        @Override
        public Font transform(E arg0) {
            return EDGE_FONT;
        }
    });

    // EDGE COLORS
    vv.getRenderContext().setEdgeDrawPaintTransformer(new Transformer<E, Paint>() {

        @Override
        public Paint transform(E edge) {
            double edgeStrength = graphCreator.getEdgeStrength(edge);
            int value = (int) Math.max(140, Math.min(230, 230 - edgeStrength * 90));
            return new Color(value, value, value);
        }
    });
    vv.getRenderContext().setArrowDrawPaintTransformer(new Transformer<E, Paint>() {

        @Override
        public Paint transform(E edge) {
            double edgeStrength = graphCreator.getEdgeStrength(edge);
            int value = (int) Math.max(140, Math.min(230, 230 - edgeStrength * 90));
            return new Color(value, value, value).darker();
        }
    });
    vv.getRenderContext().setArrowFillPaintTransformer(new Transformer<E, Paint>() {

        @Override
        public Paint transform(E edge) {
            double edgeStrength = graphCreator.getEdgeStrength(edge);
            int value = (int) Math.max(140, Math.min(230, 230 - edgeStrength * 90));
            return new Color(value, value, value);
        }
    });

    // EDGE LABEL POSITION
    vv.getRenderContext()
            .setEdgeLabelClosenessTransformer(new ConstantDirectionalEdgeValueTransformer<V, E>(0.5d, 0.5d));
    int labelOffset = graphCreator.getLabelOffset();
    if (labelOffset >= 0) {
        vv.getRenderContext().setLabelOffset(labelOffset);
    }

    // EDGE LABELS
    vv.getRenderContext().setEdgeLabelTransformer(new Transformer<E, String>() {

        @Override
        public String transform(E object) {
            return graphCreator.getEdgeName(object);
        }
    });
    // EDGE LABEL RENDERER
    Renderer.EdgeLabel<V, E> edgeLabelRenderer = graphCreator.getEdgeLabelRenderer();
    if (edgeLabelRenderer != null) {
        vv.getRenderer().setEdgeLabelRenderer(edgeLabelRenderer); // renderer...
    }
    vv.getRenderContext().setEdgeLabelRenderer(new EdgeLabelRenderer() { // ...context!

        private JLabel renderer = new JLabel();

        @Override
        public <T> Component getEdgeLabelRendererComponent(JComponent parent, Object value, Font font,
                boolean isSelected, T edge) {
            this.renderer.setFont(font);
            if (graphCreator.isEdgeLabelDecorating()) {
                this.renderer.setOpaque(true);
                renderer.setBackground(Color.WHITE);
                // use this for a more fancy look and feel
                // renderer.setBackground(SwingTools.TRANSPARENT_YELLOW);
                // this.renderer.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(SwingTools.DARK_BLUE),
                // BorderFactory.createEmptyBorder(1,1,1,1)));
            }
            this.renderer.setText(value.toString());
            return this.renderer;
        }

        /** Let the graph model decide. */
        @Override
        public boolean isRotateEdgeLabels() {
            return graphCreator.isRotatingEdgeLabels();
        }

        /** Does nothing. */
        @Override
        public void setRotateEdgeLabels(boolean rotate) {
        }
    });

    // ## vertex layout ##

    // VERTEX FONT
    vv.getRenderContext().setVertexFontTransformer(new Transformer<V, Font>() {

        @Override
        public Font transform(V vertex) {
            if (graphCreator.isBold(vertex)) {
                return VERTEX_BOLD_FONT;
            } else {
                return VERTEX_PLAIN_FONT;
            }
        }
    });
    // VERTEX NAME
    vv.getRenderContext().setVertexLabelTransformer(new Transformer<V, String>() {

        @Override
        public String transform(V object) {
            return graphCreator.getVertexName(object);
        }
    });
    // VERTEX FILL PAINT
    Transformer<V, Paint> paintTransformer = graphCreator.getVertexPaintTransformer(vv);
    if (paintTransformer == null) {
        paintTransformer = new Transformer<V, Paint>() {

            @Override
            public Paint transform(V vertex) {
                if (vv.getPickedVertexState().isPicked(vertex)) {
                    return SwingTools.LIGHT_YELLOW;
                } else {
                    return SwingTools.LIGHT_BLUE;
                }
            }
        };
    }
    vv.getRenderContext().setVertexFillPaintTransformer(paintTransformer);

    // VERTEX DRAW PAINT
    vv.getRenderContext().setVertexDrawPaintTransformer(new Transformer<V, Paint>() {

        @Override
        public Paint transform(V vertex) {
            if (vv.getPickedVertexState().isPicked(vertex)) {
                return SwingTools.DARKEST_YELLOW.darker();
            } else {
                return SwingTools.DARKEST_BLUE.darker();
            }
        }
    });
    // VERTEX TOOL TIP
    this.vv.setVertexToolTipTransformer(new Transformer<V, String>() {

        @Override
        public String transform(V vertex) {
            return graphCreator.getVertexToolTip(vertex);
        }
    });
    // VERTEX SHAPE
    vv.getRenderContext().setVertexShapeTransformer(new ExtendedVertexShapeTransformer<>(graphCreator));

    // VERTEX RENDERER
    Renderer.Vertex<V, E> vertexRenderer = graphCreator.getVertexRenderer();
    if (vertexRenderer != null) {
        vv.getRenderer().setVertexRenderer(vertexRenderer);
    }

    // VERTEX LABEL RENDERER
    setDefaultLabelPosition();
    // custom renderer?
    Renderer.VertexLabel<V, E> customVertexLabelRenderer = graphCreator.getVertexLabelRenderer();
    if (customVertexLabelRenderer != null) {
        vv.getRenderer().setVertexLabelRenderer(customVertexLabelRenderer);
    }

    // context
    vv.getRenderContext().setVertexLabelRenderer(new VertexLabelRenderer() {

        private JLabel label = new JLabel();

        @Override
        public <T> Component getVertexLabelRendererComponent(JComponent parent, Object object, Font font,
                boolean isSelection, T vertex) {
            label.setFont(font);
            if (object != null) {
                label.setText(object.toString());
            } else {
                label.setText("");
            }
            return label;
        }

    });

    // === end of design ===

    // === main panel ===

    if (graphCreator.getObjectViewer() == null) {
        add(vv, BorderLayout.CENTER);
    } else {
        JComponent viewer = graphCreator.getObjectViewer().getViewerComponent();
        if (viewer != null) {
            viewer.setBorder(null);
            objectViewerSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
            objectViewerSplitPane.setResizeWeight(1);
            objectViewerSplitPane.add(vv, 0);
            objectViewerSplitPane.add(viewer, 1);
            add(objectViewerSplitPane, BorderLayout.CENTER);
        } else {
            add(vv, BorderLayout.CENTER);
        }
    }

    // === control panel ===

    Component controlPanel = createControlPanel();
    add(new ExtendedJScrollPane(controlPanel), BorderLayout.WEST);

    this.showEdgeLabels = !graphCreator.showEdgeLabelsDefault();
    togglePaintEdgeLabels();
    this.showVertexLabels = !graphCreator.showVertexLabelsDefault();
    togglePaintVertexLabels();

    this.layoutSelection.setLayout();
}

From source file:com.imag.nespros.gui.plugin.GraphEditor.java

/**
 * create an instance of a simple graph with popup controls to create a
 * graph.//from   w w  w.  j a v  a2  s  .c o m
 *
 */
private GraphEditor(Simulation s) {
    simu = s;
    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception ex) {
        Logger.getLogger(GraphEditor.class.getName()).log(Level.SEVERE, null, ex);
    }
    // create a simple graph for the demo
    graph = Topology.getInstance().getGraph();
    this.layout = new StaticLayout<Device, ComLink>(graph, new Transformer<Device, Point2D>() {
        @Override
        public Point2D transform(Device v) {
            Point2D p = new Point2D.Double(v.getX(), v.getY());
            return p;
        }
    }, new Dimension(600, 600));

    vv = new VisualizationViewer<Device, ComLink>(layout);
    vv.setBackground(Color.white);

    final Transformer<Device, String> vertexLabelTransformer = new Transformer<Device, String>() {
        @Override
        public String transform(Device d) {
            return d.getDeviceName();
        }
    };

    //vv.getRenderContext().setVertexLabelTransformer(MapTransformer.<Device, String>getInstance(
    //      LazyMap.<Device, String>decorate(new HashMap<Device, String>(), new ToStringLabeller<Device>())));
    vv.getRenderContext().setVertexLabelTransformer(vertexLabelTransformer);
    vv.getRenderContext().setEdgeLabelTransformer(new Transformer<ComLink, String>() {
        @Override
        public String transform(ComLink link) {
            return (link.getID() + ", " + link.getLatency());
        }
    });
    //float dash[] = {0.1f};
    //final Stroke edgeStroke = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 1.0f);
    final Stroke edgeStroke = new BasicStroke(3.0f);
    final Transformer<ComLink, Stroke> edgeStrokeTransformer = new Transformer<ComLink, Stroke>() {
        @Override
        public Stroke transform(ComLink l) {
            return edgeStroke;
        }
    };
    Transformer<ComLink, Paint> edgePaint = new Transformer<ComLink, Paint>() {
        public Paint transform(ComLink l) {
            if (l.isDown()) {
                return Color.RED;
            } else {
                return Color.BLACK;
            }
        }
    };
    vv.getRenderContext().setEdgeDrawPaintTransformer(edgePaint);
    vv.getRenderContext().setEdgeStrokeTransformer(edgeStrokeTransformer);
    vv.setVertexToolTipTransformer(vv.getRenderContext().getVertexLabelTransformer());
    vv.getRenderContext().setVertexIconTransformer(new CustomVertexIconTransformer());
    vv.getRenderContext().setVertexShapeTransformer(new CustomVertexShapeTransformer());

    vv.addPreRenderPaintable(new VisualizationViewer.Paintable() {

        @Override
        public void paint(Graphics grphcs) {

            for (Device d : Topology.getInstance().getGraph().getVertices()) {
                int size = d.getOperators().size();
                MyLayeredIcon icon = d.getIcon();
                //if(icon == null) continue;
                icon.removeAll();
                if (size > 0) {
                    // the vertex icon                        
                    // Let's create the annotation image to be added to icon..
                    BufferedImage image = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
                    Graphics2D g = image.createGraphics();
                    g.setColor(Color.ORANGE);
                    g.fillOval(0, 0, 20, 20);
                    g.setColor(Color.BLACK);
                    g.drawString(size + "", 5, 13);
                    g.dispose();
                    ImageIcon img = new ImageIcon(image);
                    //Dimension id = new Dimension(icon.getIconWidth(), icon.getIconHeight());
                    //double x = vv.getModel().getGraphLayout().transform(d).getX();
                    //x -= (icon.getIconWidth() / 2);
                    //double y = vv.getModel().getGraphLayout().transform(d).getY();
                    //y -= (icon.getIconHeight() / 2);
                    //grphcs.drawImage(image, (int) Math.round(x), (int) Math.round(y), null);
                    icon.add(img);
                }
            }
        }

        @Override
        public boolean useTransform() {
            return false;
        }
    });

    Container content = getContentPane();
    final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv);
    content.add(panel);
    Factory<Device> vertexFactory = DeviceFactory.getInstance();
    Factory<ComLink> edgeFactory = ComLinkFactory.getInstance();

    final EditingModalGraphMouse<Device, ComLink> graphMouse = new EditingModalGraphMouse<>(
            vv.getRenderContext(), vertexFactory, edgeFactory);

    // Trying out our new popup menu mouse plugin...
    PopupVertexEdgeMenuMousePlugin myPlugin = new PopupVertexEdgeMenuMousePlugin();
    // Add some popup menus for the edges and vertices to our mouse plugin.
    JPopupMenu edgeMenu = new MyMouseMenus.EdgeMenu(frame);
    JPopupMenu vertexMenu = new MyMouseMenus.VertexMenu(frame);
    myPlugin.setEdgePopup(edgeMenu);
    myPlugin.setVertexPopup(vertexMenu);
    graphMouse.remove(graphMouse.getPopupEditingPlugin()); // Removes the existing popup editing plugin

    graphMouse.add(myPlugin); // Add our new plugin to the mouse  
    // AnnotatingGraphMousePlugin<Device,ComLink> annotatingPlugin =
    //   new AnnotatingGraphMousePlugin<>(vv.getRenderContext());
    //graphMouse.add(annotatingPlugin);
    // the EditingGraphMouse will pass mouse event coordinates to the
    // vertexLocations function to set the locations of the vertices as
    // they are created
    //        graphMouse.setVertexLocations(vertexLocations);
    vv.setGraphMouse(graphMouse);
    vv.addKeyListener(graphMouse.getModeKeyListener());

    graphMouse.setMode(ModalGraphMouse.Mode.PICKING);

    //final ImageAtEdgePainter<String, String> imageAtEdgePainter = 
    //  new ImageAtEdgePainter<String, String>(vv, edge, image);
    final ScalingControl scaler = new CrossoverScalingControl();
    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());
        }
    });

    JButton help = new JButton("Help");
    help.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(vv, instructions);
        }
    });
    JButton deploy = new JButton("Deploy");
    deploy.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // OPMapping algo here
            if (simu == null) {
                return;
            }
            GraphUtil<Device, ComLink> util = new GraphUtil<>();
            for (EventProducer p : simu.getProducers()) {
                if (!p.isMapped()) {
                    JOptionPane.showMessageDialog(frame,
                            "Cannot map operators. Please deploy the producer: " + p.getName());
                    return;
                }
            }
            for (EventConsumer c : simu.getConsumers()) {
                if (!c.isMapped()) {
                    JOptionPane.showMessageDialog(frame,
                            "Cannot map operators. Please deploy the consumer: " + c.getName());
                    return;
                }
                System.out.println("-- Operator placement algorithm Greedy: " + c.getName() + " --");
                Solution init = util.initialMapping(c.getGraph());
                System.out.println(c.getGraph() + "\nInitial Mapping: " + init);
                OperatorMapping mapper = new OperatorMapping();
                long T1, T2;
                System.out.println("--- OpMapping Algo Greedy --- ");
                T1 = System.currentTimeMillis();
                Solution solution = mapper.opMapping(c.getGraph(), Topology.getInstance().getGraph(), init);
                T2 = System.currentTimeMillis();
                System.out.println(solution);
                System.out.println("Solution founded in: " + (T2 - T1) + " ms");
            }
            //                Solution init = util.initialMapping(EPGraph.getInstance().getGraph());
            //                System.out.println("Initial Mapping: " + init);
            //                OperatorMapping mapper = new OperatorMapping();
            //                long T1, T2;
            //                System.out.println("--- OpMapping Algo Greedy --- ");
            //                T1 = System.currentTimeMillis();
            //                Solution solution = mapper.opMapping(EPGraph.getInstance().getGraph(),
            //                        Topology.getInstance().getGraph(), init);
            //                T2 = System.currentTimeMillis();
            //                System.out.println(solution);
            //                System.out.println("Solution founded in: " + (T2 - T1) + " ms");
            vv.repaint();
        }
    });
    JButton run = new JButton("Run");
    run.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            // run the simulation here
            System.out.println("Setting the simulation...");
            for (EventConsumer c : simu.getConsumers()) {

                for (EPUnit op : c.getGraph().getVertices()) {
                    if (op.isMapped()) {
                        op.openIOchannels();
                    } else {
                        JOptionPane.showMessageDialog(frame, "Cannot run, undeployed operators founded.");
                        return;
                    }
                }
            }
            //ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
            System.out.println("Running the simulation...");
            //scheduledExecutorService.execute(runner);
            for (Device device : Topology.getInstance().getGraph().getVertices()) {
                if (!device.isAlive()) {
                    device.start();
                }
            }
            for (ComLink link : Topology.getInstance().getGraph().getEdges()) {
                if (!link.isAlive()) {
                    link.start();
                }
            }
            for (EventConsumer c : simu.getConsumers()) {
                for (EPUnit op : c.getGraph().getVertices()) {
                    if (op.isMapped() && op.getDevice() != null && !op.isAlive()) {
                        op.start();
                    }
                }
            }

        }
    });
    AnnotationControls<Device, ComLink> annotationControls = new AnnotationControls<Device, ComLink>(
            graphMouse.getAnnotatingPlugin());
    JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 30, 0);
    slider.setMinorTickSpacing(5);
    slider.setMajorTickSpacing(30);
    slider.setPaintTicks(true);
    slider.setPaintLabels(true);
    slider.setLabelTable(slider.createStandardLabels(15));
    slider.addChangeListener(new ChangeListener() {
        @Override
        public void stateChanged(ChangeEvent e) {
            JSlider slider = (JSlider) e.getSource();
            if (!slider.getValueIsAdjusting()) {
                speedSimulation(slider.getValue());
            }
        }
    });
    JPanel controls = new JPanel();
    controls.add(plus);
    controls.add(minus);
    JComboBox modeBox = graphMouse.getModeComboBox();
    controls.add(modeBox);
    controls.add(annotationControls.getAnnotationsToolBar());
    controls.add(slider);
    controls.add(deploy);
    controls.add(run);
    controls.add(help);
    content.add(controls, BorderLayout.SOUTH);
    /* Custom JPanels can be added here  */
    //
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //final GraphEditor demo = new GraphEditor();

}

From source file:lu.lippmann.cdb.graph.GraphViewImpl.java

/**
 * {@inheritDoc}/*w  w  w .j  ava 2 s.  c o  m*/
 */
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void init() {
    this.setBackground(new Color(235, 240, 245));
    //this.setBackground(Color.WHITE);

    this.removeAll();

    //normal init
    final CadralShapeRenderer vlasr = new CadralShapeRenderer(null, vv.getRenderContext());

    // -----------------------------
    // customize the render context
    // -----------------------------
    final Transformer<CNode, String> vertexLabelTransformer = new Transformer<CNode, String>() {
        @Override
        public String transform(final CNode node) {
            final String tagString = (!node.getTags().isEmpty()) ? " [TAGGED!]" : "";
            final FontMetrics fm = vv.getFontMetrics(vv.getFont());
            final int textWidth = fm.stringWidth(node.getName());
            final int tagWidth = fm.stringWidth(tagString);
            int nodeWidth = (int) ShapeFactory.createShape(node.getShape()).getBounds().getWidth();
            final boolean hasTags = !node.getTags().isEmpty();
            final int realTextWidth = textWidth + (hasTags ? tagWidth : 0);
            final String modifiedNodeName = node.getName() + (hasTags ? tagString : "");
            if (realTextWidth > nodeWidth - 10) {
                int maxSubStringIndex = -1;
                for (int subStringIndex = node.getName().length(); subStringIndex >= 1; subStringIndex--) {
                    String newString = node.getName().substring(0, subStringIndex) + "..." + tagString;
                    if (fm.stringWidth(newString) < nodeWidth - 10) {
                        maxSubStringIndex = subStringIndex;
                        break;
                    }
                }
                return node.getName().substring(0, maxSubStringIndex) + "..." + tagString;
            } else {
                return modifiedNodeName;
            }
        }
    };

    vv.getRenderContext().setVertexLabelTransformer(vertexLabelTransformer);
    vv2.getRenderContext().setVertexLabelTransformer(vertexLabelTransformer);

    final Transformer<CNode, String> vertexTooltipTransformer = new Transformer<CNode, String>() {
        @Override
        public String transform(final CNode input) {
            if (!input.getTags().isEmpty()) {
                return buildTooltipFromTags(input.getName(), input.getTags());
            } else {
                if (!input.getName().equals(vertexLabelTransformer.transform(input))) {
                    return input.getName();
                } else {
                    return null;
                }
            }
        }
    };
    vv.setVertexToolTipTransformer(vertexTooltipTransformer);
    vv2.setVertexToolTipTransformer(vertexTooltipTransformer);

    final Transformer<CEdge, String> edgeTooltipTransformer = new Transformer<CEdge, String>() {
        @Override
        public String transform(final CEdge input) {
            if (!input.getTags().isEmpty()) {
                return buildTooltipFromTags(input.getName(), input.getTags());
            } else {
                return input.getName();
            }
        }
    };
    vv.setEdgeToolTipTransformer(edgeTooltipTransformer);
    vv2.setEdgeToolTipTransformer(edgeTooltipTransformer);

    vv.getRenderContext().setVertexFillPaintTransformer(new CadralVertexColorRenderer());
    vv2.getRenderContext().setVertexFillPaintTransformer(new CadralVertexColorRenderer());

    final CadralFontTransformer cadralFontTransformer = new CadralFontTransformer();
    vv.getRenderContext().setVertexFontTransformer(cadralFontTransformer);

    vv.getRenderContext().setVertexShapeTransformer(vlasr);
    vv2.getRenderContext().setVertexShapeTransformer(vlasr);

    //VERTEX LABEL RENDERER
    vv.getRenderer().setVertexLabelRenderer(vlasr);
    vv2.getRenderer().setVertexLabelRenderer(vlasr);

    //FIXME : magic number
    vv.getRenderContext().setLabelOffset(16);
    vv2.getRenderContext().setLabelOffset(16);

    // custom edges
    final Transformer<CEdge, String> edgeLabelTransformer = new Transformer<CEdge, String>() {
        @Override
        public String transform(final CEdge input) {
            return input.getExpression() + (input.getTags().isEmpty() ? "" : " [TAGGED!]");
        }
    };
    vv.getRenderContext().setEdgeLabelTransformer(edgeLabelTransformer);
    vv2.getRenderContext().setEdgeLabelTransformer(edgeLabelTransformer);

    final Font myFont = new Font("Helvetica", 0, 12);

    //FAST EDGE LABEL RENDERER BUT NOT GOOD ENOUGH
    //sun.font.FontManager.getFont2D(myFont);   

    vv.getRenderContext().setEdgeFontTransformer(cadralFontTransformer);
    vv2.getRenderContext().setEdgeFontTransformer(new ConstantTransformer(myFont));

    vv.getRenderContext().setEdgeLabelClosenessTransformer(new ConstantTransformer(0.5));
    vv2.getRenderContext().setEdgeLabelClosenessTransformer(new ConstantTransformer(0.5));

    vv.getRenderContext().setEdgeDrawPaintTransformer(getDefaultEdgeDrawPaintTransformer());
    vv2.getRenderContext().setEdgeDrawPaintTransformer(getDefaultEdgeDrawPaintTransformer());

    vv.getRenderContext().setEdgeLabelRenderer(new DefaultEdgeLabelRenderer(Color.BLUE, false));
    vv2.getRenderContext().setEdgeLabelRenderer(new DefaultEdgeLabelRenderer(Color.BLUE, false));

    vv.getRenderContext().setArrowDrawPaintTransformer(
            new PickableEdgePaintTransformer<CEdge>(vv.getPickedEdgeState(), Color.BLACK, Color.BLUE));
    vv.getRenderContext().setArrowFillPaintTransformer(
            new PickableEdgePaintTransformer<CEdge>(vv.getPickedEdgeState(), Color.BLACK, Color.BLUE));

    vv2.getRenderContext().setArrowDrawPaintTransformer(
            new PickableEdgePaintTransformer<CEdge>(vv.getPickedEdgeState(), Color.BLACK, Color.BLUE));
    vv2.getRenderContext().setArrowFillPaintTransformer(
            new PickableEdgePaintTransformer<CEdge>(vv.getPickedEdgeState(), Color.BLACK, Color.BLUE));

    //Manage Zoom
    vv.addMouseWheelListener(new MouseWheelListener() {

        private int zoom = 0;

        @Override
        public void mouseWheelMoved(MouseWheelEvent e) {

            if (e.getWheelRotation() < 0) {
                zoom++;
            } else {
                zoom--;
            }

            if (zoom > 0) {
                if (zoom < 9) {
                    double scale = 1 + zoom / 6.0;
                    CadralShapeRenderer.setScale(scale);
                    cadralFontTransformer.setScale(scale);
                }
            } else {
                CadralShapeRenderer.setScale(1);
                cadralFontTransformer.setScale(1);
            }
        }
    });

    final Container panel = new JPanel(new BorderLayout());
    final Container rightPanel = new JPanel(new GridLayout(2, 1));
    panel.add(vv);
    final JPanel top = new JPanel();
    final JButton button = new JButton("Rescale");
    button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            rescaleSatelliteView();
        }
    });
    top.add(button);
    rightPanel.add(top);
    rightPanel.add(vv2);
    panel.add(rightPanel, BorderLayout.EAST);

    setLayout(new BorderLayout());

    add(metaInfosPanel, BorderLayout.NORTH);

    if (!USE_EXPERIMENTAL_SATELLITE_VIEW) {
        add(vv, BorderLayout.EAST);
    } else {
        add(panel, BorderLayout.EAST);
    }

    add(sharedLabel, BorderLayout.SOUTH);

    add(aboutPanel, BorderLayout.CENTER);

    validate();
    repaint();
}

From source file:net.itransformers.topologyviewer.gui.MyVisualizationViewer.java

private Transformer<String, String> createEdgeToolTipTransformer() {
    return new Transformer<String, String>() {
        private Transformer<String, String> createTransformer() {
            TooltipType tooltipType = getTooltip(currentFilter, ForType.EDGE);
            if (tooltipType == null)
                return null;
            String transformerClassName = tooltipType.getTransformer();
            if (transformerClassName == null) {
                return new DefaultEdgeTooltipTransformer(tooltipType, edgeMetadatas);
            } else {
                try {
                    final Class<?> aClass = Class.forName(transformerClassName, true,
                            this.getClass().getClassLoader());
                    if (EdgeTooltipTransformerBase.class.isAssignableFrom(aClass)) {
                        Class<EdgeTooltipTransformerBase> transformerBaseClass = (Class<EdgeTooltipTransformerBase>) aClass;
                        Constructor<EdgeTooltipTransformerBase> constr = transformerBaseClass
                                .getConstructor(new Class[] { TooltipType.class, Map.class });
                        try {
                            EdgeTooltipTransformerBase inst = constr.newInstance(tooltipType, edgeMetadatas);
                            return inst;
                        } catch (IllegalArgumentException iae) {
                            logger.error(constr.toString());
                            throw iae;
                        }/*from  w w  w  .ja  v  a 2 s  . co  m*/
                        //                            return inst;
                    } else {
                        throw new RuntimeException("not implemented");
                    }
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }

        public String transform(String s) {
            final Transformer<String, String> transformer = createTransformer();
            if (transformer == null)
                return "";
            return transformer.transform(s);
        }
    };
}

From source file:com.diversityarrays.kdxplore.trials.TrialSelectionSearchOptionsPanel.java

private void initialiseLookups(final DALClient client) {

    lookupsInitialised = InitState.INITIALISING;

    // Returns the Set of LookupTables which were loaded
    // (if user cancelled then we don't get them all)
    // TODO make this fact visible !
    BackgroundTask<Set<LookupTable<?>>, Chunk<?>> task = new BackgroundTask<Set<LookupTable<?>>, Chunk<?>>(
            "Loading Lookups...", false) {

        @Override/*from ww w . j av  a  2s.c o m*/
        public boolean onTaskStart() {
            // Do this otherwise when we twist it open after loading nothing happens!
            // TODO figure out why and fix it.
            treeTable.collapseAll();
            return true;
        }

        @SuppressWarnings({ "rawtypes", "unchecked" })
        @Override
        public Set<LookupTable<?>> generateResult(final Closure<Chunk<?>> publishPartial) throws Exception {
            Set<LookupTable<?>> processed = new HashSet<LookupTable<?>>();

            for (LookupTable lt : lookupTables) {
                LookupTableNode node = lookupTableRootNodeByTable.get(lt);
                node.clear();

                // This is the callback from getLookupRecords()
                Transformer<Chunk<?>, Boolean> consumer = new Transformer<Chunk<?>, Boolean>() {
                    @Override
                    public Boolean transform(Chunk<?> chunk) {
                        publishPartial.execute(chunk);
                        return !cancelRequested;
                    }
                };

                if (!lt.getLookupRecords(client, CHUNK_SIZE, consumer)) {
                    break;
                }

                processed.add(lt);
            }
            lookupsInitialised = InitState.DONE;

            return processed;
        }

        @SuppressWarnings({ "rawtypes", "unchecked" })
        @Override
        public void processPartial(List<Chunk<?>> chunks) {
            for (Chunk chunk : chunks) {
                LookupTable<?> lt = chunk.lookupTable;
                LookupTableNode node = lookupTableRootNodeByTable.get(lt);
                node.addRecords(chunk.payload);
            }
        }

        @SuppressWarnings("rawtypes")
        @Override
        public void onTaskComplete(Set<LookupTable<?>> processed) {
            for (LookupTable lt : lookupTableRootNodeByTable.keySet()) {
                LookupTableNode node = lookupTableRootNodeByTable.get(lt);
                node.establishLoadState(processed.contains(lt));
            }
            //            treeTable.repaint();
            treeTable.expandAll();

            GuiUtil.initialiseTableColumnWidths(treeTable);

            fireLookupsLoaded();
            //            TrialSelectionSearchOptionsPanel.this.firePropertyChange(PROP_LOOKUPS_LOADED, false, true);
        }

        @Override
        public void onException(Throwable cause) {
            cause.printStackTrace();
            MsgBox.error(TrialSelectionSearchOptionsPanel.this, cause, "Failed to load Lookup Tables");
        }

        @Override
        public void onCancel(CancellationException e) {
            throw new RuntimeException(e); // should never happen
        }

        @Override
        public void onInterrupt(InterruptedException e) {
            lookupsInitialised = InitState.INCOMPLETE;
            MsgBox.error(TrialSelectionSearchOptionsPanel.this, "You chose to cancel the load operation",
                    "Lookup Tables may be incomplete");
        }

    };

    backgroundRunner.runBackgroundTask(task);
}

From source file:fungus.JungVisualizer.java

public JungVisualizer(String name) {
    this.name = name;

    showEdges = Configuration.getBoolean(name + "." + PAR_SHOW_EDGES);
    scaleShapes = Configuration.getBoolean(name + "." + PAR_SCALE_SHAPES);
    labelNodes = Configuration.getBoolean(name + "." + PAR_LABEL_NODES);
    imageDir = Configuration.getString(name + "." + PAR_IMAGE_DIR);
    nameFragment = Configuration.getString(PAR_TESTNAME);

    if (vt == null) {
        try {/*from   w ww .j a v a  2s .c o  m*/
            Class vtClass = Configuration.getClass(name + "." + PAR_TRANSFORMERS);
            if (VisualizerTransformers.class.isAssignableFrom(vtClass)) {
                vt = (VisualizerTransformers) vtClass.newInstance();
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    graph = JungGraphObserver.getGraph();

    vt.setGraph(graph); // Have to call this manually!

    JungGraphObserver.stepBlocked = true;
    JungGraphObserver.noBlock = false;

    layout = vt.makeLayout(graph);

    Dimension preferredSize = new Dimension(660, 660);
    visualizationModel = new DefaultVisualizationModel<MycoNode, MycoEdge>(layout, preferredSize);

    relaxer = visualizationModel.getRelaxer();

    visualizer = new VisualizationViewer<MycoNode, MycoEdge>(visualizationModel, preferredSize);
    visualizer.addGraphMouseListener(new InfoFrameVertexListener());

    visualizer.setDoubleBuffered(true);

    // final Color under50VertexColor = Color.BLACK;
    // final Stroke under50VertexStroke = new BasicStroke(1.0f,
    //                                                    BasicStroke.CAP_BUTT,
    //                                                    BasicStroke.JOIN_MITER);
    // final Color over50VertexColor = Color.MAGENTA;
    // final Stroke over50VertexStroke = new BasicStroke(2.0f,
    //                                                   BasicStroke.CAP_BUTT,
    //                                                   BasicStroke.JOIN_MITER);
    // final Color over80VertexColor = Color.BLUE;
    // final Stroke over80VertexStroke = new BasicStroke(2.0f,
    //                                                   BasicStroke.CAP_BUTT,
    //                                                   BasicStroke.JOIN_MITER);
    // final Color over95VertexColor = Color.GREEN;
    // final Stroke over95VertexStroke = new BasicStroke(2.0f,
    //                                                   BasicStroke.CAP_BUTT,
    //                                                   BasicStroke.JOIN_MITER);
    // final Color over100VertexColor = Color.RED;
    // final Stroke over100VertexStroke = new BasicStroke(5.0f,
    //                                                    BasicStroke.CAP_BUTT,
    //                                                    BasicStroke.JOIN_MITER);
    // Transformer<MycoNode,Stroke> nodeStrokeRenderer =
    //     new Transformer<MycoNode, Stroke>() {
    //   public Stroke transform(MycoNode n){
    //     int capacity = n.getHyphaData().getMax();
    //     int attached = n.getHyphaLink().degree();
    //     double ratio = ((double) attached) / ((double) capacity);

    //     if (ratio > 1.0) {
    //       return over100VertexStroke;
    //     } else if (ratio > 0.95) {
    //       return over95VertexStroke;
    //     } else if (ratio > 0.80) {
    //       return over80VertexStroke;
    //     } else if (ratio > 0.50) {
    //       return over50VertexStroke;
    //     } else {
    //       return under50VertexStroke;
    //     }
    //   }
    // };
    // Transformer<MycoNode,Paint> nodeOutlineRenderer =
    //     new Transformer<MycoNode, Paint>() {
    //   public Paint transform(MycoNode n) {
    //     int capacity = n.getHyphaData().getMax();
    //     int attached = n.getHyphaLink().degree();
    //     double ratio = ((double) attached) / ((double) capacity);

    //     if (ratio > 1.0) {
    //       return over100VertexColor;
    //     } else if (ratio > 0.95) {
    //       return over95VertexColor;
    //     } else if (ratio > 0.80) {
    //       return over80VertexColor;
    //     } else if (ratio > 0.50) {
    //       return over50VertexColor;
    //     } else {
    //       return under50VertexColor;
    //     }
    //   }
    // };

    /*Transformer<MycoNode,Paint> nodeFillRenderer = new Transformer<MycoNode,Paint>() {
      public Paint transform(MycoNode n) {
      HyphaData data = n.getHyphaData();
      if (!n.isUp()) { return Color.BLACK; }
      if (data.isBiomass()) { return Color.BLUE; }
      else if (data.isExtending()) { return Color.RED; }
      else if (data.isBranching()) { return Color.YELLOW; }
      else { return Color.GREEN; }
      }
      };*/

    /*Transformer<MycoNode,Paint> nodeFillRenderer = new Transformer<MycoNode,Paint>() {
      public Paint transform(MycoNode n) {
      HyphaData data = n.getHyphaData();
      if (data.isBiomass()) { return Color.BLUE; }
      else if (data.isExtending()) { return Color.RED; }
      else if (data.isBranching()) { return Color.YELLOW; }
      else { return Color.GREEN; }
      }
      };*/

    final Color transparent = new Color(0, 0, 0, 0);

    Transformer<MycoEdge, Paint> transparentEdges = new Transformer<MycoEdge, Paint>() {
        public Paint transform(MycoEdge e) {
            return transparent;
        }
    };

    visualizer.setBackground(Color.WHITE);

    visualizer.getRenderContext().setVertexFillPaintTransformer(vt.getNodeFillRenderer());
    visualizer.getRenderContext().setVertexShapeTransformer(vt.getShapeTransformer(scaleShapes));
    if (labelNodes) {
        visualizer.getRenderContext().setVertexLabelTransformer(vt.getNodeLabeller());
    }
    visualizer.getRenderContext().setVertexStrokeTransformer(vt.getVertexStrokeTransformer());
    visualizer.getRenderContext().setVertexDrawPaintTransformer(vt.getVertexDrawPaintTransformer());
    //visualizer.setVertexToolTipTransformer(new ToStringLabeller());

    if (showEdges) {
        visualizer.getRenderContext().setEdgeStrokeTransformer(vt.getEdgeStrokeTransformer());
        visualizer.getRenderContext().setEdgeDrawPaintTransformer(vt.getEdgeDrawPaintTransformer());
        visualizer.getRenderContext().setArrowDrawPaintTransformer(vt.getEdgeDrawPaintTransformer());
        visualizer.getRenderContext().setArrowFillPaintTransformer(vt.getEdgeDrawPaintTransformer());
    } else {
        visualizer.getRenderContext().setEdgeDrawPaintTransformer(transparentEdges);
        visualizer.getRenderContext().setArrowDrawPaintTransformer(transparentEdges);
        visualizer.getRenderContext().setArrowFillPaintTransformer(transparentEdges);
    }

    frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Container c = frame.getContentPane();
    c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));

    //JScrollPane scrollPane = new JScrollPane(visualizer);
    //c.add(scrollPane);
    c.add(visualizer);

    JPanel buttonPane = new JPanel();
    buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));

    final JButton captureButton = new JButton("capture");
    ActionListener capturer = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            saveAsPNG();
        }
    };
    captureButton.addActionListener(capturer);

    final JButton freezeButton = new JButton("freeze");
    ActionListener freezer = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (freezeButton.getText().equals("freeze")) {
                relaxer.pause();
                freezeButton.setText("unfreeze");
            } else {
                relaxer.resume();
                freezeButton.setText("freeze");
            }
        }
    };
    freezeButton.addActionListener(freezer);

    JButton pauseButton = new JButton("pause");
    ActionListener pauser = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //e.consume();
            JungGraphObserver.pauseAction();
        }
    };
    pauseButton.addActionListener(pauser);

    JButton stepButton = new JButton("step");
    ActionListener stepper = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.out.println("Clicked!\n");
            //e.consume();
            JungGraphObserver.stepAction();
        }
    };
    stepButton.addActionListener(stepper);

    JButton walkButton = new JButton("walk");
    ActionListener walker = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.out.println("Clicked!\n");
            //e.consume();
            JungGraphObserver.walkAction();
        }
    };
    walkButton.addActionListener(walker);

    JButton runButton = new JButton("run");
    ActionListener runner = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //e.consume();
            JungGraphObserver.runAction();
        }
    };
    runButton.addActionListener(runner);

    roundField = new JTextField("0");

    buttonPane.add(freezeButton);
    buttonPane.add(captureButton);
    buttonPane.add(Box.createHorizontalGlue());
    buttonPane.add(pauseButton);
    buttonPane.add(stepButton);
    buttonPane.add(walkButton);
    buttonPane.add(runButton);
    buttonPane.add(Box.createHorizontalGlue());
    buttonPane.add(roundField);
    c.add(buttonPane);

    frame.pack();
    frame.setVisible(true);

    JungGraphObserver.setVisualizer(visualizer);
}