net.europa13.taikai.web.client.ui.TournamentAdvancementTable.java Source code

Java tutorial

Introduction

Here is the source code for net.europa13.taikai.web.client.ui.TournamentAdvancementTable.java

Source

/*
 * TaikaiWeb - a web application for managing and running kendo tournaments.
 * Copyright (C) 2008  Daniel Wentzel & Jonatan Wentzel
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package net.europa13.taikai.web.client.ui;

import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Widget;
import java.util.ArrayList;
import java.util.List;
import net.europa13.taikai.web.client.logging.Logger;
import net.europa13.taikai.web.proxy.TournamentAdvancementProxy;
import net.europa13.taikai.web.proxy.TournamentDetails;
import net.europa13.taikai.web.proxy.TournamentProxy;

/**
 *
 * @author Daniel Wentzel
 */
public class TournamentAdvancementTable extends CaptionPanel {

    private final ArrayList<TournamentSelector> selectors;
    private final CheckBox cbAllToSame;
    //    private final CheckBox cbUseAdvancement;
    private final FlexTable grid;

    private boolean enabled;

    private TournamentProxy tournament;

    public TournamentAdvancementTable() {
        super("Avancemang");

        grid = new FlexTable();

        grid.setText(0, 0, "De fyra bsta gr vidare till");

        selectors = new ArrayList<TournamentSelector>();

        for (int i = 0; i < 4; ++i) {
            selectors.add(new TournamentSelector());
            grid.setWidget(1, i, selectors.get(i));
        }

        grid.getFlexCellFormatter().setColSpan(0, 0, 2);

        cbAllToSame = new CheckBox("Alla till samma");
        cbAllToSame.setChecked(true);
        cbAllToSame.addClickListener(new ClickListener() {

            public void onClick(Widget arg0) {
                updateControls();
            }
        });
        grid.setWidget(0, 2, cbAllToSame);

        for (int i = 0; i < 4; ++i) {
            grid.getColumnFormatter().setWidth(i, 100 / selectors.size() + "%");
        }

        enabled = true;
        updateControls();
        add(grid);
    }

    public List<TournamentAdvancementProxy> getAdvancements() {
        ArrayList<TournamentAdvancementProxy> advancements = new ArrayList<TournamentAdvancementProxy>();

        for (int i = 0; i < selectors.size(); ++i) {
            TournamentAdvancementProxy advancement = new TournamentAdvancementProxy(tournament,
                    getSelectedTournament(i), i);
            if (advancement.getAdvancementTournament() != null) {
                advancements.add(advancement);
            }
        }

        return advancements;
    }

    public TournamentProxy getSelectedTournament(int playerNumber) {
        if (cbAllToSame.isChecked()) {
            return selectors.get(0).getSelectedTournament();
        } else {
            return selectors.get(playerNumber).getSelectedTournament();
        }
    }

    public void setAdvancements(List<? extends TournamentAdvancementProxy> advancements) {
        Logger.debug("entering setAdvancements");
        //        for (int i = 0; i < selectors.size(); ++i) {
        //            selectors.get(i).setSelectedTournament(tournament);
        //        }

        if (advancements == null) {
            Logger.debug("advancements is null");
        }

        for (TournamentAdvancementProxy advancement : advancements) {
            int position = advancement.getPlayerPosition();

            Logger.debug("setting up selector at position " + position + " with tournament "
                    + advancement.getAdvancementTournament());
            selectors.get(position).setSelectedTournament(advancement.getAdvancementTournament());
        }

        Logger.debug("exiting setAdvancements");
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;

        cbAllToSame.setEnabled(enabled);
        if (!enabled) {
            for (int i = 0; i < selectors.size(); ++i) {
                selectors.get(i).setEnabled(false);
            }
        } else {
            updateControls();
        }
    }

    public void setTournament(TournamentDetails tournament) {
        this.tournament = tournament;
        if (tournament == null) {
            return;
        }
        setAdvancements(tournament.getAdvancements());
    }

    public void setTournaments(List<? extends TournamentProxy> tournaments) {
        for (int i = 0; i < selectors.size(); ++i) {
            selectors.get(i).setTournaments(tournaments);
        }
    }

    private void updateControls() {
        if (enabled) {
            for (int i = 1; i < selectors.size(); ++i) {
                selectors.get(i).setEnabled(!cbAllToSame.isChecked());
            }
        }
    }
}