SimpleJavaEngine/src/main/java/speiger/src/coreengine/rendering/gui/components/menu/MenuBarComponent.java

103 lines
2.6 KiB
Java

package speiger.src.coreengine.rendering.gui.components.menu;
import java.util.List;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.coreengine.rendering.gui.GuiComponent;
import speiger.src.coreengine.rendering.gui.helper.constrains.Constrains;
import speiger.src.coreengine.rendering.gui.helper.constrains.MenuConstrain;
import speiger.src.coreengine.rendering.gui.helper.constrains.ParentConstrain;
import speiger.src.coreengine.rendering.gui.helper.constrains.PixelConstrain;
public class MenuBarComponent extends GuiComponent
{
int color;
List<MenuItemComponent> menuItems = new ObjectArrayList<MenuItemComponent>();
float scale = 1F;
public MenuBarComponent(int color)
{
super(0F, 0F, 0F, 0F);
this.color = color;
}
public MenuBarComponent(float x, float y, float width, float height, int color)
{
super(x, y, width, height);
this.color = color;
}
@Override
public void init()
{
}
public MenuBarComponent setTextScale(float scale)
{
if(this.scale != scale)
{
this.scale = scale;
for(int i = 0,m=menuItems.size();i<m;i++)
{
menuItems.get(i).setTextScale(scale);
}
}
return this;
}
public MenuItemComponent addMenuItem(String name)
{
return addMenuItem(new MenuItemComponent(name));
}
public MenuItemComponent addText(String name)
{
return addMenuItem(new MenuTextComponent(name)).cast();
}
public MenuCheckBoxComponent addCheckBox(String name)
{
return addMenuItem(new MenuCheckBoxComponent(name)).cast();
}
public MenuCheckBoxComponent addCheckBox(String name, boolean defaultValue)
{
return addMenuItem(new MenuCheckBoxComponent(name, defaultValue)).cast();
}
public MenuComponent addMenu(String name)
{
return addMenuItem(new MenuComponent(name)).addUserActionListener(this::closeMenus).cast();
}
public MenuItemComponent addMenuItem(MenuItemComponent item)
{
menuItems.add(item);
item.setMenuColor(color);
addChild(item, new Constrains(new MenuConstrain<MenuItemComponent>(menuItems), new PixelConstrain(), item.createWidthConstriain(), new ParentConstrain()));
item.setZOffset(0.3F);
item.setTextScale(scale);
item.onChanged(false);
return item;
}
@Override
protected boolean renderSelf(int mouseX, int mouseY, float particalTicks)
{
getRenderer().drawQuad(getBox(), color);
return true;
}
protected void closeMenus(GuiComponent owner)
{
for(int i = 0,m=menuItems.size();i<m;i++)
{
MenuItemComponent comp = menuItems.get(i);
if(comp != owner && comp instanceof MenuComponent)
{
((MenuComponent)comp).setOpen(false);
}
}
}
}