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

edu.uci.ics.jung.visualization.transform.AbstractLensSupport Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2005, The JUNG Authors
 * All rights reserved.
 *
 * This software is open-source under the BSD license; see either "license.txt"
 * or https://github.com/jrtom/jung/blob/master/LICENSE for a description.
 *
 * Created on Jul 21, 2005
 */

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

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.geom.RectangularShape;

import edu.uci.ics.jung.visualization.VisualizationViewer;
import edu.uci.ics.jung.visualization.VisualizationServer.Paintable;
import edu.uci.ics.jung.visualization.control.ModalGraphMouse;
/**
 * A class to make it easy to add an
 * examining lens to a jung graph application. See HyperbolicTransformerDemo,
 * ViewLensSupport and LayoutLensSupport
 * for examples of how to use it.
 * 
 * @author Tom Nelson
 */
public abstract class AbstractLensSupport implements LensSupport {

    protected VisualizationViewer vv;
    protected VisualizationViewer.GraphMouse graphMouse;
    protected LensTransformer lensTransformer;
    protected ModalGraphMouse lensGraphMouse;
    protected Lens lens;
    protected LensControls lensControls;
    protected String defaultToolTipText;

    protected 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

"; /** * create the base class, setting common members and creating * a custom GraphMouse * @param vv the VisualizationViewer to work on * @param lensGraphMouse the GraphMouse instance to use for the lens */ public AbstractLensSupport(VisualizationViewer vv, ModalGraphMouse lensGraphMouse) { this.vv = vv; this.graphMouse = vv.getGraphMouse(); this.defaultToolTipText = vv.getToolTipText(); this.lensGraphMouse = lensGraphMouse; } public void activate(boolean state) { if(state) activate(); else deactivate(); } public LensTransformer getLensTransformer() { return lensTransformer; } /** * @return the hyperbolicGraphMouse. */ public ModalGraphMouse getGraphMouse() { return lensGraphMouse; } /** * the background for the hyperbolic projection * @author Tom Nelson */ public static class Lens implements Paintable { LensTransformer lensTransformer; RectangularShape lensShape; Paint paint = Color.decode("0xdddddd"); public Lens(LensTransformer lensTransformer) { this.lensTransformer = lensTransformer; this.lensShape = lensTransformer.getLensShape(); } /** * @return the paint */ public Paint getPaint() { return paint; } /** * @param paint the paint to set */ public void setPaint(Paint paint) { this.paint = paint; } public void paint(Graphics g) { Graphics2D g2d = (Graphics2D)g; g2d.setPaint(paint); g2d.fill(lensShape); } public boolean useTransform() { return true; } } /** * the background for the hyperbolic projection * @author Tom Nelson * * */ public static class LensControls implements Paintable { LensTransformer lensTransformer; RectangularShape lensShape; Paint paint = Color.gray; public LensControls(LensTransformer lensTransformer) { this.lensTransformer = lensTransformer; this.lensShape = lensTransformer.getLensShape(); } /** * @return the paint */ public Paint getPaint() { return paint; } /** * @param paint the paint to set */ public void setPaint(Paint paint) { this.paint = paint; } public void paint(Graphics g) { Graphics2D g2d = (Graphics2D)g; g2d.setPaint(paint); g2d.draw(lensShape); int centerX = (int)Math.round(lensShape.getCenterX()); int centerY = (int)Math.round(lensShape.getCenterY()); g.drawOval(centerX-10, centerY-10, 20, 20); } public boolean useTransform() { return true; } } /** * @return the lens */ public Lens getLens() { return lens; } /** * @param lens the lens to set */ public void setLens(Lens lens) { this.lens = lens; } /** * @return the lensControls */ public LensControls getLensControls() { return lensControls; } /** * @param lensControls the lensControls to set */ public void setLensControls(LensControls lensControls) { this.lensControls = lensControls; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy