X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fcontrolers%2FControleurVARNAPanelKeys.java;fp=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fcontrolers%2FControleurVARNAPanelKeys.java;h=8dc6eacdcb6058396b3d6a9ae683d6a1500dab50;hb=9f55415c9f8005e9dcd8243453883ff853fd5b76;hp=0000000000000000000000000000000000000000;hpb=d8e8c742b864e58406d13e21d124699a26b6492f;p=jalview.git diff --git a/src2/fr/orsay/lri/varna/controlers/ControleurVARNAPanelKeys.java b/src2/fr/orsay/lri/varna/controlers/ControleurVARNAPanelKeys.java new file mode 100644 index 0000000..8dc6eac --- /dev/null +++ b/src2/fr/orsay/lri/varna/controlers/ControleurVARNAPanelKeys.java @@ -0,0 +1,412 @@ +/* + 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.Point; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.geom.Point2D; + +import fr.orsay.lri.varna.VARNAPanel; +import fr.orsay.lri.varna.views.VueUI; + + +/** + * VARNAPanel Shortcuts Controller + * + * @author darty + * + */ +public class ControleurVARNAPanelKeys implements KeyListener, FocusListener { + + private VARNAPanel _vp; + + + public ControleurVARNAPanelKeys(VARNAPanel vp) { + _vp = vp; + } + + public void mouseClicked(MouseEvent e) { + } + + public void mouseEntered(MouseEvent e) { + // prise du focus + //_vp.requestFocus(); + + } + + public void mouseExited(MouseEvent e) { + } + + public void mousePressed(MouseEvent e) { + } + + public void mouseReleased(MouseEvent e) { + } + + public void keyPressed(KeyEvent e) { + boolean controlDown = (e.getModifiersEx() & (KeyEvent.CTRL_DOWN_MASK)) == KeyEvent.CTRL_DOWN_MASK; + boolean shiftDown = (e.getModifiersEx() & (KeyEvent.SHIFT_DOWN_MASK)) == KeyEvent.SHIFT_DOWN_MASK; + boolean altDown = (e.getModifiersEx() & (KeyEvent.ALT_DOWN_MASK)) == KeyEvent.ALT_DOWN_MASK; + VueUI ui = _vp.getVARNAUI(); + try { + switch (e.getKeyCode()) { + case (KeyEvent.VK_A): + if (controlDown) { + ui.UIAbout(); + } + break; + case (KeyEvent.VK_B): + if (controlDown) { + ui.UISetBorder(); + } + else + if (altDown) { + ui.UIToggleDrawBackbone(); + } + break; + case (KeyEvent.VK_C): + if (shiftDown && controlDown) { + ui.UISetColorMapCaption(); + } + break; + case (KeyEvent.VK_D): + if (controlDown) { + if (shiftDown) { + ui.UIPickGapsBasesColor(); + } else { + ui.UIToggleColorGapsBases(); + } + } + break; + case (KeyEvent.VK_E): + if (controlDown) { + ui.UIToggleShowNonPlanar(); + } + break; + case (KeyEvent.VK_F): + if (controlDown) { + ui.UIToggleFlatExteriorLoop(); + } + break; + case (KeyEvent.VK_G): + if (controlDown) { + ui.UISetBackground(); + } + else if (!shiftDown && altDown) { + ui.UIToggleGaspinMode(); + } + break; + case (KeyEvent.VK_H): + if (controlDown && !shiftDown) { + ui.UISetBPHeightIncrement(); + } + else if (controlDown && shiftDown) + { + Point2D.Double p = _vp.getLastSelectedPosition(); + ui.UIAnnotationsAddPosition((int)p.x,(int)p.y); + } + break; + case (KeyEvent.VK_J): + if (controlDown) { + if (shiftDown) { + ui.UIPickSpecialBasesColor(); + } else { + ui.UIToggleColorSpecialBases(); + } + } + break; + case (KeyEvent.VK_K): + if (controlDown && shiftDown) { + ui.UILoadColorMapValues(); + } + else if (controlDown) { + ui.UISetBackboneColor(); + } + break; + case (KeyEvent.VK_L): + if (shiftDown && controlDown) { + ui.UIToggleColorMap(); + } else if (controlDown) + { + ui.UISetColorMapStyle(); + } else if (shiftDown) + { + ui.UISetColorMapValues(); + } + break; + case (KeyEvent.VK_M): + if (controlDown) { + ui.UISetNumPeriod(); + } else if (shiftDown && altDown) { + ui.UIToggleModifiable(); + } + break; + case (KeyEvent.VK_N): + if (controlDown) { + ui.UIManualInput(); + } + break; + case (KeyEvent.VK_O): + if (controlDown) { + ui.UIFile(); + } + break; + case (KeyEvent.VK_P): + if (controlDown && shiftDown) { + ui.UISetBPStyle(); + } + else if (controlDown && !shiftDown) { + ui.UIPrint(); + } + break; + case (KeyEvent.VK_Q): + if (controlDown && !shiftDown && !altDown) { + _vp.getVARNAUI().UIAutoAnnotateHelices(); + } + else if (controlDown && shiftDown && !altDown) { + _vp.getVARNAUI().UIAutoAnnotateTerminalLoops(); + } + else if (!controlDown && shiftDown && altDown) { + _vp.getVARNAUI().UIAutoAnnotateInteriorLoops(); + } + else if (controlDown && !shiftDown && altDown) { + _vp.getVARNAUI().UIAutoAnnotateStrandEnds(); + } + break; + case (KeyEvent.VK_R): + if (controlDown) { + if (shiftDown) { + ui.UIReset(); + } else { + ui.UIGlobalRotation(); + } + } + break; + case (KeyEvent.VK_S): + if (controlDown) { + if (shiftDown) { + ui.UISetSpaceBetweenBases(); + } else { + ui.UISaveAs(); + } + } + break; + case (KeyEvent.VK_T): + if (controlDown) { + if (shiftDown) { + ui.UISetTitleFont(); + } else if (altDown) { + ui.UISetTitleColor(); + } else { + ui.UISetTitle(); + } + } + break; + case (KeyEvent.VK_U): + if (controlDown && !shiftDown && !altDown) { + _vp.getVARNAUI().UIBaseTypeColor(); + } else if (!controlDown && shiftDown && !altDown) { + _vp.getVARNAUI().UIBasePairTypeColor(); + } else if (!controlDown && !shiftDown && altDown) { + _vp.getVARNAUI().UIBaseAllColor(); + } + break; + case (KeyEvent.VK_W): + if (controlDown) { + ui.UIToggleShowNCBP(); + } + break; + case (KeyEvent.VK_X): + if (controlDown) { + ui.UIExport(); + } + break; + case (KeyEvent.VK_Y): + if (controlDown) { + ui.UIRedo(); + } + break; + + case (KeyEvent.VK_Z): + if (controlDown && !shiftDown) { + ui.UIUndo(); + } + else if (controlDown && shiftDown) { + ui.UIRedo(); + } + else if (!controlDown && !shiftDown) { + ui.UICustomZoom(); + } + break; + case (KeyEvent.VK_1): + if (controlDown) { + ui.UILine(); + } + break; + case (KeyEvent.VK_2): + if (controlDown) { + ui.UICircular(); + } + break; + case (KeyEvent.VK_3): + if (controlDown) { + ui.UIRadiate(); + } + break; + case (KeyEvent.VK_4): + if (controlDown) { + ui.UINAView(); + } + break; + case (KeyEvent.VK_5): + if (controlDown) { + ui.UIVARNAView(); + } + break; + case (KeyEvent.VK_6): + if (controlDown) { + ui.UIMOTIFView(); + } + break; + + // Navigation control keys (Zoom in/out, arrow keys ...) + case (KeyEvent.VK_DOWN): + if (_vp.getZoom() > 1) { + _vp.setTranslation(new Point(_vp.getTranslation().x,_vp.getTranslation().y-5)); + _vp.checkTranslation(); + } + break; + case (KeyEvent.VK_UP): + if (_vp.getZoom() > 1) { + _vp.setTranslation(new Point(_vp.getTranslation().x,_vp.getTranslation().y+5)); + _vp.checkTranslation(); + } + break; + case (KeyEvent.VK_LEFT): + if (_vp.getZoom() > 1) { + _vp.setTranslation(new Point(_vp.getTranslation().x+5,_vp.getTranslation().y)); + _vp.checkTranslation(); + } + break; + case (KeyEvent.VK_RIGHT): + if (_vp.getZoom() > 1) { + _vp.setTranslation(new Point(_vp.getTranslation().x-5,_vp.getTranslation().y)); + _vp.checkTranslation(); + } + break; + case (KeyEvent.VK_EQUALS): + case (KeyEvent.VK_PLUS): + ui.UIZoomIn(); + break; + case (KeyEvent.VK_MINUS): + ui.UIZoomOut(); + break; + } + } catch (Exception e1) { + _vp.errorDialog(e1); + } + _vp.repaint(); + } + + /** + * if ((e.getKeyCode() == KeyEvent.VK_PLUS)||(e.getKeyChar() == '+')) { + * _vp.getVARNAUI().UIZoomIn(); } else if (e.getKeyCode() == + * KeyEvent.VK_MINUS) { _vp.getVARNAUI().UIZoomOut(); } // 1 pour Redraw + * Radiate else if (e.getKeyChar() == KeyEvent.VK_1) { + * _vp.getVARNAUI().UIRadiate(); } // 2 pour Redraw Circular else if + * (e.getKeyChar() == KeyEvent.VK_2) { _vp.getVARNAUI().UICircular(); } // 3 + * pour Redraw NAView else if (e.getKeyChar() == KeyEvent.VK_3) { + * _vp.getVARNAUI().UINAView(); } + * + * // 4 for RNA on a line else if (e.getKeyChar() == KeyEvent.VK_4) { + * _vp.getVARNAUI().UILine(); } // 5 fun arn random coord else if + * (e.isControlDown() && e.getKeyChar() == KeyEvent.VK_9) { for (int i = 0; + * i < _vp.getRNA().get_listeBases().size(); i++) { + * _vp.getRNA().get_listeBases().get(i).set_coords( new + * Point2D.Double(_vp.getWidth() * Math.random(), _vp.getHeight() * + * Math.random())); _vp.getRNA().get_listeBases().get(i).set_center( new + * Point2D.Double(_vp.getWidth() / 2 Math.random(), _vp.getHeight() / 2 + * Math.random())); } } // 6 fun random arn structure else if + * (e.isControlDown() & e.getKeyChar() == KeyEvent.VK_8) { try { + * _vp.drawRNA(_vp.getRNA().getListeBasesToString(), getRandomRNA(), _vp + * .getRNA().get_drawMode()); } catch (ExceptionNonEqualLength e1) { + * _vp.errorDialog(e1); } } _vp.repaint(); } + **/ + + public String getRandomRNA() { + int pile = 0, j, i = 0; + double l; + String fun = ""; + while (i < 2000) { + if (Math.random() > 0.5) { + j = 0; + l = Math.random() * 10; + while (j < l) { + fun += '.'; + i++; + j++; + } + } else { + if (Math.random() > 0.5 && pile > 0) { + j = 0; + l = Math.random() * 5; + while (j < l && pile > 0) { + fun += ')'; + pile--; + j++; + i++; + } + } else { + j = 0; + l = Math.random() * 5; + while (j < l) { + fun += '('; + pile++; + j++; + i++; + } + + } + } + } + while (pile > 0) { + fun += ')'; + pile--; + } + return fun; + } + + public void keyReleased(KeyEvent e) { + } + + public void keyTyped(KeyEvent e) { + } + + public void focusGained(FocusEvent arg0) { + _vp.repaint(); + } + + public void focusLost(FocusEvent arg0) { + _vp.repaint(); + } +} \ No newline at end of file