package edu.purdue.pivot.skwiki.client.sketch;
import java.util.ArrayList;
import com.google.gwt.user.client.ui.Label;
import com.kiouri.sliderbar.client.event.BarValueChangedEvent;
import com.kiouri.sliderbar.client.event.BarValueChangedHandler;
import edu.purdue.pivot.skwiki.shared.CanvasPack;
import edu.purdue.pivot.skwiki.shared.history.AbstractHistory;
public class CanvasEditor {
private boolean preview = false;
final Label valueBox = new Label("slidebar value");
final int slideBarMax = 900;
AnimationSlideBar myAnimationSliderBar = new AnimationSlideBar(slideBarMax,
"120px", true);
final ArrayList<AbstractHistory> returnHistoryList = new ArrayList<AbstractHistory>();
LocalHistory myLocalHistory = new LocalHistory();
int historyNewIndex = 0;
int currentRevision = 0;
int latestRevision = 0;
int revisionListItemCount = 1;
double currentSliderFactor = 1.00;
/* index of this editor */
String canvasEditorID;
String idField;
float scaleWidth = 1;
float scaleHeight = 1;
final TouchPad myPad;
public CanvasEditor(String uuid, String uid, ArrayList<CanvasToolbar> toolbars, int windowWidth, int windowHeight) {
this.idField = uid;
this.canvasEditorID = uuid;
myPad = new TouchPad(canvasEditorID, idField, toolbars, windowWidth, windowHeight);
}
// preview handler
public CanvasEditor(String uuid, String uid, float scaleWidth, float scaleHeight, int windowWidth, int windowHeight) {
this.idField = uid;
this.canvasEditorID = uuid;
myPad = new TouchPad(canvasEditorID, idField, scaleWidth, scaleHeight, windowWidth, windowHeight);
preview = true;
this.scaleWidth = scaleWidth;
this.scaleHeight = scaleHeight;
}
public void updateCurrentRevision(int newRevision) {
currentRevision = newRevision;
}
public TouchPad getSurface() {
return myPad;
}
//Fill the canvas editor after check out
public void updateOperation(CanvasPack result) {
if (preview) {
myPad.scale(scaleWidth, scaleHeight);
}
myLocalHistory.returnHistoryList.clear();
try {
if (result.updatedHistory == null) {
return;
}
} catch (Exception e) {
System.out.println("exception --");
return;
}
currentRevision = result.updateRevision;
for (AbstractHistory tempHistory : result.updatedHistory) {
myLocalHistory.returnHistoryList.add(tempHistory);
}
myPad.renewImage(myLocalHistory.returnHistoryList);
}
//Fill the canvas editor after check out
// TODO this is just a nasty tweak to do merge!
public void updateOperation2(CanvasPack result) {
myPad.renewImage(result.updatedHistory);
}
public CanvasPack commitData() {
CanvasPack tempCanvasPack1 = new CanvasPack();
tempCanvasPack1.id = idField.trim();
tempCanvasPack1.updateRevision = currentRevision;
if (currentRevision != 0) {
tempCanvasPack1.historyIndex = myLocalHistory.returnHistoryList
.get(myLocalHistory.returnHistoryList.size() - 1).historyNumber;
} else {
tempCanvasPack1.historyIndex = myLocalHistory.returnHistoryList
.size();
}
historyNewIndex = myLocalHistory.returnHistoryList.size();
myPad.updateDataPack(tempCanvasPack1, historyNewIndex);
return tempCanvasPack1;
}
public void commitOnSuccess(CanvasPack result) {
if (result.updatedHistory.size() == 0) {
return;
}
myLocalHistory.commitFinishIndex = result.updatedHistory
.get(result.updatedHistory.size() - 1).historyNumber;
for (AbstractHistory tempHistory : result.updatedHistory) {
returnHistoryList.add(tempHistory);
myLocalHistory.returnHistoryList.add(tempHistory);
}
updateCurrentRevision(result.updateRevision);
}
public void checkoutOnSuccess(CanvasPack result) {
myLocalHistory.returnHistoryList.clear();
for (AbstractHistory tempHistory : result.updatedHistory) {
// s returnHistoryList.add(tempHistory);
myLocalHistory.returnHistoryList.add(tempHistory);
}
myPad.renewImage(myLocalHistory.returnHistoryList);
currentRevision = result.updateRevision;
}
}