Skip to content

Commit 5c6c773

Browse files
committed
Add a status update for displaying time consuming operation status'
Allow the cadoodle file to display the status of which time consuming status it is working on and what the overall percentage is.
1 parent 04be30e commit 5c6c773

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/CaDoodleFile.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,13 @@ public class CaDoodleFile {
8484
private IAcceptPruneForward accept = null;
8585
private long timeOfLastUpdate = 0;
8686
private OperationResult result = OperationResult.APPEND;
87-
87+
private ICadoodleSaveStatusUpdate defaultSaver=new ICadoodleSaveStatusUpdate() {
88+
@Override
89+
public void renderSplashFrame(int percent, String message) {
90+
System.out.println(percent+"% "+message);
91+
}
92+
};
93+
private ICadoodleSaveStatusUpdate saveUpdate =null;
8894
public void close() {
8995
for (ICaDoodleOpperation op : cache.keySet()) {
9096
cache.get(op).clear();
@@ -256,11 +262,13 @@ public void run() {
256262
setCurrentIndex(opIndex);
257263
try {
258264
for (; getCurrentIndex() < size;) {
265+
int percent =(int)( ((double )getCurrentIndex())/((double)getOpperations().size())*100.0);
259266
setCurrentIndex(getCurrentIndex() + 1);
260267
setPercentInitialized(((double) getCurrentIndex()) / size);
261268
// com.neuronrobotics.sdk.common.Log.error("Regenerating "+currentIndex);
262269
int currentIndex2 = getCurrentIndex() - 1;
263270
ICaDoodleOpperation op = getOpperations().get(currentIndex2);
271+
getSaveUpdate().renderSplashFrame(percent, "Regenerating "+op.getType()+" "+currentIndex2);
264272
getTimelineImageFile(op).delete();
265273
try {
266274
List<CSG> process = op.process(getPreviouState());
@@ -803,24 +811,30 @@ public File save() throws IOException {
803811
String contents = toJson();
804812
List<CSG> currentState = getCurrentState();
805813
int currentIndex2 = getCurrentIndex();
814+
getSaveUpdate().renderSplashFrame(1, "Save Doodle to "+selfInternal.getName());
806815
FileUtils.write(selfInternal, contents, StandardCharsets.UTF_8, false);
807816
// }
808817
int num=0;
809818
for (int i = 0; i < opperations.size(); i++) {
810819
File f = getTimelineImageFile(i);
811820
ICaDoodleOpperation op = opperations.get(i);
821+
int percent =(int)( ((double )i)/((double)opperations.size())*100.0);
812822
List<CSG> process = cache.get(op);
813823
if (!f.exists())
814824
try {
815825
num++;
826+
getSaveUpdate().renderSplashFrame(percent, "Save Timeline Image "+i+".png");
827+
816828
setSaveImage(process, op);
829+
817830
} catch (IOException e) {
818831
// Auto-generated catch block
819832
e.printStackTrace();
820833
}
821834
}
822835
if (bom != null)
823836
bom.save();
837+
getSaveUpdate().renderSplashFrame(100, "Doofle save Done ");
824838
fireTimelineUpdate(num);
825839
// System.gc();
826840
return getSelf();
@@ -863,7 +877,7 @@ private void setSaveImage(List<CSG> currentState, ICaDoodleOpperation op) throws
863877
if (getOpperations().get(getOpperations().size() - 1) == op) {
864878
Files.copy(imageCache, image);
865879
}
866-
System.err.println("Thumbnail saved successfully to " + imageCache.getAbsolutePath());
880+
//System.err.println("Thumbnail saved successfully to " + imageCache.getAbsolutePath());
867881
}
868882
} catch (Throwable t) {
869883
t.printStackTrace();
@@ -1055,4 +1069,14 @@ public OperationResult getResult() {
10551069
public void setResult(OperationResult result) {
10561070
this.result = result;
10571071
}
1072+
1073+
public ICadoodleSaveStatusUpdate getSaveUpdate() {
1074+
if(saveUpdate==null)
1075+
return defaultSaver;
1076+
return saveUpdate;
1077+
}
1078+
1079+
public void setSaveUpdate(ICadoodleSaveStatusUpdate saveUpdate) {
1080+
this.saveUpdate = saveUpdate;
1081+
}
10581082
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.neuronrobotics.bowlerstudio.scripting.cadoodle;
2+
3+
public interface ICadoodleSaveStatusUpdate {
4+
public void renderSplashFrame(int percent, String message);
5+
}

0 commit comments

Comments
 (0)