summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/java-imp-fld.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/java-imp-fld.mkiv')
-rw-r--r--Master/texmf-dist/tex/context/base/java-imp-fld.mkiv140
1 files changed, 112 insertions, 28 deletions
diff --git a/Master/texmf-dist/tex/context/base/java-imp-fld.mkiv b/Master/texmf-dist/tex/context/base/java-imp-fld.mkiv
index 625bfce115a..aaec257f259 100644
--- a/Master/texmf-dist/tex/context/base/java-imp-fld.mkiv
+++ b/Master/texmf-dist/tex/context/base/java-imp-fld.mkiv
@@ -266,10 +266,14 @@ function ForgetChanges() {
\startJSpreamble FieldStack used later
+function Field_Name(FieldSet,i) {
+ return this.getField(FieldSet + ":" + i)
+}
+
function Reset_Fields(FieldSet) {
var i = 1 ;
while (true) {
- v = this.getField(FieldSet+":"+i) ;
+ v = Field_Name(FieldSet,i) ;
if (!v) {
break ;
} else {
@@ -277,12 +281,13 @@ function Reset_Fields(FieldSet) {
}
i++ ;
}
+ this.dirty = false ;
}
function Set_Fields(FieldSet) {
var i = 1 ;
while (true) {
- v = this.getField(FieldSet+":"+i) ;
+ v = Field_Name(FieldSet,i) ;
if (!v) {
break ;
} else {
@@ -290,36 +295,39 @@ function Set_Fields(FieldSet) {
}
i++ ;
}
+ this.dirty = false ;
}
function Set_Field(FieldSet, FieldName) {
Reset_Fields(FieldSet) ;
- v = this.getField(FieldSet+":"+FieldName) ;
+ v = Field_Name(FieldSet,FieldName) ;
if (v) {
v.value = "Yes" ;
+ this.dirty = false ;
}
}
function Reset_Field(FieldSet, FieldName) {
Set_Fields(FieldSet) ;
- v = this.getField(FieldSet+":"+FieldName) ;
+ v = Field_Name(FieldSet,FieldName) ;
if (v) {
v.value = "Off" ;
+ this.dirty = false ;
}
}
function Walk_Field(FieldSet) {
var i = 1 ;
while (true) {
- v = this.getField(FieldSet + ":" + i) ;
+ v = Field_Name(FieldSet,i) ;
if (v) {
if (v.value != "Off") {
v.value = "Off" ;
var ii = i ;
ii++ ;
- v = this.getField(FieldSet + ":" + ii) ;
+ v = Field_Name(FieldSet,ii) ;
if (! v) {
- v = this.getField(FieldSet + ":" + 1) ;
+ v = Field_Name(FieldSet,1) ;
}
if (v) {
v.value = "Yes" ;
@@ -331,6 +339,7 @@ function Walk_Field(FieldSet) {
break ;
}
}
+ this.dirty = false ;
}
var FieldSets = new Array() ;
@@ -338,36 +347,67 @@ var FieldSets = new Array() ;
function Do_Get_Check_Walk_Field(FieldSet) {
var f = FieldSets[FieldSet]
if (! f) {
- f = new Array() ;
+ f = new Array() ;
f.number = 0 ;
f.delay = 500 ;
f.paused = false ;
f.running = false ;
f.name = FieldSet ;
f.timeout = null ;
+ f.repeat = true ;
+ f.total = 0 ;
+ f.pauseset = new Array() ;
FieldSets[FieldSet] = f ;
+ for (var i=1; i>0; i++) {
+ var v = Field_Name(FieldSet,i) ;
+ if (! v) {
+ f.total = i - 1 ;
+ break ;
+ }
+ }
+ f.start = 0 ;
+ f.stop = f.total ;
+ f.pause = 0 ;
}
+ this.dirty = false ;
return f
}
+function Do_Next_Auto_Walk_Field_Step(FieldSet,fieldset,n) {
+ var v = Field_Name(FieldSet,fieldset.number) ;
+ if (v) {
+ if (v.value != "Off") {
+ v.value = "Off" ;
+ }
+ }
+ v = Field_Name(FieldSet,n) ;
+ if (v) {
+ fieldset.number = n ;
+ v.value = "Yes" ;
+ if (fieldset.pauseset[n]) {
+ // fieldset.pause = n ;
+ // Do_Stop_Auto_Walk_Field(Fieldset) ;
+ Do_Stop_Auto_Walk_Field(FieldSet) ;
+ fieldset.paused = true ;
+ }
+ }
+ this.dirty = false ;
+}
+
function Do_Next_Auto_Walk_Field(FieldSet) {
var fieldset = Do_Get_Check_Walk_Field(FieldSet) ;
if (fieldset) {
- var v = this.getField(FieldSet + ":" + fieldset.number) ;
- if (v) {
- if (v.value != "Off") {
- v.value = "Off" ;
+ if (fieldset.number >= fieldset.stop) {
+ if (fieldset.repeat == false) {
+ fieldset.running = false ;
+ Do_Stop_Auto_Walk_Field(fieldset) ;
+ } else {
+ Do_Next_Auto_Walk_Field_Step(FieldSet,fieldset,fieldset.start) ;
}
+ } else {
+ Do_Next_Auto_Walk_Field_Step(FieldSet,fieldset,fieldset.number+1) ;
}
- fieldset.number++ ;
- v = this.getField(FieldSet + ":" + fieldset.number) ;
- if (! v) {
- fieldset.number = 1 ;
- v = this.getField(FieldSet + ":" + fieldset.number) ;
- }
- if (v) {
- v.value = "Yes" ;
- }
+ this.dirty = false ;
}
}
@@ -379,6 +419,7 @@ function Do_Stop_Auto_Walk_Field(FieldSet) {
app.clearTimeOut(fieldset.timeout) ;
} catch (e) {
}
+ this.dirty = false ;
}
}
@@ -386,7 +427,9 @@ function Do_Start_Auto_Walk_Field(FieldSet) {
var fieldset = Do_Get_Check_Walk_Field(FieldSet) ;
if (fieldset) {
Do_Stop_Auto_Walk_Field(FieldSet) ;
+ Do_Next_Auto_Walk_Field(FieldSet) ;
fieldset.timeout = app.setInterval("Do_Next_Auto_Walk_Field('"+FieldSet+"')", fieldset.delay) ;
+ this.dirty = false ;
}
}
@@ -419,9 +462,48 @@ function Pause_Walk_Field(FieldSet) {
}
}
-function Start_Pause_Walk_Field(FieldSet, Delay) {
+function Start_Pause_Walk_Field(FieldSet, Delay, Option) {
var fieldset = Do_Get_Check_Walk_Field(FieldSet) ;
if (fieldset) {
+ if (Option == "once") {
+ fieldset.repeat = false ;
+ } else if (Option == "pause") {
+ fieldset.repeat = false ;
+ } else {
+ fieldset.repeat = true ;
+ }
+ if (Option == "pause") {
+ for (i=3; i<arguments.length; i++) {
+ fieldset.pauseset[parseInt(arguments[i])] = true ;
+ }
+ if (fieldset.pause == fieldset.stop) {
+ fieldset.start = 1 ;
+ fieldset.pause = 0 ;
+ } else if (fieldset.pause > 1) {
+ fieldset.start = fieldset.pause - 1 ;
+ } else {
+ fieldset.start = 1 ;
+ }
+ fieldset.stop = fieldset.total ;
+ } else {
+ var Start = arguments[3] ;
+ var Stop = arguments[4] ;
+ if (typeof Start == "string") {
+ fieldset.start = parseInt(Start) ;
+ } else if (typeof Start == "number") {
+ fieldset.start = Start ;
+ } else {
+ fieldset.start = 1 ;
+ }
+ if (typeof Stop == "string") {
+ fieldset.stop = parseInt(Stop) ;
+ } else if (typeof Stop == "number") {
+ fieldset.stop = Stop ;
+ } else {
+ fieldset.stop = fieldset.total ;
+ }
+ fieldset.pause = 0 ;
+ }
if (fieldset.running) {
if (fieldset.paused) {
Do_Start_Auto_Walk_Field(FieldSet) ;
@@ -431,7 +513,7 @@ function Start_Pause_Walk_Field(FieldSet, Delay) {
fieldset.paused = true ;
}
} else {
- fieldset.number = 0 ;
+ fieldset.number = fieldset.start - 1 ;
if (Delay) {
fieldset.delay = Delay ;
}
@@ -470,17 +552,18 @@ function Previous_Walk_Field(FieldSet) {
fieldset.running = false ;
fieldset.paused = false ;
if (fieldset.number>0) {
- var v = this.getField(FieldSet + ":" + fieldset.number) ;
+ var v = Field_Name(FieldSet,fieldset.number) ;
if (v) {
if (v.value != "Off") {
v.value = "Off" ;
}
}
fieldset.number-- ;
- v = this.getField(FieldSet + ":" + fieldset.number) ;
+ v = Field_Name(FieldSet,fieldset.number) ;
if (v) {
v.value = "Yes" ;
}
+ this.dirty = false ;
}
}
}
@@ -492,19 +575,20 @@ function Next_Walk_Field(FieldSet) {
fieldset.running = false ;
fieldset.paused = false ;
var f = fieldset.number + 1 ;
- var v = this.getField(FieldSet + ":" + f) ;
+ var v = Field_Name(FieldSet,f) ;
if (v) {
- var v = this.getField(FieldSet + ":" + fieldset.number) ;
+ var v = Field_Name(FieldSet,fieldset.number) ;
if (v) {
if (v.value != "Off") {
v.value = "Off" ;
}
}
fieldset.number++ ;
- v = this.getField(FieldSet + ":" + fieldset.number) ;
+ v = Field_Name(FieldSet,fieldset.number) ;
if (v) {
v.value = "Yes" ;
}
+ this.dirty = false ;
}
}
}