Package org.graphstream.ui.viewer.test

Source Code of org.graphstream.ui.viewer.test.DemoViewerColorInterpolation

/*
* Copyright 2006 - 2013
*     Stefan Balev     <stefan.balev@graphstream-project.org>
*     Julien Baudry    <julien.baudry@graphstream-project.org>
*     Antoine Dutot    <antoine.dutot@graphstream-project.org>
*     Yoann Pigné      <yoann.pigne@graphstream-project.org>
*     Guilhelm Savin   <guilhelm.savin@graphstream-project.org>
*
* This file is part of GraphStream <http://graphstream-project.org>.
*
* GraphStream is a library whose purpose is to handle static or dynamic
* graph, create them from scratch, file or any source and display them.
*
* This program is free software distributed under the terms of two licenses, the
* CeCILL-C license that fits European law, and the GNU Lesser General Public
* License. You can  use, modify and/ or redistribute the software under the terms
* of the CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
* URL <http://www.cecill.info> or under the terms of the GNU LGPL as published by
* the Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
* The fact that you are presently reading this means that you have had
* knowledge of the CeCILL-C and LGPL licenses and that you accept their terms.
*/
package org.graphstream.ui.viewer.test;

import org.graphstream.graph.Graph;
import org.graphstream.graph.Node;
import org.graphstream.graph.implementations.MultiGraph;
import org.graphstream.ui.view.ViewerListener;
import org.graphstream.ui.view.ViewerPipe;

/**
* Test the viewer.
*/
public class DemoViewerColorInterpolation implements ViewerListener {
  public static void main(String args[]) {
    // System.setProperty( "gs.ui.renderer",
    // "org.graphstream.ui.j2dviewer.J2DGraphRenderer" );

    new DemoViewerColorInterpolation();
  }

  protected boolean loop = true;

  public DemoViewerColorInterpolation() {
    Graph graph = new MultiGraph("main graph");
    ViewerPipe pipe = graph.display(false).newViewerPipe();

    // graph.addAttribute( "ui.quality" );
    graph.addAttribute("ui.antialias");

    pipe.addViewerListener(this);

    Node A = graph.addNode("A");
    Node B = graph.addNode("B");
    Node C = graph.addNode("C");

    graph.addEdge("AB", "A", "B", true);
    graph.addEdge("BC", "B", "C", true);
    graph.addEdge("CA", "C", "A", true);

    A.addAttribute("xyz", 0, 1, 0);
    B.addAttribute("xyz", 1, 0, 0);
    C.addAttribute("xyz", -1, 0, 0);

    graph.addAttribute("ui.stylesheet", styleSheet);

    float color = 0;
    float dir = 0.01f;

    while (loop) {
      try {
        Thread.sleep(100);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }

      pipe.pump();

      color += dir;

      if (color > 1) {
        color = 1;
        dir = -dir;
      } else if (color < 0) {
        color = 0;
        dir = -dir;
      }

      A.setAttribute("ui.color", color);
      showSelection(graph);
    }

    System.out.printf("Bye bye ...%n");
    System.exit(0);
  }

  protected void showSelection(Graph graph) {
    boolean selection = false;
    StringBuilder sb = new StringBuilder();

    sb.append("[");

    for (Node node : graph) {
      if (node.hasAttribute("ui.selected")) {
        sb.append(String.format(" %s", node.getId()));
        selection = true;
      }
      if (node.hasAttribute("ui.clicked")) {
        System.err.printf("node %s clicked%n", node.getId());
      }
    }

    sb.append(" ]");

    if (selection)
      System.err.printf("selection = %s%n", sb.toString());
  }

  protected static String styleSheet = "graph         { padding: 20px; stroke-width: 0px; }"
      + "node:selected { fill-color: red;  fill-mode: plain; }"
      + "node:clicked  { fill-color: blue; fill-mode: plain; }"
      + "node#A        { fill-color: green, yellow, purple; fill-mode: dyn-plain; }";

  public void buttonPushed(String id) {
  }

  public void buttonReleased(String id) {
  }

  public void viewClosed(String viewName) {
    loop = false;
  }
}
TOP

Related Classes of org.graphstream.ui.viewer.test.DemoViewerColorInterpolation

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.