SimpleJavaEngine/src/main/java/speiger/src/coreengine/rendering/gui/components/tree/BaseClickableTreeEntry.java

77 lines
2.0 KiB
Java

package speiger.src.coreengine.rendering.gui.components.tree;
import speiger.src.coreengine.rendering.gui.GuiComponent;
import speiger.src.coreengine.rendering.gui.base.IButtonComponent;
public class BaseClickableTreeEntry extends BaseTreeEntry implements IButtonComponent
{
@Override
public boolean isComponentColliding(int mouseX, int mouseY)
{
for(int i = 0,m=components.size();i<m;i++)
{
GuiComponent comp = components.get(i);
if(comp instanceof IButtonComponent && ((IButtonComponent)comp).isComponentColliding(mouseX, mouseY)) return true;
}
return false;
}
@Override
public boolean onClick(int button, int mouseX, int mouseY)
{
for(int i = 0,m=components.size();i<m;i++)
{
GuiComponent comp = components.get(i);
if(!(comp instanceof IButtonComponent)) continue;
IButtonComponent btn = (IButtonComponent)comp;
if(btn.isComponentColliding(mouseX, mouseY) && btn.onClick(button, mouseX, mouseY)) return true;
}
return false;
}
@Override
public boolean onDrag(int mouseX, int mouseY)
{
for(int i = 0,m=components.size();i<m;i++)
{
GuiComponent comp = components.get(i);
if(comp instanceof IButtonComponent && ((IButtonComponent)comp).onDrag(mouseX, mouseY)) return true;
}
return false;
}
@Override
public void onRelease(int button, int mouseX, int mouseY)
{
for(int i = 0,m=components.size();i<m;i++)
{
GuiComponent comp = components.get(i);
if(comp instanceof IButtonComponent)
{
IButtonComponent btn = (IButtonComponent)comp;
if(btn.isComponentColliding(mouseX, mouseY))
{
btn.onRelease(button, mouseX, mouseY);
return;
}
btn.onFocusLost();
}
}
}
@Override
public boolean onScroll(int scroll, int mouseX, int mouseY)
{
for(int i = 0,m=components.size();i<m;i++)
{
GuiComponent comp = components.get(i);
if(!(comp instanceof IButtonComponent)) continue;
IButtonComponent btn = (IButtonComponent)comp;
if(btn.isComponentColliding(mouseX, mouseY) && btn.onScroll(scroll, mouseX, mouseY)) return true;
}
return false;
}
}