+++ /dev/null
-package fr.orsay.lri.varna.components;
-
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Polygon;
-import java.awt.Rectangle;
-import java.awt.RenderingHints;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-import java.awt.geom.GeneralPath;
-import java.awt.geom.Point2D;
-import java.awt.geom.Rectangle2D;
-import java.awt.geom.Point2D.Double;
-import java.awt.image.BufferedImage;
-import java.awt.image.ImageObserver;
-
-import javax.swing.JPanel;
-
-import fr.orsay.lri.varna.VARNAPanel;
-import fr.orsay.lri.varna.models.export.SwingGraphics;
-import fr.orsay.lri.varna.models.export.VueVARNAGraphics;
-
-public class ZoomWindow extends JPanel implements ImageObserver, Runnable, MouseMotionListener, MouseListener {
-
- VARNAPanel _vp = null;
- BufferedImage _bi = null;
- Rectangle2D.Double rnaRect = null;
-
- public ZoomWindow(VARNAPanel vp)
- {
- _vp = vp;
- addMouseMotionListener(this);
- addMouseListener(this);
- }
-
-
- public synchronized void setPanel(VARNAPanel vp)
- {
- _vp = vp;
- }
-
-
-
- public synchronized void drawPanel()
- {
- if (getWidth()>0 && getHeight()>0)
- {
- _bi= new BufferedImage(getWidth(),getHeight(),BufferedImage.TYPE_4BYTE_ABGR);
- Graphics2D g2 = _bi.createGraphics();
- g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- VueVARNAGraphics g2D = new SwingGraphics(g2);
- rnaRect =_vp.renderRNA(g2D,new Rectangle2D.Double(0,0,getWidth(),getHeight()),false,true);
-
- Point2D.Double p1 = _vp.panelToLogicPoint(new Point2D.Double(0.,0.));
- Point2D.Double p2 = _vp.panelToLogicPoint(new Point2D.Double(_vp.getWidth(),_vp.getHeight()));
-
- double w = p2.x-p1.x;
- double h = p2.y-p1.y;
-
- Rectangle2D.Double rnaBox = _vp.getRNA().getBBox();
-
- double ratiox = w/rnaBox.width;
- double ratioy = h/rnaBox.height;
-
- Rectangle2D.Double rvisible = new Rectangle2D.Double(rnaRect.x+rnaRect.width*(double)(p1.x-rnaBox.x)/(double)rnaBox.width,
- rnaRect.y+rnaRect.height*(double)(p1.y-rnaBox.y)/(double)rnaBox.height,
- ratiox*rnaRect.width,
- ratioy*rnaRect.height);
-
- //g2D.drawRect(rleft.x,rleft.y,rleft.width,rleft.height);
-
- Color shade = new Color(.9f,.9f,.9f,.4f);
-
- g2.setStroke(new BasicStroke(1.0f));
-
- g2.setColor(shade);
-
- /*Polygon north = new Polygon(new int[]{0,getWidth(),(int)rvisible.x,
- (int)(rvisible.x+rvisible.width+1),},new int[]{},1);*/
- g2.fillRect(0,0,getWidth(),(int)rvisible.y);
- g2.fillRect(0,(int)rvisible.y,(int)rvisible.x,(int)rvisible.height+1);
- g2.fillRect((int)(rvisible.x+rvisible.width),(int)rvisible.y,(int)(getHeight()-(rvisible.x+rvisible.width)),(int)(rvisible.height+1));
- g2.fillRect(0,(int)(rvisible.y+rvisible.height),getWidth(),(int)(getHeight()-(rvisible.y+rvisible.height)));
-
- g2.setColor(new Color(.7f,.7f,.7f,.3f));
- g2.draw(rvisible);
- g2.drawLine(0,
- 0,
- (int)rvisible.x,
- (int)rvisible.y);
- g2D.drawLine(getWidth(),
- 0,
- rvisible.x+rvisible.width,
- rvisible.y);
- g2D.drawLine(getWidth(),
- getHeight(),
- rvisible.x+rvisible.width,
- rvisible.y+rvisible.height);
- g2D.drawLine(0,
- getHeight(),
- rvisible.x,
- rvisible.y+rvisible.height);
-
- g2.dispose();
- }
- }
-
- public void paintComponent(Graphics g)
- {
- setBackground(_vp.getBackground());
- super.paintComponent(g);
- drawPanel();
- if (_bi!=null)
- {
- g.drawImage(_bi,0,0,this);
- }
- }
-
- public void run() {
- while(true)
- {
- repaint();
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- }
- }
-
-
- public void mouseDragged(MouseEvent e) {
- // TODO Auto-generated method stub
-
- }
-
-
- public void mouseMoved(MouseEvent e) {
- // TODO Auto-generated method stub
-
- }
-
-
- public void mouseClicked(MouseEvent e) {
- /*if (rnaRect!=null)
- {
- int x= e.getX();
- int y= e.getY();
- double ratioX = ((double)(x-rnaRect.getMinX())/((double)rnaRect.width));
- double ratioY = ((double)(y-rnaRect.getMinY())/((double)rnaRect.height));
- _vp.centerViewOn(ratioX,ratioY );
- }*/
- }
-
-
- public void mousePressed(MouseEvent e) {
- // TODO Auto-generated method stub
-
- }
-
-
- public void mouseReleased(MouseEvent e) {
- // TODO Auto-generated method stub
-
- }
-
-
- public void mouseEntered(MouseEvent e) {
- // TODO Auto-generated method stub
-
- }
-
-
- public void mouseExited(MouseEvent e) {
- // TODO Auto-generated method stub
-
- }
-
-}