package ringdb.ui;
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.beans.PropertyVetoException;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JInternalFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import ringdb.database.Database;
import ringdb.database.Tower;
public class TowersScreen extends JInternalFrame {
/** Version ID */
private static final long serialVersionUID = 8498217752258805827L;
/** Logger */
private static Logger s_Logger = Logger.getLogger(Database.class.getPackage().getName());
private static final int FRAME_WIDTH = 400;
private static final int FRAME_HEIGHT = 300;
private MainWindow m_MainWindow;
public TowersScreen(final MainWindow pr_MainWindow) {
super("Towers", true, true, true);
setSize(FRAME_WIDTH, FRAME_HEIGHT);
m_MainWindow = pr_MainWindow;
createContents();
}
private void createContents() {
final TowersScreen thisScreen = this;
final TowersTableModel model = new TowersTableModel();
final JTable table = new JTable(model);
table.setFillsViewportHeight(true);
add(new JScrollPane(table), BorderLayout.CENTER);
table.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(final MouseEvent pr_Event) { }
@Override
public void mousePressed(final MouseEvent pr_Event) { }
@Override
public void mouseExited(final MouseEvent pr_Event) { }
@Override
public void mouseEntered(final MouseEvent pr_Event) { }
@Override
public void mouseClicked(final MouseEvent pr_Event) {
if (pr_Event.getClickCount() == 2) {
final Tower selectedTower;
try {
selectedTower = new Tower(model.getID(table.getSelectedRow()));
} catch (SQLException e) {
s_Logger.log(Level.SEVERE, "Database error getting currently selected Tower.", e);
return;
}
final TowerScreen screen = new TowerScreen(m_MainWindow, selectedTower);
screen.setVisible(true);
try {
screen.setSelected(true);
} catch (PropertyVetoException e) {
s_Logger.log(Level.SEVERE, "Unable to open Towers screen.", e);
return;
}
m_MainWindow.addFrame(screen);
m_MainWindow.removeFrame(thisScreen);
thisScreen.dispose();
}
}
});
}
}