Package com.barrybecker4.puzzle.adventure.ui.editor

Source Code of com.barrybecker4.puzzle.adventure.ui.editor.ParentTable

/** Copyright by Barry G. Becker, 2000-2011. Licensed under MIT License: http://www.opensource.org/licenses/MIT  */
package com.barrybecker4.puzzle.adventure.ui.editor;

import com.barrybecker4.puzzle.adventure.Scene;
import com.barrybecker4.ui.table.TableBase;
import com.barrybecker4.ui.table.TableButton;
import com.barrybecker4.ui.table.TableButtonListener;
import com.barrybecker4.ui.table.TableColumnMeta;

import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import java.util.List;


/**
* Shows a list of the parent scenes and allows navigating to them.
*
* @author Barry Becker
*/
class ParentTable extends TableBase  {

    public static final String NAVIGATE_TO_PARENT_BUTTON_ID = "navToParent";

    static final int NAVIGATE_INDEX = 0;
    private static final int NUM_CHILDREN_INDEX = 1;

    private static final String NAVIGATE = "Navigate to";
    private static final String NUM_CHILDREN = "Child Scenes";

    private static final String[] PARENT_COLUMN_NAMES =  {
        NAVIGATE,
         NUM_CHILDREN
    };

    private TableButtonListener tableButtonListener_;

    /**
     * constructor
     * @param scenes to initializet the rows in the table with.
     * @param listener called when button in row is clicked.
     */
    public ParentTable(List<Scene> scenes, TableButtonListener listener)  {
        initColumnMeta(PARENT_COLUMN_NAMES);
        tableButtonListener_ = listener;
        initializeTable(scenes);
    }

    /**
     * add a row based on a player object
     * @param scene scene to add
     */
    @Override
    protected void addRow(Object scene) {
        Scene parentScene = (Scene) scene;
        Object d[] = new Object[getNumColumns()];
        d[NAVIGATE_INDEX] = parentScene.getName();
        d[NUM_CHILDREN_INDEX] = parentScene.getChoices().size();
        getParentTableModel().addRow(d);
    }


    @Override
    protected void updateColumnMeta(TableColumnMeta[] columnMeta) {

        TableColumnMeta navigateCol = columnMeta[NAVIGATE_INDEX];

        TableButton navCellEditor = new TableButton(NAVIGATE_INDEX, NAVIGATE_TO_PARENT_BUTTON_ID);
        navCellEditor.addTableButtonListener(tableButtonListener_);

        navigateCol.setCellRenderer(navCellEditor);
        navigateCol.setCellEditor(navCellEditor);
        navigateCol.setPreferredWidth(210);
        navigateCol.setMaxWidth(500);

        columnMeta[NUM_CHILDREN_INDEX].setMinWidth(40);
        columnMeta[NUM_CHILDREN_INDEX].setPreferredWidth(100);
    }


    @Override
    protected TableModel createTableModel(String[] columnNames)  {
        return new ParentTableModel(columnNames, 0);
    }


    DefaultTableModel getParentTableModel() {
        return (DefaultTableModel)table_.getModel();
    }
}
TOP

Related Classes of com.barrybecker4.puzzle.adventure.ui.editor.ParentTable

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.