package vtk.sample.rendering;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

import vtk.vtkActor;
import vtk.vtkConeSource;
import vtk.vtkNativeLibrary;
import vtk.vtkPolyDataMapper;
import vtk.rendering.jogl.vtkJoglComponent;

public class JoglConeRendering {
    // -----------------------------------------------------------------
    // Load VTK library and print which library was not properly loaded

    static {
        if (!vtkNativeLibrary.LoadAllNativeLibraries()) {
            for (vtkNativeLibrary lib : vtkNativeLibrary.values()) {
                if (!lib.IsLoaded()) {
                    System.out.println(lib.GetLibraryName() + " not loaded");
                }
            }
        }
        vtkNativeLibrary.DisableOutputWindow(null);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // build VTK Pipeline
                vtkConeSource cone = new vtkConeSource();
                cone.SetResolution(8);

                vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();
                coneMapper.SetInputConnection(cone.GetOutputPort());

                vtkActor coneActor = new vtkActor();
                coneActor.SetMapper(coneMapper);

                // VTK rendering part
                vtkJoglComponent joglWidget = new vtkJoglComponent();
                joglWidget.getRenderer().AddActor(coneActor);

                // UI part
                JFrame frame = new JFrame("SimpleVTK");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.getContentPane().setLayout(new BorderLayout());
                frame.getContentPane().add(joglWidget.getComponent(),
                        BorderLayout.CENTER);
                frame.setSize(400, 400);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}

@@ -53,16 +53,83 @@
 rLayout;
+%0Aimport java.awt.event.KeyEvent;%0Aimport java.awt.event.KeyListener;
 %0A%0Aimport
@@ -1437,16 +1437,22 @@
         
+final 
 vtkJoglC
@@ -2030,16 +2030,496 @@
 e(true);
+%0A%0A                // Add r:ResetCamera and q:Quit key binding%0A                joglWidget.getComponent().addKeyListener(new KeyListener() %7B%0A%0A%09%09%09%09%09@Override%0A%09%09%09%09%09public void keyTyped(KeyEvent e) %7B%0A%09%09%09%09%09%09if(e.getKeyChar() == 'r') %7B%0A%09%09%09%09%09%09%09joglWidget.resetCamera();%0A%09%09%09%09%09%09%7D else if (e.getKeyChar() == 'q') %7B%0A%09%09%09%09%09%09%09System.exit(0);%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09@Override%0A%09%09%09%09%09public void keyReleased(KeyEvent e) %7B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09@Override%0A%09%09%09%09%09public void keyPressed(KeyEvent e) %7B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D);
 %0A       

Add key binding to JOGL cone example