Coverage details for edu.uci.ics.jung.visualization.control.SatelliteVisualizationViewer

LineHitsSource
1 /*
2  * Copyright (c) 2005, the JUNG Project and the Regents of the University of
3  * California All rights reserved.
4  *
5  * This software is open-source under the BSD license; see either "license.txt"
6  * or http://jung.sourceforge.net/license.txt for a description.
7  *
8  * Created on Aug 15, 2005
9  */
10  
11 package edu.uci.ics.jung.visualization.control;
12  
13 import java.awt.Color;
14 import java.awt.Dimension;
15 import java.awt.Graphics;
16 import java.awt.Graphics2D;
17 import java.awt.Shape;
18 import java.awt.geom.AffineTransform;
19  
20 import edu.uci.ics.jung.visualization.DefaultVisualizationModel;
21 import edu.uci.ics.jung.visualization.Layout;
22 import edu.uci.ics.jung.visualization.Renderer;
23 import edu.uci.ics.jung.visualization.ShapePickSupport;
24 import edu.uci.ics.jung.visualization.VisualizationModel;
25 import edu.uci.ics.jung.visualization.VisualizationViewer;
26 import edu.uci.ics.jung.visualization.transform.MutableAffineTransformer;
27 import edu.uci.ics.jung.visualization.transform.shape.ShapeTransformer;
28  
29 /**
30  * A VisualizationViewer that can act as a satellite view for another
31  * (master) VisualizationViewer. In this view, the full graph is always visible
32  * and all mouse actions affect the graph in the master view.
33  *
34  * A rectangular shape in the satellite view shows the visible bounds of
35  * the master view.
36  *
37  * @author Tom Nelson - RABA Technologies
38  *
39  *
40  */
41 public class SatelliteVisualizationViewer extends VisualizationViewer {
42     
43     /**
44      * the master VisualizationViewer that this is a satellite view for
45      */
46     protected VisualizationViewer master;
47     
48     /**
49      * @param layout
50      * @param renderer
51      */
52     public SatelliteVisualizationViewer(VisualizationViewer master, Layout layout,
53             Renderer renderer) {
540        this(master, new DefaultVisualizationModel(layout), renderer);
550    }
56  
57     /**
58      * @param layout
59      * @param renderer
60      * @param preferredSize
61      */
62     public SatelliteVisualizationViewer(VisualizationViewer master, Layout layout, Renderer renderer,
63             Dimension preferredSize) {
640        this(master, new DefaultVisualizationModel(layout, preferredSize), renderer, preferredSize);
650    }
66  
67     /**
68      * @param model
69      * @param renderer
70      */
71     public SatelliteVisualizationViewer(VisualizationViewer master, VisualizationModel model,
72             Renderer renderer) {
730        this(master, model, renderer, new Dimension(300,300));
740    }
75  
76     /**
77      * @param master the master view
78      * @param model
79      * @param renderer
80      * @param preferredSize
81      */
82     public SatelliteVisualizationViewer(VisualizationViewer master, VisualizationModel model,
83             Renderer renderer, Dimension preferredSize) {
840        super(model, renderer, preferredSize);
850        this.master = master;
86         
87         // create a graph mouse with custom plugins to affect the master view
880        ModalGraphMouse gm = new ModalSatelliteGraphMouse();
890        setGraphMouse(gm);
90         
91         // this adds the Lens to the satellite view
920        addPreRenderPaintable(new ViewLens(this, master));
93         
94         // get a copy of the current layout transform
95         // it may have been scaled to fit the graph
960        AffineTransform modelLayoutTransform =
97             new AffineTransform(master.getLayoutTransformer().getTransform());
98         
99         // I want no layout transformations in the satellite view
100         // this resets the auto-scaling that occurs in the super constructor
1010        setLayoutTransformer(new MutableAffineTransformer(modelLayoutTransform));
102         
103         // make sure the satellite listens for changes in the master
1040        master.addChangeListener(this);
105         
106         // share the picked state of the master
1070        setPickedState(master.getPickedState());
1080        setPickSupport(new ShapePickSupport());
1090    }
110  
111     /**
112      * @return Returns the master.
113      */
114     public VisualizationViewer getMaster() {
1150        return master;
116     }
117  
118     /**
119      * A four-sided shape that represents the visible part of the
120      * master view and is drawn in the satellite view
121      *
122      * @author Tom Nelson - RABA Technologies
123      *
124      *
125      */
126     static class ViewLens implements Paintable {
127  
128         VisualizationViewer master;
129         VisualizationViewer vv;
130         
131         public ViewLens(VisualizationViewer vv, VisualizationViewer master) {
132             this.vv = vv;
133             this.master = master;
134         }
135         public void paint(Graphics g) {
136             ShapeTransformer masterViewTransformer = master.getViewTransformer();
137             ShapeTransformer masterLayoutTransformer = master.getLayoutTransformer();
138             ShapeTransformer vvLayoutTransformer = vv.getLayoutTransformer();
139  
140             Shape lens = master.getBounds();
141             lens = masterViewTransformer.inverseTransform(lens);
142             lens = masterLayoutTransformer.inverseTransform(lens);
143             lens = vvLayoutTransformer.transform(lens);
144             Graphics2D g2d = (Graphics2D)g;
145             Color old = g.getColor();
146             Color lensColor = master.getBackground();
147             vv.setBackground(lensColor.darker());
148             g.setColor(lensColor);
149             g2d.fill(lens);
150             g.setColor(Color.gray);
151             g2d.draw(lens);
152             g.setColor(old);
153         }
154  
155         public boolean useTransform() {
156             return true;
157         }
158     }
159  
160 }

this report was generated by version 1.0.5 of jcoverage.
visit www.jcoverage.com for updates.

copyright © 2003, jcoverage ltd. all rights reserved.
Java is a trademark of Sun Microsystems, Inc. in the United States and other countries.