File: vtkInternalSwtComponent.java

package info (click to toggle)
vtk7 7.1.1%2Bdfsg2-8
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 127,396 kB
  • sloc: cpp: 1,539,584; ansic: 124,382; python: 78,038; tcl: 47,013; xml: 8,142; yacc: 5,040; java: 4,439; perl: 3,132; lex: 1,926; sh: 1,500; makefile: 126; objc: 83
file content (80 lines) | stat: -rw-r--r-- 2,262 bytes parent folder | download | duplicates (10)
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;
    }
  }
}