/*******************************************************************************
* Copyright 2011 See AUTHORS file.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
******************************************************************************/
package com.badlogic.gdx.scenes.scene2d.ui;
import java.lang.reflect.InvocationTargetException;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.utils.Layout;
import com.badlogic.gdx.utils.Array;
import com.esotericsoftware.tablelayout.BaseTableLayout.Debug;
import com.esotericsoftware.tablelayout.Toolkit;
/**
* The libgdx implementation of the table layout functionality.
*
* @author Nathan Sweet
*/
class TableToolkit extends Toolkit<Actor, Table, TableLayout> {
static boolean drawDebug;
public void addChild(Actor parent, Actor child) {
child.remove();
try {
parent.getClass().getMethod("setWidget", Actor.class).invoke(parent, child);
return;
} catch (InvocationTargetException ex) {
throw new RuntimeException("Error calling setWidget.", ex);
} catch (Exception ignored) {
}
((Group) parent).addActor(child);
}
public void removeChild(Actor parent, Actor child) {
((Group) parent).removeActor(child);
}
public float getMinWidth(Actor actor) {
if (actor instanceof Layout)
return ((Layout) actor).getMinWidth();
return actor.getWidth();
}
public float getMinHeight(Actor actor) {
if (actor instanceof Layout)
return ((Layout) actor).getMinHeight();
return actor.getHeight();
}
public float getPrefWidth(Actor actor) {
if (actor instanceof Layout)
return ((Layout) actor).getPrefWidth();
return actor.getWidth();
}
public float getPrefHeight(Actor actor) {
if (actor instanceof Layout)
return ((Layout) actor).getPrefHeight();
return actor.getHeight();
}
public float getMaxWidth(Actor actor) {
if (actor instanceof Layout)
return ((Layout) actor).getMaxWidth();
return 0;
}
public float getMaxHeight(Actor actor) {
if (actor instanceof Layout)
return ((Layout) actor).getMaxHeight();
return 0;
}
public float getWidth(Actor widget) {
return widget.getWidth();
}
public float getHeight(Actor widget) {
return widget.getHeight();
}
public void clearDebugRectangles(TableLayout layout) {
if (layout.debugRects != null)
layout.debugRects.clear();
}
public void addDebugRectangle(TableLayout layout, Debug type, float x, float y, float w, float h) {
drawDebug = true;
if (layout.debugRects == null)
layout.debugRects = new Array();
layout.debugRects.add(new DebugRect(type, x, layout.getTable().getHeight() - y, w, h));
}
static class DebugRect extends Rectangle {
final Debug type;
public DebugRect(Debug type, float x, float y, float width, float height) {
super(x, y, width, height);
this.type = type;
}
}
}