use of org.eclipse.zest.core.viewers.GraphViewer 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();
}
}
});
}
use of org.eclipse.zest.core.viewers.GraphViewer in project hale by halestudio.
the class AbstractMappingView method createViewControl.
@Override
public void createViewControl(Composite parent) {
viewer = new GraphViewer(parent, SWT.BORDER);
viewer.setContentProvider(createContentProvider());
// viewer.setContentProvider(new CellRelationshipContentProvider());
// viewer.setContentProvider(new NestedCellRelationshipContentProvider());
viewer.setLabelProvider(createLabelProvider(viewer));
viewer.setInput(null);
LayoutAlgorithm layout = createLayout();
viewer.setLayoutAlgorithm(layout, true);
viewer.applyLayout();
fillToolBar();
// set selection provider
selectionFacade = new SelectionProviderFacade();
selectionFacade.setSelectionProvider(getViewer());
getSite().setSelectionProvider(new PostSelectionSupport(selectionFacade));
viewer.getControl().addKeyListener(new KeyListener() {
@Override
public void keyReleased(KeyEvent e) {
if (e.keyCode == 'a' && (e.stateMask & SWT.MODIFIER_MASK) == SWT.CTRL) {
// XXX even though getSelection returns the current state, a
// selection update is not triggered by the control
// -> force selection change event after Ctrl+A
ISelection sel = viewer.getSelection();
selectionFacade.setSelection(sel);
}
}
@Override
public void keyPressed(KeyEvent e) {
// nothing to do
}
});
// create context menu
new ViewerMenu(getSite(), getViewer()) {
/**
* @see eu.esdihumboldt.hale.ui.util.ViewContextMenu#menuAboutToShow(org.eclipse.jface.action.IMenuManager)
*/
@Override
public void menuAboutToShow(IMenuManager manager) {
super.menuAboutToShow(manager);
AbstractMappingView.this.menuAboutToShow(manager);
}
};
}
use of org.eclipse.zest.core.viewers.GraphViewer in project hale by halestudio.
the class ImageContent method getImageContent.
/**
* Get the function image for the function with the given identifier.
*
* @param func_id the function identifier
* @param tempDir the temporary directory where the function image may be
* stored
* @return the function image input stream or <code>null</code>
* @throws Exception if an error occurs generating the image
*/
public static InputStream getImageContent(String func_id, File tempDir) throws Exception {
final FunctionDefinition<?> function = FunctionUtil.getFunction(func_id, null);
if (function == null) {
log.warn("Unknown function " + func_id);
return null;
}
final File _functionFile = new File(tempDir, func_id + ".png");
if (!_functionFile.exists()) {
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();
}
}
display.syncExec(new Runnable() {
@Override
public void run() {
// create an initial off-screen graph with fixed values;
// resize the graph after computing the figures width and
// height
OffscreenGraph off_graph = new OffscreenGraph(300, 200) {
@Override
protected void configureViewer(GraphViewer viewer) {
LayoutAlgorithm algo = new FunctionTreeLayoutAlgorithm();
FunctionGraphContentProvider stcp = new FunctionGraphContentProvider();
// XXX no service provider given
FunctionGraphLabelProvider fglp = new FunctionGraphLabelProvider(null, false);
viewer.setContentProvider(stcp);
viewer.setLabelProvider(fglp);
viewer.setInput(function);
viewer.setLayoutAlgorithm(algo);
}
};
Graph graph = off_graph.getGraph();
Dimension dim = computeSize(graph);
int width;
if (dim.width > 450) {
width = dim.width;
} else {
// minimum width = 450
width = 450;
}
int height = dim.height;
off_graph.resize(width, height);
try {
off_graph.saveImage(new BufferedOutputStream(new FileOutputStream(_functionFile)), null);
} catch (IOException e) {
log.warn("Conversion from Graph to Image failed!");
} finally {
off_graph.dispose();
}
}
});
}
if (_functionFile.exists()) {
return new FileInputStream(_functionFile);
}
return null;
}
use of org.eclipse.zest.core.viewers.GraphViewer in project hale by halestudio.
the class GraphMLDialog method open.
/**
* Opens the dialog for displaying the graph
*
* @throws IOException may be thrown if the graph string from the database
* can fails to convert
*/
public void open() throws IOException {
Shell parent = super.getParent();
final Shell shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.MIN | SWT.MODELESS);
shell.setFocus();
shell.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
shell.setMinimized(true);
}
@Override
public void focusGained(FocusEvent e) {
// ignore
}
});
shell.setLayout(GridLayoutFactory.fillDefaults().create());
shell.setText(getText());
final Composite viewerContainer = new Composite(shell, SWT.EMBEDDED);
viewerContainer.setLayout(new FillLayout());
viewerContainer.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
TinkerGraph tgraph = new TinkerGraph();
GraphMLReader greader = new GraphMLReader(tgraph);
ByteArrayInputStream in;
in = new ByteArrayInputStream(graphString.getBytes(("UTF-8")));
greader.inputGraph(in);
GraphViewer viewer = new GraphViewer(viewerContainer, SWT.NONE);
TreeLayoutAlgorithm la = new TreeLayoutAlgorithm(TreeLayoutAlgorithm.RIGHT_LEFT);
viewer.setLabelProvider(new GraphMLLabelProvider());
viewer.setContentProvider(new GraphMLContentProvider());
viewer.setInput(tgraph.getEdges());
viewer.setLayoutAlgorithm(la, true);
viewer.applyLayout();
viewerContainer.pack();
viewerContainer.setVisible(true);
shell.open();
Display display = parent.getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
use of org.eclipse.zest.core.viewers.GraphViewer in project hale by halestudio.
the class FunctionGraphSection method createControls.
/**
* @see org.eclipse.ui.views.properties.tabbed.AbstractPropertySection#createControls(org.eclipse.swt.widgets.Composite,
* org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage)
*/
@Override
public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {
super.createControls(parent, aTabbedPropertySheetPage);
Composite compparent = getWidgetFactory().createComposite(parent);
compparent.setLayout(new FormLayout());
Composite composite = getWidgetFactory().createComposite(compparent);
composite.setLayout(new FillLayout());
FormData data = new FormData();
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, -0);
data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE);
data.bottom = new FormAttachment(100, -ITabbedPropertyConstants.VSPACE);
composite.setLayoutData(data);
viewer = new GraphViewer(composite, SWT.NONE);
viewer.setLayoutAlgorithm(treeAlgorithm, true);
viewer.setContentProvider(new FunctionGraphContentProvider());
viewer.setLabelProvider(new FunctionGraphLabelProvider(HaleUI.getServiceProvider(), true));
}
Aggregations