JAL-3032 upgrade to Jmol 14.29.17; clearing of src2 directory
[jalview.git] / src2 / fr / orsay / lri / varna / controlers / ControleurClicMovement.java
diff --git a/src2/fr/orsay/lri/varna/controlers/ControleurClicMovement.java b/src2/fr/orsay/lri/varna/controlers/ControleurClicMovement.java
deleted file mode 100644 (file)
index 4212106..0000000
+++ /dev/null
@@ -1,688 +0,0 @@
-/*
- VARNA is a tool for the automated drawing, visualization and annotation of the secondary structure of RNA, designed as a companion software for web servers and databases.
- Copyright (C) 2008  Kevin Darty, Alain Denise and Yann Ponty.
- electronic mail : Yann.Ponty@lri.fr
- paper mail : LRI, bat 490 Université Paris-Sud 91405 Orsay Cedex France
-
- This file is part of VARNA version 3.1.
- VARNA version 3.1 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
- VARNA version 3.1 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along with VARNA version 3.1.
- If not, see http://www.gnu.org/licenses.
- */
-package fr.orsay.lri.varna.controlers;
-
-import java.awt.Component;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-import java.awt.geom.Point2D;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Vector;
-
-import javax.swing.JMenu;
-import javax.swing.JMenuItem;
-import javax.swing.event.PopupMenuEvent;
-import javax.swing.event.PopupMenuListener;
-
-import fr.orsay.lri.varna.VARNAPanel;
-import fr.orsay.lri.varna.exceptions.ExceptionNAViewAlgorithm;
-import fr.orsay.lri.varna.models.annotations.TextAnnotation;
-import fr.orsay.lri.varna.models.rna.ModeleBase;
-import fr.orsay.lri.varna.models.rna.ModeleBaseNucleotide;
-import fr.orsay.lri.varna.models.rna.ModeleBasesComparison;
-import fr.orsay.lri.varna.models.rna.ModeleBP;
-import fr.orsay.lri.varna.models.rna.RNA;
-
-
-/**
- * Controller of the mouse click
- * 
- * @author darty
- * 
- */
-public class ControleurClicMovement implements MouseListener,
-               MouseMotionListener, PopupMenuListener {
-       private VARNAPanel _vp;
-       private boolean _presenceMenuSelection;
-       private JMenu _submenuSelection;
-       public Point _spawnPoint;       
-       public Point _initialPoint;
-       public Point _prevPoint;
-       public Point _currentPoint;
-
-       public static final double MIN_SELECTION_DISTANCE = 40.0;
-       public static final double HYSTERESIS_DISTANCE = 10.0;
-       
-       private ModeleBase _selectedBase = null;
-       
-       
-       public enum MouseStates {
-               NONE,
-               MOVE_ELEMENT,
-               MOVE_OR_SELECT_ELEMENT,
-               SELECT_ELEMENT,
-               SELECT_REGION_OR_UNSELECT,
-               SELECT_REGION,
-               CREATE_BP,
-               POPUP_MENU,
-               MOVE_ANNOTATION,
-       };
-       private MouseStates _currentState = MouseStates.NONE;
-       
-
-
-       public ControleurClicMovement(VARNAPanel _vuep) {
-               _vp = _vuep;
-               _vp.getPopup().addPopupMenuListener(this);
-               _presenceMenuSelection = false;
-       }
-
-       public void mouseClicked(MouseEvent arg0) {
-       }
-
-       public void mouseEntered(MouseEvent arg0) {
-       }
-
-       public void mouseExited(MouseEvent arg0) {
-       }
-
-       public void mousePressed(MouseEvent arg0) 
-       {
-               _vp.requestFocus();
-               boolean button1 = (arg0.getButton() == MouseEvent.BUTTON1);
-               boolean button2 = (arg0.getButton() == MouseEvent.BUTTON2);
-               boolean button3 = (arg0.getButton() == MouseEvent.BUTTON3);
-               boolean shift = arg0.isShiftDown();
-               boolean ctrl = arg0.isControlDown();
-               boolean alt = arg0.isAltDown();
-               _vp.removeSelectedAnnotation();
-               if (button1 && !ctrl && !alt && !shift)
-               {
-                       if (_vp.isModifiable()) 
-                       {
-                               _currentState = MouseStates.MOVE_OR_SELECT_ELEMENT;
-                               if (_vp.getRealCoords() != null
-                                               && _vp.getRealCoords().length != 0
-                                               && _vp.getRNA().get_listeBases().size() != 0) 
-                               {
-                                       _selectedBase = _vp.getNearestBase(arg0.getX(),arg0.getY(),false,false);
-                                       TextAnnotation selectedAnnotation = _vp.getNearestAnnotation(arg0.getX(), arg0.getY());
-                                       _initialPoint = new Point(arg0.getX(),arg0.getY());
-                                       _currentPoint = new Point(_initialPoint);
-                                       _prevPoint = new Point(_initialPoint);
-                                       if (_selectedBase != null)
-                                       { 
-                                               if (_vp.getRNA().get_drawMode() == RNA.DRAW_MODE_RADIATE) 
-                                               {
-                                                       _vp.highlightSelectedBase(_selectedBase);
-                                               } else {
-                                                       if (!_vp.getSelectionIndices().contains(_selectedBase.getIndex()))
-                                                       {
-                                                               _vp.highlightSelectedBase(_selectedBase);
-                                                       }
-                                                       else
-                                                       {
-                                                         // Otherwise, keep current selection as it is and move it
-                                                       }
-                                               }
-                                       }
-                                       else
-                                       {
-                                               if (selectedAnnotation != null)
-                                               {
-                                                       _currentState = MouseStates.MOVE_ANNOTATION;
-                                                       _vp.set_selectedAnnotation(selectedAnnotation);
-                                                       _vp.highlightSelectedAnnotation();
-                                               }
-                                               else
-                                               {
-                                                       _vp.clearSelection();
-                                                       _selectedBase = null;
-                                                       _currentState = MouseStates.SELECT_REGION_OR_UNSELECT;
-                                                       _initialPoint = new Point(arg0.getX(),arg0.getY());
-                                                       _prevPoint = new Point(_initialPoint);
-                                                       _currentPoint = new Point(_initialPoint);
-                                               }
-                                       }
-                               }
-                       }
-               }
-               else if (button1 && ctrl && !alt && !shift)
-               {
-                       _selectedBase = _vp.getNearestBase(arg0.getX(),arg0.getY(),false,false);
-                       if (_selectedBase != null)
-                       { 
-                               _vp.clearSelection();
-                               _currentState = MouseStates.CREATE_BP;
-                               _vp.highlightSelectedBase(_selectedBase);
-                               _vp.setOriginLink(_vp.logicToPanel(_selectedBase.getCoords()));
-                               _initialPoint = new Point(arg0.getX(),arg0.getY());
-                               _currentPoint = new Point(_initialPoint);
-                       }
-               }
-               else if (button1 && !ctrl && !alt && shift)
-               {
-                       _currentState = MouseStates.SELECT_ELEMENT;
-                       _initialPoint = new Point(arg0.getX(),arg0.getY());
-                       _currentPoint = new Point(_initialPoint);
-               }
-               else if (button3) 
-               {
-                       _currentState = MouseStates.POPUP_MENU;
-                       if (_presenceMenuSelection) {
-                               _vp.getPopupMenu().removeSelectionMenu();
-                       }
-                       if ((_vp.getRealCoords() != null) && _vp.getRNA().get_listeBases().size() != 0) {
-                               updateNearestBase(arg0);
-                               // on insere dans le menu les nouvelles options
-                               addMenu(arg0);
-                               if (_vp.get_selectedAnnotation() != null)
-                                       _vp.highlightSelectedAnnotation();
-                       }
-                       // affichage du popup menu
-                       if (_vp.getRNA().get_drawMode() == RNA.DRAW_MODE_LINEAR) {
-                               _vp.getPopup().get_rotation().setEnabled(false);
-                       } else {
-                               _vp.getPopup().get_rotation().setEnabled(true);
-                       }
-                       _vp.getPopup().updateDialog();
-                       _vp.getPopup().show(_vp, arg0.getX(), arg0.getY());
-               }
-               _vp.repaint();
-       }
-
-       public void mouseDragged(MouseEvent me) {
-               if ((_currentState == MouseStates.MOVE_OR_SELECT_ELEMENT)||(_currentState == MouseStates.MOVE_ELEMENT))
-               {
-                       _vp.lockScrolling();
-
-                       _currentState = MouseStates.MOVE_ELEMENT;
-                               // si on deplace la souris et qu'une base est selectionnée
-                               if (_selectedBase != null) {
-                                       if (_vp.getRNA().get_drawMode() == RNA.DRAW_MODE_RADIATE) {
-                                               _vp.highlightSelectedStem(_selectedBase);
-                                               // dans le cas radiale on deplace une helice
-                                               _vp.getVARNAUI().UIMoveHelixAtom(_selectedBase.getIndex(), _vp.panelToLogicPoint(new Point2D.Double(me.getX(), me.getY())));
-                                       } else {
-                                               // dans le cas circulaire naview ou line on deplace une base
-                                               _currentPoint = new Point(me.getX(), me.getY());
-                                               moveSelection(_prevPoint,_currentPoint);
-                                               _prevPoint = new Point(_currentPoint);
-                                       }
-                                       _vp.repaint();
-                               }
-               }
-               else if (_currentState == MouseStates.MOVE_ANNOTATION)
-               {
-                       if (_vp.get_selectedAnnotation()!=null)
-                       {
-                               Point2D.Double p = _vp.panelToLogicPoint(new Point2D.Double(me.getX(), me.getY()));
-                               _vp.get_selectedAnnotation().setAncrage(p.x,p.y);
-                               _vp.repaint();
-                       }                       
-               }
-               else if ((_currentState == MouseStates.SELECT_ELEMENT)||(_currentState == MouseStates.SELECT_REGION_OR_UNSELECT))
-               {
-                       if (_initialPoint.distance(me.getX(),me.getY())>HYSTERESIS_DISTANCE)
-                               _currentState = MouseStates.SELECT_REGION;
-               }
-               else if (_currentState == MouseStates.SELECT_REGION)
-               {
-                       _currentPoint = new Point(me.getX(),me.getY());
-                       int minx = Math.min(_currentPoint.x, _initialPoint.x);
-                       int miny = Math.min(_currentPoint.y, _initialPoint.y);
-                       int maxx = Math.max(_currentPoint.x, _initialPoint.x);
-                       int maxy = Math.max(_currentPoint.y, _initialPoint.y);
-                       _vp.setSelectionRectangle(new Rectangle(minx,miny,maxx-minx,maxy-miny));
-               }
-               else if (_currentState == MouseStates.CREATE_BP)
-               {
-                       if (_initialPoint.distance(me.getX(),me.getY())>HYSTERESIS_DISTANCE)
-                       {
-                               ModeleBase newSelectedBase = _vp.getNearestBase(me.getX(),me.getY(),false,false);
-                               _vp.setHoverBase(newSelectedBase);
-                               if (newSelectedBase==null)
-                               {
-                                       _vp.setDestinationLink(new Point2D.Double(me.getX(),me.getY()));
-                                       _vp.clearSelection();
-                                       _vp.addToSelection(_selectedBase.getIndex());
-                               }
-                               else
-                               {
-                                       ModeleBase mborig = _selectedBase;
-                                       _vp.clearSelection();
-                                       _vp.addToSelection(newSelectedBase.getIndex());
-                                       _vp.addToSelection(mborig.getIndex());
-                                       _vp.setDestinationLink(_vp.logicToPanel(newSelectedBase.getCoords()));
-                               }
-                               _vp.repaint();
-                       }
-                       
-               }
-       }
-
-
-       public void mouseReleased(MouseEvent arg0) {
-               if (arg0.getButton() == MouseEvent.BUTTON1)
-               {
-                       _vp.fireBaseClicked(_selectedBase, arg0);       
-                       //System.out.println(""+_currentState);
-                       
-                       if (_currentState == MouseStates.MOVE_ELEMENT)
-                       {
-                               _vp.clearSelection();
-                               _selectedBase = null;
-                               _vp.unlockScrolling();
-                               _vp.removeSelectedAnnotation();
-                       }
-                       else if (_currentState == MouseStates.SELECT_REGION_OR_UNSELECT)
-                       {
-                               _vp.clearSelection();
-                               _selectedBase = null;
-                               _vp.removeSelectedAnnotation();
-                       }
-                       else if (_currentState == MouseStates.SELECT_ELEMENT)
-                       {
-                               if (_vp.getRealCoords() != null
-                                               && _vp.getRealCoords().length != 0
-                                               && _vp.getRNA().get_listeBases().size() != 0) 
-                                       {
-                                               int selectedIndex = _vp.getNearestBaseIndex(arg0.getX(),arg0.getY(),false,false);
-                                               if (selectedIndex !=-1)
-                                               { 
-                                                       _vp.toggleSelection(selectedIndex);
-                                               }
-                                       }
-                               _selectedBase = null;
-                       }
-                       else if (_currentState == MouseStates.SELECT_REGION)
-                       {
-                         _vp.removeSelectionRectangle();
-                       }
-                       else if (_currentState == MouseStates.CREATE_BP)
-                       {
-                               if (_initialPoint.distance(arg0.getX(),arg0.getY())>HYSTERESIS_DISTANCE)
-                               {
-                                       int selectedIndex = _vp.getNearestBaseIndex(arg0.getX(),arg0.getY(),false,false);
-                                       if (selectedIndex>=0)
-                                       {
-                                               ModeleBase mb = _vp.getNearestBase(arg0.getX(),arg0.getY(),false,false);
-                                               ModeleBase mborig = _selectedBase;
-                                               ModeleBP msbp = new ModeleBP(mb,mborig); 
-                                               if (mb!=mborig)
-                                               {
-                                                 _vp.getVARNAUI().UIAddBP(mb.getIndex(),mborig.getIndex(),msbp);
-                                               }
-                                       }
-                               }
-                               _vp.removeLink();
-                               _vp.clearSelection();
-                               _vp.repaint();
-                       }
-                       else
-                       {
-                               _vp.clearSelection();
-                       }
-
-               }
-               _currentState = MouseStates.NONE;
-               _vp.repaint();          
-       }
-
-
-       private void addMenu(MouseEvent arg0) {
-               // creation du menu
-               _submenuSelection = new JMenu("Selection");
-               addCurrent();
-               // ajout des option sur base
-               addMenuBase();
-               // ajout des option sur paire de base
-               if (_vp.getRNA().get_listeBases().get(_vp.getNearestBase())
-                               .getElementStructure() != -1) {
-                       addMenuBasePair();
-               }
-
-               // detection renflement
-               detectBulge();
-               // detection 3'
-               detect3Prime();
-               // detection 5'
-               detect5Prime();
-               // detection boucle
-               detectLoop();
-               // detection d'helice
-               detectHelix();
-               // detection tige
-               detectStem();
-               // Ajout de toutes bases
-               addAllBase();
-               // detection d'annotation
-               detectAnnotation(arg0);
-
-               _vp.getPopup().addSelectionMenu(_submenuSelection);
-               _presenceMenuSelection = true;
-       }
-
-       private void detectAnnotation(MouseEvent arg0) {
-               if (_vp.getListeAnnotations().size() != 0) {
-                       double dist = Double.MAX_VALUE;
-                       double d2;
-                       Point2D.Double position;
-                       for (TextAnnotation textAnnot : _vp.getListeAnnotations()) {
-                               // calcul de la distance
-                               position = textAnnot.getCenterPosition();
-                               position = _vp.transformCoord(position);
-                               d2 = Math.sqrt(Math.pow((position.x - arg0.getX()), 2)
-                                               + Math.pow((position.y - arg0.getY()), 2));
-                               // si la valeur est inferieur au minimum actuel
-                               if (dist > d2) {
-                                       _vp.set_selectedAnnotation(textAnnot);
-                                       dist = d2;
-                               }
-                       }
-                       _submenuSelection.addSeparator();
-                       _vp.getPopup().addAnnotationMenu(_submenuSelection,true);
-               }
-       }
-
-       private void detectBulge() {
-               int indiceB = _vp.getNearestBase();
-               ArrayList<Integer> indices = _vp.getRNA().findBulge(indiceB);
-               if ((indices.size() > 0)
-                               && (_vp.getRNA().getHelixCountOnLoop(_vp.getNearestBase()) == 2)) {
-                       JMenu submenuBulge = new JMenu("Bulge");
-                       submenuBulge.addChangeListener(new ControleurSelectionHighlight(
-                                       new Vector<Integer>(indices), _vp, submenuBulge));
-                       submenuBulge.setActionCommand("bulge");
-                       if (!_vp.isModifiable())
-                               submenuBulge.setEnabled(false);
-                       _vp.getPopupMenu().addColorOptions(submenuBulge);
-                       _submenuSelection.add(submenuBulge);
-               }
-       }
-
-       private void detectHelix() {
-               int indiceH = _vp.getNearestBase();
-               ArrayList<Integer> indices = _vp.getRNA().findHelix(indiceH);
-               if (indices.size() != 0) {
-                       // ajout menu helice
-                       JMenu submenuHelix = new JMenu("Helix");
-                       submenuHelix.addChangeListener(new ControleurSelectionHighlight(
-                                       new Vector<Integer>(indices), _vp, submenuHelix));
-                       submenuHelix.setActionCommand("helix");
-                       if (!_vp.isModifiable())
-                               submenuHelix.setEnabled(false);
-                       _vp.getPopupMenu().addColorOptions(submenuHelix);
-                       submenuHelix.addSeparator();
-                       _vp.getPopupMenu().addAnnotationMenu(submenuHelix);
-                       _submenuSelection.add(submenuHelix);
-               }
-       }
-
-       private void detectStem() {
-               int indiceS = _vp.getNearestBase();
-               ArrayList<Integer> indices = _vp.getRNA().findStem(indiceS);
-               if (indices.size() > 0) {
-                       JMenu submenuStem = new JMenu("Stem");
-                       submenuStem.addChangeListener(new ControleurSelectionHighlight(
-                                       new Vector<Integer>(indices), _vp, submenuStem));
-                       submenuStem.setActionCommand("stem");
-                       if (!_vp.isModifiable())
-                               submenuStem.setEnabled(false);
-                       _vp.getPopupMenu().addColorOptions(submenuStem);
-                       _submenuSelection.add(submenuStem);
-               }
-       }
-
-       private void detect3Prime() {
-               // detection 3'
-               int indice3 = _vp.getNearestBase();
-               ArrayList<Integer> indices = _vp.getRNA().find3Prime(indice3);
-               if (indices.size() != 0) {
-                       JMenu submenu3Prime = new JMenu("3'");
-                       submenu3Prime.addChangeListener(new ControleurSelectionHighlight(
-                                       new Vector<Integer>(indices), _vp, submenu3Prime));
-                       submenu3Prime.setActionCommand("3'");
-                       if (!_vp.isModifiable())
-                               submenu3Prime.setEnabled(false);
-                       _vp.getPopupMenu().addColorOptions(submenu3Prime);
-                       _submenuSelection.add(submenu3Prime);
-               }
-       }
-
-       private void detect5Prime() {
-               int indice5 = _vp.getNearestBase();
-               ArrayList<Integer> indices = _vp.getRNA().find5Prime(indice5);
-               if (indices.size() != 0) {
-                       JMenu submenu5Prime = new JMenu("5'");
-                       submenu5Prime.addChangeListener(new ControleurSelectionHighlight(
-                                       new Vector<Integer>(indices), _vp, submenu5Prime));
-                       submenu5Prime.setActionCommand("5'");
-                       if (!_vp.isModifiable())
-                               submenu5Prime.setEnabled(false);
-                       _vp.getPopupMenu().addColorOptions(submenu5Prime);
-                       _submenuSelection.add(submenu5Prime);
-               }
-       }
-
-       private void detectLoop() {
-               int indexL = _vp.getNearestBase();
-               if (_vp.getRNA().get_listeBases().get(indexL).getElementStructure() == -1) {
-                       ArrayList<Integer> listLoop = _vp.getRNA().findLoop(indexL);
-                       JMenu submenuLoop = new JMenu("Loop");
-                       submenuLoop.addChangeListener(new ControleurSelectionHighlight(
-                                       listLoop, _vp, submenuLoop));
-                       submenuLoop.setActionCommand("loop1");
-                       if (!_vp.isModifiable())
-                               submenuLoop.setEnabled(false);
-                       _vp.getPopupMenu().addColorOptions(submenuLoop);
-                       submenuLoop.addSeparator();
-                       _vp.getPopupMenu().addAnnotationMenu(submenuLoop);
-                       _submenuSelection.add(submenuLoop);
-               } else {
-                       ArrayList<Integer> listLoop1 = _vp.getRNA().findLoopForward(indexL);
-                       if (listLoop1.size() > 0) {
-                               JMenu submenuLoop1 = new JMenu("Forward loop");
-                               submenuLoop1
-                                               .addChangeListener(new ControleurSelectionHighlight(
-                                                               listLoop1, _vp, submenuLoop1));
-                               submenuLoop1.setActionCommand("loop1");
-                               if (!_vp.isModifiable())
-                                       submenuLoop1.setEnabled(false);
-                               _vp.getPopupMenu().addColorOptions(submenuLoop1);
-                               submenuLoop1.addSeparator();
-                               _vp.getPopupMenu().addAnnotationMenu(submenuLoop1);
-                               _submenuSelection.add(submenuLoop1);
-                       }
-                       ArrayList<Integer> listLoop2 = _vp.getRNA()
-                                       .findLoopBackward(indexL);
-                       if (listLoop2.size() > 0) {
-                               JMenu submenuLoop2 = new JMenu("Backward loop");
-                               submenuLoop2
-                                               .addChangeListener(new ControleurSelectionHighlight(
-                                                               listLoop2, _vp, submenuLoop2));
-                               submenuLoop2.setActionCommand("loop2");
-                               if (!_vp.isModifiable())
-                                       submenuLoop2.setEnabled(false);
-                               _vp.getPopupMenu().addColorOptions(submenuLoop2);
-                               submenuLoop2.addSeparator();
-                               _vp.getPopupMenu().addAnnotationMenu(submenuLoop2);
-                               _submenuSelection.add(submenuLoop2);
-                       }
-               }
-       }
-
-       private void addCurrent() {
-               Collection<? extends ModeleBase> mbs = _vp.getSelection().getBases();
-               if (mbs.size()>0)
-               {
-               JMenu submenuAll = new JMenu("Current");
-               submenuAll.addChangeListener(new ControleurSelectionHighlight(
-                               mbs, _vp, submenuAll));
-               submenuAll.setActionCommand("current");
-               if (!_vp.isModifiable())
-                       submenuAll.setEnabled(false);
-               _vp.getPopupMenu().addColorOptions(submenuAll);
-               _submenuSelection.add(submenuAll);
-               }
-       }
-       
-       
-       private void addMenuBase() {
-               JMenu submenuBase = new JMenu();
-               ModeleBase mb = _vp.getRNA().get_listeBases().get(_vp.getNearestBase());
-               if (mb instanceof ModeleBasesComparison) {
-                       submenuBase.setText("Base #" + (mb.getBaseNumber()) + ":"
-                                       + ((ModeleBasesComparison) mb).getBases());
-               } else {
-                       submenuBase.setText("Base #" + (mb.getBaseNumber()) + ":"
-                                       + ((ModeleBaseNucleotide) mb).getBase());
-               }
-               submenuBase.addChangeListener(new ControleurSelectionHighlight(mb
-                               .getIndex(), _vp, submenuBase));
-               submenuBase.setActionCommand("base");
-               // option disponible seulement en mode modifiable
-               if (!_vp.isModifiable())
-                       submenuBase.setEnabled(false);
-
-               JMenuItem baseChar = new JMenuItem("Edit base");
-               baseChar.setActionCommand("baseChar");
-               baseChar.addActionListener(_vp.getPopupMenu().get_controleurMenu());
-               submenuBase.add(baseChar);
-               _vp.getPopupMenu().addColorOptions(submenuBase);
-               submenuBase.addSeparator();
-               _vp.getPopupMenu().addAnnotationMenu(submenuBase);
-               _submenuSelection.add(submenuBase);
-       }
-
-       private void addAllBase() {
-               ArrayList<Integer> indices = _vp.getRNA().findAll();
-               JMenu submenuAll = new JMenu("All");
-               submenuAll.addChangeListener(new ControleurSelectionHighlight(
-                               new Vector<Integer>(indices), _vp, submenuAll));
-               submenuAll.setActionCommand("all");
-               if (!_vp.isModifiable())
-                       submenuAll.setEnabled(false);
-               _vp.getPopupMenu().addColorOptions(submenuAll);
-               _submenuSelection.add(submenuAll);
-       }
-
-       private void addMenuBasePair() {
-                       int indiceBP = _vp.getNearestBase();
-                       ArrayList<Integer> indices = _vp.getRNA().findPair(indiceBP);
-                       ModeleBase base = _vp.getRNA()
-                                       .get_listeBases().get(_vp.getNearestBase());
-                       if (base.getElementStructure() != -1) {
-                               JMenu submenuBasePair = new JMenu();
-                               ModeleBase partner = _vp
-                                               .getRNA().get_listeBases().get(
-                                                               base.getElementStructure());
-                               submenuBasePair
-                                               .addChangeListener(new ControleurSelectionHighlight(
-                                                               indices, _vp, submenuBasePair));
-                               submenuBasePair.setText("Base pair #("
-                                               + (Math.min(base.getBaseNumber(), partner
-                                                               .getBaseNumber()))
-                                               + ","
-                                               + (Math.max(base.getBaseNumber(), partner
-                                                               .getBaseNumber())) + ")");
-                               submenuBasePair.setActionCommand("bp");
-                               // option disponible seulement en mode modifiable
-                               if (!_vp.isModifiable())
-                                       submenuBasePair.setEnabled(false);
-
-                               JMenuItem basepair = new JMenuItem("Edit BP");
-                               basepair.setActionCommand("basepair");
-                               basepair.addActionListener(_vp.getPopupMenu()
-                                               .get_controleurMenu());
-
-                               _vp.getPopupMenu().addColorOptions(submenuBasePair);
-                               Component[] comps = submenuBasePair.getMenuComponents();
-                               int offset = -1;
-                               for (int i = 0; i < comps.length; i++) {
-                                       Component c = comps[i];
-                                       if (c instanceof JMenuItem) {
-                                               JMenuItem jmi = (JMenuItem) c;
-                                               if (jmi.getActionCommand().contains(",BPColor")) {
-                                                       offset = i;
-                                               }
-                                       }
-                               }
-                               if (offset != -1) {
-                                       submenuBasePair.insert(basepair, offset);
-                               } else {
-                                       submenuBasePair.add(basepair);
-                               }
-                               _submenuSelection.add(submenuBasePair);
-                       }
-               }
-
-       private void updateNearestBase(MouseEvent arg0) {
-               int i = _vp.getNearestBaseIndex(arg0.getX(),arg0.getY(),true,false);
-               if (i!=-1)
-                       _vp.setNearestBase(i);
-       }
-
-
-
-       
-       public void mouseMoved(MouseEvent arg0) {
-               _selectedBase = _vp.getNearestBase(arg0.getX(),arg0.getY());
-               TextAnnotation selectedAnnotation = _vp.getNearestAnnotation(arg0.getX(),arg0.getY());
-               _vp.setHoverBase(_selectedBase);
-               if (_selectedBase != null)
-               {
-               }
-               else if (selectedAnnotation!=null)
-               {
-                       _vp.set_selectedAnnotation(selectedAnnotation);
-                       _vp.highlightSelectedAnnotation();
-                       _vp.repaint();
-               }
-               _vp.setLastSelectedPosition(new Point2D.Double(arg0.getX(),arg0.getY()));
-       }
-
-       
-       
-       private void moveSelection(Point prev, Point cur) 
-       {
-               Point2D.Double p1 =  _vp.panelToLogicPoint(new Point2D.Double(prev.x,prev.y));
-               Point2D.Double p2 =  _vp.panelToLogicPoint(new Point2D.Double(cur.x,cur.y));
-               double dx = (p2.x - p1.x);
-               double dy = (p2.y - p1.y);
-               
-               if (_vp.isModifiable())
-               {  
-                       double ndx = dx;
-                       double ndy = dy;
-                       if (_vp.getRNA().get_drawMode() == RNA.DRAW_MODE_LINEAR) 
-                       {
-                               ndy=0.0;
-                       }
-                       _vp.getVARNAUI().UIShiftBaseCoord(_vp.getSelectionIndices(), ndx, ndy);
-                       _vp.fireLayoutChanged();
-                       
-               }
-       }
-
-
-       public void popupMenuCanceled(PopupMenuEvent arg0) {
-       }
-
-       public void popupMenuWillBecomeInvisible(PopupMenuEvent arg0) {
-               _vp.resetAnnotationHighlight();
-               _selectedBase = null;
-       }
-
-       public void popupMenuWillBecomeVisible(PopupMenuEvent arg0) {
-       }
-}
\ No newline at end of file