Revision: 20459 http://sourceforge.net/p/jmol/code/20459 Author: hansonr Date: 2015-04-26 15:55:33 +0000 (Sun, 26 Apr 2015) Log Message: ----------- JSmol/SwingJS compatibility -- still working on this.
Modified Paths: -------------- trunk/Jmol/src/javajs/util/AU.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Added Paths: ----------- trunk/Jmol/srcjs/java/util/HashMap.js Modified: trunk/Jmol/src/javajs/util/AU.java =================================================================== --- trunk/Jmol/src/javajs/util/AU.java 2015-04-23 00:23:08 UTC (rev 20458) +++ trunk/Jmol/src/javajs/util/AU.java 2015-04-26 15:55:33 UTC (rev 20459) @@ -23,6 +23,7 @@ */ package javajs.util; +// 4/23/15 BH getComponentType fix import java.lang.reflect.Array; @@ -165,7 +166,8 @@ /** * @j2sNative * - * return new Array(n); + * if (!array.getClass().getComponentType) + * return new Array(n); * */ { @@ -502,130 +504,130 @@ return list.size(); } - public static boolean isAS(Object x) { - /** - * - * look also for array with first null element - * so untypable -- just call it a String[] - * (group3Lists, created in ModelLoader) - * - * @j2sNative - * return Clazz.isAS(x); - */ - { - return x instanceof String[]; - } - } + public static boolean isAS(Object x) { + /** + * + * look also for array with first null element + * so untypable -- just call it a String[] + * (group3Lists, created in ModelLoader) + * + * @j2sNative + * return Clazz.isAS(x); + */ + { + return x instanceof String[]; + } + } - public static boolean isASS(Object x) { - /** - * @j2sNative - * return Clazz.isASS(x); - */ - { - return x instanceof String[][]; - } - } + public static boolean isASS(Object x) { + /** + * @j2sNative + * return Clazz.isASS(x); + */ + { + return x instanceof String[][]; + } + } - public static boolean isAP(Object x) { - /** - * @j2sNative - * return Clazz.isAP(x); - */ - { - return x instanceof T3[]; - } - } + public static boolean isAP(Object x) { + /** + * @j2sNative + * return Clazz.isAP(x); + */ + { + return x instanceof T3[]; + } + } - public static boolean isAF(Object x) { - /** - * @j2sNative - * return Clazz.isAF(x); - */ - { - return x instanceof float[]; - } - } + public static boolean isAF(Object x) { + /** + * @j2sNative + * return Clazz.isAF(x); + */ + { + return x instanceof float[]; + } + } - public static boolean isAFloat(Object x) { - /** - * @j2sNative - * return Clazz.isAFloat(x); - */ - { - return x instanceof Float[]; - } - } + public static boolean isAFloat(Object x) { + /** + * @j2sNative + * return Clazz.isAFloat(x); + */ + { + return x instanceof Float[]; + } + } - public static boolean isAD(Object x) { - /** - * @j2sNative - * return Clazz.isAF(x); - */ - { - return x instanceof double[]; - } - } + public static boolean isAD(Object x) { + /** + * @j2sNative + * return Clazz.isAF(x); + */ + { + return x instanceof double[]; + } + } - public static boolean isADD(Object x) { - /** - * @j2sNative - * return Clazz.isAFF(x); - */ - { - return x instanceof double[][]; - } - } + public static boolean isADD(Object x) { + /** + * @j2sNative + * return Clazz.isAFF(x); + */ + { + return x instanceof double[][]; + } + } - public static boolean isAB(Object x) { - /** - * @j2sNative - * return Clazz.isAI(x); - */ - { - return x instanceof byte[]; - } - } + public static boolean isAB(Object x) { + /** + * @j2sNative + * return Clazz.isAI(x); + */ + { + return x instanceof byte[]; + } + } - public static boolean isAI(Object x) { - /** - * @j2sNative - * return Clazz.isAI(x); - */ - { - return x instanceof int[]; - } - } + public static boolean isAI(Object x) { + /** + * @j2sNative + * return Clazz.isAI(x); + */ + { + return x instanceof int[]; + } + } - public static boolean isAII(Object x) { - /** - * @j2sNative - * return Clazz.isAII(x); - */ - { - return (x instanceof int[][]); - } - } + public static boolean isAII(Object x) { + /** + * @j2sNative + * return Clazz.isAII(x); + */ + { + return (x instanceof int[][]); + } + } - public static boolean isAFF(Object x) { - /** - * @j2sNative - * return Clazz.isAFF(x); - */ - { - return x instanceof float[][]; - } - } + public static boolean isAFF(Object x) { + /** + * @j2sNative + * return Clazz.isAFF(x); + */ + { + return x instanceof float[][]; + } + } - public static boolean isAFFF(Object x) { - /** - * @j2sNative - * return Clazz.isAFFF(x); - */ - { - return x instanceof float[][][]; - } - } + public static boolean isAFFF(Object x) { + /** + * @j2sNative + * return Clazz.isAFFF(x); + */ + { + return x instanceof float[][][]; + } + } } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2015-04-23 00:23:08 UTC (rev 20458) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2015-04-26 15:55:33 UTC (rev 20459) @@ -14,8 +14,13 @@ TODO: remove HTML5 dependency on synchronous file loading (check SCRIPT command for problems) -Jmol.___JmolVersion="14.3.13_2015.04.22" +Jmol.___JmolVersion="14.3.13_2015.04.25" +code: integration of changes made for SwingJS into JSmol code + + +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 Added: trunk/Jmol/srcjs/java/util/HashMap.js =================================================================== --- trunk/Jmol/srcjs/java/util/HashMap.js (rev 0) +++ trunk/Jmol/srcjs/java/util/HashMap.js 2015-04-26 15:55:33 UTC (rev 20459) @@ -0,0 +1,463 @@ +Clazz.load(["java.util.AbstractMap","$.AbstractSet","$.Iterator","$.Map","$.MapEntry"],"java.util.HashMap",["java.lang.IllegalArgumentException","$.IllegalStateException","java.util.AbstractCollection","$.Arrays","$.ConcurrentModificationException","java.util.MapEntry.Type","java.util.NoSuchElementException"],function(){ +c$=Clazz.decorateAsClass(function(){ +this.elementCount=0; +this.elementData=null; +this.loadFactor=0; +this.threshold=0; +this.modCount=0; +Clazz.instantialize(this,arguments); +},java.util,"HashMap",java.util.AbstractMap,[java.util.Map,Cloneable,java.io.Serializable]); +Clazz.defineMethod(c$,"newElementArray", +function(s){ +return new Array(s); +},"~N"); +Clazz.makeConstructor(c$, +function(){ +this.construct(16); +}); +Clazz.makeConstructor(c$, +function(capacity){ +Clazz.superConstructor(this,java.util.HashMap,[]); +if(capacity>=0){ +this.elementCount=0; +this.elementData=this.newElementArray(capacity==0?1:capacity); +this.loadFactor=0.75; +this.computeMaxSize(); +}else{ +throw new IllegalArgumentException(); +}},"~N"); +Clazz.makeConstructor(c$, +function(capacity,loadFactor){ +Clazz.superConstructor(this,java.util.HashMap,[]); +if(capacity>=0&&loadFactor>0){ +this.elementCount=0; +this.elementData=this.newElementArray(capacity==0?1:capacity); +this.loadFactor=loadFactor; +this.computeMaxSize(); +}else{ +throw new IllegalArgumentException(); +}},"~N,~N"); +Clazz.makeConstructor(c$, +function(map){ +this.construct(map.size()<6?11:map.size()*2); +this.putAll(map); +},"java.util.Map"); +Clazz.overrideMethod(c$,"clear", +function(){ +if(this.elementCount>0){ +this.elementCount=0; +java.util.Arrays.fill(this.elementData,null); +this.modCount++; +}}); +Clazz.defineMethod(c$,"clone", +function(){ +try{ +var map=Clazz.superCall(this,java.util.HashMap,"clone",[]); +map.elementData=this.newElementArray(this.elementData.length); +var entry; +for(var i=0;i<this.elementData.length;i++){ +if((entry=this.elementData[i])!=null){ +map.elementData[i]=entry.clone(); +}} +return map; +}catch(e){ +if(Clazz.instanceOf(e,CloneNotSupportedException)){ +return null; +}else{ +throw e; +} +} +}); +Clazz.defineMethod(c$,"computeMaxSize", +($fz=function(){ +this.threshold=Math.round((this.elementData.length*this.loadFactor)); +},$fz.isPrivate=true,$fz)); +Clazz.overrideMethod(c$,"containsKey", +function(key){ +return this.getEntry(key)!=null; +},"~O"); +Clazz.defineMethod(c$,"keysEqual", +function(k1,entry){ +var k1Hash=k1==null?0:k1.hashCode(); +if(k1Hash!=entry.origKeyHash){ +return false; +}if(k1==null&&entry.key==null){ +return true; +}return k1.equals(entry.key); +},"~O,java.util.HashMap.Entry"); +Clazz.overrideMethod(c$,"containsValue", +function(value){ +if(value!=null){ +for(var i=this.elementData.length;--i>=0;){ +var entry=this.elementData[i]; +while(entry!=null){ +if(value.equals(entry.value)){ +return true; +}entry=entry.next; +} +} +}else{ +for(var i=this.elementData.length;--i>=0;){ +var entry=this.elementData[i]; +while(entry!=null){ +if(entry.value==null){ +return true; +}entry=entry.next; +} +} +}return false; +},"~O"); +Clazz.overrideMethod(c$,"entrySet", +function(){ +return new java.util.HashMap.HashMapEntrySet(this); +}); +Clazz.overrideMethod(c$,"get", +function(key){ +var m=this.getEntry(key); +if(m!=null){ +return m.value; +}return null; +},"~O"); +Clazz.defineMethod(c$,"getEntry", +function(key){ +var index=this.getModuloHash(key); +return this.findEntry(key,index); +},"~O"); +Clazz.defineMethod(c$,"getModuloHash", +function(key){ +if(key==null){ +return 0; +}return(key.hashCode()&0x7FFFFFFF)%this.elementData.length; +},"~O"); +Clazz.defineMethod(c$,"findEntry", +function(key,index){ +var m; +m=this.elementData[index]; +if(key!=null){ +while(m!=null&&!this.keysEqual(key,m)){ +m=m.next; +} +}else{ +while(m!=null&&m.key!=null){ +m=m.next; +} +}return m; +},"~O,~N"); +Clazz.overrideMethod(c$,"isEmpty", +function(){ +return this.elementCount==0; +}); +Clazz.overrideMethod(c$,"keySet", +function(){ +if(this.$keySet==null){ +this.$keySet=((Clazz.isClassDefined("java.util.HashMap$1")?0:java.util.HashMap.$HashMap$1$()),Clazz.innerTypeInstance(java.util.HashMap$1,this,null)); +}return this.$keySet; +}); +Clazz.overrideMethod(c$,"put", +function(key,value){ +var index=this.getModuloHash(key); +var entry=this.findEntry(key,index); +if(entry==null){ +this.modCount++; +if(++this.elementCount>this.threshold){ +this.rehash(); +index=key==null?0:(key.hashCode()&0x7FFFFFFF)%this.elementData.length; +}entry=this.createEntry(key,index,value); +return null; +}var result=entry.value; +entry.value=value; +return result; +},"~O,~O"); +Clazz.defineMethod(c$,"createEntry", +function(key,index,value){ +var entry=new java.util.HashMap.Entry(key,value); +entry.next=this.elementData[index]; +this.elementData[index]=entry; +return entry; +},"~O,~N,~O"); +Clazz.overrideMethod(c$,"putAll", +function(map){ +if(!map.isEmpty()){ +var capacity=this.elementCount+map.size(); +if(capacity>this.threshold){ +this.rehash(capacity); +} +for(var entry,$entry=map.entrySet().iterator();$entry.hasNext()&&((entry=$entry.next())||true);){ +this.put(entry.getKey(),entry.getValue()); +} +}},"java.util.Map"); +Clazz.defineMethod(c$,"rehash", +function(capacity){ +var length=(capacity==0?1:capacity<<1); +var newData=this.newElementArray(length); +for(var i=0;i<this.elementData.length;i++){ +var entry=this.elementData[i]; +while(entry!=null){ +var key=entry.key; +var index=key==null?0:(key.hashCode()&0x7FFFFFFF)%length; +var next=entry.next; +entry.next=newData[index]; +newData[index]=entry; +entry=next; +} +} +this.elementData=newData; +this.computeMaxSize(); +},"~N"); +Clazz.defineMethod(c$,"rehash", +function(){ +this.rehash(this.elementData.length); +}); +Clazz.overrideMethod(c$,"remove", +function(key){ +var entry=this.removeEntry(key); +if(entry!=null){ +return entry.value; +}return null; +},"~O"); +Clazz.defineMethod(c$,"removeEntry", +function(key){ +var index=0; +var entry; +var last=null; +if(key!=null){ +index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length; +entry=this.elementData[index]; +while(entry!=null&&!this.keysEqual(key,entry)){ +last=entry; +entry=entry.next; +} +}else{ +entry=this.elementData[0]; +while(entry!=null&&entry.key!=null){ +last=entry; +entry=entry.next; +} +}if(entry==null){ +return null; +}if(last==null){ +this.elementData[index]=entry.next; +}else{ +last.next=entry.next; +}this.modCount++; +this.elementCount--; +return entry; +},"~O"); +Clazz.overrideMethod(c$,"size", +function(){ +return this.elementCount; +}); +Clazz.overrideMethod(c$,"values", +function(){ +if(this.valuesCollection==null){ +this.valuesCollection=((Clazz.isClassDefined("java.util.HashMap$2")?0:java.util.HashMap.$HashMap$2$()),Clazz.innerTypeInstance(java.util.HashMap$2,this,null)); +}return this.valuesCollection; +}); +c$.$HashMap$1$=function(){ +Clazz.pu$h(); +c$=Clazz.declareAnonymous(java.util,"HashMap$1",java.util.AbstractSet); +Clazz.overrideMethod(c$,"contains", +function(object){ +return this.b$["java.util.HashMap"].containsKey(object); +},"~O"); +Clazz.overrideMethod(c$,"size", +function(){ +return this.b$["java.util.HashMap"].size(); +}); +Clazz.overrideMethod(c$,"clear", +function(){ +this.b$["java.util.HashMap"].clear(); +}); +Clazz.overrideMethod(c$,"remove", +function(key){ +if(this.b$["java.util.HashMap"].containsKey(key)){ +this.b$["java.util.HashMap"].remove(key); +return true; +}return false; +},"~O"); +Clazz.overrideMethod(c$,"iterator", +function(){ +return new java.util.HashMap.HashMapIterator(((Clazz.isClassDefined("java.util.HashMap$1$1")?0:java.util.HashMap.$HashMap$1$1$()),Clazz.innerTypeInstance(java.util.HashMap$1$1,this,null)),this.b$["java.util.HashMap"]); +}); +c$=Clazz.p0p(); +}; +c$.$HashMap$1$1$=function(){ +Clazz.pu$h(); +c$=Clazz.declareAnonymous(java.util,"HashMap$1$1",null,java.util.MapEntry.Type); +Clazz.overrideMethod(c$,"get", +function(entry){ +return entry.key; +},"java.util.MapEntry"); +c$=Clazz.p0p(); +}; +c$.$HashMap$2$=function(){ +Clazz.pu$h(); +c$=Clazz.declareAnonymous(java.util,"HashMap$2",java.util.AbstractCollection); +Clazz.overrideMethod(c$,"contains", +function(object){ +return this.b$["java.util.HashMap"].containsValue(object); +},"~O"); +Clazz.overrideMethod(c$,"size", +function(){ +return this.b$["java.util.HashMap"].size(); +}); +Clazz.overrideMethod(c$,"clear", +function(){ +this.b$["java.util.HashMap"].clear(); +}); +Clazz.overrideMethod(c$,"iterator", +function(){ +return new java.util.HashMap.HashMapIterator(((Clazz.isClassDefined("java.util.HashMap$2$1")?0:java.util.HashMap.$HashMap$2$1$()),Clazz.innerTypeInstance(java.util.HashMap$2$1,this,null)),this.b$["java.util.HashMap"]); +}); +c$=Clazz.p0p(); +}; +c$.$HashMap$2$1$=function(){ +Clazz.pu$h(); +c$=Clazz.declareAnonymous(java.util,"HashMap$2$1",null,java.util.MapEntry.Type); +Clazz.overrideMethod(c$,"get", +function(entry){ +return entry.value; +},"java.util.MapEntry"); +c$=Clazz.p0p(); +}; +Clazz.pu$h(); +c$=Clazz.decorateAsClass(function(){ +this.origKeyHash=0; +this.next=null; +Clazz.instantialize(this,arguments); +},java.util.HashMap,"Entry",java.util.MapEntry); +Clazz.makeConstructor(c$, +function(a,b){ +Clazz.superConstructor(this,java.util.HashMap.Entry,[a,b]); +this.origKeyHash=(a==null?0:a.hashCode()); +},"~O,~O"); +Clazz.defineMethod(c$,"clone", +function(){ +var a=Clazz.superCall(this,java.util.HashMap.Entry,"clone",[]); +if(this.next!=null){ +a.next=this.next.clone(); +}return a; +}); +c$=Clazz.p0p(); +Clazz.pu$h(); +c$=Clazz.decorateAsClass(function(){ +this.position=0; +this.expectedModCount=0; +this.type=null; +this.canRemove=false; +this.entry=null; +this.lastEntry=null; +this.associatedMap=null; +Clazz.instantialize(this,arguments); +},java.util.HashMap,"HashMapIterator",null,java.util.Iterator); +Clazz.makeConstructor(c$, +function(a,b){ +this.associatedMap=b; +this.type=a; +this.expectedModCount=b.modCount; +},"java.util.MapEntry.Type,java.util.HashMap"); +Clazz.overrideMethod(c$,"hasNext", +function(){ +if(this.entry!=null){ +return true; +}while(this.position<this.associatedMap.elementData.length){ +if(this.associatedMap.elementData[this.position]==null){ +this.position++; +}else{ +return true; +}} +return false; +}); +Clazz.defineMethod(c$,"checkConcurrentMod", +function(){ +if(this.expectedModCount!=this.associatedMap.modCount){ +throw new java.util.ConcurrentModificationException(); +}}); +Clazz.overrideMethod(c$,"next", +function(){ +this.checkConcurrentMod(); +if(!this.hasNext()){ +throw new java.util.NoSuchElementException(); +}var a; +if(this.entry==null){ +a=this.lastEntry=this.associatedMap.elementData[this.position++]; +this.entry=this.lastEntry.next; +}else{ +if(this.lastEntry.next!==this.entry){ +this.lastEntry=this.lastEntry.next; +}a=this.entry; +this.entry=this.entry.next; +}this.canRemove=true; +return this.type.get(a); +}); +Clazz.overrideMethod(c$,"remove", +function(){ +this.checkConcurrentMod(); +if(!this.canRemove){ +throw new IllegalStateException(); +}this.canRemove=false; +this.associatedMap.modCount++; +if(this.lastEntry.next===this.entry){ +while(this.associatedMap.elementData[--this.position]==null){ +;} +this.associatedMap.elementData[this.position]=this.associatedMap.elementData[this.position].next; +this.entry=null; +}else{ +this.lastEntry.next=this.entry; +}this.associatedMap.elementCount--; +this.expectedModCount++; +}); +c$=Clazz.p0p(); +Clazz.pu$h(); +c$=Clazz.decorateAsClass(function(){ +this.associatedMap=null; +Clazz.instantialize(this,arguments); +},java.util.HashMap,"HashMapEntrySet",java.util.AbstractSet); +Clazz.makeConstructor(c$, +function(a){ +Clazz.superConstructor(this,java.util.HashMap.HashMapEntrySet,[]); +this.associatedMap=a; +},"java.util.HashMap"); +Clazz.defineMethod(c$,"hashMap", +function(){ +return this.associatedMap; +}); +Clazz.overrideMethod(c$,"size", +function(){ +return this.associatedMap.elementCount; +}); +Clazz.overrideMethod(c$,"clear", +function(){ +this.associatedMap.clear(); +}); +Clazz.overrideMethod(c$,"remove", +function(a){ +if(this.contains(a)){ +this.associatedMap.remove((a).getKey()); +return true; +}return false; +},"~O"); +Clazz.overrideMethod(c$,"contains", +function(a){ +if(Clazz.instanceOf(a,java.util.Map.Entry)){ +var b=this.associatedMap.getEntry((a).getKey()); +return a.equals(b); +}return false; +},"~O"); +Clazz.overrideMethod(c$,"iterator", +function(){ +return new java.util.HashMap.HashMapIterator(((Clazz.isClassDefined("java.util.HashMap$HashMapEntrySet$1")?0:java.util.HashMap.HashMapEntrySet.$HashMap$HashMapEntrySet$1$()),Clazz.innerTypeInstance(java.util.HashMap$HashMapEntrySet$1,this,null)),this.associatedMap); +}); +c$.$HashMap$HashMapEntrySet$1$=function(){ +Clazz.pu$h(); +c$=Clazz.declareAnonymous(java.util,"HashMap$HashMapEntrySet$1",null,java.util.MapEntry.Type); +Clazz.overrideMethod(c$,"get", +function(a){ +return a; +},"java.util.MapEntry"); +c$=Clazz.p0p(); +}; +c$=Clazz.p0p(); +Clazz.defineStatics(c$, +"DEFAULT_SIZE",16); +}); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ Jmol-commits mailing list Jmol-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jmol-commits