package org.wildstang.wildrank.desktop.modes;
import java.awt.GridBagConstraints;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import org.wildstang.wildrank.desktop.AppData;
import org.wildstang.wildrank.desktop.GlobalAppHandler;
import org.wildstang.wildrank.desktop.Update;
import org.wildstang.wildrank.desktop.utils.Logger;
public abstract class Mode {
protected static JPanel panel;
private boolean initialized;
protected AppData appData;
Update update;
GridBagConstraints c = new GridBagConstraints();
public void initialize() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
appData = GlobalAppHandler.getInstance().getAppData();
Logger.getInstance().log("Panel created");
panel = GlobalAppHandler.getInstance().getGlobalPanel();
panel.removeAll();
c.fill = GridBagConstraints.BOTH;
c.weightx = 1;
c.weighty = 1;
initialized = true;
initializePanel();
}
});
update = new Update();
}
protected abstract void initializePanel();
public JPanel getModePanel() throws IllegalStateException {
if (initialized && panel == null) {
throw new IllegalStateException("Panel must not be null! Check initializePanel() for errors");
} else if (initialized) {
return panel;
} else {
throw new IllegalStateException("Mode must be initialized before you can get the panel!");
}
}
public void setMode(Mode mode) {
GlobalAppHandler.getInstance().setMode(mode);
}
}