package de.yogularm.minecraft.itemfinder.gui;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import de.yogularm.minecraft.itemfinder.profiles.ProfilesCollection;
import de.yogularm.minecraft.itemfinder.region.World;
public class GUI {
private JFrame frame;
private WorldViewer worldViewer;
private WorldSelector selector;
public GUI() {
setLookAndFeel();
initUI();
ProfilesCollection profiles;
try {
profiles = ProfilesCollection.getDefault();
} catch (IOException e) {
JOptionPane.showMessageDialog(null,
"Error loading minecraft profiles: " + e.getMessage() +
" You can still open individual saves using the Browse... button.",
"Error", JOptionPane.ERROR_MESSAGE);
profiles = new ProfilesCollection();
}
selector.setWorlds(profiles.getWorlds());
}
private void initUI() {
frame = new JFrame("itemfinder");
JPanel mainPanel = new JPanel(new BorderLayout(10, 10));
mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
frame.setContentPane(mainPanel);
frame.setSize(950, 700);
frame.setLocationRelativeTo(null); // center
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel topBar = new JPanel(new BorderLayout(10, 10));
topBar.add(new JLabel("Just died in Minecraft and can't find your stuff? I'll tell you exactly where it is!"), BorderLayout.CENTER);
JButton helpButton = new JButton("About");
topBar.add(helpButton, BorderLayout.EAST);
mainPanel.add(topBar, BorderLayout.NORTH);
helpButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
InfoDialog.show();
}
});
worldViewer = new WorldViewer();
selector = new WorldSelector();
selector.addObserver(new Observer() {
@Override
public void update(Observable arg0, Object arg1) {
World world = selector.getSelectedWorld();
if (world != null) {
worldViewer.setWorld(world);
}
}
});
mainPanel.add(selector.getComponent(), BorderLayout.WEST);
mainPanel.add(worldViewer.getComponent(), BorderLayout.CENTER);
}
public void show() {
frame.setVisible(true);
}
private void setLookAndFeel() {
try {
// Set System L&F
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (UnsupportedLookAndFeelException|ClassNotFoundException|InstantiationException|
IllegalAccessException e) {
e.printStackTrace();
//just use the default look and feel
}
}
}