Fixed input control bug.

This commit is contained in:
Doublestrike
2011-12-11 03:45:42 +00:00
parent 9a9216556a
commit 371da23d56
5 changed files with 275 additions and 422 deletions

View File

@@ -61,8 +61,6 @@ import forge.properties.ForgeProps;
import forge.properties.NewConstants.Lang.GameAction.GameActionText; import forge.properties.NewConstants.Lang.GameAction.GameActionText;
import forge.quest.gui.QuestWinLoseHandler; import forge.quest.gui.QuestWinLoseHandler;
import forge.quest.gui.main.QuestEvent; import forge.quest.gui.main.QuestEvent;
import forge.view.GuiTopLevel;
import forge.view.match.ViewTopLevel;
import forge.view.toolbox.WinLoseFrame; import forge.view.toolbox.WinLoseFrame;
/** /**
@@ -800,17 +798,10 @@ public class GameAction {
final boolean refreeze = AllZone.getStack().isFrozen(); final boolean refreeze = AllZone.getStack().isFrozen();
AllZone.getStack().setFrozen(true); AllZone.getStack().setFrozen(true);
if (Constant.Runtime.OLDGUI[0]) {
final JFrame frame = (JFrame) AllZone.getDisplay(); final JFrame frame = (JFrame) AllZone.getDisplay();
if (!frame.isDisplayable()) { if (!frame.isDisplayable()) {
return; return;
} }
} else {
final ViewTopLevel frame = ((GuiTopLevel) AllZone.getDisplay()).getController().getMatchController().getView();
if (!frame.isDisplayable()) {
return;
}
}
if (this.canShowWinLose && this.checkEndGameState()) { if (this.canShowWinLose && this.checkEndGameState()) {
AllZone.getDisplay().savePrefs(); AllZone.getDisplay().savePrefs();

View File

@@ -151,7 +151,7 @@ public class ControlHand {
public void mouseMoved(final MouseEvent me) { public void mouseMoved(final MouseEvent me) {
final Card c = view.getHandArea().getCardFromMouseOverPanel(); final Card c = view.getHandArea().getCardFromMouseOverPanel();
if (c != null) { if (c != null) {
t.setCard(c); ((GuiTopLevel) AllZone.getDisplay()).setCard(c);
} }
} // mouseMoved } // mouseMoved
}); });

View File

@@ -20,18 +20,25 @@ package forge.view;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Frame; import java.awt.Frame;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JLayeredPane; import javax.swing.JLayeredPane;
import forge.AllZone; import forge.AllZone;
import forge.Card; import forge.Card;
import forge.CardContainer;
import forge.CardList; import forge.CardList;
import forge.Constant;
import forge.Display; import forge.Display;
import forge.GuiMultipleBlockers;
import forge.MyButton; import forge.MyButton;
import forge.Player; import forge.Player;
import forge.Singletons;
import forge.control.ControlAllUI; import forge.control.ControlAllUI;
import forge.control.match.ControlField;
import forge.properties.ForgePreferences;
import forge.view.match.ViewField;
import forge.view.toolbox.FOverlay; import forge.view.toolbox.FOverlay;
/** /**
@@ -39,7 +46,7 @@ import forge.view.toolbox.FOverlay;
* *
*/ */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class GuiTopLevel extends JFrame implements Display { public class GuiTopLevel extends JFrame implements Display, CardContainer {
private final JLayeredPane lpnContent; private final JLayeredPane lpnContent;
private final ControlAllUI control; private final ControlAllUI control;
@@ -102,6 +109,7 @@ public class GuiTopLevel extends JFrame implements Display {
*/ */
@Override @Override
public void showMessage(final String s) { public void showMessage(final String s) {
control.getMatchController().getView().getPnlMessage().setText(s);
} }
/* /*
@@ -111,7 +119,39 @@ public class GuiTopLevel extends JFrame implements Display {
*/ */
@Override @Override
public MyButton getButtonOK() { public MyButton getButtonOK() {
return new EmptyButton(); final MyButton ok = new MyButton() {
@Override
public void select() {
control.getMatchController().getView().getInputController().getInputControl().selectButtonOK();
}
@Override
public boolean isSelectable() {
return control.getMatchController().getView().getInputController().getView().getBtnOK().isEnabled();
}
@Override
public void setSelectable(final boolean b) {
control.getMatchController().getView().getInputController().getView().getBtnOK().setEnabled(b);
}
@Override
public String getText() {
return control.getMatchController().getView().getInputController().getView().getBtnOK().getText();
}
@Override
public void setText(final String text) {
control.getMatchController().getView().getInputController().getView().getBtnOK().setText(text);
}
@Override
public void reset() {
control.getMatchController().getView().getInputController().getView().getBtnOK().setText("OK");
}
};
return ok;
} }
/* /*
@@ -121,7 +161,38 @@ public class GuiTopLevel extends JFrame implements Display {
*/ */
@Override @Override
public MyButton getButtonCancel() { public MyButton getButtonCancel() {
return new EmptyButton(); final MyButton cancel = new MyButton() {
@Override
public void select() {
control.getMatchController().getView().getInputController().getInputControl().selectButtonCancel();
}
@Override
public boolean isSelectable() {
return control.getMatchController().getView().getInputController().getView().getBtnCancel().isEnabled();
}
@Override
public void setSelectable(final boolean b) {
control.getMatchController().getView().getInputController().getView().getBtnCancel().setEnabled(b);
}
@Override
public String getText() {
return control.getMatchController().getView().getInputController().getView().getBtnCancel().getText();
}
@Override
public void setText(final String text) {
control.getMatchController().getView().getInputController().getView().getBtnCancel().setText(text);
}
@Override
public void reset() {
control.getMatchController().getView().getInputController().getView().getBtnCancel().setText("Cancel");
}
};
return cancel;
} }
/* /*
@@ -130,7 +201,8 @@ public class GuiTopLevel extends JFrame implements Display {
* @see forge.Display#showCombat(java.lang.String) * @see forge.Display#showCombat(java.lang.String)
*/ */
@Override @Override
public void showCombat(final String message) { public void showCombat(final String s0) {
control.getMatchController().getView().getTabberController().getView().updateCombat(s0);
} }
/* /*
@@ -140,6 +212,11 @@ public class GuiTopLevel extends JFrame implements Display {
*/ */
@Override @Override
public void assignDamage(final Card attacker, final CardList blockers, final int damage) { public void assignDamage(final Card attacker, final CardList blockers, final int damage) {
if (damage <= 0) {
return;
}
new GuiMultipleBlockers(attacker, blockers, damage, this);
} }
/* /*
@@ -148,37 +225,182 @@ public class GuiTopLevel extends JFrame implements Display {
* @see forge.Display#stopAtPhase(forge.Player, java.lang.String) * @see forge.Display#stopAtPhase(forge.Player, java.lang.String)
*/ */
@Override @Override
public boolean stopAtPhase(final Player turn, final String phase) { public final boolean stopAtPhase(final Player turn, final String phase) {
final List<ControlField> fieldControllers = control.getMatchView().getFieldControllers();
// AI field is at index [0]
if (turn.isComputer()) {
if (phase.equals(Constant.Phase.UPKEEP)) {
return fieldControllers.get(0).getView().getLblUpkeep().getEnabled();
} else if (phase.equals(Constant.Phase.DRAW)) {
return fieldControllers.get(0).getView().getLblDraw().getEnabled();
} else if (phase.equals(Constant.Phase.MAIN1)) {
return fieldControllers.get(0).getView().getLblMain1().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_BEGIN)) {
return fieldControllers.get(0).getView().getLblBeginCombat().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DECLARE_ATTACKERS)) {
return fieldControllers.get(0).getView().getLblDeclareAttackers().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DECLARE_BLOCKERS)) {
return fieldControllers.get(0).getView().getLblDeclareBlockers().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_FIRST_STRIKE_DAMAGE)) {
return fieldControllers.get(0).getView().getLblFirstStrike().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DAMAGE)) {
return fieldControllers.get(0).getView().getLblCombatDamage().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_END)) {
return fieldControllers.get(0).getView().getLblEndCombat().getEnabled();
} else if (phase.equals(Constant.Phase.MAIN2)) {
return fieldControllers.get(0).getView().getLblMain2().getEnabled();
} else if (phase.equals(Constant.Phase.END_OF_TURN)) {
return fieldControllers.get(0).getView().getLblEndTurn().getEnabled();
} else if (phase.equals(Constant.Phase.DRAW)) {
return fieldControllers.get(0).getView().getLblDraw().getEnabled();
}
}
// Human field is at index [1]
else {
if (phase.equals(Constant.Phase.UPKEEP)) {
return fieldControllers.get(1).getView().getLblUpkeep().getEnabled();
} else if (phase.equals(Constant.Phase.DRAW)) {
return fieldControllers.get(1).getView().getLblDraw().getEnabled();
} else if (phase.equals(Constant.Phase.MAIN1)) {
return fieldControllers.get(1).getView().getLblMain1().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_BEGIN)) {
return fieldControllers.get(1).getView().getLblBeginCombat().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DECLARE_ATTACKERS)) {
return fieldControllers.get(1).getView().getLblDeclareAttackers().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DECLARE_BLOCKERS)) {
return fieldControllers.get(1).getView().getLblDeclareBlockers().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_FIRST_STRIKE_DAMAGE)) {
return fieldControllers.get(1).getView().getLblFirstStrike().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DAMAGE)) {
return fieldControllers.get(1).getView().getLblCombatDamage().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_END)) {
return fieldControllers.get(1).getView().getLblEndCombat().getEnabled();
} else if (phase.equals(Constant.Phase.MAIN2)) {
return fieldControllers.get(1).getView().getLblMain2().getEnabled();
} else if (phase.equals(Constant.Phase.END_OF_TURN)) {
return fieldControllers.get(1).getView().getLblEndTurn().getEnabled();
} else if (phase.equals(Constant.Phase.DRAW)) {
return fieldControllers.get(1).getView().getLblDraw().getEnabled();
}
}
return true; return true;
} }
/* /**
* (non-Javadoc) * Required by Display interface. Due to be deprecated: should be handled by
* a control class, and poorly named; "decking" == "milling" in preferences,
* same terminology should be used throughout project for obvious reasons.
* Unless "decking" is already the correct terminology, in which case,
* everything else is poorly named.
* *
* @see forge.Display#loadPrefs() * @return boolean
*/
@Override
public boolean loadPrefs() {
return true;
}
/*
* (non-Javadoc)
*
* @see forge.Display#savePrefs()
*/
@Override
public boolean savePrefs() {
return true;
}
/*
* (non-Javadoc)
*
* @see forge.Display#canLoseByDecking()
*/ */
@Override @Override
public boolean canLoseByDecking() { public boolean canLoseByDecking() {
return Constant.Runtime.MILL[0];
}
/**
* <p>
* loadPrefs.
* </p>
* Required by Display interface. Due to be deprecated: will be handled by
* ControlMatchUI.
*
*
* @return boolean.
*/
@Override
public final boolean loadPrefs() {
final ForgePreferences fp = Singletons.getModel().getPreferences();
final List<ViewField> fieldViews = this.control.getMatchController().getView().getFieldViews();
// AI field is at index [0]
fieldViews.get(0).getLblUpkeep().setEnabled(fp.isAIPhase("phase.ai.upkeep"));
fieldViews.get(0).getLblDraw().setEnabled(fp.isAIPhase("phase.ai.draw"));
fieldViews.get(0).getLblMain1().setEnabled(fp.isAIPhase("phase.ai.main1"));
fieldViews.get(0).getLblBeginCombat().setEnabled(fp.isAIPhase("phase.ai.beginCombat"));
fieldViews.get(0).getLblDeclareAttackers().setEnabled(fp.isAIPhase("phase.ai.declareAttackers"));
fieldViews.get(0).getLblDeclareBlockers().setEnabled(fp.isAIPhase("phase.ai.declareBlockers"));
fieldViews.get(0).getLblFirstStrike().setEnabled(fp.isAIPhase("phase.ai.firstStrike"));
fieldViews.get(0).getLblCombatDamage().setEnabled(fp.isAIPhase("phase.ai.combatDamage"));
fieldViews.get(0).getLblEndCombat().setEnabled(fp.isAIPhase("phase.ai.endCombat"));
fieldViews.get(0).getLblMain2().setEnabled(fp.isAIPhase("phase.ai.main2"));
fieldViews.get(0).getLblEndTurn().setEnabled(fp.isAIPhase("phase.ai.eot"));
fieldViews.get(0).getLblCleanup().setEnabled(fp.isAIPhase("phase.ai.cleanup"));
// Human field is at index [1]
fieldViews.get(1).getLblUpkeep().setEnabled(fp.isHumanPhase("phase.human.upkeep"));
fieldViews.get(1).getLblDraw().setEnabled(fp.isHumanPhase("phase.human.draw"));
fieldViews.get(1).getLblMain1().setEnabled(fp.isHumanPhase("phase.human.main1"));
fieldViews.get(1).getLblBeginCombat().setEnabled(fp.isHumanPhase("phase.human.beginCombat"));
fieldViews.get(1).getLblDeclareAttackers().setEnabled(fp.isHumanPhase("phase.human.declareAttackers"));
fieldViews.get(1).getLblDeclareBlockers().setEnabled(fp.isHumanPhase("phase.human.declareBlockers"));
fieldViews.get(1).getLblFirstStrike().setEnabled(fp.isHumanPhase("phase.human.firstStrike"));
fieldViews.get(1).getLblCombatDamage().setEnabled(fp.isHumanPhase("phase.human.combatDamage"));
fieldViews.get(1).getLblEndCombat().setEnabled(fp.isHumanPhase("phase.human.endCombat"));
fieldViews.get(1).getLblMain2().setEnabled(fp.isHumanPhase("phase.human.main2"));
fieldViews.get(1).getLblEndTurn().setEnabled(fp.isHumanPhase("phase.human.eot"));
fieldViews.get(1).getLblCleanup().setEnabled(fp.isHumanPhase("phase.human.cleanup"));
this.control.getMatchController().getView().setLayoutParams(fp.getUILayout());
return true;
}
/**
* <p>
* savePrefs.
* </p>
* Required by Display interface. Due to be deprecated: will be handled by
* ControlMatchUI. Also, this functionality is already performed elsewhere
* in the code base. Furthermore, there's a strong possibility this will
* need bo be broken down and can't be in one place - e.g. keyboard
* shortcuts are saved after they're edited.
*
* @return a boolean.
*/
@Override
public final boolean savePrefs() {
final ForgePreferences fp = Singletons.getModel().getPreferences();
final List<ViewField> fieldViews = this.control.getMatchController().getView().getFieldViews();
// AI field is at index [0]
fp.setAIPhase("phase.ai.upkeep", fieldViews.get(0).getLblUpkeep().getEnabled());
fp.setAIPhase("phase.ai.draw", fieldViews.get(0).getLblDraw().getEnabled());
fp.setAIPhase("phase.ai.main1", fieldViews.get(0).getLblMain1().getEnabled());
fp.setAIPhase("phase.ai.beginCombat", fieldViews.get(0).getLblBeginCombat().getEnabled());
fp.setAIPhase("phase.ai.declareAttackers", fieldViews.get(0).getLblDeclareAttackers().getEnabled());
fp.setAIPhase("phase.ai.declareBlockers", fieldViews.get(0).getLblDeclareBlockers().getEnabled());
fp.setAIPhase("phase.ai.firstStrike", fieldViews.get(0).getLblFirstStrike().getEnabled());
fp.setAIPhase("phase.ai.combatDamage", fieldViews.get(0).getLblCombatDamage().getEnabled());
fp.setAIPhase("phase.ai.endCombat", fieldViews.get(0).getLblEndCombat().getEnabled());
fp.setAIPhase("phase.ai.main2", fieldViews.get(0).getLblMain2().getEnabled());
fp.setAIPhase("phase.ai.eot", fieldViews.get(0).getLblEndTurn().getEnabled());
fp.setAIPhase("phase.ai.cleanup", fieldViews.get(0).getLblCleanup().getEnabled());
// Human field is at index [1]
fp.setHumanPhase("phase.human.upkeep", fieldViews.get(1).getLblUpkeep().getEnabled());
fp.setHumanPhase("phase.human.draw", fieldViews.get(1).getLblDraw().getEnabled());
fp.setHumanPhase("phase.human.main1", fieldViews.get(1).getLblMain1().getEnabled());
fp.setHumanPhase("phase.human.beginCombat", fieldViews.get(1).getLblBeginCombat().getEnabled());
fp.setHumanPhase("phase.human.declareAttackers", fieldViews.get(1).getLblDeclareAttackers().getEnabled());
fp.setHumanPhase("phase.human.declareBlockers", fieldViews.get(1).getLblDeclareBlockers().getEnabled());
fp.setHumanPhase("phase.human.firstStrike", fieldViews.get(1).getLblFirstStrike().getEnabled());
fp.setHumanPhase("phase.human.combatDamage", fieldViews.get(1).getLblCombatDamage().getEnabled());
fp.setHumanPhase("phase.human.endCombat", fieldViews.get(1).getLblEndCombat().getEnabled());
fp.setHumanPhase("phase.human.main2", fieldViews.get(1).getLblMain2().getEnabled());
fp.setHumanPhase("phase.human.eot", fieldViews.get(1).getLblEndTurn().getEnabled());
fp.setHumanPhase("phase.human.cleanup", fieldViews.get(1).getLblCleanup().getEnabled());
Constant.Runtime.MILL[0] = this.control.getMatchController().getView().getTabberController().getView().getLblMilling().getEnabled();
Constant.Runtime.HANDVIEW[0] = this.control.getMatchController().getView().getTabberController().getView().getLblHandView().getEnabled();
Constant.Runtime.LIBRARYVIEW[0] = this.control.getMatchController().getView().getTabberController().getView().getLblLibraryView().getEnabled();
fp.setMillingLossCondition(Constant.Runtime.MILL[0]);
fp.setHandView(Constant.Runtime.HANDVIEW[0]);
fp.setLibraryView(Constant.Runtime.LIBRARYVIEW[0]);
fp.setUILayout(control.getMatchController().getView().getLayoutParams());
return true; return true;
} }
@@ -189,25 +411,17 @@ public class GuiTopLevel extends JFrame implements Display {
*/ */
@Override @Override
public void setCard(final Card c) { public void setCard(final Card c) {
this.control.getMatchView().getDetailController().showCard(c);
this.control.getMatchView().getPictureController().showCard(c);
} }
/** THIS CLASS ONLY EXISTS TO KEEP THE INTERFACE HAPPY TEMPORARILY. */ /**
private class EmptyButton extends JButton implements MyButton { * Required by display interface. Due to be deprecated: handled by control
@Override * class.
public void reset() { *
} * @return a {@link forge.Card} object.
*/
@Override public final Card getCard() {
public void setSelectable(final boolean b0) { return this.control.getMatchView().getDetailController().getCurrentCard();
}
@Override
public boolean isSelectable() {
return true;
}
@Override
public void select() {
}
} }
} }

View File

@@ -34,15 +34,6 @@ import javax.swing.JTextArea;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import forge.AllZone; import forge.AllZone;
import forge.Card;
import forge.CardContainer;
import forge.CardList;
import forge.Constant;
import forge.Display;
import forge.GuiMultipleBlockers;
import forge.MyButton;
import forge.Player;
import forge.Singletons;
import forge.control.ControlMatchUI; import forge.control.ControlMatchUI;
import forge.control.match.ControlDetail; import forge.control.match.ControlDetail;
import forge.control.match.ControlDock; import forge.control.match.ControlDock;
@@ -51,7 +42,6 @@ import forge.control.match.ControlHand;
import forge.control.match.ControlInput; import forge.control.match.ControlInput;
import forge.control.match.ControlPicture; import forge.control.match.ControlPicture;
import forge.control.match.ControlTabber; import forge.control.match.ControlTabber;
import forge.properties.ForgePreferences;
import forge.view.toolbox.FPanel; import forge.view.toolbox.FPanel;
/** /**
@@ -63,7 +53,7 @@ import forge.view.toolbox.FPanel;
*/ */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class ViewTopLevel extends FPanel implements CardContainer, Display { public class ViewTopLevel extends FPanel {
private ViewBattlefield battlefield; private ViewBattlefield battlefield;
private ViewDetail detail; private ViewDetail detail;
private ViewDock dock; private ViewDock dock;
@@ -284,8 +274,8 @@ public class ViewTopLevel extends FPanel implements CardContainer, Display {
this.revalidate(); this.revalidate();
} // End calculateBounds() } // End calculateBounds()
// /** @return String, comma delimited layout parameters. */
private String getLayoutParams() { public String getLayoutParams() {
String s = ""; String s = "";
s += Double.toString(tabberWpct) + ","; s += Double.toString(tabberWpct) + ",";
s += Double.toString(tabberHpct) + ","; s += Double.toString(tabberHpct) + ",";
@@ -297,7 +287,11 @@ public class ViewTopLevel extends FPanel implements CardContainer, Display {
return s; return s;
} }
private void setLayoutParams(String s0) { /**
* Takes a string of comma-delimited layout parameters and applies to layout.
* @param s0 &emsp; String
*/
public void setLayoutParams(String s0) {
if (s0 == null || s0.isEmpty()) { if (s0 == null || s0.isEmpty()) {
return; return;
} }
@@ -474,352 +468,6 @@ public class ViewTopLevel extends FPanel implements CardContainer, Display {
public ViewHand getPnlHand() { public ViewHand getPnlHand() {
return ViewTopLevel.this.hand; return ViewTopLevel.this.hand;
} }
// ========== The following methods are required by the Display interface.
// To fit the UI MVC architecture with the previous "mixed nuts"
// architecture,
// these methods are temporarily required. However, since they are a mix of
// view and control functionalities, they are ALL on the "to-be-deprecated"
// list.
// The Display interface is to be reworked, eventually, with a better name
// and with interfaces for every screen in the entire UI.
// Doublestrike 23-10-11
/**
* Required by Display interface. Due to be deprecated in favor of more
* semantic getBtnCancel().
*
* @return MyButton
*/
@Override
public MyButton getButtonCancel() {
final MyButton cancel = new MyButton() {
@Override
public void select() {
ViewTopLevel.this.getInputController().getInputControl().selectButtonCancel();
}
@Override
public boolean isSelectable() {
return ViewTopLevel.this.input.getBtnCancel().isEnabled();
}
@Override
public void setSelectable(final boolean b) {
ViewTopLevel.this.input.getBtnCancel().setEnabled(b);
}
@Override
public String getText() {
return ViewTopLevel.this.input.getBtnCancel().getText();
}
@Override
public void setText(final String text) {
ViewTopLevel.this.input.getBtnCancel().setText(text);
}
@Override
public void reset() {
ViewTopLevel.this.input.getBtnCancel().setText("Cancel");
}
};
return cancel;
}
/**
* Required by Display interface. Due to be deprecated in favor of more
* semantic getBtnOK().
*
* @return MyButton
*/
@Override
public MyButton getButtonOK() {
final MyButton ok = new MyButton() {
@Override
public void select() {
ViewTopLevel.this.getInputController().getInputControl().selectButtonOK();
}
@Override
public boolean isSelectable() {
return ViewTopLevel.this.input.getBtnOK().isEnabled();
}
@Override
public void setSelectable(final boolean b) {
ViewTopLevel.this.input.getBtnOK().setEnabled(b);
}
@Override
public String getText() {
return ViewTopLevel.this.input.getBtnOK().getText();
}
@Override
public void setText(final String text) {
ViewTopLevel.this.input.getBtnOK().setText(text);
}
@Override
public void reset() {
ViewTopLevel.this.input.getBtnOK().setText("OK");
}
};
return ok;
}
/**
* Required by Display interface. Due to be deprecated: is now and should be
* handled by ControlMatchUI.
*
* @param s
* &emsp; Message string
*/
@Override
public void showMessage(final String s) {
this.getPnlMessage().setText(s);
}
/**
* Required by Display interface. Due to be deprecated: should be handled by
* ControlMatchUI.
*
* @param s
* &emsp; Message string
*/
@Override
public void showCombat(final String s) {
this.getTabberController().getView().updateCombat(s);
}
/**
* Required by Display interface. Due to be deprecated: should be handled by
* a control class, and poorly named; "decking" == "milling" in preferences,
* same terminology should be used throughout project for obvious reasons.
* Unless "decking" is already the correct terminology, in which case,
* everything else is poorly named.
*
* @return boolean
*/
@Override
public boolean canLoseByDecking() {
return Constant.Runtime.MILL[0];
}
/**
* <p>
* loadPrefs.
* </p>
* Required by Display interface. Due to be deprecated: will be handled by
* ControlMatchUI.
*
*
* @return boolean.
*/
@Override
public final boolean loadPrefs() {
final ForgePreferences fp = Singletons.getModel().getPreferences();
final List<ViewField> fieldViews = this.getFieldViews();
// AI field is at index [0]
fieldViews.get(0).getLblUpkeep().setEnabled(fp.isAIPhase("phase.ai.upkeep"));
fieldViews.get(0).getLblDraw().setEnabled(fp.isAIPhase("phase.ai.draw"));
fieldViews.get(0).getLblMain1().setEnabled(fp.isAIPhase("phase.ai.main1"));
fieldViews.get(0).getLblBeginCombat().setEnabled(fp.isAIPhase("phase.ai.beginCombat"));
fieldViews.get(0).getLblDeclareAttackers().setEnabled(fp.isAIPhase("phase.ai.declareAttackers"));
fieldViews.get(0).getLblDeclareBlockers().setEnabled(fp.isAIPhase("phase.ai.declareBlockers"));
fieldViews.get(0).getLblFirstStrike().setEnabled(fp.isAIPhase("phase.ai.firstStrike"));
fieldViews.get(0).getLblCombatDamage().setEnabled(fp.isAIPhase("phase.ai.combatDamage"));
fieldViews.get(0).getLblEndCombat().setEnabled(fp.isAIPhase("phase.ai.endCombat"));
fieldViews.get(0).getLblMain2().setEnabled(fp.isAIPhase("phase.ai.main2"));
fieldViews.get(0).getLblEndTurn().setEnabled(fp.isAIPhase("phase.ai.eot"));
fieldViews.get(0).getLblCleanup().setEnabled(fp.isAIPhase("phase.ai.cleanup"));
// Human field is at index [1]
fieldViews.get(1).getLblUpkeep().setEnabled(fp.isHumanPhase("phase.human.upkeep"));
fieldViews.get(1).getLblDraw().setEnabled(fp.isHumanPhase("phase.human.draw"));
fieldViews.get(1).getLblMain1().setEnabled(fp.isHumanPhase("phase.human.main1"));
fieldViews.get(1).getLblBeginCombat().setEnabled(fp.isHumanPhase("phase.human.beginCombat"));
fieldViews.get(1).getLblDeclareAttackers().setEnabled(fp.isHumanPhase("phase.human.declareAttackers"));
fieldViews.get(1).getLblDeclareBlockers().setEnabled(fp.isHumanPhase("phase.human.declareBlockers"));
fieldViews.get(1).getLblFirstStrike().setEnabled(fp.isHumanPhase("phase.human.firstStrike"));
fieldViews.get(1).getLblCombatDamage().setEnabled(fp.isHumanPhase("phase.human.combatDamage"));
fieldViews.get(1).getLblEndCombat().setEnabled(fp.isHumanPhase("phase.human.endCombat"));
fieldViews.get(1).getLblMain2().setEnabled(fp.isHumanPhase("phase.human.main2"));
fieldViews.get(1).getLblEndTurn().setEnabled(fp.isHumanPhase("phase.human.eot"));
fieldViews.get(1).getLblCleanup().setEnabled(fp.isHumanPhase("phase.human.cleanup"));
setLayoutParams(fp.getUILayout());
return true;
}
/**
* <p>
* savePrefs.
* </p>
* Required by Display interface. Due to be deprecated: will be handled by
* ControlMatchUI. Also, this functionality is already performed elsewhere
* in the code base. Furthermore, there's a strong possibility this will
* need bo be broken down and can't be in one place - e.g. keyboard
* shortcuts are saved after they're edited.
*
* @return a boolean.
*/
@Override
public final boolean savePrefs() {
final ForgePreferences fp = Singletons.getModel().getPreferences();
final List<ViewField> fieldViews = this.getFieldViews();
// AI field is at index [0]
fp.setAIPhase("phase.ai.upkeep", fieldViews.get(0).getLblUpkeep().getEnabled());
fp.setAIPhase("phase.ai.draw", fieldViews.get(0).getLblDraw().getEnabled());
fp.setAIPhase("phase.ai.main1", fieldViews.get(0).getLblMain1().getEnabled());
fp.setAIPhase("phase.ai.beginCombat", fieldViews.get(0).getLblBeginCombat().getEnabled());
fp.setAIPhase("phase.ai.declareAttackers", fieldViews.get(0).getLblDeclareAttackers().getEnabled());
fp.setAIPhase("phase.ai.declareBlockers", fieldViews.get(0).getLblDeclareBlockers().getEnabled());
fp.setAIPhase("phase.ai.firstStrike", fieldViews.get(0).getLblFirstStrike().getEnabled());
fp.setAIPhase("phase.ai.combatDamage", fieldViews.get(0).getLblCombatDamage().getEnabled());
fp.setAIPhase("phase.ai.endCombat", fieldViews.get(0).getLblEndCombat().getEnabled());
fp.setAIPhase("phase.ai.main2", fieldViews.get(0).getLblMain2().getEnabled());
fp.setAIPhase("phase.ai.eot", fieldViews.get(0).getLblEndTurn().getEnabled());
fp.setAIPhase("phase.ai.cleanup", fieldViews.get(0).getLblCleanup().getEnabled());
// Human field is at index [1]
fp.setHumanPhase("phase.human.upkeep", fieldViews.get(1).getLblUpkeep().getEnabled());
fp.setHumanPhase("phase.human.draw", fieldViews.get(1).getLblDraw().getEnabled());
fp.setHumanPhase("phase.human.main1", fieldViews.get(1).getLblMain1().getEnabled());
fp.setHumanPhase("phase.human.beginCombat", fieldViews.get(1).getLblBeginCombat().getEnabled());
fp.setHumanPhase("phase.human.declareAttackers", fieldViews.get(1).getLblDeclareAttackers().getEnabled());
fp.setHumanPhase("phase.human.declareBlockers", fieldViews.get(1).getLblDeclareBlockers().getEnabled());
fp.setHumanPhase("phase.human.firstStrike", fieldViews.get(1).getLblFirstStrike().getEnabled());
fp.setHumanPhase("phase.human.combatDamage", fieldViews.get(1).getLblCombatDamage().getEnabled());
fp.setHumanPhase("phase.human.endCombat", fieldViews.get(1).getLblEndCombat().getEnabled());
fp.setHumanPhase("phase.human.main2", fieldViews.get(1).getLblMain2().getEnabled());
fp.setHumanPhase("phase.human.eot", fieldViews.get(1).getLblEndTurn().getEnabled());
fp.setHumanPhase("phase.human.cleanup", fieldViews.get(1).getLblCleanup().getEnabled());
Constant.Runtime.MILL[0] = this.getTabberController().getView().getLblMilling().getEnabled();
Constant.Runtime.HANDVIEW[0] = this.getTabberController().getView().getLblHandView().getEnabled();
Constant.Runtime.LIBRARYVIEW[0] = this.getTabberController().getView().getLblLibraryView().getEnabled();
fp.setMillingLossCondition(Constant.Runtime.MILL[0]);
fp.setHandView(Constant.Runtime.HANDVIEW[0]);
fp.setLibraryView(Constant.Runtime.LIBRARYVIEW[0]);
fp.setUILayout(getLayoutParams());
return true;
}
/**
* <p>
* stopAtPhase.
* </p>
* Required by Display interface. Due to be deprecated: should be handled by
* control class.
*
* @param turn
* &emsp; Player object...more info needed
* @param phase
* &emsp; A string...more info needed
* @return a boolean.
*/
@Override
public final boolean stopAtPhase(final Player turn, final String phase) {
final List<ControlField> fieldControllers = this.getFieldControllers();
// AI field is at index [0]
if (turn.isComputer()) {
if (phase.equals(Constant.Phase.UPKEEP)) {
return fieldControllers.get(0).getView().getLblUpkeep().getEnabled();
} else if (phase.equals(Constant.Phase.DRAW)) {
return fieldControllers.get(0).getView().getLblDraw().getEnabled();
} else if (phase.equals(Constant.Phase.MAIN1)) {
return fieldControllers.get(0).getView().getLblMain1().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_BEGIN)) {
return fieldControllers.get(0).getView().getLblBeginCombat().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DECLARE_ATTACKERS)) {
return fieldControllers.get(0).getView().getLblDeclareAttackers().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DECLARE_BLOCKERS)) {
return fieldControllers.get(0).getView().getLblDeclareBlockers().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_FIRST_STRIKE_DAMAGE)) {
return fieldControllers.get(0).getView().getLblFirstStrike().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DAMAGE)) {
return fieldControllers.get(0).getView().getLblCombatDamage().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_END)) {
return fieldControllers.get(0).getView().getLblEndCombat().getEnabled();
} else if (phase.equals(Constant.Phase.MAIN2)) {
return fieldControllers.get(0).getView().getLblMain2().getEnabled();
} else if (phase.equals(Constant.Phase.END_OF_TURN)) {
return fieldControllers.get(0).getView().getLblEndTurn().getEnabled();
} else if (phase.equals(Constant.Phase.DRAW)) {
return fieldControllers.get(0).getView().getLblDraw().getEnabled();
}
}
// Human field is at index [1]
else {
if (phase.equals(Constant.Phase.UPKEEP)) {
return fieldControllers.get(1).getView().getLblUpkeep().getEnabled();
} else if (phase.equals(Constant.Phase.DRAW)) {
return fieldControllers.get(1).getView().getLblDraw().getEnabled();
} else if (phase.equals(Constant.Phase.MAIN1)) {
return fieldControllers.get(1).getView().getLblMain1().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_BEGIN)) {
return fieldControllers.get(1).getView().getLblBeginCombat().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DECLARE_ATTACKERS)) {
return fieldControllers.get(1).getView().getLblDeclareAttackers().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DECLARE_BLOCKERS)) {
return fieldControllers.get(1).getView().getLblDeclareBlockers().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_FIRST_STRIKE_DAMAGE)) {
return fieldControllers.get(1).getView().getLblFirstStrike().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_DAMAGE)) {
return fieldControllers.get(1).getView().getLblCombatDamage().getEnabled();
} else if (phase.equals(Constant.Phase.COMBAT_END)) {
return fieldControllers.get(1).getView().getLblEndCombat().getEnabled();
} else if (phase.equals(Constant.Phase.MAIN2)) {
return fieldControllers.get(1).getView().getLblMain2().getEnabled();
} else if (phase.equals(Constant.Phase.END_OF_TURN)) {
return fieldControllers.get(1).getView().getLblEndTurn().getEnabled();
} else if (phase.equals(Constant.Phase.DRAW)) {
return fieldControllers.get(1).getView().getLblDraw().getEnabled();
}
}
return true;
}
/**
* Required by display interface. Due to be deprecated: handled by control
* class.
*
* @return a {@link forge.Card} object.
*/
public final Card getCard() {
return this.getDetailController().getCurrentCard();
}
/**
* Required by display interface. Due to be deprecated: already handled by
* controller class.
*
* @param card
* &emsp; a card
*/
@Override
public final void setCard(final Card card) {
this.getDetailController().showCard(card);
this.getPictureController().showCard(card);
}
/** {@inheritDoc} */
@Override
public final void assignDamage(final Card attacker, final CardList blockers, final int damage) {
if (damage <= 0) {
return;
}
new GuiMultipleBlockers(attacker, blockers, damage, this);
}
/** /**
* Gets the top level frame. * Gets the top level frame.
* *