From: <ha...@us...> - 2010-01-30 00:46:52
|
Revision: 12262 http://jmol.svn.sourceforge.net/jmol/?rev=12262&view=rev Author: hansonr Date: 2010-01-30 00:46:44 +0000 (Sat, 30 Jan 2010) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/src/org/jmol/applet/Jmol.java trunk/Jmol/src/org/jmol/console/ScriptEditor.java trunk/Jmol/src/org/jmol/modelset/AtomCollection.java trunk/Jmol/src/org/jmol/modelset/Group.java trunk/Jmol/src/org/jmol/script/ScriptCompiler.java trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java trunk/Jmol/src/org/jmol/shape/Frank.java trunk/Jmol/src/org/jmol/viewer/ActionManager.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/JmolConstants.java trunk/Jmol/src/org/jmol/viewer/MouseManager.java trunk/Jmol/src/org/jmol/viewer/RepaintManager.java trunk/Jmol/src/org/jmol/viewer/ScriptManager.java trunk/Jmol/src/org/jmol/viewer/TransformManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java trunk/Jmol/src/org/jmol/viewer/binding/DragBinding.java trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/AppConsole.java Modified: trunk/Jmol/src/org/jmol/applet/Jmol.java =================================================================== --- trunk/Jmol/src/org/jmol/applet/Jmol.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/applet/Jmol.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -516,11 +516,8 @@ printProgressbarMessage(g); viewer.notifyViewerRepaintDone(); } else { - //System.out.println("UPDATE1: " + source + " " + Thread.currentThread()); - //System.out.println(fullName + " update gRight = " + gRight); if (!isStereoSlave) viewer.renderScreenImage(g, gRight, size, null);//rectClip); - //System.out.println("UPDATE2: " + source + " " + Thread.currentThread()); } if (showPaintTime) { Modified: trunk/Jmol/src/org/jmol/console/ScriptEditor.java =================================================================== --- trunk/Jmol/src/org/jmol/console/ScriptEditor.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/console/ScriptEditor.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -327,11 +327,11 @@ if (source == runButton) { notifyScriptStart(); String s = editor.getText(); - jmolConsole.execute(s + "\0##"); + jmolConsole.execute(s + "\1##"); return; } if (source == pauseButton) { - jmolConsole.execute("!pause\0##"); + jmolConsole.execute("!pause\1##"); return; } if (source == resumeButton) { @@ -399,13 +399,13 @@ public void doStep() { boolean isPaused = viewer.getBooleanProperty("executionPaused"); - jmolConsole.execute(isPaused ? "!step\0##" - : editor.getText() + "\0##SCRIPT_STEP\n##SCRIPT_START=" + editor.getCaretPosition()); + jmolConsole.execute(isPaused ? "!step\1##" + : editor.getText() + "\1##SCRIPT_STEP\n##SCRIPT_START=" + editor.getCaretPosition()); } protected void doResume() { editor.clearContent(); - jmolConsole.execute("!resume\0##"); + jmolConsole.execute("!resume\1##"); } private void gotoPosition(int i, int j) { editor.scrollRectToVisible(new Rectangle(i, j)); Modified: trunk/Jmol/src/org/jmol/modelset/AtomCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/modelset/AtomCollection.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -1513,6 +1513,9 @@ BitSet bs = new BitSet(); BitSet bsInfo, bsTemp; int iSpec; + + // this first set does not assume sequential order in the file + switch (tokType) { case Token.atomno: iSpec = ((Integer) specInfo).intValue(); @@ -1609,30 +1612,6 @@ if (isInLatticeCell(i, cell)) bs.set(i); return bs; - case Token.group: - bsInfo = (BitSet) specInfo; - Group groupLast = null; - for (int i = atomCount; --i >= 0;) { - if (!bsInfo.get(i)) - continue; - Atom atom = atoms[i]; - Group group = atom.getGroup(); - if (group != groupLast) { - group.selectAtoms(bs); - groupLast = group; - } - } - return bs; - case Token.model: - bsInfo = (BitSet) specInfo; - bsTemp = new BitSet(); - for (int i = atomCount; --i >= 0;) - if (bsInfo.get(i)) - bsTemp.set(atoms[i].modelIndex); - for (int i = atomCount; --i >= 0;) - if (bsTemp.get(atoms[i].modelIndex)) - bs.set(i); - return bs; case Token.element: bsInfo = (BitSet) specInfo; bsTemp = new BitSet(); @@ -1674,64 +1653,87 @@ return getSpecName((String) specInfo); } - // these next require careful iteration + // these next assume sequential position in the file + // speeding delivery -- Jmol 11.9.24 bsInfo = (BitSet) specInfo; - int iLast = BitSetUtil.firstSetBit(bsInfo); - int j; - if (iLast < 0) + int i0 = BitSetUtil.firstSetBit(bsInfo); + if (i0 < 0) return bs; switch (tokType) { + case Token.group: + for (int i = i0; i < atomCount; i++) + if (bsInfo.get(i)) + i = atoms[i].getGroup().selectAtoms(bs); + return bs; + case Token.model: + for (int i = i0; i < atomCount; i++) { + if (bs.get(i) || !bsInfo.get(i)) + continue; + int iModel = atoms[i].modelIndex; + bs.set(i); + for (int j = i; --j >= 0;) + if (atoms[j].modelIndex == iModel) + bs.set(j); + else + break; + for (; ++i < atomCount;) + if (atoms[i].modelIndex == iModel) + bs.set(i); + else + break; + } + return bs; case Token.chain: - for (int i = iLast; i < atomCount; i++) { + for (int i = i0; i < atomCount; i++) { if (bs.get(i) || !bsInfo.get(i)) continue; Chain chain = atoms[i].getChain(); bs.set(i); - for (j = i; --j >= 0;) + for (int j = i; --j >= 0;) if (atoms[j].getChain() == chain) bs.set(j); else break; - for (j = i; ++j < atomCount;) - if (atoms[j].getChain() == chain) - bs.set(j); + for (; ++i < atomCount;) + if (atoms[i].getChain() == chain) + bs.set(i); else break; } return bs; case Token.polymer: - for (int i = iLast; i < atomCount; i++) { + for (int i = i0; i < atomCount; i++) { if (bs.get(i) || !bsInfo.get(i)) continue; int iPolymer = atoms[i].getPolymerIndexInModel(); bs.set(i); - for (j = i; --j >= 0;) + for (int j = i; --j >= 0;) if (atoms[j].getPolymerIndexInModel() == iPolymer) bs.set(j); else break; - for (j = i; ++j < atomCount;) - if (atoms[j].getPolymerIndexInModel() == iPolymer) - bs.set(j); + for (; ++i < atomCount;) + if (atoms[i].getPolymerIndexInModel() == iPolymer) + bs.set(i); else break; } return bs; case Token.structure: - for (int i = iLast; i < atomCount; i++) { + for (int i = i0; i < atomCount; i++) { if (bs.get(i) || !bsInfo.get(i)) continue; Object structure = atoms[i].getGroup().getStructure(); bs.set(i); - for (j = i; --j >= 0;) + for (int j = i; --j >= 0;) if (atoms[j].getGroup().getStructure() == structure) bs.set(j); else break; - for (j = i; ++j < atomCount;) - if (atoms[j].getGroup().getStructure() == structure) - bs.set(j); + for (; ++i < atomCount;) + if (atoms[i].getGroup().getStructure() == structure) + bs.set(i); else break; } Modified: trunk/Jmol/src/org/jmol/modelset/Group.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/Group.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/modelset/Group.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -307,9 +307,10 @@ return (char)(seqcode & INSERTION_CODE_MASK); } - public final void selectAtoms(BitSet bs) { + public final int selectAtoms(BitSet bs) { for (int i = firstAtomIndex; i <= lastAtomIndex; ++i) bs.set(i); + return lastAtomIndex; } public boolean isSelected(BitSet bs) { Modified: trunk/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -168,7 +168,7 @@ * @return cleaned script */ private String cleanScriptComments(String script) { - int pt = (script.indexOf("\0##")); + int pt = (script.indexOf("\1##")); if (pt >= 0) { // these are for jmolConsole and scriptEditor scriptExtensions = script.substring(pt + 1); Modified: trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -6575,8 +6575,8 @@ setShapeProperty(JmolConstants.SHAPE_ECHO, "image", image); text = null; } - } else if (text.startsWith("\0")) { - // no reporting, just screen echo + } else if (text.startsWith("\1") ) { + // no reporting, just screen echo, from mouseManager key press text = text.substring(1); isImage = true; } @@ -6670,8 +6670,7 @@ strLabel = "%U"; else if (strLabel.equalsIgnoreCase("off")) strLabel = null; - viewer.loadShape(JmolConstants.SHAPE_HOVER); - setShapeProperty(JmolConstants.SHAPE_HOVER, "label", strLabel); + viewer.setHover(strLabel); } private void load() throws ScriptException { @@ -8087,13 +8086,30 @@ } private void translateSelected() throws ScriptException { + // deprecated // translateSelected {x y z} Point3f pt = getPoint3f(1, true); if (!isSyntaxCheck) - viewer.setAtomCoordRelative(pt); + viewer.setAtomCoordRelative(pt, null); } private void translate() throws ScriptException { + // translate X|Y|Z x.x [NM|ANGSTROMS] + // translate X|Y x.x% + // translate {x y z} # selected implied + // translate {x y z} {atomExpression} + if (isPoint3f(1)) { + Point3f pt = getPoint3f(1, true); + BitSet bs = (iToken + 1 < statementLength ? expression(++iToken) : null); + checkLast(iToken); + if (isSyntaxCheck) + return; + if (bs == null) + viewer.setAtomCoordRelative(pt, null); + else + viewer.setAtomCoordRelative(pt, bs); + return; + } char type = (optParameterAsString(3).toLowerCase() + '\0').charAt(0); checkLength(type == '\0' ? 3 : 4); float percent = floatParameter(2); @@ -11282,7 +11298,7 @@ } else if (data == "SPT") { if (isCoord) { BitSet tainted = viewer.getTaintedAtoms(AtomCollection.TAINT_COORD); - viewer.setAtomCoordRelative(new Point3f(0, 0, 0)); + viewer.setAtomCoordRelative(new Point3f(0, 0, 0), null); data = (String) viewer.getProperty("string", "stateInfo", null); viewer.setTaintedAtoms(tainted, AtomCollection.TAINT_COORD); } else { Modified: trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -2414,10 +2414,10 @@ // String % -n trim to width n; left justify // String % n trim to width n; right justify // Point3f % n ah... sets to multiple of unit cell! - // bitset % n + // bitset % n // Point3f * Point3f does dot product // Point3f / Point3f divides by magnitude - // float * Point3f gets magnitude + // float * Point3f gets m agnitude // Point4f % n returns q0, q1, q2, q3, or theta // Point4f % Point4f s = null; Modified: trunk/Jmol/src/org/jmol/shape/Frank.java =================================================================== --- trunk/Jmol/src/org/jmol/shape/Frank.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/shape/Frank.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -63,7 +63,7 @@ } public boolean checkObjectHovered(int x, int y, BitSet bsVisible) { - if (!wasClicked(x, y)) + if (!wasClicked(x, y) || !viewer.menuEnabled()) return false; if (g3d.isDisplayAntialiased()) { //because hover rendering is done in FIRST pass only Modified: trunk/Jmol/src/org/jmol/viewer/ActionManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ActionManager.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/viewer/ActionManager.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -554,6 +554,8 @@ checkAction(Binding.getMouseAction(0, mods), current.x, current.y, 0, rotation, time, 3); } + private boolean haveSelection; + void mousePressed(long time, int x, int y, int mods) { setCurrent(time, x, y, mods); pressedCount = (pressed.check(x, y, mods, time, MAX_DOUBLE_CLICK_MILLIS) @@ -580,10 +582,11 @@ return; } if (dragSelectedMode) { + haveSelection = true; if (isSelectAndDrag) { - checkPointOrAtomClicked(x, y, mods, clickedCount); + haveSelection = checkPointOrAtomClicked(x, y, mods, pressedCount); } - if (isBound(action, ACTION_dragSelected)) { + if (isBound(action, ACTION_dragSelected) && haveSelection) { viewer.moveSelected(Integer.MIN_VALUE, 0, 0, 0, false); } return; @@ -647,7 +650,7 @@ viewer.checkObjectDragged(Integer.MAX_VALUE, 0, x, y, action); return; } - if (dragSelectedMode && isBound(action, ACTION_dragSelected)) + if (dragSelectedMode && isBound(action, ACTION_dragSelected) && haveSelection) viewer.moveSelected(Integer.MAX_VALUE, 0, 0, 0, false); if (dragRelease && checkUserAction(action, x, y, 0, 0, time, 2)) @@ -746,6 +749,12 @@ return; } + if (dragSelectedMode && isBound(action, ACTION_dragSelected) && haveSelection) { + checkMotion(Viewer.CURSOR_MOVE); + viewer.moveSelected(deltaX, deltaY, x, y, true); + return; + } + if (checkMotionRotateZoom(action, x, deltaX, deltaY, true)) { viewer.zoomBy(deltaY); return; @@ -758,12 +767,6 @@ return; } - if (dragSelectedMode && isBound(action, ACTION_dragSelected)) { - checkMotion(Viewer.CURSOR_MOVE); - viewer.moveSelected(deltaX, deltaY, x, y, true); - return; - } - if (viewer.allowRotateSelected() && isBound(action, ACTION_rotateSelected)) { float degX = ((float) deltaX) / viewer.getScreenWidth() * 180; float degY = ((float) deltaY) / viewer.getScreenHeight() * 180; @@ -880,16 +883,16 @@ * SLIDE_ZOOM_X_PERCENT / 100f; } - private void checkPointOrAtomClicked(int x, int y, int mods, int clickedCount) { + private boolean checkPointOrAtomClicked(int x, int y, int mods, int clickedCount) { if (!viewer.haveModelSet()) - return; + return false; // points are always picked up first, then atoms // so that atom picking can be superceded by draw picking int action = Binding.getMouseAction(clickedCount, mods); if (action != 0) { action = viewer.notifyMouseClicked(x, y, action); if (action == 0) - return; + return false; } Point3fi nearestPoint = null; int tokType = 0; @@ -901,7 +904,7 @@ } } if (nearestPoint != null && Float.isNaN(nearestPoint.x)) - return; + return false; int nearestAtomIndex = (drawMode || nearestPoint != null ? -1 : viewer.findNearestAtomIndex(x, y)); if (nearestAtomIndex >= 0 @@ -912,26 +915,26 @@ if (clickedCount == 0) { // mouse move if (measurementPending == null) - return; + return (nearestAtomIndex >= 0); if (nearestPoint != null || measurementPending.getIndexOf(nearestAtomIndex) == 0) measurementPending.addPoint(nearestAtomIndex, nearestPoint, false); if (measurementPending.haveModified()) viewer.setPendingMeasurement(measurementPending); viewer.refresh(3, "measurementPending"); - return; + return (nearestAtomIndex >= 0); } setMouseMode(); if (isBound(action, ACTION_clickFrank) && viewer.frankClicked(x, y)) { viewer.popupMenu(-x, y); - return; + return false; } if (viewer.getNavigationMode() && pickingMode == JmolConstants.PICKING_NAVIGATE && isBound(action, ACTION_pickNavigate)) { viewer.navTranslatePercent(0f, x * 100f / viewer.getScreenWidth() - 50f, y * 100f / viewer.getScreenHeight() - 50f); - return; + return false; } if (measurementPending != null && isBound(action, ACTION_pickMeasure)) { @@ -940,7 +943,7 @@ clickedCount = 0; toggleMeasurement(); } - return; + return false; } if (isBound(action, ACTION_setMeasure)) { if (measurementPending != null) { @@ -952,24 +955,25 @@ addToMeasurement(nearestAtomIndex, nearestPoint, true); } atomPicked(nearestAtomIndex, nearestPoint, action); - return; + return false; } if (isBound(action, ACTION_deleteBond) && tokType == Token.bonds) { BitSet bs = new BitSet(); bs.set(nearestPoint.index); viewer.deleteBonds(bs); - return; + return false; } if (isBound(action, ACTION_pickAtom) || isBound(action, ACTION_pickPoint)) { // TODO: in drawMode the binding changes atomPicked(nearestAtomIndex, nearestPoint, action); - return; + return (nearestAtomIndex >= 0); } if (isBound(action, ACTION_reset)) { if (nearestAtomIndex < 0) viewer.script("!reset"); - return; + return false; } + return (nearestAtomIndex >= 0); } protected void checkMotion(int cursor) { @@ -1070,10 +1074,7 @@ this.name = name; this.ms = ms; this.script = script; - Thread.currentThread().setName("timeout " + name); targetTime = System.currentTimeMillis() + Math.abs(ms); - if (Logger.debugging) - Logger.debug(toString()); } void set(int ms, String script) { @@ -1084,33 +1085,39 @@ public String toString() { return "timeout name=" + name + " executions=" + status + " mSec=" + ms - + " secRemaining=" + (targetTime - System.currentTimeMillis())/1000f + " script=" + script; + + " secRemaining=" + (targetTime - System.currentTimeMillis())/1000f + " script=" + script + " thread=" + Thread.currentThread().getName(); } public void run() { if (script == null || script.length() == 0 || ms == 0) return; + System.out.println("I am the timeout thread, and my name is " + Thread.currentThread().getName()); + Thread.currentThread().setName("timeout " + name); + //if (true || Logger.debugging) + //Logger.info(toString()); Thread.currentThread().setPriority(Thread.MIN_PRIORITY); try { while (true) { - Thread.sleep(10); + Thread.sleep(50); if (targetTime > System.currentTimeMillis()) continue; status++; targetTime += Math.abs(ms); if (ms > 0) timeouts.remove(name); - if (Logger.debugging) - viewer.script(script); - else + System.out.println("I'm going to execute " + script + " now"); + //if (Logger.debugging) + //viewer.script(script); + //else viewer.evalStringQuiet(script); + System.out.println("I'm done"); if (ms > 0) break; } } catch (InterruptedException ie) { - Logger.debug("Timeout " + name + " interrupted"); + Logger.info("Timeout " + name + " interrupted"); } catch (Exception ie) { - Logger.debug("Timeout " + name + " Exception: " + ie); + Logger.info("Timeout " + name + " Exception: " + ie); } timeouts.remove(name); } @@ -1135,6 +1142,8 @@ try { while (Thread.currentThread().equals(hoverWatcherThread) && (hoverDelay = viewer.getHoverDelay()) > 0) { Thread.sleep(hoverDelay); + if (!viewer.isHoverEnabled()) + continue; if (current.x == moved.x && current.y == moved.y && current.time == moved.time) { // the last event was mouse // move @@ -1242,6 +1251,7 @@ return; } int n = 2; + System.out.println("ActionManager atomPicked mode=" + pickingMode); switch (pickingMode) { case JmolConstants.PICKING_OFF: return; @@ -1317,23 +1327,27 @@ case JmolConstants.PICKING_SELECT_ATOM: applySelectStyle(spec, action); break; - case JmolConstants.PICKING_SELECT_POLYMER: - applySelectStyle("within(polymer, " + spec + ")", action); + case JmolConstants.PICKING_SELECT_GROUP: + applySelectStyle("within(group, " + spec + ")", action); break; case JmolConstants.PICKING_SELECT_CHAIN: applySelectStyle("within(chain, " + spec + ")", action); break; - case JmolConstants.PICKING_SELECT_ELEMENT: - applySelectStyle("visible and within(element, " + spec + ")", action); + case JmolConstants.PICKING_SELECT_POLYMER: + applySelectStyle("within(polymer, " + spec + ")", action); break; - case JmolConstants.PICKING_SELECT_GROUP: - applySelectStyle("within(group, " + spec + ")", action); + case JmolConstants.PICKING_SELECT_STRUCTURE: + applySelectStyle("within(structure, " + spec + ")", action); break; + case JmolConstants.PICKING_SELECT_MOLECULE: + applySelectStyle("within(molecule, " + spec + ")", action); + break; case JmolConstants.PICKING_SELECT_MODEL: applySelectStyle("within(model, " + spec + ")", action); break; - case JmolConstants.PICKING_SELECT_MOLECULE: - applySelectStyle("visible and within(molecule, " + spec + ")", action); + // only the next two use VISIBLE (as per the documentation) + case JmolConstants.PICKING_SELECT_ELEMENT: + applySelectStyle("visible and within(element, " + spec + ")", action); break; case JmolConstants.PICKING_SELECT_SITE: applySelectStyle("visible and within(site, " + spec + ")", action); @@ -1403,7 +1417,9 @@ : isBound(action, ACTION_select) ? "" : null); if (s == null) return; - viewer.script("select " + s + "(" + item + ")"); + String script = "select " + s + "(" + item + ")"; + System.out.println("ActionManager applySelectStyle " + script); + viewer.script(script); } protected class MotionPoint { Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2010-01-30 00:46:44 UTC (rev 12262) @@ -3,10 +3,12 @@ version=11.9.24_dev +# bug fix: within molecule was using undocumented "visible" +# new feature: set picking select structure # new feature: set picking select polymer # new feature: print {*}.polymer # new feature: select within(polymer, ...) -# new feature: set pickingstyle drag makes the right button a click-and-drag button +# new feature: set pickingstyle drag makes the LEFT button a click-and-drag button # when associated also with: # # set pickingsyle drag Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -92,7 +92,7 @@ return "\n/**" + EMBEDDED_SCRIPT_TAG + " \n" + s + "\n**/"; } - public static final String SCRIPT_EDITOR_IGNORE = "\0## EDITOR_IGNORE ##"; + public static final String SCRIPT_EDITOR_IGNORE = "\1## EDITOR_IGNORE ##"; public final static int CALLBACK_ANIMFRAME = 0; public final static int CALLBACK_ECHO = 1; @@ -290,22 +290,23 @@ public final static int PICKING_SELECT_CHAIN = 10; public final static int PICKING_SELECT_MOLECULE = 11; public final static int PICKING_SELECT_POLYMER = 12; - public final static int PICKING_SELECT_SITE = 13; - public final static int PICKING_SELECT_MODEL = 14; - public final static int PICKING_SELECT_ELEMENT = 15; - public final static int PICKING_MEASURE = 16; - public final static int PICKING_MEASURE_DISTANCE = 17; - public final static int PICKING_MEASURE_ANGLE = 18; - public final static int PICKING_MEASURE_TORSION = 19; - public final static int PICKING_NAVIGATE = 20; - public final static int PICKING_CONNECT = 21; - public final static int PICKING_STRUTS = 22; + public final static int PICKING_SELECT_STRUCTURE = 13; + public final static int PICKING_SELECT_SITE = 14; + public final static int PICKING_SELECT_MODEL = 15; + public final static int PICKING_SELECT_ELEMENT = 16; + public final static int PICKING_MEASURE = 17; + public final static int PICKING_MEASURE_DISTANCE = 18; + public final static int PICKING_MEASURE_ANGLE = 19; + public final static int PICKING_MEASURE_TORSION = 20; + public final static int PICKING_NAVIGATE = 21; + public final static int PICKING_CONNECT = 22; + public final static int PICKING_STRUTS = 23; private final static String[] pickingModeNames = { "off", "identify", "label", "center", "draw", "spin", "symmetry", "deletebond", - "atom", "group", "chain", "molecule", "polymer", + "atom", "group", "chain", "molecule", "polymer", "structure", "site", "model", "element", "measure", "distance", "angle", "torsion", "navigate", "connect", "struts" Modified: trunk/Jmol/src/org/jmol/viewer/MouseManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/MouseManager.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/viewer/MouseManager.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -90,7 +90,7 @@ if (viewer.getBooleanProperty("showKeyStrokes")) viewer .evalStringQuiet("!set echo _KEYSTROKES; set echo bottom left;echo " - + Escape.escape("\0" + keyBuffer)); + + Escape.escape("\1" + keyBuffer)); } private void sendKeyBuffer() { @@ -107,7 +107,7 @@ if (Logger.debugging) Logger.debug("ActionmManager keyTyped: " + ke.getKeyCode()); ke.consume(); - if (viewer.getDisablePopupMenu()) + if (!viewer.menuEnabled()) return; char ch = ke.getKeyChar(); int modifiers = ke.getModifiers() & Binding.CTRL_ALT; Modified: trunk/Jmol/src/org/jmol/viewer/RepaintManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/RepaintManager.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/viewer/RepaintManager.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -49,10 +49,12 @@ void pushHoldRepaint() { ++holdRepaint; + //System.out.println("repaintManager pushHoldRepaint holdRepaint=" + holdRepaint + " thread=" + Thread.currentThread().getName()); } void popHoldRepaint() { --holdRepaint; + //System.out.println("repaintManager popHoldRepaint holdRepaint=" + holdRepaint + " thread=" + Thread.currentThread().getName()); if (holdRepaint <= 0) { holdRepaint = 0; repaintPending = true; @@ -65,6 +67,7 @@ return false; repaintPending = true; if (holdRepaint == 0) { + //System.out.println("repaintManager refresh holdRepaint=" + holdRepaint + " thread=" + Thread.currentThread().getName()); viewer.repaint(); } return true; @@ -73,19 +76,24 @@ synchronized void requestRepaintAndWait() { viewer.repaint(); try { + //System.out.println("repaintManager requestRepaintAndWait I am waiting for a repaint: thread=" + Thread.currentThread().getName()); wait(); } catch (InterruptedException e) { + //System.out.println("repaintManager requestRepaintAndWait interrupted thread=" + Thread.currentThread().getName()); } + //System.out.println("repaintManager requestRepaintAndWait I am no longer waiting for a repaint: thread=" + Thread.currentThread().getName()); } synchronized void repaintDone() { repaintPending = false; + //System.out.println("repaintManager repaintDone thread=" + Thread.currentThread().getName()); notify(); // to cancel any wait in requestRepaintAndWait() } void render(Graphics3D g3d, ModelSet modelSet) {// , Rectangle rectClip if (!viewer.getRefreshing()) return; + //System.out.println("repaintManager render thread=" + Thread.currentThread().getName()); render1(g3d, modelSet); // , rectClip Rectangle band = viewer.getRubberBandSelection(); if (band != null && g3d.setColix(viewer.getColixRubberband())) Modified: trunk/Jmol/src/org/jmol/viewer/ScriptManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ScriptManager.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/viewer/ScriptManager.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -88,9 +88,11 @@ scriptItem.addElement(isQuiet ? Boolean.TRUE : Boolean.FALSE); scriptItem.addElement(new Integer(useCommandThread ? -1 : 1)); scriptQueue.addElement(scriptItem); - if (Logger.debugging) - Logger.info(scriptQueue.size() + " scripts; added: " + strScript); + //if (Logger.debugging) + // Logger.info("ScriptManager queue size=" + scriptQueue.size() + " scripts; added: " + // + strScript + " " + Thread.currentThread().getName()); startScriptQueue(false); + System.out.println("ScriptManager queue 'pending'"); return "pending"; } Modified: trunk/Jmol/src/org/jmol/viewer/TransformManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/TransformManager.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/viewer/TransformManager.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -2083,7 +2083,7 @@ while (!isInterrupted() && !viewer.getRefreshing()) { Thread.sleep(10); } - viewer.refresh(1, "TransformationManager:SpinThread:run()"); + viewer.refresh(1, "SpinThread:run()"); if (!isNav && (nDegrees >= endDegrees - 0.00001)) setSpinOn(false); } @@ -2203,7 +2203,7 @@ elapsed = (int) (currentTime - startTime); float t = (float) (elapsed % vibrationPeriodMs) / vibrationPeriodMs; setVibrationT(t); - viewer.refresh(3, "TransformationManager:VibrationThread:run()"); + viewer.refresh(3, "VibrationThread:run()"); } while (!isInterrupted()); } catch (Exception e) { //may be arithmetic %0/0 } Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -1254,9 +1254,8 @@ } public String getOrientationText(int type, String name) { - return (name == null ? - transformManager.getOrientationText(type) - : stateManager.getSavedOrientationText(name)); + return (name == null ? transformManager.getOrientationText(type) + : stateManager.getSavedOrientationText(name)); } Hashtable getOrientationInfo() { @@ -1285,7 +1284,8 @@ private void setDefaultColors(String colorScheme) { colorManager.setDefaultColors(colorScheme); - global.setParameterValue("colorRasmol", (colorScheme.equalsIgnoreCase("rasmol"))); + global.setParameterValue("colorRasmol", (colorScheme + .equalsIgnoreCase("rasmol"))); } public float getDefaultTranslucent() { @@ -1874,7 +1874,9 @@ newLine = 0; } if (newLine != 0) - Logger.info("loading model inline, " + strModel.length() + " bytes, with newLine character " + (int) newLine + " isAppend=" + isAppend); + Logger.info("loading model inline, " + strModel.length() + + " bytes, with newLine character " + (int) newLine + " isAppend=" + + isAppend); Logger.debug(strModel); String rep = (strModel.indexOf('\n') >= 0 ? "" : "\n"); if (newLine != 0 && newLine != '\n') { @@ -2312,6 +2314,7 @@ reset(); selectAll(); noneSelected = false; + hoverEnabled = true; transformManager.setCenter(); clearAtomSets(); animationManager.initializePointers(1); @@ -3324,7 +3327,7 @@ if (inMotion) { ++motionEventNumber; } else { - repaintManager.refresh(); + refresh(3, "viewer stInMotion " + inMotion); } wasInMotion = inMotion; } @@ -3340,6 +3343,7 @@ } public void pushHoldRepaint(String why) { + Logger.info("viewer pushHoldRepaint " + why); repaintManager.pushHoldRepaint(); } @@ -3348,6 +3352,7 @@ } public void popHoldRepaint(String why) { + //System.out.println("viewer popHoldRepaint " + why); repaintManager.popHoldRepaint(); } @@ -3389,7 +3394,8 @@ * */ public void refresh(int mode, String strWhy) { - // System.out.println(strWhy); + //System.out.println("viewer refresh-----------------------------------------------------------" + Thread.currentThread().getName() + " " + strWhy); + //System.out.flush(); // refresh(2) indicates this is a mouse motion -- not going through Eval // so we bypass Eval and mainline on the other viewer! // refresh(-1) is used in stateManager to force no repaint @@ -3403,6 +3409,11 @@ } public void requestRepaintAndWait() { + // called by moveUpdate from move, moveTo, navigate, navigateSurface, navTranslate + // called by ScriptEvaluator "refresh" command + // called by AnimationThread run() + // called by TransformationManager move and moveTo + // called by TransformationManager11 navigate, navigateSurface, navigateTo if (!haveDisplay) return; repaintManager.requestRepaintAndWait(); @@ -3533,7 +3544,8 @@ // directly, only from the other applet. // this is for relatively specialized geoWall-type installations - //System.out.println(Thread.currentThread() + "render Screen Image " + creatingImage); + // System.out.println(Thread.currentThread() + "render Screen Image " + + // creatingImage); if (!creatingImage) { if (isTainted || getSlabEnabled()) setModelVisibility(); @@ -3552,11 +3564,29 @@ render1(gLeft, getImage(false), 0, 0); } } - //System.out.println(Thread.currentThread() + "notifying repaintManager repaint is done"); + // System.out.println(Thread.currentThread() + + // "notifying repaintManager repaint is done"); notifyViewerRepaintDone(); } + + public void renderScreenImage(Graphics g, Dimension size, Rectangle clip) { + /* Jmol repaint/update system: + * + * threads invoke viewer.refresh() + * --> repaintManager.refresh() + * --> viewer.repaint() + * --> display.repaint() --> OS event queue + * | + * Jmol.paint() <-- + * viewer.renderScreenImage() <-- + * viewer.notifyViewerRepaintDone() <-- + * repaintManager.repaintDone()<-- + * which sets repaintPending false and does notify(); + * + * + */ renderScreenImage(g, null, size, clip); } @@ -3643,7 +3673,7 @@ * @return base64-encoded or binary version of the image */ Object getImageAs(String type, int quality, int width, int height, - String fileName, OutputStream os, String comment) { + String fileName, OutputStream os, String comment) { int saveWidth = dimScreen.width; int saveHeight = dimScreen.height; mustRender = true; @@ -3752,6 +3782,7 @@ // initiated WITHIN this applet (not sent to it) // we append #NOSYNC; here so that the receiving applet does not attempt // to pass it back to us or any other applet. + //System.out.println("OK, I'm in evalStringQUiet"); if (allowSyncScript && statusManager.syncingScripts && strScript.indexOf("#NOSYNC;") < 0) syncScript(strScript + " #NOSYNC;", null); @@ -3778,8 +3809,8 @@ private String checkScriptExecution(String strScript) { String str = strScript; - if (str.indexOf("\0##") >= 0) - str = str.substring(0, str.indexOf("\0##")); + if (str.indexOf("\1##") >= 0) + str = str.substring(0, str.indexOf("\1##")); if (checkResume(str)) return "script processing resumed"; if (checkStepping(str)) @@ -3954,7 +3985,7 @@ private Object scriptCheck(String strScript, boolean returnContext) { // from ConsoleTextPane.checkCommand() and applet Jmol.scriptProcessor() if (strScript.indexOf(")") == 0 || strScript.indexOf("!") == 0) // history - // disabled + // disabled strScript = strScript.substring(1); ScriptContext sc = (new ScriptEvaluator(this)).checkScriptSilent(strScript); if (returnContext || sc.errorMessage == null) @@ -4043,10 +4074,12 @@ String modelnumber = getModelNumberDotted(modelIndex); int atomno = modelSet.getAtomCountInModel(modelIndex); boolean wasAppendNew = getAppendNew(); - String s = "set appendNew false;data \"append 1\"\n" + pts.length + "\nadded hydrogens"; + String s = "set appendNew false;data \"append 1\"\n" + pts.length + + "\nadded hydrogens"; for (int i = 0; i < pts.length; i++) - s += "\nH " + pts[i].x + " " + pts[i].y + " " + pts[i].z + " - - - - " + (++atomno); - s += "\nend \"append 1\";connect 1.3 {not _H and */" + modelnumber + s += "\nH " + pts[i].x + " " + pts[i].y + " " + pts[i].z + " - - - - " + + (++atomno); + s += "\nend \"append 1\";connect 1.3 {not _H and */" + modelnumber + "} {hydrogen} create;set appendNew " + wasAppendNew; evalStringQuiet(s); } @@ -4062,8 +4095,21 @@ int hoverAtomIndex = -1; String hoverText; + boolean hoverEnabled = true; + public boolean isHoverEnabled() { + return hoverEnabled; + } + + public void setHover(String strLabel) { + loadShape(JmolConstants.SHAPE_HOVER); + setShapeProperty(JmolConstants.SHAPE_HOVER, "label", strLabel); + hoverEnabled = (strLabel != null); + } + void hoverOn(int atomIndex, int action) { + if (!hoverEnabled) + return; if (eval != null && isScriptExecuting() || atomIndex == hoverAtomIndex || global.hoverDelayMs == 0) return; @@ -4092,6 +4138,8 @@ } public void hoverOn(int x, int y, String text) { + if (!hoverEnabled) + return; // from draw for drawhover on if (eval != null && isScriptExecuting()) return; @@ -4106,6 +4154,8 @@ } void hoverOff() { + if (!hoverEnabled) + return; if (hoverAtomIndex >= 0) { setShapeProperty(JmolConstants.SHAPE_HOVER, "target", null); hoverAtomIndex = -1; @@ -4347,6 +4397,10 @@ return statusManager.getStatusChanged(statusNameList); } + public boolean menuEnabled() { + return !global.disablePopupMenu; + } + void popupMenu(int x, int y) { if (isPreviewOnly || global.disablePopupMenu) return; @@ -4890,7 +4944,7 @@ if (key.charAt(0) == '_') { global.setParameterValue(key, value); return; - } + } Token t = Token.getTokenFromName(key.toLowerCase()); setStringProperty(key, t == null ? Token.nada : t.tok, value); } @@ -5028,12 +5082,13 @@ key = key.toLowerCase(); if (global.htNonbooleanParameterValues.containsKey(key)) { global.setParameterValue(key, value); - } else if (!found && key.charAt(0) != '@' + } else if (!found + && key.charAt(0) != '@' // not found -- @ is a silent mode indicator && (global.htBooleanParameterFlags.containsKey(key) || global.htPropertyFlagsRemoved .containsKey(key))) { - // setPropertyError(GT._( - // "ERROR: cannot set boolean flag to string value: {0}", key)); + // setPropertyError(GT._( + // "ERROR: cannot set boolean flag to string value: {0}", key)); } else { global.setUserVariable(key, new ScriptVariable(Token.string, value)); } @@ -5050,7 +5105,8 @@ setFloatProperty(key, (t == null ? Token.nada : t.tok), value, false); } - public boolean setFloatProperty(String key, int tok, float value, boolean isInt) { + public boolean setFloatProperty(String key, int tok, float value, + boolean isInt) { boolean found = true; switch (tok) { case Token.strutlengthmaximum: @@ -5185,8 +5241,8 @@ if (global.htNonbooleanParameterValues.containsKey(key)) global.setParameterValue(key, value); else if (!found && global.htBooleanParameterFlags.containsKey(key)) { - // setPropertyError(GT._( - // "ERROR: cannot set boolean flag to numeric value: {0}", key)); + // setPropertyError(GT._( + // "ERROR: cannot set boolean flag to numeric value: {0}", key)); } else { global.setUserVariable(key, new ScriptVariable(Token.decimal, new Float( value))); @@ -5209,9 +5265,9 @@ boolean found = true; switch (tok) { case Token.propertyatomnumbercolumncount: - case Token.propertyatomnumberfield: // 11.6.RC16 - case Token.ellipsoiddotcount: // 11.5.30 - case Token.propertydatafield: // 11.1.31 + case Token.propertyatomnumberfield: // 11.6.RC16 + case Token.ellipsoiddotcount: // 11.5.30 + case Token.propertydatafield: // 11.1.31 // just save in the hashtable, not in global break; case Token.strutspacing: @@ -5324,13 +5380,13 @@ if (global.htNonbooleanParameterValues.containsKey(key)) { global.setParameterValue(key, value); } else if (!found && global.htBooleanParameterFlags.containsKey(key)) { - //setPropertyError(GT._( - // "ERROR: cannot set boolean flag to numeric value: {0}", key)); + // setPropertyError(GT._( + // "ERROR: cannot set boolean flag to numeric value: {0}", key)); } else { global.setUserVariable(key, ScriptVariable.intVariable(value)); } } - + public void setBooleanProperty(String key, boolean value) { if (key.charAt(0) == '_') { global.setParameterValue(key, value); @@ -5339,7 +5395,7 @@ Token t = Token.getTokenFromName(key.toLowerCase()); setBooleanProperty(key, (t == null ? Token.nada : t.tok), value, true); } - + private boolean setBooleanProperty(String key, int tok, boolean value, boolean defineNew) { boolean found = true; @@ -5356,7 +5412,8 @@ break; case Token.filecaching: // 11.9.21 - // not implemented -- application only -- CANNOT BE SET BY STATE global.atomTypes = value; + // not implemented -- application only -- CANNOT BE SET BY STATE + // global.atomTypes = value; break; case Token.slabbyatom: // 11.9.19 @@ -5480,8 +5537,7 @@ break; case Token.usenumberlocalization: // 11.1.21 - TextFormat - .setUseNumberLocalization(global.useNumberLocalization = value); + TextFormat.setUseNumberLocalization(global.useNumberLocalization = value); break; case Token.frank: key = "showFrank"; @@ -5735,7 +5791,7 @@ break; case Token.nada: default: - doRepaint = false; // ?? + doRepaint = false; // ?? found = false; } if (!defineNew) @@ -5745,8 +5801,8 @@ if (isJmol) global.setParameterValue(key, value); else if (!found && global.htNonbooleanParameterValues.containsKey(key)) { - //setPropertyError(GT._( - // "ERROR: Cannot set value of this variable to a boolean: {0}", key)); + // setPropertyError(GT._( + // "ERROR: Cannot set value of this variable to a boolean: {0}", key)); return true; } else { global.setUserVariable(key, ScriptVariable.getBoolean(value)); @@ -5758,7 +5814,7 @@ setTainted(true); return true; } - + /* * public void setFileCacheDirectory(String fileOrDir) { if (fileOrDir == * null) fileOrDir = ""; global._fileCache = fileOrDir; } @@ -6089,24 +6145,20 @@ setNavOn(false); setAnimationOn(false); /* - try { - System.out.println(Thread.currentThread() + " from " + fromWhere - + " stopanimatinoThreads -- waiting 1 second"); - Thread.sleep(1000); - } catch (InterruptedException e) { - // TODO - } - System.out.println(Thread.currentThread() - + "Viewer stopAnimationThread NOT canceling rendering"); - // cancelRendering(); + * try { System.out.println(Thread.currentThread() + " from " + fromWhere + + * " stopanimatinoThreads -- waiting 1 second"); Thread.sleep(1000); } catch + * (InterruptedException e) { // TODO } + * System.out.println(Thread.currentThread() + + * "Viewer stopAnimationThread NOT canceling rendering"); // + * cancelRendering(); */ - + } -// void cancelRendering() { - // if (haveDisplay) - // repaintManager.cancelRendering(); - //} + // void cancelRendering() { + // if (haveDisplay) + // repaintManager.cancelRendering(); + // } private void setNavigationMode(boolean TF) { global.navigationMode = TF; @@ -6204,9 +6256,9 @@ return global.autoBond; } - public int[] makeConnections(float minDistance, float maxDistance, - int order, int connectOperation, BitSet bsA, - BitSet bsB, BitSet bsBonds, boolean isBonds) { + public int[] makeConnections(float minDistance, float maxDistance, int order, + int connectOperation, BitSet bsA, BitSet bsB, + BitSet bsBonds, boolean isBonds) { // eval clearModelDependentObjects(); clearAllMeasurements(); // necessary for serialization @@ -6690,8 +6742,7 @@ // for getting and returning script data from the console and editor if ("DATA_API".equals(returnType)) { - switch ( - ("scriptCheck........." // 0 + switch (("scriptCheck........." // 0 + "scriptContext......." // 20 + "scriptEditor........" // 40 + "scriptEditorState..." // 60 @@ -6743,7 +6794,7 @@ return getSpaceGroupInfo(null); case 160: global.disablePopupMenu = true; // no false here, because it's a - // one-time setting + // one-time setting return null; case 180: return global.defaultDirectory; @@ -6943,7 +6994,7 @@ return modelSet.getModelCml(bs, nAtomsMax, addBonds); } - // synchronized here trapped the eventQueue + // synchronized here trapped the eventQueue public Object evaluateExpression(Object stringOrTokens) { return ScriptEvaluator.evaluateExpression(this, stringOrTokens); } @@ -7029,9 +7080,10 @@ // no measure refresh here -- because it may involve hundreds of calls } - public void setAtomCoordRelative(Point3f offset) { + public void setAtomCoordRelative(Point3f offset, BitSet bs) { // Eval - modelSet.setAtomCoordRelative(offset, selectionManager.bsSelection); + modelSet.setAtomCoordRelative(offset, + bs == null ? selectionManager.bsSelection : bs); refreshMeasures(); } @@ -7268,7 +7320,8 @@ public String createImage(String fileName, String type, Object text_or_bytes, int quality, int width, int height, BitSet bsFrames) { if (bsFrames == null) - return (String) createImage(fileName, type, text_or_bytes, quality, width, height); + return (String) createImage(fileName, type, text_or_bytes, quality, + width, height); int modelCount = getModelCount(); String info = ""; int n = 0; @@ -7283,8 +7336,8 @@ setCurrentModelIndex(i); fileName = "0000" + (++n); fileName = froot + fileName.substring(fileName.length() - 4) + fext; - String msg = (String) createImage(fileName, type, text_or_bytes, quality, width, - height); + String msg = (String) createImage(fileName, type, text_or_bytes, + quality, width, height); Logger.info(msg); info += msg + "\n"; if (!msg.startsWith("OK")) @@ -7345,7 +7398,7 @@ } creatingImage = true; Object err = null; - + try { if (fileName == null) { err = clipImage((String) text_or_bytes); @@ -7378,13 +7431,14 @@ c.setViewer(this, privateKey); err = c.createImage(fileName, type, text_or_bytes, quality); if (err instanceof String) - // report error status (text_or_bytes == null) - statusManager.createImage((String) err, type, null, quality); + // report error status (text_or_bytes == null) + statusManager.createImage((String) err, type, null, quality); } } } } catch (Throwable er) { - Logger.error(setErrorMessage((String) (err = "ERROR creating image: " + er))); + Logger.error(setErrorMessage((String) (err = "ERROR creating image: " + + er))); } creatingImage = false; if (quality != Integer.MIN_VALUE) { @@ -7621,7 +7675,7 @@ dataManager.deleteModelAtoms(firstAtomIndex, nAtoms, bsDeleted); } - public BitSet getDeletedAtoms() { + public BitSet getDeletedAtoms() { return selectionManager.bsDeleted; } @@ -7855,13 +7909,14 @@ // from RepaintManager if (display == null) return; - // System.out.println("applet test Viewer.java repaint()-->display.repaint() " - // + Thread.currentThread().getName() + " " + Thread.currentThread()); + //System.out.println("applet test Viewer.java repaint()-->display.repaint() " + //+ Thread.currentThread().getName()); display.repaint(); } public OutputStream getOutputStream(String localName) { - Object ret = createImage(localName, "OutputStream", null, Integer.MIN_VALUE, 0, 0); + Object ret = createImage(localName, "OutputStream", null, + Integer.MIN_VALUE, 0, 0); if (ret instanceof String) { Logger.error((String) ret); return null; @@ -7870,8 +7925,8 @@ } public int calculateStruts(BitSet bs1, BitSet bs2) { - return modelSet.calculateStruts(bs1 == null ? selectionManager.bsSelection : bs1, - bs2 == null ? selectionManager.bsSelection : bs2); + return modelSet.calculateStruts(bs1 == null ? selectionManager.bsSelection + : bs1, bs2 == null ? selectionManager.bsSelection : bs2); } public boolean getStrutsMultiple() { @@ -7889,21 +7944,19 @@ public float getStrutDefaultRadius() { return global.strutDefaultRadius; } - + /** * This flag if set FALSE: * - * 1) turns UNDO off for the application - * 2) turns history off - * 3) prevents saving of inlinedata for later LOAD "" commands - * 4) turns off the saving of changed atom properties - * 5) does not guarantee accurate state representation + * 1) turns UNDO off for the application 2) turns history off 3) prevents + * saving of inlinedata for later LOAD "" commands 4) turns off the saving of + * changed atom properties 5) does not guarantee accurate state representation * - * It is useful in situations such as web sites where - * memory is an issue and there is no need for such. + * It is useful in situations such as web sites where memory is an issue and + * there is no need for such. * * - * @return TRUE or FALSE + * @return TRUE or FALSE */ public boolean getPreserveState() { return global.preserveState; Modified: trunk/Jmol/src/org/jmol/viewer/binding/DragBinding.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/binding/DragBinding.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/jmol/viewer/binding/DragBinding.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -8,10 +8,9 @@ super("drag"); setSelectBindings(); - bind(DOWN+RIGHT, ActionManager.ACTION_selectAndDrag); - bind(SINGLE_CLICK+RIGHT, ActionManager.ACTION_dragSelected); - bind(SINGLE_CLICK+RIGHT, ActionManager.ACTION_pickAtom); - bind(SINGLE_CLICK+RIGHT, ActionManager.ACTION_select); + bind(DOWN+LEFT, ActionManager.ACTION_selectAndDrag); + bind(SINGLE_CLICK+LEFT, ActionManager.ACTION_dragSelected); + bind(SINGLE_CLICK+LEFT, ActionManager.ACTION_pickAtom); } private void setSelectBindings() { Modified: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/AppConsole.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/AppConsole.java 2010-01-29 20:01:46 UTC (rev 12261) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/AppConsole.java 2010-01-30 00:46:44 UTC (rev 12262) @@ -371,10 +371,10 @@ if (strErrorMessage.length() > 0) { console.outputError(strErrorMessage); } else { - viewer.script(strCommand + (strCommand.indexOf("\0##") >= 0 ? "" : JmolConstants.SCRIPT_EDITOR_IGNORE)); + viewer.script(strCommand + (strCommand.indexOf("\1##") >= 0 ? "" : JmolConstants.SCRIPT_EDITOR_IGNORE)); } } - if (strCommand.indexOf("\0##") < 0) + if (strCommand.indexOf("\1##") < 0) console.grabFocus(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |