Project: gephi-toolkit-demos
/*
Copyright 2008-2010 Gephi 
Authors : Mathieu Bastian <[email protected]
Website : http://www.gephi.org 
 
This file is part of Gephi. 
 
Gephi is free software: you can redistribute it and/or modify 
it under the terms of the GNU Affero General Public License as 
published by the Free Software Foundation, either version 3 of the 
License, or (at your option) any later version. 
 
Gephi 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 Affero General Public License for more details. 
 
You should have received a copy of the GNU Affero General Public License 
along with Gephi.  If not, see <http://www.gnu.org/licenses/>. 
 */
package org.gephi.toolkit.demos; 
 
import java.awt.BorderLayout; 
import java.awt.Color; 
import java.io.File; 
import javax.swing.JFrame; 
import org.gephi.io.importer.api.Container; 
import org.gephi.io.importer.api.ImportController; 
import org.gephi.io.processor.plugin.DefaultProcessor; 
import org.gephi.preview.api.*; 
import org.gephi.preview.types.DependantOriginalColor; 
import org.gephi.project.api.ProjectController; 
import org.gephi.project.api.Workspace; 
import org.openide.util.Lookup; 
import processing.core.PApplet; 
 
/**
 * 
 * @author Mathieu Bastian 
 */
 
public class PreviewJFrame { 
     
    public void script() { 
        //Init a project - and therefore a workspace 
        ProjectController pc = Lookup.getDefault().lookup(ProjectController.class); 
        pc.newProject(); 
        Workspace workspace = pc.getCurrentWorkspace(); 
 
        //Import file 
        ImportController importController = Lookup.getDefault().lookup(ImportController.class); 
        Container container; 
        try { 
            File file = new File(getClass().getResource("/org/gephi/toolkit/demos/resources/Java.gexf").toURI()); 
            container = importController.importFile(file); 
        } catch (Exception ex) { 
            ex.printStackTrace(); 
            return
        } 
 
        //Append imported data to GraphAPI 
        importController.process(container, new DefaultProcessor(), workspace); 
 
        //Preview configuration 
        PreviewController previewController = Lookup.getDefault().lookup(PreviewController.class); 
        PreviewModel previewModel = previewController.getModel(); 
        previewModel.getProperties().putValue(PreviewProperty.SHOW_NODE_LABELS, Boolean.TRUE); 
        previewModel.getProperties().putValue(PreviewProperty.NODE_LABEL_COLOR, new DependantOriginalColor(Color.WHITE)); 
        previewModel.getProperties().putValue(PreviewProperty.EDGE_CURVED, Boolean.FALSE); 
        previewModel.getProperties().putValue(PreviewProperty.EDGE_OPACITY, 50); 
        previewModel.getProperties().putValue(PreviewProperty.EDGE_RADIUS, 10f); 
        previewModel.getProperties().putValue(PreviewProperty.BACKGROUND_COLOR, Color.BLACK); 
        previewController.refreshPreview(); 
 
        //New Processing target, get the PApplet 
        ProcessingTarget target = (ProcessingTarget) previewController.getRenderTarget(RenderTarget.PROCESSING_TARGET); 
        PApplet applet = target.getApplet(); 
        applet.init(); 
 
        //Refresh the preview and reset the zoom 
        previewController.render(target); 
        target.refresh(); 
        target.resetZoom(); 
 
        //Add the applet to a JFrame and display 
        JFrame frame = new JFrame("Test Preview"); 
        frame.setLayout(new BorderLayout()); 
         
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.add(applet, BorderLayout.CENTER); 
         
        frame.pack(); 
        frame.setVisible(true); 
    } 
     
    public static void main(String[] args) { 
        PreviewJFrame previewJFrame = new PreviewJFrame(); 
        previewJFrame.script(); 
    } 
}