/* * Project Info: http://jcae.sourceforge.net * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * (C) Copyright 2008, by EADS France */ package org.jcae.vtk.test; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.IOException; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import javax.swing.JToolBar; import javax.swing.ToolTipManager; //import org.jcae.vtk.ViewableCAD; import org.jcae.vtk.Utils; import org.jcae.vtk.Canvas; import org.jcae.vtk.UNVToMesh; import org.jcae.vtk.ViewableMesh; import vtk.vtkActor; import vtk.vtkCanvas; import vtk.vtkFileOutputWindow; /** Test that VTK canvas can be properly integrated in a Swing GUI * TODO : Don't work actually ! */ public class TestGUI implements KeyListener { public vtkCanvas canvas; public TestGUI() { } public static TestGUI instance = new TestGUI(); public static void main(String[] args) { try { Utils.loadVTKLibraries(); JPopupMenu.setDefaultLightWeightPopupEnabled(false); ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JSplitPane split = new JSplitPane(); JTabbedPane tabbedPane = new JTabbedPane(); Canvas c1 = new Canvas(); instance.canvas = c1; Canvas c2 = new Canvas(); Canvas c3 = new Canvas(); c1.addKeyListener(instance); c2.addKeyListener(instance); c3.addKeyListener(instance); ArrayList<vtkActor> actors = new ArrayList<vtkActor>(); if (args[0].equalsIgnoreCase("cao")) { //ViewableCAD cascadeActorManager = new ViewableCAD(args[1]); //cascadeActorManager.addCanvas(c1); //actors.add(cascadeActorManager.getBackFaces()); //actors.add(cascadeActorManager.getEdgesActor()); //actors.add(cascadeActorManager.getFacesActor()); //actors.add(cascadeActorManager.getVerticesActor()); } else if (args[0].equalsIgnoreCase("mailleur")) { ViewableMesh viewer = new ViewableMesh(new UNVToMesh(args[1], null).getMesh()); viewer.addCanvas(c1); //actors.add(viewer.computeActor()); } else throw new RuntimeException("Type of viewer unknown"); for (vtkActor actor : actors) { c2.GetRenderer().AddActor(actor); c3.GetRenderer().AddActor(actor); } c1.GetRenderer().ResetCamera(); c2.GetRenderer().ResetCamera(); c3.GetRenderer().ResetCamera(); split.add(c1, JSplitPane.BOTTOM); //split.setContinuousLayout(true); split.add(c2, JSplitPane.TOP); tabbedPane.add(split, "Splitted"); tabbedPane.add(c3, "Not splitted"); JMenuBar bar = new JMenuBar(); JMenu menu = new JMenu("File"); menu.add(new JMenuItem("New")); menu.add(new JMenuItem("Open")); menu.add(new JMenuItem("Close")); menu.add(new JMenuItem("Save")); menu.add(new JMenuItem("Obiwan Kenobi")); menu.add(new JMenuItem("Exit")); bar.add(menu); // Variables declaration - do not modify JToolBar jToolBar1 = new javax.swing.JToolBar(); JButton jButton1 = new javax.swing.JButton(); jToolBar1.setRollover(true); jButton1.setText("jButton1"); jButton1.setFocusable(false); jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); jToolBar1.add(jButton1); frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); frame.setJMenuBar(bar); frame.add(jToolBar1); frame.add(tabbedPane); frame.pack(); frame.setSize(800, 600); frame.setVisible(true); split.setDividerLocation(0.5); // DEBUG ON vtkFileOutputWindow output = new vtkFileOutputWindow(); output.SetInstance(output); output.SetFileName("debug.log"); System.out.println("Fichier de log : " + output.GetFileName()); c1.GetRenderer().DebugOn(); c1.GetRenderWindow().DebugOn(); c2.GetRenderer().DebugOn(); c2.GetRenderWindow().DebugOn(); //c3.GetRenderer().DebugOn(); } catch (Exception ex) { Logger.getLogger(TestGUI.class.getName()).log(Level.SEVERE, null, ex); } } public void keyPressed(KeyEvent e) { System.out.println("Key Pressed"); } public void keyReleased(KeyEvent e) { System.out.println("Key Released"); if (e.getKeyCode() == KeyEvent.VK_C) { try { Utils.takeScreenshot(canvas); } catch (IOException ex) { Logger.getLogger(TestGUI.class.getName()).log(Level.SEVERE, null, ex); } } } public void keyTyped(KeyEvent arg0) { } // }