Package org.ggp.base.apps.player.detail

Source Code of org.ggp.base.apps.player.detail.SimpleDetailPanel

package org.ggp.base.apps.player.detail;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.table.DefaultTableModel;

import org.ggp.base.player.gamer.event.GamerNewMatchEvent;
import org.ggp.base.player.gamer.event.GamerSelectedMoveEvent;
import org.ggp.base.util.observer.Event;
import org.ggp.base.util.ui.table.JZebraTable;

/**
* This is a simple tabular detail panel that shows the number of
* available moves, the time it took to select a move, and the move
* that was selected.
*/
@SuppressWarnings("serial")
public class SimpleDetailPanel extends DetailPanel {
  private final JZebraTable moveTable;

  public SimpleDetailPanel() {
    super(new GridBagLayout());

    DefaultTableModel model = new DefaultTableModel();
    model.addColumn("Available Moves");
    model.addColumn("Computation Time");
    model.addColumn("Selected Move");

    moveTable = new JZebraTable(model) {
      @Override
      public boolean isCellEditable(int rowIndex, int colIndex) {
        return false;
      }
    };
    moveTable.setShowHorizontalLines(true);
    moveTable.setShowVerticalLines(true);

    this.add(new JScrollPane(moveTable, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED), new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 5, 5));
  }

  @Override
  public void observe(Event event) {
    if (event instanceof GamerNewMatchEvent) {
      observe((GamerNewMatchEvent) event);
    } else if (event instanceof GamerSelectedMoveEvent) {
      observe((GamerSelectedMoveEvent) event);
    }
  }

  private void observe(GamerNewMatchEvent event) {
    DefaultTableModel model = (DefaultTableModel) moveTable.getModel();
    model.setRowCount(0);
  }

  private void observe(GamerSelectedMoveEvent event) {
    String availableMoves = Integer.toString(event.getMoves().size());
    String computationTime = Long.toString(event.getTime()) + " ms";
    String move = event.getSelection().toString();

    DefaultTableModel model = (DefaultTableModel) moveTable.getModel();
    model.addRow(new String[] { availableMoves, computationTime, move });
  }
}
TOP

Related Classes of org.ggp.base.apps.player.detail.SimpleDetailPanel

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.