diff --git a/src/main/java/forge/model/FModel.java b/src/main/java/forge/model/FModel.java index 050cd9ec018..5596d616b68 100644 --- a/src/main/java/forge/model/FModel.java +++ b/src/main/java/forge/model/FModel.java @@ -7,6 +7,8 @@ import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; +import forge.Constant; +import forge.HttpUtil; import forge.properties.ForgePreferences; //import net.slightlymagic.braids.util.progress_monitor.BaseProgressMonitor; @@ -67,7 +69,19 @@ public class FModel { try { setPreferences(new ForgePreferences("forge.preferences")); } catch (Exception exn) { - throw new RuntimeException(exn); + throw new RuntimeException(exn); // NOPMD by Braids on 8/13/11 8:21 PM + } + + Constant.Runtime.Mill[0] = preferences.millingLossCondition; + Constant.Runtime.DevMode[0] = preferences.developerMode; + Constant.Runtime.UpldDrft[0] = preferences.uploadDraftAI; + Constant.Runtime.RndCFoil[0] = preferences.randCFoil; + + final HttpUtil pinger = new HttpUtil(); + if (pinger.getURL("http://cardforge.org/draftAI/ping.php").equals("pong")) { + Constant.Runtime.NetConn[0] = true; + } else { + Constant.Runtime.UpldDrft[0] = false; } setBuildInfo(new BuildInfo()); diff --git a/src/main/java/forge/view/FView.java b/src/main/java/forge/view/FView.java index 88c6a8717d5..95af949aaa5 100644 --- a/src/main/java/forge/view/FView.java +++ b/src/main/java/forge/view/FView.java @@ -1,8 +1,18 @@ package forge.view; +import forge.model.FModel; + /** * Generic view (as in model-view-controller) interface for Forge. */ public interface FView { + /** + * Tell the view that the model has been bootstrapped, and its data is + * ready for initial display. + * + * @param model the model that has finished bootstrapping + */ + void setModel(FModel model); + } diff --git a/src/main/java/forge/view/swing/ApplicationView.java b/src/main/java/forge/view/swing/ApplicationView.java index 187822cdfa9..8c70264ebfb 100644 --- a/src/main/java/forge/view/swing/ApplicationView.java +++ b/src/main/java/forge/view/swing/ApplicationView.java @@ -1,6 +1,22 @@ package forge.view.swing; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; + +import com.esotericsoftware.minlog.Log; + +import forge.AllZone; +import forge.ComputerAI_General; +import forge.ComputerAI_Input; +import forge.Constant; +import forge.ImageCache; +import forge.error.ErrorViewer; +import forge.model.FModel; +import forge.properties.ForgePreferences; import forge.view.FView; +import forge.view.swing.OldGuiNewGame.CardSizesAction; +import forge.view.swing.OldGuiNewGame.CardStackAction; +import forge.view.swing.OldGuiNewGame.CardStackOffsetAction; /** * The main view for Forge: a java swing application. @@ -10,6 +26,65 @@ public class ApplicationView implements FView { * Constructor. */ public ApplicationView() { // NOPMD by Braids on 8/7/11 1:14 PM: Damnation if it's here; Damnation if it's not. - // blank for now. + // TODO: insert splash window here + } + + /* (non-Javadoc) + * @see forge.view.FView#setModel(forge.model.FModel) + */ + @Override + public final void setModel(final FModel model) { + try { + + final ForgePreferences preferences = model.getPreferences(); + + OldGuiNewGame.useLAFFonts.setSelected(preferences.lafFonts); + // newGuiCheckBox.setSelected(preferences.newGui); + OldGuiNewGame.smoothLandCheckBox.setSelected(preferences.stackAiLand); + OldGuiNewGame.devModeCheckBox.setSelected(preferences.developerMode); + OldGuiNewGame.cardOverlay.setSelected(preferences.cardOverlay); + ImageCache.scaleLargerThanOriginal = preferences.scaleLargerThanOriginal; + OldGuiNewGame.cardScale.setSelected(preferences.scaleLargerThanOriginal); + CardStackOffsetAction.set(preferences.stackOffset); + CardStackAction.setVal(preferences.maxStackSize); + CardSizesAction.set(preferences.cardSize); + OldGuiNewGame.upldDrftCheckBox.setSelected(preferences.uploadDraftAI); + OldGuiNewGame.foilRandomCheckBox.setSelected(preferences.randCFoil); + + } catch (Exception exn) { + Log.error("Error loading preferences: " + exn); + } + + OldGuiNewGame.loadDynamicGamedata(); + + SwingUtilities.invokeLater(new Runnable() { // NOPMD by Braids on 8/7/11 1:07 PM: this isn't a web app + public void run() { + final ForgePreferences finalPreferences = model.getPreferences(); + + try { + if ("".equals(finalPreferences.laf)) { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } else { + UIManager.setLookAndFeel(finalPreferences.laf); + } + } catch (Exception ex) { + ErrorViewer.showError(ex); + } + } + }); + + try { + Constant.Runtime.GameType[0] = Constant.GameType.Constructed; + SwingUtilities.invokeLater(new Runnable() { // NOPMD by Braids on 8/7/11 1:07 PM: this isn't a web app + public void run() { + AllZone.setComputer(new ComputerAI_Input(new ComputerAI_General())); + new OldGuiNewGame(); + } + }); + } catch (Exception ex) { + ErrorViewer.showError(ex); + } + + } } diff --git a/src/main/java/forge/view/swing/Main.java b/src/main/java/forge/view/swing/Main.java index f7fbb01715c..8a2ae8b9946 100644 --- a/src/main/java/forge/view/swing/Main.java +++ b/src/main/java/forge/view/swing/Main.java @@ -1,25 +1,10 @@ package forge.view.swing; -import javax.swing.SwingUtilities; -import javax.swing.UIManager; - -import com.esotericsoftware.minlog.Log; - -import forge.AllZone; -import forge.ComputerAI_General; -import forge.ComputerAI_Input; -import forge.Constant; -import forge.HttpUtil; -import forge.ImageCache; import forge.Singletons; import forge.error.ErrorViewer; import forge.error.ExceptionHandler; import forge.model.FModel; -import forge.properties.ForgePreferences; import forge.view.FView; -import forge.view.swing.OldGuiNewGame.CardSizesAction; -import forge.view.swing.OldGuiNewGame.CardStackAction; -import forge.view.swing.OldGuiNewGame.CardStackOffsetAction; /** * Main class for Forge's swing application view. @@ -42,74 +27,12 @@ public final class Main { public static void main(final String[] args) { ExceptionHandler.registerErrorHandling(); try { - final FModel model = new FModel(null); - Singletons.setModel(model); final FView view = new ApplicationView(); Singletons.setView(view); + final FModel model = new FModel(null); + Singletons.setModel(model); - ForgePreferences preferences = null; - - try { - - preferences = model.getPreferences(); - - OldGuiNewGame.useLAFFonts.setSelected(preferences.lafFonts); - // newGuiCheckBox.setSelected(preferences.newGui); - OldGuiNewGame.smoothLandCheckBox.setSelected(preferences.stackAiLand); - Constant.Runtime.Mill[0] = preferences.millingLossCondition; - Constant.Runtime.DevMode[0] = preferences.developerMode; - OldGuiNewGame.devModeCheckBox.setSelected(preferences.developerMode); - OldGuiNewGame.cardOverlay.setSelected(preferences.cardOverlay); - ImageCache.scaleLargerThanOriginal = preferences.scaleLargerThanOriginal; - OldGuiNewGame.cardScale.setSelected(preferences.scaleLargerThanOriginal); - CardStackOffsetAction.set(preferences.stackOffset); - CardStackAction.setVal(preferences.maxStackSize); - CardSizesAction.set(preferences.cardSize); - Constant.Runtime.UpldDrft[0] = preferences.uploadDraftAI; - OldGuiNewGame.upldDrftCheckBox.setSelected(preferences.uploadDraftAI); - Constant.Runtime.RndCFoil[0] = preferences.randCFoil; - OldGuiNewGame.foilRandomCheckBox.setSelected(preferences.randCFoil); - - final HttpUtil pinger = new HttpUtil(); - if (pinger.getURL("http://cardforge.org/draftAI/ping.php").equals("pong")) { - Constant.Runtime.NetConn[0] = true; - } else { - Constant.Runtime.UpldDrft[0] = false; - } - - } catch (Exception exn) { - Log.error("Error loading preferences: " + exn); - } - - OldGuiNewGame.loadDynamicGamedata(); - - final ForgePreferences finalPreferences = preferences; - - SwingUtilities.invokeLater(new Runnable() { // NOPMD by Braids on 8/7/11 1:07 PM: this isn't a web app - public void run() { - try { - if ("".equals(finalPreferences.laf)) { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } else { - UIManager.setLookAndFeel(finalPreferences.laf); - } - } catch (Exception ex) { - ErrorViewer.showError(ex); - } - } - }); - - try { - Constant.Runtime.GameType[0] = Constant.GameType.Constructed; - SwingUtilities.invokeLater(new Runnable() { // NOPMD by Braids on 8/7/11 1:07 PM: this isn't a web app - public void run() { - AllZone.setComputer(new ComputerAI_Input(new ComputerAI_General())); - new OldGuiNewGame(); - } - }); - } catch (Exception ex) { - ErrorViewer.showError(ex); - } + view.setModel(model); } catch (Throwable exn) { // NOPMD by Braids on 8/7/11 1:07 PM: must catch all throwables here.