use of eu.esdihumboldt.hale.ui.common.graph.content.CellGraphContentProvider in project hale by halestudio.
the class HtmlMappingExporter method saveImageToFile.
private void saveImageToFile(final Cell cell, File filesDir) {
Display display;
if (Display.getCurrent() != null) {
// use the current display if available
display = Display.getCurrent();
} else {
try {
// use workbench display if available
display = PlatformUI.getWorkbench().getDisplay();
} catch (Throwable e) {
// use a dedicated display thread if no workbench is
// available
display = DisplayThread.getInstance().getDisplay();
}
}
// creates a unique id for each cell
String cellId = cellIds.getId(cell);
final File file = new File(filesDir, "img_" + cellId + ".png");
display.syncExec(new Runnable() {
@Override
public void run() {
OffscreenGraph offscreenGraph = new OffscreenGraph(600, 200) {
@Override
protected void configureViewer(GraphViewer viewer) {
IContentProvider contentProvider = new CellGraphContentProvider();
GraphLabelProvider labelProvider = new GraphLabelProvider(null, HaleUI.getServiceProvider());
viewer.setContentProvider(contentProvider);
viewer.setLabelProvider(labelProvider);
viewer.setInput(cell);
}
};
Graph graph = offscreenGraph.getGraph();
Dimension dimension = computeSize(graph);
// minimum width = 600
offscreenGraph.resize(dimension.width > 600 ? dimension.width : 600, dimension.height);
try {
offscreenGraph.saveImage(new BufferedOutputStream(new FileOutputStream(file)), null);
} catch (Exception e) {
reporter.error(new IOMessageImpl("Can not create image", e));
} finally {
offscreenGraph.dispose();
}
}
});
}
Aggregations