/* * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. */ package mage.client.game; import java.awt.Color; import java.awt.Dimension; import java.awt.GridBagLayout; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.SwingUtilities; import mage.client.components.MageTextArea; /** * Panel with buttons that copy the state of feedback panel. * * @author ayrat */ public class HelperPanel extends JPanel { private javax.swing.JButton btnLeft; private javax.swing.JButton btnRight; private javax.swing.JButton btnSpecial; private javax.swing.JButton btnUndo; //private javax.swing.JButton btnEndTurn; //private javax.swing.JButton btnStopTimer; private MageTextArea textArea; private javax.swing.JButton linkLeft; private javax.swing.JButton linkRight; private javax.swing.JButton linkSpecial; private javax.swing.JButton linkUndo; public HelperPanel() { initComponents(); } private void initComponents() { setBackground(new Color(0, 0, 0, 100)); //setLayout(new GridBagLayout()); setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); setOpaque(false); JPanel container = new JPanel(); container.setPreferredSize(new Dimension(100, 30)); container.setLayout(new GridBagLayout()); container.setOpaque(false); JPanel jPanel = new JPanel(); textArea = new MageTextArea(); textArea.setText(""); jPanel.setOpaque(false); jPanel.setBackground(new Color(0, 0, 0, 80)); jPanel.add(textArea); add(jPanel); add(container); btnSpecial = new JButton("Special"); btnSpecial.setVisible(false); container.add(btnSpecial); btnLeft = new JButton("OK"); btnLeft.setVisible(false); container.add(btnLeft); btnRight = new JButton("Cancel"); btnRight.setVisible(false); container.add(btnRight); btnUndo = new JButton("Undo"); btnUndo.setVisible(false); container.add(btnUndo); btnLeft.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { if (linkLeft != null) {{ Thread worker = new Thread(){ @Override public void run(){ SwingUtilities.invokeLater(new Runnable(){ @Override public void run(){ setState("",false,"",false); setSpecial("", false); linkLeft.doClick(); } }); } }; worker.start(); }} } }); btnRight.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { if (linkRight != null) { Thread worker = new Thread(){ @Override public void run(){ SwingUtilities.invokeLater(new Runnable(){ @Override public void run(){ setState("",false,"",false); setSpecial("", false); linkRight.doClick(); } }); } }; worker.start(); } } }); btnSpecial.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { if (linkSpecial != null) {{ Thread worker = new Thread(){ @Override public void run(){ SwingUtilities.invokeLater(new Runnable(){ @Override public void run(){ setState("",false,"",false); setSpecial("", false); linkSpecial.doClick(); } }); } }; worker.start(); }} } }); btnUndo.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { if (linkUndo != null) {{ Thread worker = new Thread(){ @Override public void run(){ SwingUtilities.invokeLater(new Runnable(){ @Override public void run(){ linkUndo.doClick(); } }); } }; worker.start(); }} } }); } public void setState(String txtLeft, boolean leftVisible, String txtRight, boolean rightVisible) { this.btnLeft.setVisible(leftVisible); if (!txtLeft.isEmpty()) { this.btnLeft.setText(txtLeft); } this.btnRight.setVisible(rightVisible); if (!txtRight.isEmpty()) { this.btnRight.setText(txtRight); } } public void setSpecial(String txtSpecial, boolean specialVisible) { this.btnSpecial.setVisible(specialVisible); this.btnSpecial.setText(txtSpecial); } public void setUndoEnabled(boolean enabled) { this.btnUndo.setVisible(enabled); } public void setRight(String txtRight, boolean rightVisible) { this.btnRight.setVisible(rightVisible); if (!txtRight.isEmpty()) { this.btnRight.setText(txtRight); } } public void setLinks(JButton left, JButton right, JButton special, JButton undo) { this.linkLeft = left; this.linkRight = right; this.linkSpecial = special; this.linkUndo = undo; } public void setMessage(String message) { if (message.startsWith("Use alternative cost")) { message = "Use alternative cost?"; } else if (message.contains("Use ")) { if (message.length() < this.getWidth() / 10) { message = getSmallText(message); } else { message = "Use ability?" + getSmallText(message.substring(this.getWidth() / 10)); } } textArea.setText(message); } protected String getSmallText(String text) { return "
" + text + "
"; } @Override public void requestFocus() { this.btnRight.requestFocus(); } }