package com.chap.links.client;
import com.chap.links.client.events.SelectHandler;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONNumber;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.visualization.client.Selection;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class NetworkDemo4_offline implements EntryPoint {
Button btnAddPackage = new Button("Add autmatic package");
Button btnUpdatePackage = new Button("Update manual package");
Button btnDeletePackage = new Button("Delete manual package");
Network network = null;
/**
* This is the entry point method.
*/
public void onModuleLoad() {
JSONObject n1 = new JSONObject();
n1.put("id", new JSONNumber(1));
n1.put("text", new JSONString("Node 1"));
JSONObject n2 = new JSONObject();
n2.put("id", new JSONNumber(2));
n2.put("text", new JSONString("Node 2"));
JSONObject n3 = new JSONObject();
n3.put("id", new JSONNumber(3));
n3.put("text", new JSONString("Node 3"));
JSONArray nodes = new JSONArray();
nodes.set(0, n1);
nodes.set(1, n2);
nodes.set(2, n3);
JSONObject l1 = new JSONObject();
l1.put("from", new JSONNumber(1));
l1.put("to", new JSONNumber(2));
JSONObject l2 = new JSONObject();
l2.put("from", new JSONNumber(1));
l2.put("to", new JSONNumber(3));
JSONObject l3 = new JSONObject();
l3.put("from", new JSONNumber(2));
l3.put("to", new JSONNumber(3));
JSONArray links = new JSONArray();
links.set(0, l1);
links.set(1, l2);
links.set(2, l3);
JSONObject p1 = new JSONObject();
p1.put("from", new JSONNumber(1));
p1.put("to", new JSONNumber(2));
p1.put("duration", new JSONNumber(5));
JSONObject p2 = new JSONObject();
p2.put("from", new JSONNumber(1));
p2.put("to", new JSONNumber(3));
p2.put("duration", new JSONNumber(3));
JSONObject p3 = new JSONObject();
p3.put("from", new JSONNumber(2));
p3.put("to", new JSONNumber(3));
p3.put("duration", new JSONNumber(1));
JSONArray packages = new JSONArray();
packages.set(0, p1);
packages.set(1, p2);
packages.set(2, p3);
// Create options
Network.Options options = Network.Options.create();
options.setWidth("300px");
options.setHeight("300px");
options.setStabilize(false);
options.setBackgroundColor("#E4F3F8");
options.setBorderWidth(0);
options.setLinksLength(100);
options.setLinksWidth(2);
// create the visualization, with data and options
network = new Network(nodes.getJavaScriptObject(),
links.getJavaScriptObject(), packages.getJavaScriptObject(),
options);
network.addSelectHandler(createSelectHandler(network));
RootPanel.get("mynetwork").add(network);
// create button
btnAddPackage.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
addPackage();
}
});
RootPanel.get("btnAddPackage").add(btnAddPackage);
// create button
btnUpdatePackage.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
updatePackage();
}
});
RootPanel.get("btnUpdatePackage").add(btnUpdatePackage);
// create button
btnDeletePackage.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
deletePackage();
}
});
RootPanel.get("btnDeletePackage").add(btnDeletePackage);
//updatePackage();
}
void addPackage() {
JSONObject p = new JSONObject();
p.put("from", new JSONNumber(1));
p.put("to", new JSONNumber(2));
JSONArray packages = new JSONArray();
packages.set(0, p);
network.addPackages(packages.getJavaScriptObject());
}
final int packageId = 1;
double packageProgress = 0.3;
double packageStep = 0.1;
void updatePackage() {
// adjust the progress
if (packageProgress > 1.0 - packageStep)
packageStep = -0.1;
if (packageProgress < 0.0 - packageStep)
packageStep = 0.1;
packageProgress += packageStep;
JSONObject p = new JSONObject();
p.put("id", new JSONNumber(packageId));
p.put("from", new JSONNumber(2));
p.put("to", new JSONNumber(3));
p.put("progress", new JSONNumber(packageProgress));
JSONArray packages = new JSONArray();
packages.set(0, p);
network.addPackages(packages.getJavaScriptObject());
}
void deletePackage() {
JSONObject p = new JSONObject();
p.put("id", new JSONNumber(packageId));
p.put("from", new JSONNumber(2));
p.put("to", new JSONNumber(3));
p.put("action", new JSONString("delete"));
JSONArray packages = new JSONArray();
packages.set(0, p);
network.addPackages(packages.getJavaScriptObject());
}
/**
* add a select handler (the select event occurs when the user clicks on an
* event)
*
* @param timeline
* @return
*/
private SelectHandler createSelectHandler(final Network network) {
return new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
JsArray<Selection> sel = network.getSelections();
String info = "Selected nodes: ";
for (int i = 0; i < sel.length(); i++) {
int row = sel.get(i).getRow();
info += row + " ";
}
if (sel.length() == 0) {
info += "none";
}
// RootPanel.get("lblInfo").add(new Label(info));
System.out.println(info);
}
};
}
}