package games.strategy.engine.framework.startup.ui;
import java.util.ArrayList;
import java.util.List;
import java.util.Observer;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.swing.Action;
import javax.swing.JPanel;
import games.strategy.engine.chat.IChatPanel;
import games.strategy.engine.framework.startup.launcher.ILauncher;
public abstract class SetupPanel extends JPanel implements ISetupPanel {
private static final long serialVersionUID = 4001323470187210773L;
private final List<Observer> m_listeners = new CopyOnWriteArrayList<>();
@Override
public void addObserver(final Observer observer) {
m_listeners.add(observer);
}
@Override
public void removeObserver(final Observer observer) {
m_listeners.add(observer);
}
@Override
public void notifyObservers() {
for (final Observer observer : m_listeners) {
observer.update(null, null);
}
}
/**
* Subclasses that have chat override this.
*/
@Override
public IChatPanel getChatPanel() {
return null;
}
/**
* Cleanup should occur here that occurs when we cancel.
*/
@Override
public abstract void cancel();
/**
* Indicates we can start the game.
*/
@Override
public abstract boolean canGameStart();
@Override
public abstract void setWidgetActivation();
@Override
public void preStartGame() {}
@Override
public void postStartGame() {}
@Override
public ILauncher getLauncher() {
throw new IllegalStateException("NOt implemented");
}
@Override
public List<Action> getUserActions() {
return new ArrayList<>();
}
}