Revision: 20455 http://sourceforge.net/p/jmol/code/20455 Author: hansonr Date: 2015-04-23 00:05:33 +0000 (Thu, 23 Apr 2015) Log Message: ----------- Jmol.___JmolVersion="14.3.13_2015.04.22"
bug fix: loading mmCIF data in-line loses multi-character chain IDs bug fix: with set picking dragSelected with allowMoveAtoms FALSE and allowRotateSelected TRUE rotating the atoms with ALT-left ignores setting of allowMoveAtoms // see footnotes below for ^, $, #, and * // // settings:^ set picking dragSelected set dragSelected // // move:# drag alt-shift-drag // rotate:#* alt-drag alt-drag // z-shift:# shift-drag (n/a) // // double-click:$ (starts measurement) (sets selected if set picking SELECT) // // ^ set picking dragSelected overrules set dragSelected // # all actions involve whole molecules unless set allowMoveAtoms TRUE // * rotate requires set allowRotateSelected TRUE // $ set dragSelected allows quick setting of a new molecule using double-click // $ set picking dragSelected allows measurements with double-click, as usual code: introduce use of (int... ) syntax in ActionManager simplifies logic Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/ActionManager.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/viewer/ActionManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ActionManager.java 2015-04-22 22:52:35 UTC (rev 20454) +++ trunk/Jmol/src/org/jmol/viewer/ActionManager.java 2015-04-23 00:05:33 UTC (rev 20455) @@ -1062,16 +1062,7 @@ if (dragAtomIndex >= 0) { switch (apm) { case PICKING_DRAG_SELECTED: - setMotion(GenericPlatform.CURSOR_MOVE, true); - if (bnd(dragWheelAction, ACTION_rotateSelected) - && vwr.getBoolean(T.allowrotateselected)) { - vwr.rotateSelected(getDegrees(deltaX, true), getDegrees(deltaY, false), - null); - } else { - vwr.moveSelected(deltaX, deltaY, (bnd(dragWheelAction, - ACTION_dragZ) ? -deltaY : Integer.MIN_VALUE), Integer.MIN_VALUE, - Integer.MIN_VALUE, null, true, false); - } + dragSelected(dragWheelAction, deltaX, deltaY, true); return; case PICKING_DRAG_LIGAND: case PICKING_DRAG_MOLECULE: @@ -1138,6 +1129,8 @@ if (dragSelectedMode && haveSelection && bnd(dragWheelAction, ACTION_dragSelected, ACTION_rotateSelected)) { + // we will drag atoms and either rotate or translate them + // possibly just the atoms or possibly their molecule (decided in Viewer) int iatom = vwr.bsA().nextSetBit(0); if (iatom < 0) return; @@ -1146,14 +1139,7 @@ else vwr.moveSelected(Integer.MAX_VALUE, 0, Integer.MIN_VALUE, Integer.MIN_VALUE, Integer.MIN_VALUE, null, false, false); - setMotion(GenericPlatform.CURSOR_MOVE, true); - if (bnd(dragWheelAction, ACTION_rotateSelected) - && vwr.getBoolean(T.allowrotateselected)) - vwr.rotateSelected(getDegrees(deltaX, true), getDegrees(deltaY, false), - null); - else - vwr.moveSelected(deltaX, deltaY, Integer.MIN_VALUE, - Integer.MIN_VALUE, Integer.MIN_VALUE, null, true, false); + dragSelected(dragWheelAction, deltaX, deltaY, false); return; } @@ -1214,6 +1200,53 @@ } } + /** + * change actual coordinates of selected atoms from set dragSeleted TRUE or + * set PICKING DRAGSELECTED + * + * Basically, set dragSelected adds new functionality to Jmol with alt-drag + * and alt-shift drag, and set picking dragSelected replaces the standard + * mouse drag with a move action and also adds rotate and z-shift options. + * + * set dragSelected also allows other picking types, such as set picking SELECT, + * which uses double-click to start rotating/moving another molecule. + * + * @param a + * @param deltaX + * @param deltaY + * @param isPickingDrag + */ + private void dragSelected(int a, int deltaX, int deltaY, boolean isPickingDrag) { + + // see footnotes below for ^, $, #, and * + // + // settings:^ set picking dragSelected set dragSelected + // + // move:# drag alt-shift-drag + // rotate:#* alt-drag alt-drag + // z-shift:# shift-drag (n/a) + // + // double-click:$ (starts measurement) (sets selected if set picking SELECT) + // + // # all actions involve whole molecules unless set allowMoveAtoms TRUE + // ^ set picking dragSelected overrules set dragSelected + // * rotate requires set allowRotateSelected TRUE + // $ set dragSelected allows quick setting of a new molecule using double-click + // $ set picking dragSelected allows measurements with double-click, as usual + + setMotion(GenericPlatform.CURSOR_MOVE, true); + if (bnd(a, ACTION_rotateSelected) && vwr.getBoolean(T.allowrotateselected)) + vwr.rotateSelected(getDegrees(deltaX, true), getDegrees(deltaY, false), + null); + else + vwr.moveSelected( + deltaX, + deltaY, + (isPickingDrag && bnd(a, ACTION_dragZ) ? -deltaY : Integer.MIN_VALUE), + Integer.MIN_VALUE, Integer.MIN_VALUE, null, true, false); + } + + private void checkReleaseAction(int x, int y, long time, boolean dragRelease) { if (Logger.debugging) Logger.debug(Binding.getMouseActionName(pressAction, false)); @@ -1251,8 +1284,7 @@ vwr.checkObjectDragged(Integer.MAX_VALUE, 0, x, y, dragAction); return; } - if (dragSelectedMode && bnd(dragAction, ACTION_dragSelected) - && haveSelection) + if (haveSelection && dragSelectedMode && bnd(dragAction, ACTION_dragSelected)) vwr.moveSelected(Integer.MAX_VALUE, 0, Integer.MIN_VALUE, Integer.MIN_VALUE, Integer.MIN_VALUE, null, false, false); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2015-04-22 22:52:35 UTC (rev 20454) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2015-04-23 00:05:33 UTC (rev 20455) @@ -21,8 +21,22 @@ bug fix: with set picking dragSelected with allowMoveAtoms FALSE and allowRotateSelected TRUE rotating the atoms with ALT-left ignores setting of allowMoveAtoms - set allowmoveatoms false; - set allowrotateselected true; + // see footnotes below for ^, $, #, and * + // + // settings:^ set picking dragSelected set dragSelected + // + // move:# drag alt-shift-drag + // rotate:#* alt-drag alt-drag + // z-shift:# shift-drag (n/a) + // + // double-click:$ (starts measurement) (sets selected if set picking SELECT) + // + // ^ set picking dragSelected overrules set dragSelected + // # all actions involve whole molecules unless set allowMoveAtoms TRUE + // * rotate requires set allowRotateSelected TRUE + // $ set dragSelected allows quick setting of a new molecule using double-click + // $ set picking dragSelected allows measurements with double-click, as usual + code: introduce use of (int... ) syntax in ActionManager simplifies logic This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT Develop your own process in accordance with the BPMN 2 standard Learn Process modeling best practices with Bonita BPM through live exercises http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF _______________________________________________ Jmol-commits mailing list Jmol-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jmol-commits