diff options
| author | Draknyte1 <Draknyte1@hotmail.com> | 2016-01-20 14:24:34 +1000 |
|---|---|---|
| committer | Draknyte1 <Draknyte1@hotmail.com> | 2016-01-20 14:24:34 +1000 |
| commit | 869c206c4fcc8001bd2e1d66f704290331813835 (patch) | |
| tree | 96735ce8fe4665e2759c3374221d6f06f4527df2 /src/Java/binnie/craftgui/core | |
| parent | ec2c72827f01dd4bb2174137f1ab162f9ddaab62 (diff) | |
| download | GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.gz GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.bz2 GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.zip | |
Initial Commit
Diffstat (limited to 'src/Java/binnie/craftgui/core')
19 files changed, 1795 insertions, 0 deletions
diff --git a/src/Java/binnie/craftgui/core/Attribute.java b/src/Java/binnie/craftgui/core/Attribute.java new file mode 100644 index 0000000000..5d73f58ae2 --- /dev/null +++ b/src/Java/binnie/craftgui/core/Attribute.java @@ -0,0 +1,9 @@ +package binnie.craftgui.core; + +public enum Attribute + implements IWidgetAttribute +{ + MouseOver, CanFocus, NeedsDeletion, AlwaysOnTop, BlockTooltip; + + private Attribute() {} +} diff --git a/src/Java/binnie/craftgui/core/CraftGUI.java b/src/Java/binnie/craftgui/core/CraftGUI.java new file mode 100644 index 0000000000..3cce3493cf --- /dev/null +++ b/src/Java/binnie/craftgui/core/CraftGUI.java @@ -0,0 +1,10 @@ +package binnie.craftgui.core; + +import binnie.craftgui.core.renderer.Renderer; +import binnie.craftgui.resource.minecraft.CraftGUIResourceManager; + +public class CraftGUI +{ + public static CraftGUIResourceManager ResourceManager; + public static Renderer Render; +} diff --git a/src/Java/binnie/craftgui/core/ITooltip.java b/src/Java/binnie/craftgui/core/ITooltip.java new file mode 100644 index 0000000000..634ce476d5 --- /dev/null +++ b/src/Java/binnie/craftgui/core/ITooltip.java @@ -0,0 +1,6 @@ +package binnie.craftgui.core; + +public abstract interface ITooltip +{ + public abstract void getTooltip(Tooltip paramTooltip); +} diff --git a/src/Java/binnie/craftgui/core/ITooltipHelp.java b/src/Java/binnie/craftgui/core/ITooltipHelp.java new file mode 100644 index 0000000000..f01744ab6f --- /dev/null +++ b/src/Java/binnie/craftgui/core/ITooltipHelp.java @@ -0,0 +1,6 @@ +package binnie.craftgui.core; + +public abstract interface ITooltipHelp +{ + public abstract void getHelpTooltip(Tooltip paramTooltip); +} diff --git a/src/Java/binnie/craftgui/core/ITopLevelWidget.java b/src/Java/binnie/craftgui/core/ITopLevelWidget.java new file mode 100644 index 0000000000..2e209b3ea6 --- /dev/null +++ b/src/Java/binnie/craftgui/core/ITopLevelWidget.java @@ -0,0 +1,29 @@ +package binnie.craftgui.core; + +import binnie.craftgui.core.geometry.IPoint; + +public abstract interface ITopLevelWidget + extends IWidget +{ + public abstract void setMousePosition(int paramInt1, int paramInt2); + + public abstract IPoint getAbsoluteMousePosition(); + + public abstract IWidget getFocusedWidget(); + + public abstract IWidget getMousedOverWidget(); + + public abstract IWidget getDraggedWidget(); + + public abstract boolean isFocused(IWidget paramIWidget); + + public abstract boolean isMouseOver(IWidget paramIWidget); + + public abstract boolean isDragged(IWidget paramIWidget); + + public abstract void updateTopLevel(); + + public abstract void widgetDeleted(IWidget paramIWidget); + + public abstract IPoint getDragDistance(); +} diff --git a/src/Java/binnie/craftgui/core/IWidget.java b/src/Java/binnie/craftgui/core/IWidget.java new file mode 100644 index 0000000000..cd85fa7a40 --- /dev/null +++ b/src/Java/binnie/craftgui/core/IWidget.java @@ -0,0 +1,138 @@ +package binnie.craftgui.core; + +import binnie.craftgui.core.geometry.IArea; +import binnie.craftgui.core.geometry.IPoint; +import binnie.craftgui.events.Event; +import binnie.craftgui.events.EventHandler; +import java.util.List; + +public abstract interface IWidget +{ + public abstract IWidget getParent(); + + public abstract void deleteChild(IWidget paramIWidget); + + public abstract void deleteAllChildren(); + + public abstract ITopLevelWidget getSuperParent(); + + public abstract boolean isTopLevel(); + + public abstract IPoint getPosition(); + + public abstract IPoint pos(); + + public abstract void setPosition(IPoint paramIPoint); + + public abstract IPoint getSize(); + + public abstract IPoint size(); + + public abstract void setSize(IPoint paramIPoint); + + public abstract IPoint getOriginalPosition(); + + public abstract IPoint getAbsolutePosition(); + + public abstract IPoint getOriginalAbsolutePosition(); + + public abstract IPoint getOffset(); + + public abstract IArea getArea(); + + public abstract IArea area(); + + public abstract void setOffset(IPoint paramIPoint); + + public abstract IPoint getMousePosition(); + + public abstract IPoint getRelativeMousePosition(); + + public abstract void setColour(int paramInt); + + public abstract int getColour(); + + public abstract void render(); + + public abstract void updateClient(); + + public abstract void enable(); + + public abstract void disable(); + + public abstract void show(); + + public abstract void hide(); + + public abstract boolean calculateIsMouseOver(); + + public abstract boolean isEnabled(); + + public abstract boolean isVisible(); + + public abstract boolean isFocused(); + + public abstract boolean isMouseOver(); + + public abstract boolean isDragged(); + + public abstract boolean isChildVisible(IWidget paramIWidget); + + public abstract boolean isChildEnabled(IWidget paramIWidget); + + public abstract boolean canMouseOver(); + + public abstract boolean canFocus(); + + public abstract IWidget addWidget(IWidget paramIWidget); + + public abstract List<IWidget> getWidgets(); + + public abstract void callEvent(Event paramEvent); + + public abstract void recieveEvent(Event paramEvent); + + public abstract void onUpdateClient(); + + public abstract void delete(); + + public abstract void onDelete(); + + public abstract <T> T getWidget(Class<T> paramClass); + + public abstract IArea getCroppedZone(); + + public abstract void setCroppedZone(IWidget paramIWidget, IArea paramIArea); + + public abstract boolean isCroppedWidet(); + + public abstract IWidget getCropWidget(); + + public abstract boolean isMouseOverWidget(IPoint paramIPoint); + + public abstract int getLevel(); + + public abstract boolean isDescendant(IWidget paramIWidget); + + public abstract List<IWidgetAttribute> getAttributes(); + + public abstract boolean hasAttribute(IWidgetAttribute paramIWidgetAttribute); + + public abstract boolean addAttribute(IWidgetAttribute paramIWidgetAttribute); + + public abstract <E extends Event> void addEventHandler(EventHandler<E> paramEventHandler); + + public abstract <E extends Event> void addSelfEventHandler(EventHandler<E> paramEventHandler); + + public abstract boolean contains(IPoint paramIPoint); + + public abstract float x(); + + public abstract float y(); + + public abstract float w(); + + public abstract float h(); + + public abstract void onRender(RenderStage paramRenderStage); +} diff --git a/src/Java/binnie/craftgui/core/IWidgetAttribute.java b/src/Java/binnie/craftgui/core/IWidgetAttribute.java new file mode 100644 index 0000000000..87d994ca43 --- /dev/null +++ b/src/Java/binnie/craftgui/core/IWidgetAttribute.java @@ -0,0 +1,3 @@ +package binnie.craftgui.core; + +public abstract interface IWidgetAttribute {} diff --git a/src/Java/binnie/craftgui/core/RenderStage.java b/src/Java/binnie/craftgui/core/RenderStage.java new file mode 100644 index 0000000000..e710c833e6 --- /dev/null +++ b/src/Java/binnie/craftgui/core/RenderStage.java @@ -0,0 +1,8 @@ +package binnie.craftgui.core; + +public enum RenderStage +{ + PreChildren, PostChildren, PostSiblings; + + private RenderStage() {} +} diff --git a/src/Java/binnie/craftgui/core/Tooltip.java b/src/Java/binnie/craftgui/core/Tooltip.java new file mode 100644 index 0000000000..4afb7f6bc5 --- /dev/null +++ b/src/Java/binnie/craftgui/core/Tooltip.java @@ -0,0 +1,84 @@ +package binnie.craftgui.core; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fluids.FluidStack; + +public class Tooltip +{ + public void add(String string) + { + this.tooltip.add(string); + } + + public String getLine(int index) + { + String string = (String)getList().get(index); + return string; + } + + public void add(List list) + { + for (Object obj : list) { + this.tooltip.add((String)obj); + } + } + + List<String> tooltip = new ArrayList(); + + public List<String> getList() + { + return this.tooltip; + } + + public boolean exists() + { + return this.tooltip.size() > 0; + } + + public static enum Type + implements Tooltip.ITooltipType + { + Standard, Help, Information, User, Power; + + private Type() {} + } + + public void setType(ITooltipType type) + { + this.type = type; + } + + ITooltipType type = Type.Standard; + public int maxWidth = 256; + + public void setMaxWidth(int w) + { + this.maxWidth = w; + } + + public ITooltipType getType() + { + return this.type; + } + + public void add(ItemStack item, String string) + { + NBTTagCompound nbt = new NBTTagCompound(); + item.writeToNBT(nbt); + nbt.setByte("nbt-type", (byte)105); + add("~~~" + nbt.toString() + "~~~" + string); + } + + public void add(FluidStack item, String string) + { + NBTTagCompound nbt = new NBTTagCompound(); + item.writeToNBT(nbt); + nbt.setByte("nbt-type", (byte)102); + add("~~~" + nbt.toString() + "~~~" + string); + } + + public static abstract interface ITooltipType {} +} diff --git a/src/Java/binnie/craftgui/core/TopLevelWidget.java b/src/Java/binnie/craftgui/core/TopLevelWidget.java new file mode 100644 index 0000000000..6f2cdd18a6 --- /dev/null +++ b/src/Java/binnie/craftgui/core/TopLevelWidget.java @@ -0,0 +1,248 @@ +package binnie.craftgui.core; + +import binnie.craftgui.core.geometry.IArea; +import binnie.craftgui.core.geometry.IPoint; +import binnie.craftgui.events.EventMouse.Down; +import binnie.craftgui.events.EventMouse.Down.Handler; +import binnie.craftgui.events.EventMouse.Drag; +import binnie.craftgui.events.EventMouse.Move; +import binnie.craftgui.events.EventMouse.Up; +import binnie.craftgui.events.EventMouse.Up.Handler; +import binnie.craftgui.events.EventWidget.EndDrag; +import binnie.craftgui.events.EventWidget.EndMouseOver; +import binnie.craftgui.events.EventWidget.GainFocus; +import binnie.craftgui.events.EventWidget.LoseFocus; +import binnie.craftgui.events.EventWidget.StartDrag; +import binnie.craftgui.events.EventWidget.StartDrag.Handler; +import binnie.craftgui.events.EventWidget.StartMouseOver; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Deque; +import java.util.List; +import java.util.ListIterator; +import org.lwjgl.input.Mouse; + +public abstract class TopLevelWidget + extends Widget + implements ITopLevelWidget +{ + public TopLevelWidget() + { + super(null); + + addEventHandler(new EventMouse.Down.Handler() + { + public void onEvent(EventMouse.Down event) + { + TopLevelWidget.this.setDraggedWidget(TopLevelWidget.this.mousedOverWidget, event.getButton()); + TopLevelWidget.this.setFocusedWidget(TopLevelWidget.this.mousedOverWidget); + } + }); + addEventHandler(new EventMouse.Up.Handler() + { + public void onEvent(EventMouse.Up event) + { + TopLevelWidget.this.setDraggedWidget(null); + } + }); + addEventHandler(new EventWidget.StartDrag.Handler() + { + public void onEvent(EventWidget.StartDrag event) + { + TopLevelWidget.this.dragStart = TopLevelWidget.this.getRelativeMousePosition(); + } + }); + } + + IWidget mousedOverWidget = null; + IWidget draggedWidget = null; + IWidget focusedWidget = null; + + public void setMousedOverWidget(IWidget widget) + { + if (this.mousedOverWidget == widget) { + return; + } + if (this.mousedOverWidget != null) { + callEvent(new EventWidget.EndMouseOver(this.mousedOverWidget)); + } + this.mousedOverWidget = widget; + if (this.mousedOverWidget != null) { + callEvent(new EventWidget.StartMouseOver(this.mousedOverWidget)); + } + } + + public void setDraggedWidget(IWidget widget) + { + setDraggedWidget(widget, -1); + } + + public void setDraggedWidget(IWidget widget, int button) + { + if (this.draggedWidget == widget) { + return; + } + if (this.draggedWidget != null) { + callEvent(new EventWidget.EndDrag(this.draggedWidget)); + } + this.draggedWidget = widget; + if (this.draggedWidget != null) { + callEvent(new EventWidget.StartDrag(this.draggedWidget, button)); + } + } + + public void setFocusedWidget(IWidget widget) + { + IWidget newWidget = widget; + if (this.focusedWidget == newWidget) { + return; + } + if ((newWidget != null) && (!newWidget.canFocus())) { + newWidget = null; + } + if (this.focusedWidget != null) { + callEvent(new EventWidget.LoseFocus(this.focusedWidget)); + } + this.focusedWidget = newWidget; + if (this.focusedWidget != null) { + callEvent(new EventWidget.GainFocus(this.focusedWidget)); + } + } + + public IWidget getMousedOverWidget() + { + return this.mousedOverWidget; + } + + public IWidget getDraggedWidget() + { + return this.draggedWidget; + } + + public IWidget getFocusedWidget() + { + return this.focusedWidget; + } + + public boolean isMouseOver(IWidget widget) + { + return getMousedOverWidget() == widget; + } + + public boolean isDragged(IWidget widget) + { + return getDraggedWidget() == widget; + } + + public boolean isFocused(IWidget widget) + { + return getFocusedWidget() == widget; + } + + public void updateTopLevel() + { + setMousedOverWidget(calculateMousedOverWidget()); + if ((getFocusedWidget() != null) && ((!getFocusedWidget().isVisible()) || (!getFocusedWidget().isEnabled()))) { + setFocusedWidget(null); + } + if (!Mouse.isButtonDown(0)) { + if (this.draggedWidget != null) { + setDraggedWidget(null); + } + } + } + + private IWidget calculateMousedOverWidget() + { + Deque<IWidget> queue = calculateMousedOverWidgets(); + while (!queue.isEmpty()) + { + IWidget widget = (IWidget)queue.removeFirst(); + if ((widget.isEnabled()) && (widget.isVisible()) && (widget.canMouseOver())) { + if ((widget.isEnabled()) && (widget.isVisible()) && (widget.canMouseOver()) && (widget.calculateIsMouseOver())) { + return widget; + } + } + } + return null; + } + + public Deque<IWidget> calculateMousedOverWidgets() + { + Deque<IWidget> list = new ArrayDeque(); + for (IWidget widget : getQueuedWidgets(this)) { + if (widget.calculateIsMouseOver()) { + list.addLast(widget); + } + } + return list; + } + + private Collection<IWidget> getQueuedWidgets(IWidget widget) + { + List<IWidget> widgets = new ArrayList(); + + boolean addChildren = true; + if (widget.isCroppedWidet()) { + addChildren = widget.getCroppedZone().contains(widget.getCropWidget().getRelativeMousePosition()); + } + if (addChildren) + { + ListIterator<IWidget> li = widget.getWidgets().listIterator(widget.getWidgets().size()); + while (li.hasPrevious()) + { + IWidget child = (IWidget)li.previous(); + widgets.addAll(getQueuedWidgets(child)); + } + } + widgets.add(widget); + + return widgets; + } + + protected IPoint mousePosition = new IPoint(0.0F, 0.0F); + + public void setMousePosition(int x, int y) + { + float dx = x - this.mousePosition.x(); + float dy = y - this.mousePosition.y(); + if ((dx != 0.0F) || (dy != 0.0F)) { + if (getDraggedWidget() != null) { + callEvent(new EventMouse.Drag(getDraggedWidget(), dx, dy)); + } else { + callEvent(new EventMouse.Move(this, dx, dy)); + } + } + if ((this.mousePosition.x() != x) || (this.mousePosition.y() != y)) + { + this.mousePosition = new IPoint(x, y); + setMousedOverWidget(calculateMousedOverWidget()); + } + } + + public IPoint getAbsoluteMousePosition() + { + return this.mousePosition; + } + + public void widgetDeleted(IWidget widget) + { + if (isMouseOver(widget)) { + setMousedOverWidget(null); + } + if (isDragged(widget)) { + setDraggedWidget(null); + } + if (isFocused(widget)) { + setFocusedWidget(null); + } + } + + IPoint dragStart = IPoint.ZERO; + + public IPoint getDragDistance() + { + return getRelativeMousePosition().sub(this.dragStart); + } +} diff --git a/src/Java/binnie/craftgui/core/Widget.java b/src/Java/binnie/craftgui/core/Widget.java new file mode 100644 index 0000000000..448bcbaed6 --- /dev/null +++ b/src/Java/binnie/craftgui/core/Widget.java @@ -0,0 +1,499 @@ +package binnie.craftgui.core; + +import binnie.craftgui.core.geometry.IArea; +import binnie.craftgui.core.geometry.IPoint; +import binnie.craftgui.core.renderer.Renderer; +import binnie.craftgui.events.Event; +import binnie.craftgui.events.EventHandler; +import binnie.craftgui.events.EventHandler.Origin; +import binnie.craftgui.events.EventWidget.ChangeColour; +import binnie.craftgui.events.EventWidget.ChangeOffset; +import binnie.craftgui.events.EventWidget.ChangePosition; +import binnie.craftgui.events.EventWidget.ChangeSize; +import binnie.craftgui.events.EventWidget.Disable; +import binnie.craftgui.events.EventWidget.Enable; +import binnie.craftgui.events.EventWidget.Hide; +import binnie.craftgui.events.EventWidget.Show; +import java.util.ArrayList; +import java.util.Collection; +import java.util.ConcurrentModificationException; +import java.util.List; + +public class Widget + implements IWidget +{ + public Widget(IWidget parent) + { + this.parent = parent; + if (parent != null) { + parent.addWidget(this); + } + } + + private IWidget parent = null; + private List<IWidget> subWidgets = new ArrayList(); + private List<IWidgetAttribute> attributes = new ArrayList(); + + public List<IWidgetAttribute> getAttributes() + { + return this.attributes; + } + + public boolean hasAttribute(IWidgetAttribute attribute) + { + return this.attributes.contains(attribute); + } + + public boolean addAttribute(IWidgetAttribute attribute) + { + return this.attributes.add(attribute); + } + + public final void deleteChild(IWidget child) + { + if (child == null) { + return; + } + child.delete(); + this.subWidgets.remove(child); + } + + public final void deleteAllChildren() + { + while (!this.subWidgets.isEmpty()) { + deleteChild((IWidget)this.subWidgets.get(0)); + } + } + + public final IWidget getParent() + { + return this.parent; + } + + public final ITopLevelWidget getSuperParent() + { + return isTopLevel() ? (ITopLevelWidget)this : this.parent.getSuperParent(); + } + + public final IWidget addWidget(IWidget widget) + { + if ((this.subWidgets.size() != 0) && (((IWidget)this.subWidgets.get(this.subWidgets.size() - 1)).hasAttribute(Attribute.AlwaysOnTop))) { + this.subWidgets.add(this.subWidgets.size() - 1, widget); + } else { + this.subWidgets.add(widget); + } + onAddChild(widget); + return widget; + } + + protected void onAddChild(IWidget widget) {} + + public final List<IWidget> getWidgets() + { + return this.subWidgets; + } + + public final boolean isTopLevel() + { + return this instanceof ITopLevelWidget; + } + + private IPoint position = new IPoint(0.0F, 0.0F); + private IPoint size = new IPoint(0.0F, 0.0F); + private IPoint offset = new IPoint(0.0F, 0.0F); + IArea cropArea; + IWidget cropWidget; + + public final IPoint pos() + { + return this.position.add(this.offset); + } + + public final IPoint size() + { + return this.size; + } + + public final IArea area() + { + return getArea(); + } + + public final IPoint getPosition() + { + return pos(); + } + + public final IArea getArea() + { + return new IArea(IPoint.ZERO, size()); + } + + public final IPoint getOriginalPosition() + { + return this.position; + } + + boolean cropped = false; + + public IArea getCroppedZone() + { + return this.cropArea; + } + + public void setCroppedZone(IWidget relative, IArea area) + { + this.cropArea = area; + this.cropped = true; + this.cropWidget = relative; + } + + public final IPoint getAbsolutePosition() + { + return isTopLevel() ? getPosition() : getParent().getAbsolutePosition().add(getPosition()); + } + + public final IPoint getOriginalAbsolutePosition() + { + return isTopLevel() ? getOriginalPosition() : getParent().getOriginalPosition().sub(getOriginalPosition()); + } + + public final IPoint getSize() + { + return size(); + } + + public final IPoint getOffset() + { + return this.offset; + } + + public final void setPosition(IPoint vector) + { + if (!vector.equals(this.position)) + { + this.position = new IPoint(vector); + callEvent(new EventWidget.ChangePosition(this)); + } + } + + public final void setSize(IPoint vector) + { + if (!vector.equals(this.size)) + { + this.size = new IPoint(vector); + callEvent(new EventWidget.ChangeSize(this)); + } + } + + public final void setOffset(IPoint vector) + { + if (vector != this.offset) + { + this.offset = new IPoint(vector); + callEvent(new EventWidget.ChangeOffset(this)); + } + } + + int colour = 16777215; + + public final void setColour(int colour) + { + if (this.colour != colour) + { + this.colour = colour; + callEvent(new EventWidget.ChangeColour(this)); + } + } + + public final int getColour() + { + return this.colour; + } + + public boolean canMouseOver() + { + return hasAttribute(Attribute.MouseOver); + } + + public boolean canFocus() + { + return hasAttribute(Attribute.CanFocus); + } + + private Collection<EventHandler> globalEventHandlers = new ArrayList(); + + public void addEventHandler(EventHandler handler) + { + this.globalEventHandlers.add(handler); + } + + public void addSelfEventHandler(EventHandler handler) + { + addEventHandler(handler.setOrigin(EventHandler.Origin.Self, this)); + } + + public final void callEvent(Event event) + { + getSuperParent().recieveEvent(event); + } + + public final void recieveEvent(Event event) + { + for (EventHandler handler : this.globalEventHandlers) { + if (handler.handles(event)) { + handler.onEvent(event); + } + } + try + { + for (IWidget child : getWidgets()) { + child.recieveEvent(event); + } + } + catch (ConcurrentModificationException e) {} + } + + public final IPoint getMousePosition() + { + return getSuperParent().getAbsoluteMousePosition(); + } + + public final IPoint getRelativeMousePosition() + { + return isTopLevel() ? getMousePosition() : getParent().getRelativeMousePosition().sub(getPosition()); + } + + public boolean isCroppedWidet() + { + return this.cropped; + } + + public final IWidget getCropWidget() + { + return this.cropWidget == null ? this : this.cropWidget; + } + + public final void render() + { + if (isVisible()) + { + CraftGUI.Render.preRender(this); + onRender(RenderStage.PreChildren); + for (IWidget widget : getWidgets()) { + widget.render(); + } + for (IWidget widget : getWidgets()) + { + CraftGUI.Render.preRender(widget); + widget.onRender(RenderStage.PostSiblings); + CraftGUI.Render.postRender(widget); + } + onRender(RenderStage.PostChildren); + CraftGUI.Render.postRender(this); + } + } + + public final void updateClient() + { + if (!isVisible()) { + return; + } + if (getSuperParent() == this) { + ((ITopLevelWidget)this).updateTopLevel(); + } + onUpdateClient(); + + List<IWidget> deletedWidgets = new ArrayList(); + for (IWidget widget : getWidgets()) { + if (widget.hasAttribute(Attribute.NeedsDeletion)) { + deletedWidgets.add(widget); + } else { + widget.updateClient(); + } + } + for (IWidget widget : deletedWidgets) { + deleteChild(widget); + } + } + + public final boolean calculateIsMouseOver() + { + IPoint mouse = getRelativeMousePosition(); + if (!this.cropped) { + return isMouseOverWidget(mouse); + } + IWidget cropRelative = this.cropWidget != null ? this.cropWidget : this; + IPoint pos = IPoint.sub(cropRelative.getAbsolutePosition(), getAbsolutePosition()); + IPoint size = new IPoint(this.cropArea.size().x(), this.cropArea.size().y()); + boolean inCrop = (mouse.x() > pos.x()) && (mouse.y() > pos.y()) && (mouse.x() < pos.x() + size.x()) && (mouse.y() < pos.y() + size.y()); + + return (inCrop) && (isMouseOverWidget(mouse)); + } + + public boolean isMouseOverWidget(IPoint relativeMouse) + { + return getArea().contains(relativeMouse); + } + + private boolean enabled = true; + private boolean visible = true; + + public final void enable() + { + this.enabled = true; + callEvent(new EventWidget.Enable(this)); + } + + public final void disable() + { + this.enabled = false; + callEvent(new EventWidget.Disable(this)); + } + + public final void show() + { + this.visible = true; + callEvent(new EventWidget.Show(this)); + } + + public final void hide() + { + this.visible = false; + callEvent(new EventWidget.Hide(this)); + } + + public boolean isEnabled() + { + return (this.enabled) && ((isTopLevel()) || ((getParent().isEnabled()) && (getParent().isChildEnabled(this)))); + } + + public final boolean isVisible() + { + return (this.visible) && ((isTopLevel()) || ((getParent().isVisible()) && (getParent().isChildVisible(this)))); + } + + public final boolean isFocused() + { + return getSuperParent().isFocused(this); + } + + public final boolean isDragged() + { + return getSuperParent().isDragged(this); + } + + public final boolean isMouseOver() + { + return getSuperParent().isMouseOver(this); + } + + public boolean isChildVisible(IWidget child) + { + return true; + } + + public bo |
