Package com.barrybecker4.game.twoplayer.common.ui.gametree

Source Code of com.barrybecker4.game.twoplayer.common.ui.gametree.MoveDetailsPanel

/** Copyright by Barry G. Becker, 2000-2011. Licensed under MIT License: http://www.opensource.org/licenses/MIT  */
package com.barrybecker4.game.twoplayer.common.ui.gametree;

import com.barrybecker4.common.format.FormatUtil;
import com.barrybecker4.game.common.player.PlayerList;
import com.barrybecker4.game.twoplayer.common.TwoPlayerController;
import com.barrybecker4.game.twoplayer.common.TwoPlayerMove;
import com.barrybecker4.game.twoplayer.common.search.tree.SearchTreeNode;
import com.barrybecker4.game.twoplayer.common.ui.AbstractTwoPlayerBoardViewer;
import com.barrybecker4.game.twoplayer.common.ui.TwoPlayerPieceRenderer;
import com.barrybecker4.ui.util.ColorUtil;

import javax.swing.*;
import javax.swing.border.EtchedBorder;
import java.awt.*;

/**
* Presents info to the user about the currently moused over node in the tree.
*
* @author Barry Becker
*/
class MoveDetailsPanel extends JPanel {

    private JLabel infoLabel_;
    private JLabel leafDetailLabel_;


    public MoveDetailsPanel() {
        setLayout(new BorderLayout());
        setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED),
                             BorderFactory.createEmptyBorder(5, 5, 5, 5)));

        infoLabel_ = new JLabel();
        leafDetailLabel_ = new JLabel();
        add(panelWrap(infoLabel_), BorderLayout.CENTER);
        add(panelWrap(leafDetailLabel_), BorderLayout.EAST) ;
    }

    private JPanel panelWrap(JLabel label) {
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.setBorder(BorderFactory.createEtchedBorder());
        panel.add(label);
        panel.add(Box.createVerticalGlue());
        return panel;
    }

    /**
     *  Display all the relevant info for the moused over move.
     */
    public void setText(AbstractTwoPlayerBoardViewer viewer, TwoPlayerMove m, SearchTreeNode lastNode) {
        TwoPlayerPieceRenderer renderer = (TwoPlayerPieceRenderer)viewer.getPieceRenderer();
        TwoPlayerController controller = (TwoPlayerController)viewer.getController();
        String passSuffix = m.isPassingMove() ? " (Pass)" : "";
        String entity = "Human's move";
        int numKids = lastNode.getChildMoves()==null? 0 : lastNode.getChildMoves().length;

        Color c = renderer.getPlayer2Color();
        if ( m.isPlayer1() )
            c = renderer.getPlayer1Color();
        PlayerList players = controller.getPlayers();
        if ( (m.isPlayer1() && !players.getPlayer1().isHuman()) ||
             (!m.isPlayer1() && !players.getPlayer2().isHuman()) )
            entity = "Computer's move";

        StringBuilder sBuf = new StringBuilder("<html>");
        sBuf.append("<font size=\"+1\" color=\"").append(ColorUtil.getHTMLColorFromColor(c)).
                append("\" bgcolor=\"#99AA99>\">").append(entity).append(passSuffix).append("</font><br>");
        sBuf.append("Static value = ").append(FormatUtil.formatNumber(m.getValue())).append("<br>");

        sBuf.append(lastNode.toString());

        sBuf.append("<br>Number of descendants = ").append(numKids).append("<br>");
        if (m.isUrgent())
            sBuf.append( "<font color=\"#FF6611\">Urgent move!</font>");
        sBuf.append("</html>");
        infoLabel_.setText(sBuf.toString());

        setLeafDetail(m, numKids==0);
    }

    private void setLeafDetail(TwoPlayerMove m, boolean isLeaf) {
        StringBuilder buf = new StringBuilder("");
        if (isLeaf) {
            if (m.getScoreDescription() != null)  {
                buf.append(m.getScoreDescription());
            }
        }  else {
            buf.append("Not a leaf");
        }
        leafDetailLabel_.setText(buf.toString());
    }

}
TOP

Related Classes of com.barrybecker4.game.twoplayer.common.ui.gametree.MoveDetailsPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.