UNPKG

biojs-vis-pdbviewer

Version:

A BioJS 2.0 component to view protein structures

257 lines (254 loc) 8.58 kB
Clazz.declarePackage ("JV"); Clazz.load (["JU.BS"], "JV.SelectionManager", ["JU.AU", "J.i18n.GT", "JU.BSUtil"], function () { c$ = Clazz.decorateAsClass (function () { this.vwr = null; this.listeners = null; this.bsHidden = null; this.bsSelection = null; this.bsFixed = null; this.bsSubset = null; this.bsDeleted = null; this.empty = 1; this.hideNotSelected = false; this.bsTemp = null; Clazz.instantialize (this, arguments); }, JV, "SelectionManager"); Clazz.prepareFields (c$, function () { this.listeners = new Array (0); this.bsHidden = new JU.BS (); this.bsSelection = new JU.BS (); this.bsFixed = new JU.BS (); this.bsTemp = new JU.BS (); }); Clazz.makeConstructor (c$, function (vwr) { this.vwr = vwr; }, "JV.Viewer"); Clazz.defineMethod (c$, "processDeletedModelAtoms", function (bsAtoms) { if (this.bsDeleted != null) JU.BSUtil.deleteBits (this.bsDeleted, bsAtoms); if (this.bsSubset != null) JU.BSUtil.deleteBits (this.bsSubset, bsAtoms); JU.BSUtil.deleteBits (this.bsFixed, bsAtoms); JU.BSUtil.deleteBits (this.bsHidden, bsAtoms); var bs = JU.BSUtil.copy (this.bsSelection); JU.BSUtil.deleteBits (bs, bsAtoms); this.setSelectionSet (bs, 0); }, "JU.BS"); Clazz.defineMethod (c$, "clear", function () { this.clearSelection (true); this.hide (null, null, 0, true); this.setSelectionSubset (null); this.bsDeleted = null; this.setMotionFixedAtoms (null); }); Clazz.defineMethod (c$, "display", function (modelSet, bs, addRemove, isQuiet) { switch (addRemove) { default: var bsAll = modelSet.getModelAtomBitSetIncludingDeleted (-1, false); this.bsHidden.or (bsAll); case 1276118017: if (bs != null) this.bsHidden.andNot (bs); break; case 1073742119: if (bs != null) this.bsHidden.or (bs); break; } JU.BSUtil.andNot (this.bsHidden, this.bsDeleted); modelSet.setBsHidden (this.bsHidden); if (!isQuiet) this.vwr.reportSelection (J.i18n.GT.i (J.i18n.GT._ ("{0} atoms hidden"), this.bsHidden.cardinality ())); }, "JM.ModelSet,JU.BS,~N,~B"); Clazz.defineMethod (c$, "hide", function (modelSet, bs, addRemove, isQuiet) { JV.SelectionManager.setBitSet (this.bsHidden, bs, addRemove); if (modelSet != null) modelSet.setBsHidden (this.bsHidden); if (!isQuiet) this.vwr.reportSelection (J.i18n.GT.i (J.i18n.GT._ ("{0} atoms hidden"), this.bsHidden.cardinality ())); }, "JM.ModelSet,JU.BS,~N,~B"); Clazz.defineMethod (c$, "setSelectionSet", function (set, addRemove) { JV.SelectionManager.setBitSet (this.bsSelection, set, addRemove); this.empty = -1; this.selectionChanged (false); }, "JU.BS,~N"); c$.setBitSet = Clazz.defineMethod (c$, "setBitSet", function (bsWhat, bs, addRemove) { switch (addRemove) { default: bsWhat.clearAll (); case 1276118017: if (bs != null) bsWhat.or (bs); break; case 1073742119: if (bs != null) bsWhat.andNot (bs); break; } }, "JU.BS,JU.BS,~N"); Clazz.defineMethod (c$, "getHiddenSet", function () { return this.bsHidden; }); Clazz.defineMethod (c$, "getHideNotSelected", function () { return this.hideNotSelected; }); Clazz.defineMethod (c$, "setHideNotSelected", function (TF) { this.hideNotSelected = TF; if (TF) this.selectionChanged (false); }, "~B"); Clazz.defineMethod (c$, "isSelected", function (atomIndex) { return (atomIndex >= 0 && this.bsSelection.get (atomIndex)); }, "~N"); Clazz.defineMethod (c$, "select", function (bs, addRemove, isQuiet) { if (bs == null) { this.selectAll (true); if (!this.vwr.getBoolean (1613758476)) this.excludeSelectionSet (this.vwr.ms.getAtoms (1613758476, null)); if (!this.vwr.getBoolean (1613758470)) this.excludeSelectionSet (this.vwr.ms.getAtoms (1613758470, null)); this.selectionChanged (false); } else { this.setSelectionSet (bs, addRemove); }var reportChime = this.vwr.getBoolean (603979880); if (!reportChime && isQuiet) return; var n = this.getSelectionCount (); if (reportChime) this.vwr.reportSelection ((n == 0 ? "No atoms" : n == 1 ? "1 atom" : n + " atoms") + " selected!"); else if (!isQuiet) this.vwr.reportSelection (J.i18n.GT.i (J.i18n.GT._ ("{0} atoms selected"), n)); }, "JU.BS,~N,~B"); Clazz.defineMethod (c$, "selectAll", function (isQuiet) { var count = this.vwr.getAtomCount (); this.empty = (count == 0) ? 1 : 0; for (var i = count; --i >= 0; ) this.bsSelection.set (i); JU.BSUtil.andNot (this.bsSelection, this.bsDeleted); this.selectionChanged (isQuiet); }, "~B"); Clazz.defineMethod (c$, "clearSelection", function (isQuiet) { this.setHideNotSelected (false); this.bsSelection.clearAll (); this.empty = 1; this.selectionChanged (isQuiet); }, "~B"); Clazz.defineMethod (c$, "isAtomSelected", function (atomIndex) { return ((this.bsSubset == null || this.bsSubset.get (atomIndex)) && this.bsDeleted == null || !this.bsDeleted.get (atomIndex)) && this.bsSelection.get (atomIndex); }, "~N"); Clazz.defineMethod (c$, "setSelectedAtom", function (atomIndex, TF) { if (atomIndex < 0) { this.selectionChanged (true); return; }if (this.bsSubset != null && !this.bsSubset.get (atomIndex) || this.bsDeleted != null && this.bsDeleted.get (atomIndex)) return; this.bsSelection.setBitTo (atomIndex, TF); if (TF) this.empty = 0; else this.empty = -1; }, "~N,~B"); Clazz.defineMethod (c$, "setSelectionSubset", function (bs) { this.bsSubset = bs; }, "JU.BS"); Clazz.defineMethod (c$, "isInSelectionSubset", function (atomIndex) { return (atomIndex < 0 || this.bsSubset == null || this.bsSubset.get (atomIndex)); }, "~N"); Clazz.defineMethod (c$, "invertSelection", function () { JU.BSUtil.invertInPlace (this.bsSelection, this.vwr.getAtomCount ()); this.empty = (this.bsSelection.length () > 0 ? 0 : 1); this.selectionChanged (false); }); Clazz.defineMethod (c$, "excludeSelectionSet", function (setExclude) { if (setExclude == null || this.empty == 1) return; this.bsSelection.andNot (setExclude); this.empty = -1; }, "JU.BS"); Clazz.defineMethod (c$, "getSelectionCount", function () { if (this.empty == 1) return 0; this.empty = 1; var bs; if (this.bsSubset != null) { this.bsTemp.clearAll (); this.bsTemp.or (this.bsSubset); this.bsTemp.and (this.bsSelection); bs = this.bsTemp; } else { bs = this.bsSelection; }var count = bs.cardinality (); if (count > 0) this.empty = 0; return count; }); Clazz.defineMethod (c$, "addListener", function (listener) { for (var i = this.listeners.length; --i >= 0; ) if (this.listeners[i] === listener) { this.listeners[i] = null; break; } var len = this.listeners.length; for (var i = len; --i >= 0; ) if (this.listeners[i] == null) { this.listeners[i] = listener; return; } if (this.listeners.length == 0) this.listeners = new Array (1); else this.listeners = JU.AU.doubleLength (this.listeners); this.listeners[len] = listener; }, "J.api.JmolSelectionListener"); Clazz.defineMethod (c$, "selectionChanged", function (isQuiet) { if (this.hideNotSelected) this.hide (this.vwr.ms, JU.BSUtil.copyInvert (this.bsSelection, this.vwr.getAtomCount ()), 0, isQuiet); if (isQuiet || this.listeners.length == 0) return; for (var i = this.listeners.length; --i >= 0; ) if (this.listeners[i] != null) this.listeners[i].selectionChanged (this.bsSelection); }, "~B"); Clazz.defineMethod (c$, "deleteAtoms", function (bs) { var bsNew = JU.BSUtil.copy (bs); if (this.bsDeleted == null) { this.bsDeleted = bsNew; } else { bsNew.andNot (this.bsDeleted); this.bsDeleted.or (bs); }this.bsHidden.andNot (this.bsDeleted); this.bsSelection.andNot (this.bsDeleted); return bsNew.cardinality (); }, "JU.BS"); Clazz.defineMethod (c$, "getDeletedAtoms", function () { return this.bsDeleted; }); Clazz.defineMethod (c$, "getSelectedAtoms", function () { if (this.bsSubset == null) return this.bsSelection; var bs = JU.BSUtil.copy (this.bsSelection); bs.and (this.bsSubset); return bs; }); Clazz.defineMethod (c$, "getSelectedAtomsNoSubset", function () { return JU.BSUtil.copy (this.bsSelection); }); Clazz.defineMethod (c$, "getSelectionSubset", function () { return this.bsSubset; }); Clazz.defineMethod (c$, "excludeAtoms", function (bs, ignoreSubset) { if (this.bsDeleted != null) bs.andNot (this.bsDeleted); if (!ignoreSubset && this.bsSubset != null) bs.and (this.bsSubset); }, "JU.BS,~B"); Clazz.defineMethod (c$, "setMotionFixedAtoms", function (bs) { this.bsFixed.clearAll (); if (bs != null) this.bsFixed.or (bs); }, "JU.BS"); Clazz.defineMethod (c$, "getMotionFixedAtoms", function () { return this.bsFixed; }); Clazz.defineStatics (c$, "TRUE", 1, "FALSE", 0, "UNKNOWN", -1); });