Author: scooter
Date: 2012-05-16 13:12:19 -0700 (Wed, 16 May 2012)
New Revision: 29274
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ArbitraryGraphicsCanvas.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/BirdsEyeView.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DGraphView.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/Annotation.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ImageAnnotation.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ShapeAnnotation.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/TextAnnotation.java
Log:
Improvements to annotations -- not (nearly) done yet, but they behave much
better now and work in the
BirdsEye view. Next steps are to support adding annotations to the background
canvas and supporting the
ability to move annotations between canvases.
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ArbitraryGraphicsCanvas.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ArbitraryGraphicsCanvas.java
2012-05-16 01:41:34 UTC (rev 29273)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ArbitraryGraphicsCanvas.java
2012-05-16 20:12:19 UTC (rev 29274)
@@ -31,6 +31,7 @@
import java.awt.AlphaComposite;
+import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Composite;
@@ -228,17 +229,14 @@
return true;
}
- public void drawCanvas(VolatileImage image, double xCenter, double
yCenter,
+
+ public void drawCanvas(VolatileImage image, double xMin, double yMin,
double xCenter, double yCenter,
double scaleFactor) {
-/*
// get image graphics
final Graphics2D image2D = image.createGraphics();
- System.out.println("drawCanvas: new scaleFactor =
"+scaleFactor+", xCenter = "+xCenter+", yCenter = "+yCenter);
- double x = m_dGraphView.m_networkCanvas.m_xCenter;
- double y = m_dGraphView.m_networkCanvas.m_yCenter;
- double deltaX = x-xCenter;
- double deltaY = y-yCenter;
- System.out.println("drawCanvas: xCenter = "+x+", yCenter = "+y);
+ // System.out.println("drawCanvas: new scaleFactor =
"+scaleFactor+", xCenter = "+xCenter+", yCenter = "+yCenter);
+ double xOffset = ((image.getWidth()/2)/scaleFactor - xCenter);
+ double yOffset = ((image.getHeight()/2)/scaleFactor - yCenter);
// get list of child components
Component[] components = getComponents();
@@ -255,38 +253,24 @@
int yOrig = position.y;
final double[] nodeCanvasCoordinates = new double[2];
- nodeCanvasCoordinates[0] = position.getX();
- nodeCanvasCoordinates[1] = position.getY();
- System.out.println(" component is at:
"+position.getX()+","+position.getY());
+ nodeCanvasCoordinates[0] = position.getX()+xOffset;
+ nodeCanvasCoordinates[1] = position.getY()+yOffset;
+ // System.out.println(" component is at node
position: "+position.getX()+","+position.getY());
- // Scale & Translate
- nodeCanvasCoordinates[0] =
(nodeCanvasCoordinates[0]+deltaX) * scaleFactor;
- nodeCanvasCoordinates[1] =
(nodeCanvasCoordinates[1]+deltaY) * scaleFactor;
-
- // Move it into position
- c.setLocation((int)nodeCanvasCoordinates[0],
(int)nodeCanvasCoordinates[1]);
-
- System.out.println(" transformed component is at:
"+nodeCanvasCoordinates[0]+","+nodeCanvasCoordinates[1]);
-
// If we're painting an annotation, set the zoom
if (c instanceof Annotation) {
Annotation a = (Annotation)c;
+ a.drawAnnotation(image2D,
position.getX()+xOffset, position.getY()+yOffset, scaleFactor);
+/*
double zoom = a.getZoom();
- // a.adjustZoom(scaleFactor);
+ a.adjustSpecificZoom(scaleFactor);
a.paint(image2D);
- // a.adjustZoom(zoom);
- } else {
- c.paint(image2D);
+ a.adjustSpecificZoom(zoom);
+*/
+
}
-
- // Move it back
- position.x = xOrig;
- position.y = yOrig;
- c.setLocation(xOrig, yOrig);
- System.out.println(" done");
}
- System.out.println("drawCanvas: done");
-*/
+ // System.out.println("drawCanvas: done");
}
/**
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/BirdsEyeView.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/BirdsEyeView.java
2012-05-16 01:41:34 UTC (rev 29273)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/BirdsEyeView.java
2012-05-16 20:12:19 UTC (rev 29274)
@@ -229,6 +229,10 @@
m_myScaleFactor = 1.0d;
}
+ // System.out.println("BirdsEyeView: extent[0] =
"+m_extents[0]+" extent[1] = "+m_extents[1]+" extent[2] = "+m_extents[2]+"
extent[3] = "+m_extents[3]);
+ // System.out.println("BirdsEyeView: component =
"+getWidth()+"x"+getHeight());
+ // System.out.println("BirdsEyeView: image =
"+imageWidth+"x"+imageHeight);
+
// Create "background" network image.
if (imageUpdated) {
// Need to create new image. This is VERY
expensive operation.
@@ -237,7 +241,7 @@
// Now draw the network
viewModel.drawSnapshot(networkImage,
viewModel.getGraphLOD(), viewModel.getBackgroundPaint(),
- m_myXCenter, m_myYCenter,
m_myScaleFactor);
+ m_extents[0], m_extents[1],
m_myXCenter, m_myYCenter, m_myScaleFactor);
}
}
@@ -257,8 +261,9 @@
// Draw the view area window
g.setColor(VIEW_WINDOW_COLOR);
g.fillRect(x, y, rectWidth, rectHeight);
+ // System.out.println("Viewable rectangle: "+x+", "+y+"
"+rectWidth+"x"+rectHeight);
- boundChanged = false; imageUpdated = false;
+ boundChanged = false; imageUpdated = false;
}
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DGraphView.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DGraphView.java
2012-05-16 01:41:34 UTC (rev 29273)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DGraphView.java
2012-05-16 20:12:19 UTC (rev 29274)
@@ -1885,10 +1885,11 @@
* DOCUMENT ME!
*/
//TODO: Need to fix up scaling and sizing.
- public void drawSnapshot(VolatileImage img, GraphLOD lod, Paint
bgPaint, double xCenter,
+ public void drawSnapshot(VolatileImage img, GraphLOD lod, Paint
bgPaint,
+ double xMin, double yMin, double xCenter,
double yCenter, double scaleFactor) {
// First paint the background
- m_backgroundCanvas.drawCanvas(img, xCenter, yCenter,
scaleFactor);
+ m_backgroundCanvas.drawCanvas(img, xMin, yMin, xCenter,
yCenter, scaleFactor);
synchronized (m_lock) {
GraphRenderer.renderGraph(m_drawPersp, m_spacial, lod,
m_nodeDetails,
@@ -1897,7 +1898,7 @@
}
// Finally, draw the foreground
- m_foregroundCanvas.drawCanvas(img, xCenter, yCenter,
scaleFactor);
+ m_foregroundCanvas.drawCanvas(img, xMin, yMin, xCenter,
yCenter, scaleFactor);
}
/**
@@ -1920,6 +1921,10 @@
m_cLis[0] = ContentChangeListenerChain.remove(m_cLis[0], l);
}
+ public ContentChangeListener getContentChangeListener() {
+ return m_cLis[0];
+ }
+
/**
* DOCUMENT ME!
*
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/Annotation.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/Annotation.java
2012-05-16 01:41:34 UTC (rev 29273)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/Annotation.java
2012-05-16 20:12:19 UTC (rev 29274)
@@ -3,6 +3,7 @@
import org.cytoscape.ding.impl.cyannotator.CyAnnotator;
import org.cytoscape.ding.impl.cyannotator.modify.mArrow;
import org.cytoscape.ding.impl.ArbitraryGraphicsCanvas;
+import org.cytoscape.ding.impl.ContentChangeListener;
import org.cytoscape.ding.impl.DGraphView;
import org.cytoscape.ding.impl.InnerCanvas;
import org.cytoscape.model.CyNetwork;
@@ -129,6 +130,9 @@
}
+ public void drawAnnotation(Graphics g, double x, double y, double
scaleFactor) {
+ }
+
public void updateAnnotationAttributes() {
if (!usedForPreviews) {
cyAnnotator.addAnnotation(this);
@@ -653,6 +657,13 @@
public void showChangePopup(MouseEvent e) {
createPopUp().show(e.getComponent(), e.getX(), e.getY());
}
+
+ public void contentChanged() {
+ final ContentChangeListener lis =
view.getContentChangeListener();
+ if (lis != null)
+ lis.contentChanged();
+ }
+
class removeArrowListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ImageAnnotation.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ImageAnnotation.java
2012-05-16 01:41:34 UTC (rev 29273)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ImageAnnotation.java
2012-05-16 20:12:19 UTC (rev 29274)
@@ -64,6 +64,7 @@
customGraphicsManager.addCustomGraphics(cg, url);
customGraphicsManager.setUsedInCurrentSession(cg, true);
updateAnnotationAttributes();
+ contentChanged();
}
public ImageAnnotation(CyAnnotator cyAnnotator, DGraphView view,
@@ -86,6 +87,7 @@
imageHeight = Double.parseDouble(argMap.get(HEIGHT));
resizedImage=resize(image, (int)image.getWidth(),
(int)image.getHeight());
updateAnnotationAttributes();
+ contentChanged();
}
public Map<String,String> getArgMap() {
@@ -124,6 +126,25 @@
}
@Override
+ public void drawAnnotation(Graphics g, double x, double y, double
scaleFactor) {
+ super.paint(g);
+
+ Graphics2D g2=(Graphics2D)g;
+
+ g2.setComposite(AlphaComposite.Src);
+
+
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+
g2.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
+
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
+
+ int width = (int)Math.round(imageWidth*scaleFactor/zoom);
+ int height = (int)Math.round(imageHeight*scaleFactor/zoom);
+ BufferedImage newImage =resize(image, width, height);
+
+ g2.drawImage(newImage, (int)(x*scaleFactor),
(int)(y*scaleFactor), null);
+ }
+
+ @Override
public void paint(Graphics g) {
super.paint(g);
@@ -158,6 +179,8 @@
setBounds(getX(), getY(), getAnnotationWidth(),
getAnnotationHeight());
setTempZoom(newZoom);
+ updateAnnotationAttributes();
+ contentChanged();
}
@@ -176,6 +199,8 @@
setBounds(getX(), getY(), getAnnotationWidth(),
getAnnotationHeight());
setZoom(newZoom);
+ updateAnnotationAttributes();
+ contentChanged();
}
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ShapeAnnotation.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ShapeAnnotation.java
2012-05-16 01:41:34 UTC (rev 29273)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/ShapeAnnotation.java
2012-05-16 20:12:19 UTC (rev 29274)
@@ -23,7 +23,7 @@
private float edgeThickness=2.0f;
public boolean cornersAdjusted=false;
private int rVal=5;
- private int shapeWidth=0, shapeHeight=0;
+ private double shapeWidth=0.0, shapeHeight=0.0;
private static String EDGECOLOR = "edgeColor";
private static String EDGETHICKNESS = "edgeThickness";
@@ -56,26 +56,28 @@
this.edgeThickness=edgeThickness;
this.shapeWidth = width;
this.shapeHeight = height;
- otherCornerX = x+shapeWidth;
- otherCornerY = y+shapeHeight;
- setSize(shapeWidth, shapeHeight);
+ otherCornerX = x+(int)shapeWidth;
+ otherCornerY = y+(int)shapeHeight;
+ setSize((int)shapeWidth, (int)shapeHeight);
updateAnnotationAttributes();
+ contentChanged();
}
public ShapeAnnotation(CyAnnotator cyAnnotator, DGraphView view,
Map<String, String> argMap) {
super(cyAnnotator, view, argMap);
this.edgeColor = getColor(argMap.get(EDGECOLOR));
this.fillColor = getColor(argMap.get(FILLCOLOR));
- this.shapeWidth = Integer.parseInt(argMap.get(WIDTH));
- this.shapeHeight = Integer.parseInt(argMap.get(HEIGHT));
+ this.shapeWidth = Double.parseDouble(argMap.get(WIDTH));
+ this.shapeHeight = Double.parseDouble(argMap.get(HEIGHT));
setFillColor(fillColor);
this.edgeThickness =
Float.parseFloat(argMap.get(EDGETHICKNESS));
this.shapeType = Integer.parseInt(argMap.get(SHAPETYPE));
- otherCornerX = getX()+shapeWidth;
- otherCornerY = getY()+shapeHeight;
- setSize(shapeWidth, shapeHeight);
+ otherCornerX = getX()+(int)shapeWidth;
+ otherCornerY = getY()+(int)shapeHeight;
+ setSize((int)shapeWidth, (int)shapeHeight);
cornersAdjusted = true;
updateAnnotationAttributes();
+ contentChanged();
}
public Map<String,String> getArgMap() {
@@ -87,14 +89,43 @@
argMap.put(EDGECOLOR,convertColor(this.edgeColor));
argMap.put(EDGETHICKNESS,Float.toString(this.edgeThickness));
argMap.put(SHAPETYPE, Integer.toString(this.shapeType));
- argMap.put(WIDTH, Integer.toString(this.shapeWidth));
- argMap.put(HEIGHT, Integer.toString(this.shapeHeight));
+ argMap.put(WIDTH, Double.toString(this.shapeWidth));
+ argMap.put(HEIGHT, Double.toString(this.shapeHeight));
return argMap;
}
@Override
+ public void drawAnnotation(Graphics g, double x, double y, double
scaleFactor) {
+ Graphics2D g2=(Graphics2D)g;
+ float stroke = (float)(edgeThickness*scaleFactor);
+ if (stroke < 1.0f) stroke = 1.0f;
+
+ if(getArrowDrawn())
+ super.paint(g);
+
+ g2.setComposite(AlphaComposite.Src);
+
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+
g2.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
+
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
+
+ // System.out.println("drawAnnotation: x,y="+x+","+y+"
"+shapeWidth+"x"+shapeHeight+" zoom = "+view.getZoom());
+ int width = (int)(shapeWidth*scaleFactor/view.getZoom());
+ int height = (int)(shapeHeight*scaleFactor/view.getZoom());
+
+ boolean selected = isSelected();
+ setSelected(false);
+ drawShape(g2, (int)(x*scaleFactor), (int)(y*scaleFactor),
width, height, stroke);
+ setSelected(selected);
+ }
+
+
+ @Override
public void paint(Graphics g) {
Graphics2D g2=(Graphics2D)g;
+ float stroke = edgeThickness;
+ if (stroke < 1.0f) stroke = 1.0f;
+
+ // System.out.println("paint: x,y="+getX()+","+getY()+"
"+shapeWidth+"x"+shapeHeight);
if(getArrowDrawn())
super.paint(g);
@@ -118,20 +149,23 @@
height=Math.abs(p2.y-p1.y);
} else {
if(usedForPreviews)
- p1=new Point(getX()+shapeWidth/2,
getY()+shapeHeight);
+ p1=new Point(getX()+(int)(shapeWidth/2),
getY()+(int)(shapeHeight));
else
p1=new Point(getX(), getY());
- width=shapeWidth;
- height=shapeHeight;
+ width=(int)shapeWidth;
+ height=(int)shapeHeight;
}
- // System.out.println("Drawing rectangle: x="+p1.x+",
y="+p1.y+" size="+width+"x"+height+", edgeThickness = "+edgeThickness);
-
+ drawShape(g2, p1.x, p1.y, width, height, stroke);
+ }
+
+ private void drawShape(Graphics2D g2, int x, int y, int width, int
height, float stroke) {
+ // System.out.println("drawShape: x,y="+x+","+y+"
"+width+"x"+height);
if(shapeType==0) {//Rectangle
if(fillColor!=null) {
g2.setColor(fillColor);
- g2.fillRect( p1.x, p1.y, width, height);
+ g2.fillRect( x, y, width, height);
}
if(isSelected())
@@ -139,13 +173,13 @@
else
g2.setColor(edgeColor);
- g2.setStroke(new BasicStroke(edgeThickness));
- g2.drawRect(p1.x, p1.y, width, height);
+ g2.setStroke(new BasicStroke(stroke));
+ g2.drawRect(x, y, width, height);
} else if(shapeType==1) {//Rounded Rectangle
if(fillColor!=null) {
g2.setColor(fillColor);
- g2.fillRoundRect( p1.x, p1.y, width, height,
rVal, rVal);
+ g2.fillRoundRect(x, y, width, height, rVal,
rVal);
}
if(isSelected())
@@ -153,12 +187,13 @@
else
g2.setColor(edgeColor);
- g2.setStroke(new BasicStroke(edgeThickness));
- g2.drawRoundRect(p1.x, p1.y, width, height, rVal, rVal);
+ g2.setStroke(new BasicStroke(stroke));
+ g2.drawRoundRect(x, y, width, height, rVal, rVal);
+
} else if(shapeType==2) {//Oval
if(fillColor!=null) {
g2.setColor(fillColor);
- g2.fillOval( p1.x, p1.y, width, height);
+ g2.fillOval( x, y, width, height);
}
if(isSelected())
@@ -166,8 +201,8 @@
else
g2.setColor(edgeColor);
- g2.setStroke(new BasicStroke(edgeThickness));
- g2.drawOval(p1.x, p1.y, width, height);
+ g2.setStroke(new BasicStroke(stroke));
+ g2.drawOval(x, y, width, height);
}
//Now draw the arrows associated with this annotation
}
@@ -191,12 +226,12 @@
}
public int getAnnotationWidth() {
- return shapeWidth;
+ return (int)shapeWidth;
}
public int getAnnotationHeight() {
- return shapeHeight;
+ return (int)shapeHeight;
}
@Override
@@ -204,7 +239,6 @@
float factor=(float)(newZoom/getZoom());
edgeThickness*=factor;
- if (edgeThickness < 1.0f) edgeThickness = 1.0f;
adjustArrowThickness(newZoom);
@@ -213,8 +247,9 @@
shapeWidth*=factor;
shapeHeight*=factor;
- setSize(shapeWidth, shapeHeight);
+ setSize((int)shapeWidth, (int)shapeHeight);
updateAnnotationAttributes();
+ contentChanged();
}
@Override
@@ -226,12 +261,12 @@
shapeWidth*=factor;
shapeHeight*=factor;
- setSize(shapeWidth, shapeHeight);
+ setSize((int)shapeWidth, (int)shapeHeight);
updateAnnotationAttributes();
+ contentChanged();
}
public void addModifyMenuItem(JPopupMenu popup) {
-
JMenuItem modify=new JMenuItem("Modify Properties");
modify.addActionListener(new modifyShapeAnnotationListener());
@@ -269,6 +304,7 @@
cornersAdjusted=true;
updateAnnotationAttributes();
+ contentChanged();
}
public Point getFirstCorner() {
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/TextAnnotation.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/TextAnnotation.java
2012-05-16 01:41:34 UTC (rev 29273)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/cyannotator/annotations/TextAnnotation.java
2012-05-16 20:12:19 UTC (rev 29274)
@@ -56,6 +56,7 @@
this.text=text;
this.font=new Font("Arial", Font.PLAIN, initialFontSize);
updateAnnotationAttributes();
+ contentChanged();
}
// This constructor is used to construct a text annotation from an
@@ -66,6 +67,7 @@
this.color = getColor(argMap.get(COLOR));
this.text = argMap.get(TEXT);
updateAnnotationAttributes();
+ contentChanged();
}
public Map<String,String> getArgMap() {
@@ -142,6 +144,7 @@
public void setText(String newText) {
this.text=newText;
updateAnnotationAttributes();
+ contentChanged();
}
public void setTextColor(Color color) {
@@ -159,6 +162,7 @@
setBounds(getX(), getY(), getAnnotationWidth(),
getAnnotationHeight());
updateAnnotationAttributes();
+ contentChanged();
}
public void adjustZoom(double newZoom){
@@ -170,9 +174,22 @@
zoom=newZoom;
updateAnnotationAttributes();
+ contentChanged();
}
@Override
+ public void drawAnnotation(Graphics g, double x, double y, double
scaleFactor) {
+ super.paint(g);
+ Graphics2D g2=(Graphics2D)g;
+ g2.setColor(color);
+ Font
tFont=font.deriveFont(((float)(scaleFactor/zoom))*font.getSize2D());
+ FontMetrics fontMetrics=g.getFontMetrics(tFont);
+ g2.setFont(tFont);
+ g2.drawChars(getText().toCharArray(), 0, getText().length(),
+ (int)(x*scaleFactor),
(int)(y*scaleFactor)+fontMetrics.getHeight());
+ }
+
+ @Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2=(Graphics2D)g;
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.