package net.sf.colossus.gui; import java.awt.Point; import java.util.Collection; import javax.swing.JFrame; import net.sf.colossus.common.IOptions; import net.sf.colossus.guiutil.SaveWindow; import net.sf.colossus.variant.MasterBoardTerrain; import net.sf.colossus.variant.Variant; /** * Displays recruit trees for all MasterHex types. * * @author David Ripton * @author Barrie Treloar */ final class ShowAllRecruits extends AbstractShowRecruits { private final SaveWindow saveWindow; // Avoid showing multiple allTerrains displays. private static boolean allTerrainsDisplayActive = false; ShowAllRecruits(JFrame parentFrame, IOptions options, Variant variant, ClientGUI gui) { super(parentFrame); if (allTerrainsDisplayActive) { // TODO another bit of boilout code that ain't no good super.dispose(); saveWindow = null; // otherwise it couldn't be final return; } allTerrainsDisplayActive = true; Collection<MasterBoardTerrain> terrains = variant.getTerrains(); for (MasterBoardTerrain terrain : terrains) { if (!terrain.isAlias()) { doOneTerrain(terrain, null, variant, gui); } } pack(); saveWindow = new SaveWindow(options, "RecruitsScreen"); Point loadLocation = saveWindow.loadLocation(); if (loadLocation == null) { lowerRightCorner(); } else { setLocation(loadLocation); } setVisible(true); repaint(); } @Override public void dispose() { allTerrainsDisplayActive = false; saveWindow.saveLocation(getLocation()); super.dispose(); } }