Q: Can I use your Java diagramming control in an SWT (Standard Widget Toolkit) application?

A: JDiagram is a Swing component, and it can be embedded into SWT application using the SWT/AWT Bridge library. A minimal SWT program that creates and displays a scrollable DiagramView is shown below.

import java.awt.Frame;
import java.awt.Panel;

import javax.swing.JScrollPane;

import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import com.mindfusion.diagramming.DiagramView;

public class SwtApp
   public static void main(String[] args) 
	   // create SWT main window
	   Display display = new Display ();
	   Shell shell = new Shell(display);
	   shell.setLayout(new FillLayout());
	   Composite composite = new Composite(shell, SWT.EMBEDDED | SWT.NO_BACKGROUND);

	   // add a Swing frame to the SWT composite control
	   Frame frame = SWT_AWT.new_Frame(composite);
	   Panel panel = new Panel(new java.awt.BorderLayout());

	   // add a DiagramView to the Swing frame
	   DiagramView flowchart = new DiagramView();
	   JScrollPane scrollPane = new JScrollPane(flowchart);

	   // run the SWT event loop
	   while (!shell.isDisposed())
		   	if (!display.readAndDispatch())
	   display.dispose ();

Note that Swing and SWT process events in different threads. Hence if you need to update the SWT user interface in response to a diagram event, you must run the SWT processing code using the Display.asyncExec or Display.syncExec methods. If you need to update the diagram in response to an SWT event, run the diagram processing code using SwingUtilities.invokeLater or SwingUtilities.invokeAndWait methods. See the Swing/SWT Integration topic at eclipse.org for further information on thread synchronization and additional SWT/AWT Bridge tips.