Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

144 lines
3.4 KiB

2 years ago
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.plaf.basic.*;
public class TestInternalFrames extends JFrame {
private Desktop theDesktop;
private Dimension screenSize;
public TestInternalFrames() {
super("VTK Internal Frame Demo");
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setSize(900, 900);
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
this.addWindowListener(l);
this.getContentPane().add(new SplitFrame());
new MenuMgr();
this.show();
}
public void addMenuBar(JMenuBar m) {
setJMenuBar(m);
}
private class SplitFrame extends JSplitPane {
public SplitFrame( ) {
super(JSplitPane.VERTICAL_SPLIT);
this.setDividerLocation(screenSize.height/2);
setContinuousLayout(true);
setOneTouchExpandable(true);
add(theDesktop = new Desktop());
add(new Tabbed());
}
}
private class Desktop extends JDesktopPane {
public Desktop( ) {
super();
this.setPreferredSize(screenSize);
this.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
this.add(new VTKFrame(10, 10));
this.add(new VTKFrame(500, 10));
}
}
private class Tabbed extends JTabbedPane {
public Tabbed() {
this.addTab( "vtk1", new TestVTKCanvas() );
this.addTab( "vtk2", new TestVTKCanvas() );
setMinimumSize(new Dimension(300, 300));
// another swing bug work around
// for some reason the first time the tabbed item is drawn,
// tab 0 is selected but the sphere (tab 1) is drawn
// manually selecting the tabs synchs the tab and the draw order
// it is harmless but it is still annoying
// so we force tab 1 to be selected and hide the bug from the user
// note that selecting 0 does not work....
this.setSelectedIndex(1);
}
}
private class VTKFrame extends JInternalFrame {
public VTKFrame(int x, int y) {
super("VTK Window", true, true, true, true);
Dimension mySize = new Dimension();
mySize.height = 300;
mySize.width = 300;
this.setSize(mySize);
this.getContentPane().setLayout(new BorderLayout());
this.setLocation(x, y);
this.getContentPane().add(new TestVTKCanvas(), BorderLayout.CENTER);
this.pack();
this.setVisible(true);
}
}
private class MenuMgr extends JMenuBar {
JMenu menu;
public MenuMgr() {
super();
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
menu = new JMenu("File");
menu.add(new CreateWindowAction("Create New VTK Window"));
menu.add(new KillAction("Exit"));
add(menu);
addMenuBar(this);
}
}
private class CreateWindowAction extends AbstractAction {
private int layer = 0;
public CreateWindowAction (String label) {
super(label);
}
public void actionPerformed(ActionEvent ev) {
theDesktop.add(new VTKFrame(340, 200),
new Integer(layer));
}
}
private class KillAction extends AbstractAction {
public KillAction(String label) {
super(label);
}
public void actionPerformed(ActionEvent ev) {
System.exit(0);
}
}
public static void main(String[] args) {
JFrame f = new TestInternalFrames();
}
}