/******************************************************************************* * Copyright (c) 2011, Nathan Sweet <nathan.sweet@gmail.com> All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation and/or other materials provided with the * distribution. * Neither the name of the <organization> nor the names of its contributors may be used to endorse or * promote products derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ package com.esotericsoftware.tablelayout; import com.esotericsoftware.tablelayout.BaseTableLayout.Debug; /** * Base class for UI toolkit. * * @author Nathan Sweet */ public abstract class Toolkit<C, T extends C, L extends BaseTableLayout> { static public Toolkit instance; abstract public void addChild(C parent, C child); abstract public void removeChild(C parent, C child); abstract public float getMinWidth(C widget); abstract public float getMinHeight(C widget); abstract public float getPrefWidth(C widget); abstract public float getPrefHeight(C widget); abstract public float getMaxWidth(C widget); abstract public float getMaxHeight(C widget); abstract public float getWidth(C widget); abstract public float getHeight(C widget); /** Clears all debugging rectangles. */ abstract public void clearDebugRectangles(L layout); /** Adds a rectangle that should be drawn for debugging. */ abstract public void addDebugRectangle(L layout, Debug type, float x, float y, float w, float h); /** * @param widget * May be null. */ public void setWidget(L layout, Cell cell, C widget) { if (cell.widget == widget) return; removeChild((T) layout.table, (C) cell.widget); cell.widget = widget; if (widget != null) addChild((T) layout.table, widget); } /** * Interprets the specified value as a size. This can be used to scale all sizes applied to a table. The default * implementation returns the value unmodified. * * @see Value#width(Object) * @see Value#width(Cell) */ public float width(float value) { return value; } /** * Interprets the specified value as a size. This can be used to scale all sizes applied to a table. The default * implementation returns the value unmodified. * * @see Value#height(Object) * @see Value#height(Cell) */ public float height(float value) { return value; } }