();
formatValueMap.put("png", "PNG");
formatValueMap.put("jpeg", "JPEG");
formatItem.setValueMap(formatValueMap);
formatItem.setRequired(true);
formatItem.setDefaultValue("png");
formatItem.setRedrawOnChange(true);
qualityItem.setType("integer");
qualityItem.setMinValue(0);
qualityItem.setMaxValue(100);
qualityItem.setNumValues(21);
qualityItem.setDefaultValue(80);
qualityItem.setShowIfCondition(new FormItemIfFunction() {
@Override
public boolean execute(FormItem item, Object value, DynamicForm form) {
return "jpeg".equals(formatItem.getValueAsString());
}
});
qualityItem.setTitleVAlign(VerticalAlignment.TOP);
qualityItem.setColSpan(2);
qualityItem.setHeight(50);
qualityItem.setRequired(true);
downloadButton.addClickHandler(new com.smartgwt.client.widgets.form.fields.events.ClickHandler() {
@Override
public void onClick(com.smartgwt.client.widgets.form.fields.events.ClickEvent event) {
final String format = formatItem.getValueAsString();
final DSRequest requestProperties = new DSRequest();
requestProperties.setExportDisplay(ExportDisplay.DOWNLOAD);
requestProperties.setExportFilename("Revenue");
requestProperties.setExportImageFormat(EnumUtil.getEnum(ExportImageFormat.values(), format));
final Float quality = qualityItem.getValueAsFloat();
if (quality != null) {
requestProperties.setExportImageQuality(quality / 100.0F);
}
RPCManager.exportImage(multiSeriesChart.getSvgString(), requestProperties);
}
});
downloadForm.setItems(formatItem, qualityItem, downloadButton);
imageExportSideLayout.addMember(downloadForm);
final Img snapshotImg = new Img();
final IButton getDataURLButton = new IButton("Get Data URL");
getDataURLButton.addClickHandler(new ClickHandler() {
private String getDataURLRes = null;
@Override
public void onClick(ClickEvent event) {
if (!browserSupportsDataURLs) {
SC.say("This feature is not supported in IE 6 or 7.");
return;
}
getDataURLRes = multiSeriesChart.getDataURL(new DataURLCallback() {
@Override
public void execute(String dataURL) {
if (getDataURLRes == null) {
SC.clearPrompt();
} else {
getDataURLRes = null;
}
if (SC.isIE() && getBrowserVersion() < 9 && dataURL.length() > 32768) {
SC.say("A data URL was generated, but it cannot be displayed in Internet Explorer 8 because it is longer than the 32 KiB limit." +
"See the data
Protocol page on MSDN for more information.");
} else {
snapshotImg.setSrc(dataURL);
}
}
});
if (getDataURLRes == null) {
SC.showPrompt("Loading", "${loadingImage} The chart is being converted to an image.");
}
}
});
imageExportSideLayout.addMember(getDataURLButton);
snapshotImg.setBorder("3px solid blue");
snapshotImg.setWidth(200);
snapshotImg.setHeight(150);
imageExportSideLayout.addMember(snapshotImg);
if (!browserSupportsDataURLs) {
getDataURLButton.disable();
snapshotImg.hide();
}
// Overall layout
final HLayout chartImageExportLayout = new HLayout();
chartImageExportLayout.setWidth100();
chartImageExportLayout.setHeight100();
chartImageExportLayout.setMembersMargin(20);
chartImageExportLayout.addMember(multiSeriesChart);
chartImageExportLayout.addMember(imageExportSideLayout);
chartImageExportLayout.draw();
}
}