Package com.google.gwt.gin.higherlower.client

Source Code of com.google.gwt.gin.higherlower.client.DefaultCardGrid

package com.google.gwt.gin.higherlower.client;

import com.google.gwt.gin.higherlower.client.gin.BackOfCard;
import com.google.gwt.gin.higherlower.client.gin.Columns;
import com.google.gwt.gin.higherlower.client.gin.Rows;
import com.google.gwt.gin.higherlower.client.model.Card;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Image;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.name.Named;

public class DefaultCardGrid extends CardGrid {
  private final Provider<Image> backOfCard;
  private final Grid grid;
  private final int rows;
  private final int columns;

  @Inject
  public DefaultCardGrid(@BackOfCard Provider<Image> backOfCard,
      @Rows int rows, @Columns int columns) {
    // we use a Provider to avoid weird results with duplicate images in Grid
    this.backOfCard = backOfCard;
    this.grid = new Grid(rows, columns);

    this.rows = rows;
    this.columns = columns;
   
    grid.addStyleName("cardGrid");

    reset();

    initWidget(grid);
  }

  public void reset() {
    for (int row = 0; row < this.rows; row++) {
      for (int column = 0; column < this.columns; column++) {
        grid.setWidget(row, column, new Card(null,null,this.backOfCard.get()));
      }
    }
  }

  public void nextCard(Card card) {
    // TODO perf will suck for large grids
    for (int row = 0; row < this.rows; row++) {
      for (int column = 0; column < this.columns; column++) {
        Card currentCard = (Card)grid.getWidget(row, column);
        if (currentCard.getSuit() == null) {
          grid.setWidget(row, column, card);
          return;
        }
      }
    }
  }
}
TOP

Related Classes of com.google.gwt.gin.higherlower.client.DefaultCardGrid

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.