@@ -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}
0 commit comments