import javax.swing.*;
import inf.v3d.obj.*;
import inf.v3d.view.ViewerPanel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import inf.vtk.uiswing.*;
import javax.swing.border.*;
public class GrafischeOberflaeche extends JFrame implements ActionListener {
//Attribute
// Spinner für Start- und Zieleingabe
private JSpinner sraumSpinner = new JSpinner(new SpinnerNumberModel(1.0,
1.0, 180.0, 1.0));
// Startraum
private JSpinner setageSpinner = new JSpinner(new SpinnerNumberModel(1.0,1.0, 3.0, 1.0));
// Startetage
private JSpinner zraumSpinner = new JSpinner(new SpinnerNumberModel(1.0,1.0, 180.0, 1.0));
// Zielraum
private JSpinner zetageSpinner = new JSpinner(new SpinnerNumberModel(1.0,1.0, 3.0, 1.0));
// Zieletage
private JButton buttonNavigieren = new JButton("Navigation starten");
// großes Panel für 3D-Navigation
private ViewerPanel viewerpanel = new ViewerPanel();
// Testlabels für den Weg (müssen ersetzt werden)!!!
private JLabel l1 = new JLabel();
private JLabel l2 = new JLabel();
private JLabel l3 = new JLabel();
// Konstruktor
public GrafischeOberflaeche() {
Object3D.setAutoRegister(true);
JPanel grundPanel = new JPanel(new BorderLayout());
JPanel linkerSeitenrand = new JPanel(new BorderLayout());
JPanel wegFeldRahmen = new JPanel(new BorderLayout());
JPanel wegFeldPanel = new JPanel(new BorderLayout());
JPanel viewerPanel = new JPanel(new BorderLayout());
JPanel rahmenAußen = new JPanel(new BorderLayout());
JPanel rahmenInnen = new JPanel(new BorderLayout());
JPanel start = new JPanel(new GridLayout(4, 2));
JPanel ziel = new JPanel(new GridLayout(4, 2));
// Testlabels
wegFeldRahmen.setBorder(new TitledBorder("Weg"));
wegFeldPanel.add(l1);
wegFeldPanel.add(l2);
wegFeldPanel.add(l3);
// Hinzufügen der Toolbar
JToolBar toolbar = new JToolBar();
toolbar.add(new VTKViewControlToolbar(viewerpanel.getCanvas()));
toolbar.add(new VTKViewPointToolbar(viewerpanel.getCanvas()));
// Anordnung der Starteingabe
start.setBorder(new TitledBorder("Startkoordinaten"));
start.add(new JLabel("Startraum:"));
start.add(sraumSpinner);
start.add(new JLabel("Startetage:"));
start.add(setageSpinner);
// Anordnung der Zieleingabe
ziel.setBorder(new TitledBorder("Zielkoordienaten"));
ziel.add(new JLabel("Zielraum:"));
ziel.add(zraumSpinner);
ziel.add(new JLabel("Zieletage:"));
ziel.add(zetageSpinner);
setSize(900, 600);
setTitle("Navigation");
setLocation(0, 0);
// Layout der einzelnen Felder
add(grundPanel, BorderLayout.CENTER);
grundPanel.add(viewerPanel, BorderLayout.CENTER);
viewerPanel.add(toolbar, BorderLayout.NORTH);
viewerPanel.add(viewerpanel, BorderLayout.CENTER);
grundPanel.add(linkerSeitenrand, BorderLayout.WEST);
linkerSeitenrand.add(rahmenAußen, BorderLayout.NORTH);
linkerSeitenrand.add(wegFeldRahmen, BorderLayout.CENTER);
wegFeldRahmen.add(wegFeldPanel, BorderLayout.CENTER);
rahmenAußen.add(rahmenInnen, BorderLayout.CENTER);
buttonNavigieren.setBorder(new EtchedBorder(EtchedBorder.RAISED));
buttonNavigieren.setBackground(new Color(200, 200, 100));
buttonNavigieren.addActionListener(this);
rahmenAußen.add(buttonNavigieren, BorderLayout.SOUTH);
rahmenInnen.add(start, BorderLayout.NORTH);// evtl. Anpassen
rahmenInnen.add(ziel, BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == buttonNavigieren) {
// Anweisungen fehlen noch!!!
}
}
public static void main(String[] args) {
new GrafischeOberflaeche();
}
}