keep the focus on the ok/cancel buttons during a match

restore focus to previous owner when the overlay is hidden
properly handle all the various combinations of hover/focus/button presses in FButton
This commit is contained in:
myk
2013-02-14 21:49:39 +00:00
parent dc2e9a1ca4
commit a42bbdc0ca
22 changed files with 131 additions and 207 deletions

View File

@@ -50,7 +50,7 @@ public class CountersProliferateEffect extends SpellEffect {
@Override
public void showMessage() {
ButtonUtil.enableOnlyOK();
ButtonUtil.enableOnlyOk();
CMatchUI.SINGLETON_INSTANCE.showMessage("Proliferate: Choose permanents and/or players");
}

View File

@@ -18,12 +18,12 @@
package forge.card.cardfactory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import java.util.Vector;
import java.util.List;
import java.util.Collections;
import javax.swing.JOptionPane;
@@ -31,7 +31,6 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates;
import forge.CardPredicates.Presets;
@@ -55,7 +54,6 @@ import forge.game.zone.Zone;
import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.match.CMatchUI;
import forge.util.Aggregates;
import forge.view.ButtonUtil;
@@ -802,7 +800,7 @@ public class CardFactorySorceries {
sb.append(card.getName()).append(" - Select a target creature to gain Fear (up to ");
sb.append(this.stop - this.count).append(" more)");
CMatchUI.SINGLETON_INSTANCE.showMessage(sb.toString());
ButtonUtil.enableAll();
ButtonUtil.enableAllFocusOk();
}
@Override

View File

@@ -395,11 +395,11 @@ public class TargetSelection {
if (!tgt.isMinTargetsChosen(sa.getSourceCard(), sa) || tgt.isDividedAsYouChoose()) {
ButtonUtil.enableOnlyCancel();
} else {
ButtonUtil.enableAll();
ButtonUtil.enableAllFocusOk();
}
if (mandatory && tgt.hasCandidates(sa, true)) {
ButtonUtil.disableCancel();
ButtonUtil.enableOnlyOk();
}
}

View File

@@ -52,7 +52,7 @@ public class InputAttack extends Input {
public final void showMessage() {
// TODO still seems to have some issues with multiple planeswalkers
ButtonUtil.enableOnlyOK();
ButtonUtil.enableOnlyOk();
final Object o = Singletons.getModel().getGame().getCombat().nextDefender();
if (o == null) {

View File

@@ -75,7 +75,7 @@ public class InputBlock extends Input {
@Override
public final void showMessage() {
// could add "Reset Blockers" button
ButtonUtil.enableOnlyOK();
ButtonUtil.enableOnlyOk();
if (this.currentAttacker == null) {

View File

@@ -23,7 +23,6 @@ import java.util.List;
import com.google.common.collect.Iterables;
import forge.Card;
import forge.CardLists;
import forge.CardPredicates;
import forge.Singletons;
@@ -61,9 +60,8 @@ public class InputMulligan extends Input {
/** {@inheritDoc} */
@Override
public final void showMessage() {
ButtonUtil.enableAll();
VMatchUI.SINGLETON_INSTANCE.getBtnOK().setText("No");
VMatchUI.SINGLETON_INSTANCE.getBtnCancel().setText("Yes");
ButtonUtil.setButtonText("No", "Yes");
ButtonUtil.enableAllFocusOk();
final String str =
(Singletons.getModel().getGame().getPhaseHandler().getPlayerTurn().equals(Singletons.getControl().getPlayer())
@@ -77,14 +75,10 @@ public class InputMulligan extends Input {
this.end();
}
/** {@inheritDoc} */
@Override
public final void selectButtonCancel() {
final Player humanPlayer = Singletons.getControl().getPlayer();
final int newHand = humanPlayer.doMulligan();
if (newHand == 0) {

View File

@@ -46,7 +46,7 @@ public class InputPassPriority extends Input {
@Override
public final void showMessage() {
GuiDisplayUtil.updateGUI();
ButtonUtil.enableOnlyOK();
ButtonUtil.enableOnlyOk();
final PhaseType phase = Singletons.getModel().getGame().getPhaseHandler().getPhase();
final Player player = Singletons.getModel().getGame().getPhaseHandler().getPriorityPlayer();

View File

@@ -20,10 +20,9 @@ package forge.control.input;
import java.util.List;
import forge.Card;
import forge.Singletons;
import forge.CardLists;
import forge.Command;
import forge.Singletons;
import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.CostDiscard;
import forge.card.spellability.SpellAbility;
@@ -108,7 +107,7 @@ public class InputPayDiscardCost extends Input {
ButtonUtil.enableOnlyCancel();
}
else {
ButtonUtil.enableAll();
ButtonUtil.enableAllFocusOk();
}
}

View File

@@ -218,7 +218,7 @@ public class InputPayManaCostAbility extends InputPayMana {
public final void showMessage() {
ButtonUtil.enableOnlyCancel();
if (this.showOnlyOKButton) {
ButtonUtil.enableOnlyOK();
ButtonUtil.enableOnlyOk();
}
final StringBuilder msg = new StringBuilder(this.message + "Pay Mana Cost: " + this.manaCost);
if (this.phyLifeToLose > 0) {

View File

@@ -42,7 +42,7 @@ public class InputPayManaX extends InputPayMana {
// only cancel if partially paid an X value
// or X is 0, and x can't be 0
} else {
ButtonUtil.enableAll();
ButtonUtil.enableAllFocusOk();
}
StringBuilder msg = new StringBuilder("Pay X Mana Cost for ");

View File

@@ -107,7 +107,7 @@ public class InputPayReturnCost extends Input {
ButtonUtil.enableOnlyCancel();
}
else {
ButtonUtil.enableAll();
ButtonUtil.enableAllFocusOk();
}
}

View File

@@ -108,7 +108,7 @@ public class InputPaySacCost extends Input {
ButtonUtil.enableOnlyCancel();
}
else {
ButtonUtil.enableAll();
ButtonUtil.enableAllFocusOk();
}
}

View File

@@ -39,13 +39,13 @@ public abstract class InputSelectMany<T extends GameEntity> extends Input {
boolean canOk = hasEnoughTargets();
if (canOk && canCancel) {
ButtonUtil.enableAll();
ButtonUtil.enableAllFocusOk();
}
if (!canOk && canCancel) {
ButtonUtil.enableOnlyCancel();
}
if (canOk && !canCancel) {
ButtonUtil.enableOnlyOK();
ButtonUtil.enableOnlyOk();
}
if (!canOk && !canCancel) {
ButtonUtil.disableAll();

View File

@@ -1,11 +1,13 @@
package forge.gui;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.FocusManager;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
@@ -117,7 +119,9 @@ public final class SOverlayUtils {
return overlay;
}
private static Component prevFocusOwner;
public static void showOverlay() {
prevFocusOwner = FocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner();
FOverlay.SINGLETON_INSTANCE.getPanel().setVisible(true);
// ensure no background element has focus
FOverlay.SINGLETON_INSTANCE.getPanel().requestFocusInWindow();
@@ -129,6 +133,10 @@ public final class SOverlayUtils {
public static void hideOverlay() {
FOverlay.SINGLETON_INSTANCE.getPanel().removeAll();
FOverlay.SINGLETON_INSTANCE.getPanel().setVisible(false);
if (null != prevFocusOwner) {
prevFocusOwner.requestFocusInWindow();
prevFocusOwner = null;
}
}
public static void showTargetingOverlay() {

View File

@@ -1,7 +1,5 @@
package forge.gui.deckeditor.controllers;
import java.awt.Component;
import java.awt.KeyboardFocusManager;
import java.awt.Toolkit;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
@@ -155,7 +153,6 @@ public enum CCardCatalog implements ICDoc {
GuiUtils.addMenuItem(popup, "Sets...", null, new Runnable() {
@Override
public void run() {
final Component prevFocusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner();
final DialogChooseSets dialog = new DialogChooseSets(null, null, true);
dialog.setOkCallback(new Runnable() {
@Override
@@ -187,9 +184,6 @@ public enum CCardCatalog implements ICDoc {
}
addRestriction(buildSetRestriction(label.toString(), setCodes, dialog.getWantReprints()), null, null);
if (null != prevFocusOwner) {
prevFocusOwner.requestFocusInWindow();
}
}
});
}

View File

@@ -43,6 +43,7 @@ import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
@@ -190,6 +191,12 @@ public abstract class GuiDownloader extends DefaultBoundedRangeModel implements
btnStart.setVisible(true);
btnStart.addActionListener(actStartDownload);
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
btnStart.requestFocusInWindow();
}
});
}
private void setCancel(final boolean cancel) {

View File

@@ -1,6 +1,8 @@
package forge.gui.framework;
import java.awt.Color;
import java.awt.Component;
import java.awt.KeyboardFocusManager;
import java.util.Timer;
import java.util.TimerTask;
@@ -84,6 +86,11 @@ public class SDisplayUtil {
/** @param tab0 &emsp; {@link java.gui.framework.IVDoc} */
public static void showTab(final IVDoc<? extends ICDoc> tab0) {
Component c = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner();
tab0.getParentCell().setSelected(tab0);
// set focus back to previous owner, if any
if (null != c) {
c.requestFocusInWindow();
}
}
}

View File

@@ -41,7 +41,6 @@ public enum CMessage implements ICDoc {
@Override
public void actionPerformed(final ActionEvent evt) {
inputControl.selectButtonCancel();
VMessage.SINGLETON_INSTANCE.getBtnOK().requestFocusInWindow();
}
};
@@ -49,7 +48,6 @@ public enum CMessage implements ICDoc {
@Override
public void actionPerformed(final ActionEvent evt) {
inputControl.selectButtonOK();
VMessage.SINGLETON_INSTANCE.getBtnOK().requestFocusInWindow();
}
};

View File

@@ -38,7 +38,6 @@ import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType;
import forge.gui.framework.ICDoc;
import forge.gui.match.CMatchUI;
import forge.gui.match.VMatchUI;
import forge.gui.match.controllers.CMessage;
import forge.view.arcane.CardPanel;
import forge.view.arcane.HandArea;
@@ -186,7 +185,6 @@ public class CHand implements ICDoc {
final Card c = view.getHandArea().getCardFromMouseOverPanel();
if (c != null) {
CMessage.SINGLETON_INSTANCE.getInputControl().selectCard(c, Singletons.getControl().getPlayer().getZone(ZoneType.Hand));
VMatchUI.SINGLETON_INSTANCE.getBtnOK().requestFocusInWindow();
}
}

View File

@@ -41,7 +41,6 @@ import forge.gui.framework.DragTab;
import forge.gui.framework.EDocID;
import forge.gui.framework.IVDoc;
import forge.gui.match.CMatchUI;
import forge.gui.match.VMatchUI;
import forge.gui.match.controllers.CStack;
import forge.gui.toolbox.FSkin;
import forge.properties.NewConstants;
@@ -203,7 +202,6 @@ public enum VStack implements IVDoc<CStack> {
}
}
VMatchUI.SINGLETON_INSTANCE.getBtnOK().requestFocusInWindow();
parentCell.getBody().repaint();
}

View File

@@ -29,6 +29,7 @@ import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
@@ -50,6 +51,7 @@ public class FButton extends JButton implements ILocalRepaint {
private int w, h = 0;
private boolean allImagesPresent = false;
private boolean toggle = false;
private boolean hovered = false;
private final AlphaComposite disabledComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.25f);
private KeyAdapter klEnter;
@@ -60,14 +62,8 @@ public class FButton extends JButton implements ILocalRepaint {
this("");
}
/**
* Instantiates a new FButton.
*
* @param msg
* the msg
*/
public FButton(final String msg) {
super(msg);
public FButton(final String label) {
super(label);
this.setOpaque(false);
this.setForeground(FSkin.getColor(FSkin.Colors.CLR_TEXT));
this.setBackground(Color.red);
@@ -96,52 +92,35 @@ public class FButton extends JButton implements ILocalRepaint {
// Mouse events
this.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseEntered(final java.awt.event.MouseEvent evt) {
if (isToggled()) { return; }
if (FButton.this.isEnabled()) {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_OVER_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_OVER_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_OVER_RIGHT).getImage();
}
public void mouseEntered(MouseEvent evt) {
hovered = true;
if (isToggled() || !isEnabled()) { return; }
resetImg();
repaintSelf();
}
@Override
public void mouseExited(final java.awt.event.MouseEvent evt) {
if (isToggled()) { return; }
if (FButton.this.isEnabled() && !FButton.this.isFocusOwner()) {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_RIGHT).getImage();
}
else if (FButton.this.isEnabled() && FButton.this.isFocusOwner()) {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_FOCUS_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_FOCUS_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_FOCUS_RIGHT).getImage();
}
public void mouseExited(MouseEvent evt) {
hovered = false;
if (isToggled() || !isEnabled()) { return; }
resetImg();
repaintSelf();
}
@Override
public void mousePressed(final java.awt.event.MouseEvent evt) {
if (isToggled()) { return; }
if (FButton.this.isEnabled()) {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DOWN_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DOWN_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DOWN_RIGHT).getImage();
}
public void mousePressed(MouseEvent evt) {
if (isToggled() || !isEnabled()) { return; }
imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DOWN_LEFT).getImage();
imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DOWN_CENTER).getImage();
imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DOWN_RIGHT).getImage();
repaintSelf();
}
@Override
public void mouseReleased(final java.awt.event.MouseEvent evt) {
if (isToggled()) { return; }
if (FButton.this.isEnabled()) {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DOWN_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DOWN_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DOWN_RIGHT).getImage();
}
public void mouseReleased(MouseEvent evt) {
if (isToggled() || !isEnabled()) { return; }
resetImg();
repaintSelf();
}
});
@@ -150,45 +129,51 @@ public class FButton extends JButton implements ILocalRepaint {
@Override
public void focusGained(FocusEvent e) {
if (isToggled()) { return; }
if (FButton.this.isEnabled()) {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_FOCUS_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_FOCUS_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_FOCUS_RIGHT).getImage();
}
resetImg();
addKeyListener(klEnter);
repaintSelf();
}
@Override
public void focusLost(FocusEvent e) {
if (isToggled()) { return; }
if (FButton.this.isEnabled()) {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_RIGHT).getImage();
}
resetImg();
removeKeyListener(klEnter);
repaintSelf();
}
});
}
private void resetImg() {
if (hovered) {
imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_OVER_LEFT).getImage();
imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_OVER_CENTER).getImage();
imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_OVER_RIGHT).getImage();
}
else if (isFocusOwner()) {
imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_FOCUS_LEFT).getImage();
imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_FOCUS_CENTER).getImage();
imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_FOCUS_RIGHT).getImage();
} else {
imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_LEFT).getImage();
imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_CENTER).getImage();
imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_RIGHT).getImage();
}
}
@Override
public void setEnabled(boolean b0) {
if (!b0) {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_RIGHT).getImage();
imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_LEFT).getImage();
imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_CENTER).getImage();
imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_RIGHT).getImage();
}
else {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_RIGHT).getImage();
resetImg();
}
super.setEnabled(b0);
repaintSelf();
}
/**
@@ -203,40 +188,32 @@ public class FButton extends JButton implements ILocalRepaint {
/** @param b0 &emsp; boolean. */
public void setToggled(boolean b0) {
if (b0) {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_TOGGLE_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_TOGGLE_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_TOGGLE_RIGHT).getImage();
imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_TOGGLE_LEFT).getImage();
imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_TOGGLE_CENTER).getImage();
imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_TOGGLE_RIGHT).getImage();
}
else if (isEnabled()) {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_UP_RIGHT).getImage();
repaintSelf();
resetImg();
}
else {
FButton.this.imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_LEFT).getImage();
FButton.this.imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_CENTER).getImage();
FButton.this.imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_RIGHT).getImage();
repaintSelf();
imgL = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_LEFT).getImage();
imgM = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_CENTER).getImage();
imgR = FSkin.getIcon(FSkin.ButtonImages.IMG_BTN_DISABLED_RIGHT).getImage();
}
this.toggle = b0;
repaintSelf();
}
/** Prevent button from repainting the whole screen. */
@Override
public void repaintSelf() {
final Dimension d = FButton.this.getSize();
final Dimension d = getSize();
repaint(0, 0, d.width, d.height);
}
/*
* (non-Javadoc)
*
* @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
*/
@Override
protected void paintComponent(final Graphics g) {
if (!this.allImagesPresent) {
if (!allImagesPresent) {
return;
}
@@ -246,16 +223,16 @@ public class FButton extends JButton implements ILocalRepaint {
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
if (!this.isEnabled()) {
if (!isEnabled()) {
g2d.setComposite(this.disabledComposite);
}
this.w = this.getWidth();
this.h = this.getHeight();
w = getWidth();
h = getHeight();
g2d.drawImage(this.imgL, 0, 0, this.h, this.h, null);
g2d.drawImage(this.imgM, this.h, 0, this.w - (2 * this.h), this.h, null);
g2d.drawImage(this.imgR, this.w - this.h, 0, this.h, this.h, null);
g2d.drawImage(imgL, 0, 0, this.h, this.h, null);
g2d.drawImage(imgM, this.h, 0, this.w - (2 * this.h), this.h, null);
g2d.drawImage(imgR, this.w - this.h, 0, this.h, this.h, null);
super.paintComponent(g);
}

View File

@@ -22,103 +22,49 @@ import javax.swing.JButton;
import forge.gui.match.VMatchUI;
/**
* <p>
* ButtonUtil class.
* </p>
*
* @author Forge
* @version $Id$
* Manages match UI OK/Cancel button enabling and focus
*/
public class ButtonUtil {
/**
* <p>
* reset.
* </p>
*/
public static void setButtonText(String okLabel, String cancelLabel) {
getOk().setText(okLabel);
getCancel().setText(cancelLabel);
}
public static void reset() {
ButtonUtil.getOK().setText("OK");
ButtonUtil.getCancel().setText("Cancel");
ButtonUtil.getOK().setEnabled(false);
ButtonUtil.getCancel().setEnabled(false);
disableAll();
getOk().setText("OK");
getCancel().setText("Cancel");
}
/**
* <p>
* enableOnlyOK.
* </p>
*/
public static void enableOnlyOK() {
ButtonUtil.getOK().setEnabled(true);
ButtonUtil.getCancel().setEnabled(false);
public static void enableOnlyOk() {
getCancel().setEnabled(false);
enableAndFocus(getOk());
}
/**
* <p>
* enableOnlyCancel.
* </p>
*/
public static void enableOnlyCancel() {
ButtonUtil.getOK().setEnabled(false);
ButtonUtil.getCancel().setEnabled(true);
getOk().setEnabled(false);
enableAndFocus(getCancel());
}
/**
* <p>
* disableAll.
* </p>
*/
public static void disableAll() {
ButtonUtil.getOK().setEnabled(false);
ButtonUtil.getCancel().setEnabled(false);
getOk().setEnabled(false);
getCancel().setEnabled(false);
}
/**
* <p>
* enableAll.
* </p>
*/
public static void enableAll() {
ButtonUtil.getOK().setEnabled(true);
ButtonUtil.getCancel().setEnabled(true);
public static void enableAllFocusOk() {
enableAndFocus(getOk());
getCancel().setEnabled(true);
}
/**
* <p>
* disableOK.
* </p>
*/
public static void disableOK() {
ButtonUtil.getOK().setEnabled(false);
private static void enableAndFocus(final JButton button) {
button.setEnabled(true);
button.requestFocusInWindow();
}
/**
* <p>
* disableCancel.
* </p>
*/
public static void disableCancel() {
ButtonUtil.getCancel().setEnabled(false);
}
/**
* <p>
* getOK.
* </p>
*
* @return a {@link forge.MyButton} object.
*/
private static JButton getOK() {
private static JButton getOk() {
return VMatchUI.SINGLETON_INSTANCE.getBtnOK();
}
/**
* <p>
* getCancel.
* </p>
*
* @return a {@link forge.MyButton} object.
*/
private static JButton getCancel() {
return VMatchUI.SINGLETON_INSTANCE.getBtnCancel();
}