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

edu.uci.ics.jung.visualization.transform.shape.MagnifyImageLensSupport Maven / Gradle / Ivy

/*
 * Copyright (c) 2005, the JUNG Project and the Regents of the University of
 * California All rights reserved.
 *
 * This software is open-source under the BSD license; see either "license.txt"
 * or http://jung.sourceforge.net/license.txt for a description.
 *
 * Created on Jul 21, 2005
 */

package edu.uci.ics.jung.visualization.transform.shape;

import java.awt.Dimension;

import edu.uci.ics.jung.algorithms.layout.GraphElementAccessor;
import edu.uci.ics.jung.visualization.Layer;
import edu.uci.ics.jung.visualization.RenderContext;
import edu.uci.ics.jung.visualization.VisualizationViewer;
import edu.uci.ics.jung.visualization.control.ModalGraphMouse;
import edu.uci.ics.jung.visualization.control.ModalLensGraphMouse;
import edu.uci.ics.jung.visualization.picking.ViewLensShapePickSupport;
import edu.uci.ics.jung.visualization.renderers.BasicRenderer;
import edu.uci.ics.jung.visualization.renderers.Renderer;
import edu.uci.ics.jung.visualization.renderers.ReshapingEdgeRenderer;
import edu.uci.ics.jung.visualization.transform.AbstractLensSupport;
import edu.uci.ics.jung.visualization.transform.LensTransformer;
/**
 * Changes various visualization settings to activate or deactivate an
 * examining lens for a jung graph application. 
 * 
 * @author Tom Nelson
 */
public class MagnifyImageLensSupport extends AbstractLensSupport {
    
    protected RenderContext renderContext;
    protected GraphicsDecorator lensGraphicsDecorator;
    protected GraphicsDecorator savedGraphicsDecorator;
    protected Renderer renderer;
    protected Renderer transformingRenderer;
    protected GraphElementAccessor pickSupport;
    protected Renderer.Edge savedEdgeRenderer;
    protected Renderer.Edge reshapingEdgeRenderer;

    static final String instructions = 
        "
Mouse-Drag the Lens center to move it

"+ "Mouse-Drag the Lens edge to resize it

"+ "Ctrl+MouseWheel to change magnification

"; public MagnifyImageLensSupport(VisualizationViewer vv) { this(vv, new MagnifyShapeTransformer(vv), new ModalLensGraphMouse()); } /** * create the base class, setting common members and creating * a custom GraphMouse * @param vv the VisualizationViewer to work on */ public MagnifyImageLensSupport(VisualizationViewer vv, LensTransformer lensTransformer, ModalGraphMouse lensGraphMouse) { super(vv, lensGraphMouse); this.renderContext = vv.getRenderContext(); this.pickSupport = renderContext.getPickSupport(); this.renderer = vv.getRenderer(); this.transformingRenderer = new BasicRenderer(); this.savedGraphicsDecorator = renderContext.getGraphicsContext(); this.lensTransformer = lensTransformer; this.savedEdgeRenderer = vv.getRenderer().getEdgeRenderer(); this.reshapingEdgeRenderer = new ReshapingEdgeRenderer(); this.reshapingEdgeRenderer.setEdgeArrowRenderingSupport(savedEdgeRenderer.getEdgeArrowRenderingSupport()); Dimension d = vv.getSize(); if(d.width == 0 || d.height == 0) { d = vv.getPreferredSize(); } lensTransformer.setViewRadius(d.width/5); this.lensGraphicsDecorator = new MagnifyIconGraphics(lensTransformer); } public void activate() { lensTransformer.setDelegate(vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)); if(lens == null) { lens = new Lens(lensTransformer); } if(lensControls == null) { lensControls = new LensControls(lensTransformer); } renderContext.setPickSupport(new ViewLensShapePickSupport(vv)); lensTransformer.setDelegate(vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)); vv.getRenderContext().getMultiLayerTransformer().setTransformer(Layer.VIEW, lensTransformer); this.renderContext.setGraphicsContext(lensGraphicsDecorator); vv.getRenderer().setEdgeRenderer(reshapingEdgeRenderer); vv.addPreRenderPaintable(lens); vv.addPostRenderPaintable(lensControls); vv.setGraphMouse(lensGraphMouse); vv.setToolTipText(instructions); vv.repaint(); } public void deactivate() { renderContext.setPickSupport(pickSupport); vv.getRenderContext().getMultiLayerTransformer().setTransformer(Layer.VIEW, lensTransformer.getDelegate()); vv.removePreRenderPaintable(lens); vv.removePostRenderPaintable(lensControls); this.renderContext.setGraphicsContext(savedGraphicsDecorator); vv.getRenderer().setEdgeRenderer(savedEdgeRenderer); vv.setToolTipText(defaultToolTipText); vv.setGraphMouse(graphMouse); vv.repaint(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy