Package com.barrybecker4.puzzle.tantrix.ui

Source Code of com.barrybecker4.puzzle.tantrix.ui.TantrixPuzzle

// Copyright by Barry G. Becker, 2012. Licensed under MIT License: http://www.opensource.org/licenses/MIT
package com.barrybecker4.puzzle.tantrix.ui;

import com.barrybecker4.puzzle.common.AlgorithmEnum;
import com.barrybecker4.puzzle.common.PuzzleController;
import com.barrybecker4.puzzle.common.Refreshable;
import com.barrybecker4.puzzle.common.ui.PuzzleApplet;
import com.barrybecker4.puzzle.common.ui.PuzzleViewer;
import com.barrybecker4.puzzle.tantrix.TantrixController;
import com.barrybecker4.puzzle.tantrix.model.TantrixBoard;
import com.barrybecker4.puzzle.tantrix.model.TilePlacement;
import com.barrybecker4.puzzle.tantrix.solver.Algorithm;
import com.barrybecker4.ui.util.GUIUtil;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
* Tantrix Puzzle Application to show the solving of the puzzle.
*
* @author Barry Becker
*/
public final class TantrixPuzzle extends PuzzleApplet<TantrixBoard, TilePlacement>
                                 implements ChangeListener {
    JSpinner spinner;
    private static final int DEFAULT_NUM_TILES = 7;

    /**
     * Required no arg constructor.
     */
    public TantrixPuzzle() {}

    /**
     * Construct the application.
     */
    public TantrixPuzzle(String[] args) {
        super(args);
    }

    @Override
    protected PuzzleViewer<TantrixBoard, TilePlacement> createViewer() {

        //TantrixBoard board = new TantrixBoard(new HexTiles());
        return new TantrixViewer();
    }

    @Override
    protected PuzzleController<TantrixBoard, TilePlacement>
                createController(Refreshable<TantrixBoard, TilePlacement> viewer) {
        TantrixController controller = new TantrixController(viewer);
        controller.setNumTiles(DEFAULT_NUM_TILES);
        return controller;
    }

    @Override
    protected AlgorithmEnum<TantrixBoard, TilePlacement>[] getAlgorithmValues() {
        return Algorithm.values();
    }

    @Override
    protected JPanel createCustomControls() {
        JLabel label = new JLabel("Number of Tiles");
        SpinnerModel model = new SpinnerNumberModel(DEFAULT_NUM_TILES, 3, 30, 1);
        spinner = new JSpinner(model);
        spinner.addChangeListener(this);

        JPanel numTilesSelector = new JPanel();
        numTilesSelector.add(label);
        numTilesSelector.add(spinner);

        return numTilesSelector;
    }

    @Override
    public void stateChanged(ChangeEvent e) {

        getController().setNumTiles((Integer)spinner.getValue());
    }

    private TantrixController getController() {
        return ((TantrixController)controller_);
    }

    /**
     * use this to run as an application instead of an applet.
     */
    public static void main( String[] args )  {

        PuzzleApplet applet = new TantrixPuzzle(args);

        // this will call applet.init() and start() methods instead of the browser
        GUIUtil.showApplet(applet);
    }
}
TOP

Related Classes of com.barrybecker4.puzzle.tantrix.ui.TantrixPuzzle

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.