1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
package vtk.rendering.swt;
import org.eclipse.swt.SWT;
import org.eclipse.swt.opengl.GLCanvas;
import org.eclipse.swt.opengl.GLData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import vtk.vtkObject;
/**
* @author Joachim Pouderoux - joachim.pouderoux@kitware.com, Kitware SAS 2012
* @copyright This work was supported by CEA/CESTA
* Commissariat a l'Energie Atomique et aux Energies Alternatives,
* 15 avenue des Sablieres, CS 60001, 33116 Le Barp, France.
*/
public class vtkInternalSwtComponent extends GLCanvas implements Listener {
private vtkSwtComponent parent;
public static GLData GetGLData() {
GLData gl = new GLData();
gl.doubleBuffer = true;
gl.depthSize = 1; // must be set to something on Linux
return gl;
}
public vtkInternalSwtComponent(vtkSwtComponent parent, Composite parentComposite) {
super(parentComposite, SWT.NO_BACKGROUND, GetGLData());
this.parent = parent;
vtkSwtInteractorForwarderDecorator forwarder =
(vtkSwtInteractorForwarderDecorator)this.parent.getInteractorForwarder();
this.addMouseListener(forwarder);
this.addKeyListener(forwarder);
this.addMouseMoveListener(forwarder);
this.addMouseTrackListener(forwarder);
this.addMouseWheelListener(forwarder);
this.addListener(SWT.Paint, this);
this.addListener(SWT.Close, this);
this.addListener(SWT.Dispose, this);
this.addListener(SWT.Resize, this);
this.IntializeRenderWindow();
}
protected void IntializeRenderWindow() {
setCurrent(); // need to be done so SetWindowIdFromCurrentContext can get the current context!
parent.getRenderWindow().InitializeFromCurrentContext();
}
public void update() {
super.update();
parent.Render();
}
public void handleEvent(Event event) {
switch (event.type) {
case SWT.Paint:
parent.Render();
break;
case SWT.Dispose:
parent.Delete();
vtkObject.JAVA_OBJECT_MANAGER.gc(false);
break;
case SWT.Close:
//System.out.println("closing");
break;
case SWT.Resize:
parent.setSize(getClientArea().width, getClientArea().height);
break;
}
}
}
|