Clazz.declarePackage("J.shape");
Clazz.load(["J.shape.Shape", "java.util.Hashtable"], "J.shape.TextShape", ["JU.P3", "$.PT", "JU.C", "$.Logger"], function(){
var 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 (Clazz.instanceOf(value,"JM.Text")) {
this.currentObject = value;
}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;
return;
}if (this.currentObject != null) {
this.objects.remove(this.currentObject.target);
this.currentObject = null;
} else if (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();
}}
}}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) && (!t.thisModelOnly || bsModels.cardinality() == 1 && t.modelIndex == this.vwr.am.cmi));

}, "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");
});
;//5.0.1-v7 Tue Jul 22 18:14:29 CDT 2025
