package fr.um2.physique.risa.gui;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.border.Border;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
/**
* This class is the main class for Graphical User Interface
*
* @author Emmanuel Hermellin
*
*/
public class UserInterface extends JPanel {
private static final long serialVersionUID = 7218758652719344049L;
private static HeaderTab headtab;
private static ImageTab imagetab;
private static GaussConvolveTab GCtab;
private static HistogramTab histogramtab;
/**
* Create and setup all the GUI's panels
*/
public UserInterface() {
super(new BorderLayout());
GridLayout experimentLayout = new GridLayout(2, 2);
Border paneEdge = BorderFactory.createEmptyBorder(0, 10, 10, 10);
JTabbedPane tabbedPane = new JTabbedPane();
headtab = new HeaderTab();
JPanel Panel1 = new JPanel();
Panel1.setBorder(paneEdge);
Panel1.setLayout(new BoxLayout(Panel1, BoxLayout.Y_AXIS));
Panel1.add(Box.createRigidArea(new Dimension(2, 10)));
Panel1.add(headtab.FitsDisplay());
Panel1.add(headtab.LogDisplay());
Panel1.add(headtab.HeaderDisplay());
tabbedPane.addTab("Header", Panel1);
imagetab = new ImageTab();
JPanel Panel2 = new JPanel();
Panel2.setLayout(experimentLayout);
Panel2.add(imagetab.Picture());
Panel2.add(imagetab.Math());
Panel2.add(imagetab.FitsOpen());
Panel2.add(imagetab.FitsOperation());
tabbedPane.addTab("Pictures", Panel2);
histogramtab = new HistogramTab();
JPanel Panel3 = new JPanel();
Panel3.add(histogramtab.HistogramDisplay());
tabbedPane.addTab("Histogram", Panel3);
// my gaussian convolution tab
//author Mathilde SL
GCtab = new GaussConvolveTab();
JPanel Panel_gc = new JPanel();
Panel_gc.add(GCtab.Picture());
tabbedPane.addTab("Gaussian Convolution", Panel_gc);
// Add tabbedPane to this panel.
add(tabbedPane, BorderLayout.CENTER);
}
/**
* Create the GUI and show it. For thread safety, this method should be
* invoked from the event-dispatching thread.
*/
private static void createAndShowGUI() {
// Create and set up the window.
JFrame frame = new JFrame("RISA 2011");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create and set up the content pane.
UserInterface newContentPane = new UserInterface();
newContentPane.setOpaque(true); // content panes must be opaque
frame.setContentPane(newContentPane);
// Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
// Schedule a job for the event-dispatching thread:
// creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
/**
* This method returns the HeaderTab (error log purpose)
*
* @return The HeaderTab
*/
public static HeaderTab getHeaderTab() {
return headtab;
}
/**
* This method returns the HistogramTab (error log purpose)
*
* @return The HistogramTab
*/
public static HistogramTab getHistogramTab() {
return histogramtab;
}
}