package org.activiti.explorer.ui.component.diagram.client.ui;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Document;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.UIDL;
/**
* Client side widget which communicates with the server. Messages from the
* server are shown as HTML and mouse clicks are sent to the server.
*/
public class VProcessDiagram extends Widget implements Paintable
{
public static final String ATTRIBUTE_PROC_KEY = "definitionKey";
/** Set the CSS class name to allow styling. */
public static final String CLASSNAME = "processdiagramWrapper";
/** The client side widget identifier */
protected String paintableId;
/** Reference to the server connection object. */
protected ApplicationConnection client;
public native void drawDiagram(String processDefinitionKey)/*-{
$(document).ready(function(){
var diagrams = [];
diagrams.push(processDefinitionKey);
console.log("Initialize progress bar");
pb1 = new $.ProgressBar({
boundingBox: '#pb1',
label: 'Progressbar!',
on: {
complete: function() {
console.log("Progress Bar COMPLETE");
this.set('label', 'complete!');
},
valueChange: function(e) {
this.set('label', e.newVal + '%');
}
},
value: 0
});
console.log("Progress bar initiated");
ProcessDiagramGenerator.options = {
diagramBreadCrumbsId: "diagramBreadCrumbs",
diagramHolderId: "diagramHolder",
diagramInfoId: "diagramInfo",
};
ActivitiRest.options = {
processInstanceHighLightsUrl: "http://localhost/diagram-viewer/activiti-rest/process-instance.php?id={processInstanceId}&callback=?",
processDefinitionUrl: "http://localhost/diagram-viewer/activiti-rest/process-difinition-diagram-layout.php?id={processDefinitionId}&callback=?",
processDefinitionByKeyUrl: "http://localhost/diagram-viewer/activiti-rest/process-definition.php?id={processDefinitionKey}&callback=?",
};
var processDefinitionId = processDefinitionKey;
ProcessDiagramGenerator.drawDiagram(processDefinitionId);
setTimeout(function(processDefinitionId) {} (processDefinitionId));
});
}-*/;
/**
* The constructor should first call super() to initialize the component and
* then handle any initialization relevant to Vaadin.
*/
public VProcessDiagram()
{
super();
DivElement element = Document.get().createDivElement();
setElement(element);
element.setClassName(CLASSNAME);
DivElement barElement = Document.get().createDivElement();
barElement.setId("pb1");
getElement().appendChild(barElement);
DivElement diagramElement = Document.get().createDivElement();
diagramElement.setId("overlayBox");
getElement().appendChild(diagramElement);
DivElement crumbsElement = Document.get().createDivElement();
crumbsElement.setId("diagramBreadCrumbs");
crumbsElement.setClassName("diagramBreadCrumbs");
crumbsElement.setAttribute("onmousedown", "onmousedown");
crumbsElement.setAttribute("onselectstart", "onmousedown");
diagramElement.appendChild(crumbsElement);
DivElement holderElement = Document.get().createDivElement();
holderElement.setId("diagramHolder");
holderElement.setClassName("diagramHolder");
diagramElement.appendChild(holderElement);
DivElement infoElement = Document.get().createDivElement();
infoElement.setId("diagramInfo");
infoElement.setClassName("diagram-info");
diagramElement.appendChild(infoElement);
}
/**
* Called whenever an update is received from the server
*/
public void updateFromUIDL(UIDL uidl, ApplicationConnection client)
{
if (client.updateComponent(this, uidl, true))
return;
this.client = client;
// Save the client side identifier (paintable id) for the widget
paintableId = uidl.getId();
if (uidl.hasAttribute(ATTRIBUTE_PROC_KEY)) {
drawDiagram(uidl.getStringAttribute(ATTRIBUTE_PROC_KEY));
}
}
}