| Clazz.declarePackage ("J.shape"); | |
| Clazz.load (["J.shape.Shape", "java.util.Hashtable"], "J.shape.TextShape", ["JU.P3", "$.PT", "JU.C", "$.Logger"], function () { | |
| c$ = Clazz.decorateAsClass (function () { | |
| this.objects = null; | |
| this.currentObject = null; | |
| this.currentFont = null; | |
| this.currentColor = null; | |
| this.currentBgColor = null; | |
| this.currentTranslucentLevel = 0; | |
| this.currentBgTranslucentLevel = 0; | |
| this.thisID = null; | |
| this.isHover = false; | |
| this.isAll = false; | |
| Clazz.instantialize (this, arguments); | |
| }, J.shape, "TextShape", J.shape.Shape); | |
| Clazz.prepareFields (c$, function () { | |
| this.objects = new java.util.Hashtable (); | |
| }); | |
| Clazz.defineMethod (c$, "setPropTS", | |
| function (propertyName, value, bsSelected) { | |
| if ("text" === propertyName) { | |
| var text = value; | |
| if (this.currentObject != null) { | |
| this.currentObject.setText (text); | |
| } else if (this.isAll) { | |
| for (var t, $t = this.objects.values ().iterator (); $t.hasNext () && ((t = $t.next ()) || true);) t.setText (text); | |
| }return; | |
| }if ("font" === propertyName) { | |
| this.currentFont = value; | |
| if (this.currentObject != null) { | |
| this.currentObject.setFont (this.currentFont, true); | |
| this.currentObject.setFontScale (0); | |
| } else if (this.isAll) { | |
| for (var t, $t = this.objects.values ().iterator (); $t.hasNext () && ((t = $t.next ()) || true);) t.setFont (this.currentFont, true); | |
| }return; | |
| }if ("allOff" === propertyName) { | |
| this.currentObject = null; | |
| this.isAll = true; | |
| this.objects = new java.util.Hashtable (); | |
| return; | |
| }if ("delete" === propertyName) { | |
| if (this.currentObject != null) { | |
| this.objects.remove (this.currentObject.target); | |
| this.currentObject = null; | |
| } else if (this.isAll || this.thisID != null) { | |
| var e = this.objects.values ().iterator (); | |
| while (e.hasNext ()) { | |
| var text = e.next (); | |
| if (this.isAll || JU.PT.isMatch (text.target.toUpperCase (), this.thisID, true, true)) { | |
| e.remove (); | |
| }} | |
| }return; | |
| }if ("off" === propertyName) { | |
| if (this.isAll) { | |
| this.objects = new java.util.Hashtable (); | |
| this.isAll = false; | |
| this.currentObject = null; | |
| }if (this.currentObject == null) { | |
| return; | |
| }this.objects.remove (this.currentObject.target); | |
| this.currentObject = null; | |
| return; | |
| }if ("model" === propertyName) { | |
| var modelIndex = (value).intValue (); | |
| if (this.currentObject != null) { | |
| this.currentObject.modelIndex = modelIndex; | |
| } else if (this.isAll) { | |
| for (var t, $t = this.objects.values ().iterator (); $t.hasNext () && ((t = $t.next ()) || true);) t.modelIndex = modelIndex; | |
| }return; | |
| }if ("align" === propertyName) { | |
| var align = value; | |
| if (this.currentObject != null) { | |
| if (!this.currentObject.setAlignmentLCR (align)) JU.Logger.error ("unrecognized align:" + align); | |
| } else if (this.isAll) { | |
| for (var obj, $obj = this.objects.values ().iterator (); $obj.hasNext () && ((obj = $obj.next ()) || true);) obj.setAlignmentLCR (align); | |
| }return; | |
| }if ("bgcolor" === propertyName) { | |
| this.currentBgColor = value; | |
| if (this.currentObject != null) { | |
| this.currentObject.bgcolix = JU.C.getColixO (value); | |
| } else if (this.isAll) { | |
| var e = this.objects.values ().iterator (); | |
| while (e.hasNext ()) { | |
| e.next ().bgcolix = JU.C.getColixO (value); | |
| } | |
| }return; | |
| }if ("color" === propertyName) { | |
| this.currentColor = value; | |
| if (this.currentObject != null) { | |
| this.currentObject.colix = JU.C.getColixO (value); | |
| } else if (this.isAll || this.thisID != null) { | |
| var e = this.objects.values ().iterator (); | |
| while (e.hasNext ()) { | |
| var text = e.next (); | |
| if (this.isAll || JU.PT.isMatch (text.target.toUpperCase (), this.thisID, true, true)) { | |
| text.colix = JU.C.getColixO (value); | |
| }} | |
| }return; | |
| }if ("target" === propertyName) { | |
| var target = value; | |
| this.isAll = target.equals ("all"); | |
| if (this.isAll || target.equals ("none")) { | |
| this.currentObject = null; | |
| }return; | |
| }var isBackground; | |
| if ((isBackground = ("bgtranslucency" === propertyName)) || "translucency" === propertyName) { | |
| var isTranslucent = ("translucent" === value); | |
| if (isBackground) this.currentBgTranslucentLevel = (isTranslucent ? this.translucentLevel : 0); | |
| else this.currentTranslucentLevel = (isTranslucent ? this.translucentLevel : 0); | |
| if (this.currentObject != null) { | |
| this.currentObject.setTranslucent (this.translucentLevel, isBackground); | |
| } else if (this.isAll) { | |
| var e = this.objects.values ().iterator (); | |
| while (e.hasNext ()) { | |
| e.next ().setTranslucent (this.translucentLevel, isBackground); | |
| } | |
| }return; | |
| }if (propertyName === "deleteModelAtoms") { | |
| var modelIndex = ((value)[2])[0]; | |
| var e = this.objects.values ().iterator (); | |
| while (e.hasNext ()) { | |
| var text = e.next (); | |
| if (text.modelIndex == modelIndex) { | |
| e.remove (); | |
| } else if (text.modelIndex > modelIndex) { | |
| text.modelIndex--; | |
| }} | |
| return; | |
| }this.setPropS (propertyName, value, bsSelected); | |
| }, "~S,~O,JU.BS"); | |
| Clazz.overrideMethod (c$, "getShapeState", | |
| function () { | |
| return null; | |
| }); | |
| Clazz.overrideMethod (c$, "initModelSet", | |
| function () { | |
| this.currentObject = null; | |
| this.isAll = false; | |
| }); | |
| Clazz.overrideMethod (c$, "setModelVisibilityFlags", | |
| function (bsModels) { | |
| if (!this.isHover) for (var t, $t = this.objects.values ().iterator (); $t.hasNext () && ((t = $t.next ()) || true);) t.visible = (t.modelIndex < 0 || bsModels.get (t.modelIndex)); | |
| }, "JU.BS"); | |
| Clazz.overrideMethod (c$, "checkObjectClicked", | |
| function (x, y, modifiers, bsVisible, drawPicking) { | |
| if (this.isHover || modifiers == 0) return null; | |
| var isAntialiased = this.vwr.antialiased; | |
| for (var obj, $obj = this.objects.values ().iterator (); $obj.hasNext () && ((obj = $obj.next ()) || true);) { | |
| if (obj.checkObjectClicked (isAntialiased, x, y, bsVisible)) { | |
| if (obj.script != null) this.vwr.evalStringQuiet (obj.script); | |
| var map = new java.util.Hashtable (); | |
| map.put ("pt", (obj.xyz == null ? new JU.P3 () : obj.xyz)); | |
| var modelIndex = obj.modelIndex; | |
| if (modelIndex < 0) modelIndex = 0; | |
| map.put ("modelIndex", Integer.$valueOf (modelIndex)); | |
| map.put ("model", this.vwr.getModelNumberDotted (modelIndex)); | |
| map.put ("id", obj.target); | |
| map.put ("type", "echo"); | |
| return map; | |
| }} | |
| return null; | |
| }, "~N,~N,~N,JU.BS,~B"); | |
| Clazz.overrideMethod (c$, "checkObjectHovered", | |
| function (x, y, bsVisible) { | |
| if (this.isHover) return false; | |
| var haveScripts = false; | |
| var isAntialiased = this.vwr.antialiased; | |
| for (var obj, $obj = this.objects.values ().iterator (); $obj.hasNext () && ((obj = $obj.next ()) || true);) { | |
| if (obj.script != null) { | |
| haveScripts = true; | |
| if (obj.checkObjectClicked (isAntialiased, x, y, bsVisible)) { | |
| this.vwr.setCursor (12); | |
| return true; | |
| }}} | |
| if (haveScripts) this.vwr.setCursor (0); | |
| return false; | |
| }, "~N,~N,JU.BS"); | |
| }); | |