package net.sf.colossus.gui;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import net.sf.colossus.guiutil.KDialog;
import net.sf.colossus.variant.MasterBoardTerrain;
import net.sf.colossus.variant.MasterHex;
import net.sf.colossus.variant.Variant;
/**
* Common class for displaying recruit trees information.
*
* @author David Ripton
* @author Barrie Treloar
*/
public abstract class AbstractShowRecruits extends KDialog
{
AbstractShowRecruits(JFrame parentFrame)
{
super(parentFrame, "Recruits", false);
assert SwingUtilities.isEventDispatchThread() : "GUI code should only run on the EDT";
setBackground(Color.lightGray);
getContentPane().setLayout(
new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e)
{
dispose();
}
});
}
void doOneTerrain(MasterBoardTerrain terrain, MasterHex hex,
Variant variant, ClientGUI gui)
{
assert SwingUtilities.isEventDispatchThread() : "GUI code should only run on the EDT";
JFrame frame = (JFrame)this.getParent();
getContentPane().add(
new HexRecruitTreePanel(BoxLayout.Y_AXIS, terrain, hex, frame,
true, variant, gui));
}
@Override
public void dispose()
{
for (Component c : getContentPane().getComponents())
{
if (c instanceof HexRecruitTreePanel)
{
((HexRecruitTreePanel)c).closeCreatureWindows();
}
}
super.dispose();
}
}