All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.automatalib.visualization.Visualization Maven / Gradle / Ivy

/* Copyright (C) 2015 TU Dortmund
 * This file is part of AutomataLib, http://www.automatalib.net/.
 * 
 * AutomataLib is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License version 3.0 as published by the Free Software Foundation.
 * 
 * AutomataLib 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 AutomataLib; if not, see
 * http://www.gnu.de/documents/lgpl.en.html.
 */
package net.automatalib.visualization;

import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;

import net.automatalib.AutomataLibSettings;
import net.automatalib.graphs.Graph;
import net.automatalib.graphs.dot.AggregateDOTHelper;
import net.automatalib.graphs.dot.GraphDOTHelper;

public class Visualization {
	
	private static final Visualization INSTANCE = new Visualization();
	
	
	@SafeVarargs
	public static  void visualizeGraph(Graph graph, boolean modal, GraphDOTHelper... addlHelpers) {
		INSTANCE.visualize(graph, modal, addlHelpers);
	}
	
	private final VPManager manager = new VPManager();
	private final VisualizationProvider provider;
	
	private Visualization() {
		AutomataLibSettings settings = AutomataLibSettings.getInstance();
		
		String providerId = settings.getProperty("visualization.provider");
		VisualizationProvider vp = null;
		
		manager.load();
		
		if (providerId != null) {
			vp = manager.getProviderByName(providerId);
		}
		
		if (vp == null) {
			vp = manager.getBestProvider();
		}
		
		if (vp == null) {
			System.err.println("Error setting visualization provider, defaulting to dummy provider...");
		}
		
		provider = vp;
	}
	
	
	@SafeVarargs
	public final  void visualize(Graph graph, boolean modal, GraphDOTHelper... addlHelpers) {
		List> helpers = new ArrayList<>(addlHelpers.length + 1);
		helpers.add(graph.getGraphDOTHelper());
		for (GraphDOTHelper h : addlHelpers) {
			helpers.add(h);
		}
		GraphDOTHelper aggHelper = new AggregateDOTHelper(helpers);
		
		visualize(graph, aggHelper, modal, Collections.emptyMap());
	}
	
	public  void visualize(Graph graph, GraphDOTHelper helper,
			                    boolean modal, Map options) {
		provider.visualize(graph, helper, modal, options);
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy