ui refactoring, hoverstate
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
This commit is contained in:
parent
6f8e44f325
commit
1163f034eb
@ -144,6 +144,7 @@ public class ControlHandler {
|
|||||||
public static final String DATA_STRING_INPUT_CODE_MENU_SELECT = "menuSelect";
|
public static final String DATA_STRING_INPUT_CODE_MENU_SELECT = "menuSelect";
|
||||||
public static final String INPUT_CODE_MENU_MOUSE_PRIMARY = "menuMousePrimary";
|
public static final String INPUT_CODE_MENU_MOUSE_PRIMARY = "menuMousePrimary";
|
||||||
public static final String DATA_STRING_INPUT_CODE_MENU_BACKOUT = "menuBackout";
|
public static final String DATA_STRING_INPUT_CODE_MENU_BACKOUT = "menuBackout";
|
||||||
|
public static final String MENU_MOUSE_MOVE = "menuMouseMove";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -285,6 +286,7 @@ public class ControlHandler {
|
|||||||
handler.addControl(DATA_STRING_INPUT_CODE_MENU_DECREMENT, new Control(ControlType.KEY,GLFW_KEY_LEFT));
|
handler.addControl(DATA_STRING_INPUT_CODE_MENU_DECREMENT, new Control(ControlType.KEY,GLFW_KEY_LEFT));
|
||||||
handler.addControl(DATA_STRING_INPUT_CODE_MENU_SELECT, new Control(ControlType.KEY,GLFW_KEY_ENTER));
|
handler.addControl(DATA_STRING_INPUT_CODE_MENU_SELECT, new Control(ControlType.KEY,GLFW_KEY_ENTER));
|
||||||
handler.addControl(DATA_STRING_INPUT_CODE_MENU_BACKOUT, new Control(ControlType.KEY,GLFW_KEY_ESCAPE));
|
handler.addControl(DATA_STRING_INPUT_CODE_MENU_BACKOUT, new Control(ControlType.KEY,GLFW_KEY_ESCAPE));
|
||||||
|
handler.addControl(MENU_MOUSE_MOVE, new Control(ControlType.MOUSE_MOVEMENT,0));
|
||||||
handler.addControl(INPUT_CODE_MENU_MOUSE_PRIMARY, new Control(ControlType.MOUSE_BUTTON,GLFW_MOUSE_BUTTON_LEFT));
|
handler.addControl(INPUT_CODE_MENU_MOUSE_PRIMARY, new Control(ControlType.MOUSE_BUTTON,GLFW_MOUSE_BUTTON_LEFT));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1091,6 +1093,11 @@ public class ControlHandler {
|
|||||||
}});
|
}});
|
||||||
controls.get(DATA_STRING_INPUT_CODE_MENU_INCREMENT).setRepeatTimeout(0.5f * Main.targetFrameRate);
|
controls.get(DATA_STRING_INPUT_CODE_MENU_INCREMENT).setRepeatTimeout(0.5f * Main.targetFrameRate);
|
||||||
|
|
||||||
|
//moving the mouse
|
||||||
|
menuNavigationControlList.add(controls.get(MENU_MOUSE_MOVE));
|
||||||
|
controls.get(MENU_MOUSE_MOVE).setOnMove(new Control.MouseCallback(){public void execute(MouseEvent mouseEvent){
|
||||||
|
Globals.elementManager.updateHover(mouseEvent.getCurrentX(), mouseEvent.getCurrentY());
|
||||||
|
}});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -23,10 +23,6 @@ import electrosphere.renderer.actor.Actor;
|
|||||||
import electrosphere.renderer.actor.ActorStaticMorph;
|
import electrosphere.renderer.actor.ActorStaticMorph;
|
||||||
import electrosphere.renderer.actor.ActorUtils;
|
import electrosphere.renderer.actor.ActorUtils;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.ui.ClickableElement;
|
|
||||||
import electrosphere.renderer.ui.Element;
|
|
||||||
import electrosphere.renderer.ui.NavigableElement.NavigationEventCallback;
|
|
||||||
import electrosphere.renderer.ui.ValueElement.ValueChangeEventCallback;
|
|
||||||
import electrosphere.renderer.ui.Window;
|
import electrosphere.renderer.ui.Window;
|
||||||
import electrosphere.renderer.ui.elements.ActorPanel;
|
import electrosphere.renderer.ui.elements.ActorPanel;
|
||||||
import electrosphere.renderer.ui.elements.Button;
|
import electrosphere.renderer.ui.elements.Button;
|
||||||
@ -36,6 +32,10 @@ import electrosphere.renderer.ui.elements.Label;
|
|||||||
import electrosphere.renderer.ui.elements.ScrollableContainer;
|
import electrosphere.renderer.ui.elements.ScrollableContainer;
|
||||||
import electrosphere.renderer.ui.elements.Slider;
|
import electrosphere.renderer.ui.elements.Slider;
|
||||||
import electrosphere.renderer.ui.elements.TextInput;
|
import electrosphere.renderer.ui.elements.TextInput;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ClickableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.NavigableElement.NavigationEventCallback;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ValueElement.ValueChangeEventCallback;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.events.NavigationEvent;
|
import electrosphere.renderer.ui.events.NavigationEvent;
|
||||||
import electrosphere.renderer.ui.events.ValueChangeEvent;
|
import electrosphere.renderer.ui.events.ValueChangeEvent;
|
||||||
|
|||||||
@ -6,11 +6,11 @@ import electrosphere.entity.state.inventory.RelationalInventoryState;
|
|||||||
import electrosphere.entity.state.inventory.UnrelationalInventoryState;
|
import electrosphere.entity.state.inventory.UnrelationalInventoryState;
|
||||||
import electrosphere.menu.ingame.MenuGeneratorsInventory;
|
import electrosphere.menu.ingame.MenuGeneratorsInventory;
|
||||||
import electrosphere.menu.mainmenu.MenuGeneratorsTitleMenu;
|
import electrosphere.menu.mainmenu.MenuGeneratorsTitleMenu;
|
||||||
import electrosphere.renderer.ui.ContainerElement;
|
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
|
||||||
import electrosphere.renderer.ui.Element;
|
|
||||||
import electrosphere.renderer.ui.Window;
|
import electrosphere.renderer.ui.Window;
|
||||||
import electrosphere.renderer.ui.elements.Label;
|
import electrosphere.renderer.ui.elements.Label;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ContainerElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
|
|
||||||
public class WindowUtils {
|
public class WindowUtils {
|
||||||
|
|
||||||
|
|||||||
@ -17,10 +17,7 @@ import electrosphere.renderer.RenderingEngine;
|
|||||||
import electrosphere.renderer.actor.Actor;
|
import electrosphere.renderer.actor.Actor;
|
||||||
import electrosphere.renderer.actor.ActorStaticMorph;
|
import electrosphere.renderer.actor.ActorStaticMorph;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.ui.ClickableElement;
|
|
||||||
import electrosphere.renderer.ui.Window;
|
import electrosphere.renderer.ui.Window;
|
||||||
import electrosphere.renderer.ui.NavigableElement.NavigationEventCallback;
|
|
||||||
import electrosphere.renderer.ui.ValueElement.ValueChangeEventCallback;
|
|
||||||
import electrosphere.renderer.ui.elements.Button;
|
import electrosphere.renderer.ui.elements.Button;
|
||||||
import electrosphere.renderer.ui.elements.Div;
|
import electrosphere.renderer.ui.elements.Div;
|
||||||
import electrosphere.renderer.ui.elements.ImagePanel;
|
import electrosphere.renderer.ui.elements.ImagePanel;
|
||||||
@ -28,6 +25,9 @@ import electrosphere.renderer.ui.elements.Label;
|
|||||||
import electrosphere.renderer.ui.elements.ScrollableContainer;
|
import electrosphere.renderer.ui.elements.ScrollableContainer;
|
||||||
import electrosphere.renderer.ui.elements.Slider;
|
import electrosphere.renderer.ui.elements.Slider;
|
||||||
import electrosphere.renderer.ui.elements.TextInput;
|
import electrosphere.renderer.ui.elements.TextInput;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ClickableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.NavigableElement.NavigationEventCallback;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ValueElement.ValueChangeEventCallback;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.events.NavigationEvent;
|
import electrosphere.renderer.ui.events.NavigationEvent;
|
||||||
import electrosphere.renderer.ui.events.ValueChangeEvent;
|
import electrosphere.renderer.ui.events.ValueChangeEvent;
|
||||||
|
|||||||
@ -16,20 +16,19 @@ import electrosphere.entity.state.inventory.UnrelationalInventoryState;
|
|||||||
import electrosphere.entity.types.item.ItemUtils;
|
import electrosphere.entity.types.item.ItemUtils;
|
||||||
import electrosphere.menu.WindowStrings;
|
import electrosphere.menu.WindowStrings;
|
||||||
import electrosphere.menu.WindowUtils;
|
import electrosphere.menu.WindowUtils;
|
||||||
import electrosphere.renderer.ui.DraggableElement.DragEventCallback;
|
|
||||||
import electrosphere.renderer.ui.elements.Div;
|
import electrosphere.renderer.ui.elements.Div;
|
||||||
import electrosphere.renderer.ui.elements.ImagePanel;
|
import electrosphere.renderer.ui.elements.ImagePanel;
|
||||||
import electrosphere.renderer.ui.elements.Label;
|
import electrosphere.renderer.ui.elements.Label;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ClickableElement.ClickEventCallback;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.DraggableElement.DragEventCallback;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.FocusableElement.FocusEventCallback;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.NavigableElement.NavigationEventCallback;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ValueElement.ValueChangeEventCallback;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.events.DragEvent;
|
import electrosphere.renderer.ui.events.DragEvent;
|
||||||
import electrosphere.renderer.ui.events.NavigationEvent;
|
import electrosphere.renderer.ui.events.NavigationEvent;
|
||||||
import electrosphere.renderer.ui.Element;
|
|
||||||
import electrosphere.renderer.ui.Window;
|
import electrosphere.renderer.ui.Window;
|
||||||
import electrosphere.renderer.ui.ClickableElement.ClickEventCallback;
|
|
||||||
import electrosphere.renderer.ui.DraggableElement.DragEventCallback;
|
|
||||||
import electrosphere.renderer.ui.FocusableElement.FocusEventCallback;
|
|
||||||
import electrosphere.renderer.ui.NavigableElement.NavigationEventCallback;
|
|
||||||
import electrosphere.renderer.ui.ValueElement.ValueChangeEventCallback;
|
|
||||||
|
|
||||||
public class MenuGeneratorsInventory {
|
public class MenuGeneratorsInventory {
|
||||||
|
|
||||||
|
|||||||
@ -4,11 +4,11 @@ import electrosphere.auth.AuthenticationManager;
|
|||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
import electrosphere.engine.loadingthreads.LoadingThread;
|
import electrosphere.engine.loadingthreads.LoadingThread;
|
||||||
import electrosphere.net.NetUtils;
|
import electrosphere.net.NetUtils;
|
||||||
import electrosphere.renderer.ui.ClickableElement;
|
|
||||||
import electrosphere.renderer.ui.Element;
|
|
||||||
import electrosphere.renderer.ui.elements.Button;
|
import electrosphere.renderer.ui.elements.Button;
|
||||||
import electrosphere.renderer.ui.elements.Label;
|
import electrosphere.renderer.ui.elements.Label;
|
||||||
import electrosphere.renderer.ui.elements.TextInput;
|
import electrosphere.renderer.ui.elements.TextInput;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ClickableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.form.FormElement;
|
import electrosphere.renderer.ui.form.FormElement;
|
||||||
|
|
||||||
|
|||||||
@ -7,13 +7,13 @@ import electrosphere.engine.Globals;
|
|||||||
import electrosphere.menu.WindowStrings;
|
import electrosphere.menu.WindowStrings;
|
||||||
import electrosphere.menu.WindowUtils;
|
import electrosphere.menu.WindowUtils;
|
||||||
import electrosphere.renderer.debug.DebugRendering;
|
import electrosphere.renderer.debug.DebugRendering;
|
||||||
import electrosphere.renderer.ui.ClickableElement;
|
|
||||||
import electrosphere.renderer.ui.ContainerElement;
|
|
||||||
import electrosphere.renderer.ui.Element;
|
|
||||||
import electrosphere.renderer.ui.WidgetUtils;
|
import electrosphere.renderer.ui.WidgetUtils;
|
||||||
import electrosphere.renderer.ui.Window;
|
import electrosphere.renderer.ui.Window;
|
||||||
import electrosphere.renderer.ui.elements.Label;
|
import electrosphere.renderer.ui.elements.Label;
|
||||||
import electrosphere.renderer.ui.elements.ScrollableContainer;
|
import electrosphere.renderer.ui.elements.ScrollableContainer;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ClickableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ContainerElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -22,9 +22,6 @@ import electrosphere.renderer.actor.ActorUtils;
|
|||||||
import electrosphere.renderer.actor.ActorStaticMorph.StaticMorphTransforms;
|
import electrosphere.renderer.actor.ActorStaticMorph.StaticMorphTransforms;
|
||||||
import electrosphere.renderer.anim.Animation;
|
import electrosphere.renderer.anim.Animation;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.ui.ClickableElement;
|
|
||||||
import electrosphere.renderer.ui.Element;
|
|
||||||
import electrosphere.renderer.ui.ValueElement.ValueChangeEventCallback;
|
|
||||||
import electrosphere.renderer.ui.elements.ActorPanel;
|
import electrosphere.renderer.ui.elements.ActorPanel;
|
||||||
import electrosphere.renderer.ui.elements.Button;
|
import electrosphere.renderer.ui.elements.Button;
|
||||||
import electrosphere.renderer.ui.elements.ImagePanel;
|
import electrosphere.renderer.ui.elements.ImagePanel;
|
||||||
@ -32,6 +29,9 @@ import electrosphere.renderer.ui.elements.Label;
|
|||||||
import electrosphere.renderer.ui.elements.ScrollableContainer;
|
import electrosphere.renderer.ui.elements.ScrollableContainer;
|
||||||
import electrosphere.renderer.ui.elements.Slider;
|
import electrosphere.renderer.ui.elements.Slider;
|
||||||
import electrosphere.renderer.ui.elements.StringCarousel;
|
import electrosphere.renderer.ui.elements.StringCarousel;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ClickableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ValueElement.ValueChangeEventCallback;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.events.ValueChangeEvent;
|
import electrosphere.renderer.ui.events.ValueChangeEvent;
|
||||||
import electrosphere.renderer.ui.form.FormElement;
|
import electrosphere.renderer.ui.form.FormElement;
|
||||||
|
|||||||
@ -4,10 +4,10 @@ import electrosphere.engine.Globals;
|
|||||||
import electrosphere.engine.loadingthreads.LoadingThread;
|
import electrosphere.engine.loadingthreads.LoadingThread;
|
||||||
import electrosphere.menu.MenuGenerators;
|
import electrosphere.menu.MenuGenerators;
|
||||||
import electrosphere.menu.WindowUtils;
|
import electrosphere.menu.WindowUtils;
|
||||||
import electrosphere.renderer.ui.ClickableElement;
|
|
||||||
import electrosphere.renderer.ui.Element;
|
|
||||||
import electrosphere.renderer.ui.elements.Button;
|
import electrosphere.renderer.ui.elements.Button;
|
||||||
import electrosphere.renderer.ui.elements.Label;
|
import electrosphere.renderer.ui.elements.Label;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ClickableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.form.FormElement;
|
import electrosphere.renderer.ui.form.FormElement;
|
||||||
|
|
||||||
|
|||||||
@ -113,8 +113,8 @@ import electrosphere.renderer.pipelines.UIPipeline;
|
|||||||
import electrosphere.renderer.pipelines.VolumeBufferPipeline;
|
import electrosphere.renderer.pipelines.VolumeBufferPipeline;
|
||||||
import electrosphere.renderer.shader.ShaderProgram;
|
import electrosphere.renderer.shader.ShaderProgram;
|
||||||
import electrosphere.renderer.texture.Texture;
|
import electrosphere.renderer.texture.Texture;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.imgui.ImGuiLinePlot;
|
import electrosphere.renderer.ui.imgui.ImGuiLinePlot;
|
||||||
import electrosphere.renderer.ui.imgui.ImGuiWindow;
|
import electrosphere.renderer.ui.imgui.ImGuiWindow;
|
||||||
import electrosphere.renderer.ui.imgui.ImGuiLinePlot.ImGuiLinePlotDataset;
|
import electrosphere.renderer.ui.imgui.ImGuiLinePlot.ImGuiLinePlotDataset;
|
||||||
|
|||||||
@ -14,10 +14,10 @@ import electrosphere.logger.LoggerInterface;
|
|||||||
import electrosphere.renderer.RenderingEngine;
|
import electrosphere.renderer.RenderingEngine;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.shader.ShaderProgram;
|
import electrosphere.renderer.shader.ShaderProgram;
|
||||||
import electrosphere.renderer.ui.ContainerElement;
|
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
|
||||||
import electrosphere.renderer.ui.Element;
|
|
||||||
import electrosphere.renderer.ui.elements.ImagePanel;
|
import electrosphere.renderer.ui.elements.ImagePanel;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ContainerElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
|
|
||||||
|
|
||||||
public class DebugRendering {
|
public class DebugRendering {
|
||||||
|
|||||||
@ -7,8 +7,8 @@ import electrosphere.renderer.OpenGLState;
|
|||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
import electrosphere.renderer.RenderingEngine;
|
import electrosphere.renderer.RenderingEngine;
|
||||||
import electrosphere.renderer.texture.Texture;
|
import electrosphere.renderer.texture.Texture;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main ui rendering pipeline
|
* Main ui rendering pipeline
|
||||||
|
|||||||
@ -9,18 +9,23 @@ import java.util.Stack;
|
|||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ContainerElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.DraggableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.FocusableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.HoverableElement;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.events.DragEvent;
|
import electrosphere.renderer.ui.events.DragEvent;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
import electrosphere.renderer.ui.events.FocusEvent;
|
import electrosphere.renderer.ui.events.FocusEvent;
|
||||||
|
import electrosphere.renderer.ui.events.HoverEvent;
|
||||||
import electrosphere.renderer.ui.events.MouseEvent;
|
import electrosphere.renderer.ui.events.MouseEvent;
|
||||||
import electrosphere.renderer.ui.events.NavigationEvent;
|
import electrosphere.renderer.ui.events.NavigationEvent;
|
||||||
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
||||||
import electrosphere.renderer.ui.events.NavigationEvent.NavigationEventType;
|
import electrosphere.renderer.ui.events.NavigationEvent.NavigationEventType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* The main interface for working with the ui system
|
||||||
* @author amaterasu
|
|
||||||
*/
|
*/
|
||||||
public class ElementManager {
|
public class ElementManager {
|
||||||
|
|
||||||
@ -30,6 +35,9 @@ public class ElementManager {
|
|||||||
FocusableElement currentFocusedElement = null;
|
FocusableElement currentFocusedElement = null;
|
||||||
DraggableElement currentDragElement = null;
|
DraggableElement currentDragElement = null;
|
||||||
|
|
||||||
|
// the element currently hovered over
|
||||||
|
HoverableElement currentHoveredElement = null;
|
||||||
|
|
||||||
public void registerWindow(String name, Element w){
|
public void registerWindow(String name, Element w){
|
||||||
elementMap.put(name,w);
|
elementMap.put(name,w);
|
||||||
if(!elementList.contains(w)){
|
if(!elementList.contains(w)){
|
||||||
@ -175,6 +183,35 @@ public class ElementManager {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the first hoverable element in the view stack
|
||||||
|
* @param currentX the current x position of the mouse
|
||||||
|
* @param currentY the current y position of the mouse
|
||||||
|
* @return The first hoverable element if it exists, null otherwise
|
||||||
|
*/
|
||||||
|
public Element resolveFirstHoverable(int currentX, int currentY){
|
||||||
|
ListIterator<Element> windowIterator = elementList.listIterator(elementList.size());
|
||||||
|
while(windowIterator.hasPrevious()){
|
||||||
|
Element currentWindow = windowIterator.previous();
|
||||||
|
Stack<Element> elementStack = buildElementPositionalStack(new Stack<Element>(), currentWindow, currentX, currentY, 0, 0);
|
||||||
|
Element currentElement = null;
|
||||||
|
while(elementStack.size() > 0){
|
||||||
|
currentElement = elementStack.pop();
|
||||||
|
if(currentElement instanceof HoverableElement){
|
||||||
|
return currentElement;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if an element contains a given screen coordinate
|
||||||
|
* @param el The element
|
||||||
|
* @param x the x component of the coordinate
|
||||||
|
* @param y the y component of the coordinate
|
||||||
|
* @return True if it contains that point, false otherwise
|
||||||
|
*/
|
||||||
boolean elementContainsPoint(Element el, int x, int y){
|
boolean elementContainsPoint(Element el, int x, int y){
|
||||||
return
|
return
|
||||||
x >= el.getPositionX() &&
|
x >= el.getPositionX() &&
|
||||||
@ -217,9 +254,30 @@ public class ElementManager {
|
|||||||
fireEvent(event,event.getCurrentX(),event.getCurrentY());
|
fireEvent(event,event.getCurrentX(),event.getCurrentY());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Navigates backwards
|
||||||
|
*/
|
||||||
public void navigateBackwards(){
|
public void navigateBackwards(){
|
||||||
NavigationEvent event = new NavigationEvent(NavigationEventType.BACKWARD);
|
NavigationEvent event = new NavigationEvent(NavigationEventType.BACKWARD);
|
||||||
fireEvent(event,currentFocusedElement.getPositionX(),currentFocusedElement.getPositionY());
|
fireEvent(event,currentFocusedElement.getPositionX(),currentFocusedElement.getPositionY());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the hover state
|
||||||
|
* @param currentX The current mouse X
|
||||||
|
* @param currentY The current mouse Y
|
||||||
|
*/
|
||||||
|
public void updateHover(int currentX, int currentY){
|
||||||
|
Element newHoverableElement = resolveFirstHoverable(currentX,currentY);
|
||||||
|
if(currentHoveredElement != newHoverableElement){
|
||||||
|
if(currentHoveredElement != null){
|
||||||
|
currentHoveredElement.handleEvent(new HoverEvent(false));
|
||||||
|
}
|
||||||
|
if(newHoverableElement != null){
|
||||||
|
newHoverableElement.handleEvent(new HoverEvent(true));
|
||||||
|
}
|
||||||
|
currentHoveredElement = (HoverableElement)newHoverableElement;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,8 @@ import electrosphere.controls.ControlHandler;
|
|||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
import electrosphere.renderer.ui.elements.Button;
|
import electrosphere.renderer.ui.elements.Button;
|
||||||
import electrosphere.renderer.ui.elements.Label;
|
import electrosphere.renderer.ui.elements.Label;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ClickableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|||||||
@ -21,6 +21,10 @@ import electrosphere.renderer.framebuffer.Framebuffer;
|
|||||||
import electrosphere.renderer.framebuffer.FramebufferUtils;
|
import electrosphere.renderer.framebuffer.FramebufferUtils;
|
||||||
import electrosphere.renderer.model.Material;
|
import electrosphere.renderer.model.Material;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ContainerElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.NavigableElement;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
import electrosphere.renderer.ui.events.NavigationEvent;
|
import electrosphere.renderer.ui.events.NavigationEvent;
|
||||||
|
|
||||||
|
|||||||
@ -31,8 +31,8 @@ import electrosphere.renderer.framebuffer.Framebuffer;
|
|||||||
import electrosphere.renderer.framebuffer.FramebufferUtils;
|
import electrosphere.renderer.framebuffer.FramebufferUtils;
|
||||||
import electrosphere.renderer.model.Material;
|
import electrosphere.renderer.model.Material;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.ui.DraggableElement;
|
import electrosphere.renderer.ui.elementtypes.DraggableElement;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.events.DragEvent;
|
import electrosphere.renderer.ui.events.DragEvent;
|
||||||
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
|
|||||||
@ -9,17 +9,19 @@ import electrosphere.engine.Globals;
|
|||||||
import electrosphere.renderer.OpenGLState;
|
import electrosphere.renderer.OpenGLState;
|
||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
import electrosphere.renderer.debug.DebugRendering;
|
import electrosphere.renderer.debug.DebugRendering;
|
||||||
import electrosphere.renderer.ui.ClickableElement;
|
import electrosphere.renderer.ui.elementtypes.ClickableElement;
|
||||||
import electrosphere.renderer.ui.ContainerElement;
|
import electrosphere.renderer.ui.elementtypes.ContainerElement;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.FocusableElement;
|
import electrosphere.renderer.ui.elementtypes.FocusableElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.HoverableElement;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
import electrosphere.renderer.ui.events.FocusEvent;
|
import electrosphere.renderer.ui.events.FocusEvent;
|
||||||
|
import electrosphere.renderer.ui.events.HoverEvent;
|
||||||
import electrosphere.renderer.ui.events.MouseEvent;
|
import electrosphere.renderer.ui.events.MouseEvent;
|
||||||
|
|
||||||
public class Button implements DrawableElement, FocusableElement, ContainerElement, ClickableElement {
|
public class Button implements DrawableElement, FocusableElement, ContainerElement, ClickableElement, HoverableElement {
|
||||||
|
|
||||||
List<Element> childList = new LinkedList<Element>();
|
List<Element> childList = new LinkedList<Element>();
|
||||||
|
|
||||||
@ -38,6 +40,7 @@ public class Button implements DrawableElement, FocusableElement, ContainerEleme
|
|||||||
FocusEventCallback onFocusCallback;
|
FocusEventCallback onFocusCallback;
|
||||||
FocusEventCallback onLoseFocusCallback;
|
FocusEventCallback onLoseFocusCallback;
|
||||||
ClickEventCallback clickCallback;
|
ClickEventCallback clickCallback;
|
||||||
|
HoverEventCallback hoverEventCallback;
|
||||||
|
|
||||||
static final Vector3f windowDrawDebugColor = new Vector3f(1.0f,1.0f,1.0f);
|
static final Vector3f windowDrawDebugColor = new Vector3f(1.0f,1.0f,1.0f);
|
||||||
|
|
||||||
@ -206,6 +209,28 @@ public class Button implements DrawableElement, FocusableElement, ContainerEleme
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default hover event handling
|
||||||
|
* @param event the hover event
|
||||||
|
*/
|
||||||
|
void onHoverEvent(HoverEvent event){
|
||||||
|
if(event.isHovered()){
|
||||||
|
for(Element child : childList){
|
||||||
|
if(child instanceof Label){
|
||||||
|
Label childLabel = (Label) child;
|
||||||
|
childLabel.setColor(new Vector3f(1,0,0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for(Element child : childList){
|
||||||
|
if(child instanceof Label){
|
||||||
|
Label childLabel = (Label) child;
|
||||||
|
childLabel.setColor(new Vector3f(1,1,1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void draw(RenderPipelineState renderPipelineState, OpenGLState openGLState, int parentFramebufferPointer, int parentWidth, int parentHeight) {
|
public void draw(RenderPipelineState renderPipelineState, OpenGLState openGLState, int parentFramebufferPointer, int parentWidth, int parentHeight) {
|
||||||
for(Element child : childList){
|
for(Element child : childList){
|
||||||
if(child instanceof DrawableElement){
|
if(child instanceof DrawableElement){
|
||||||
@ -281,7 +306,20 @@ public class Button implements DrawableElement, FocusableElement, ContainerEleme
|
|||||||
clickCallback.execute((ClickEvent)event);
|
clickCallback.execute((ClickEvent)event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(event instanceof HoverEvent){
|
||||||
|
if(hoverEventCallback != null){
|
||||||
|
hoverEventCallback.execute((HoverEvent)event);
|
||||||
|
} else {
|
||||||
|
//default hover handling
|
||||||
|
onHoverEvent((HoverEvent)event);
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOnHoverCallback(HoverEventCallback callback) {
|
||||||
|
this.hoverEventCallback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,13 +9,13 @@ import electrosphere.engine.Globals;
|
|||||||
import electrosphere.renderer.OpenGLState;
|
import electrosphere.renderer.OpenGLState;
|
||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
import electrosphere.renderer.debug.DebugRendering;
|
import electrosphere.renderer.debug.DebugRendering;
|
||||||
import electrosphere.renderer.ui.ClickableElement;
|
import electrosphere.renderer.ui.elementtypes.ClickableElement;
|
||||||
import electrosphere.renderer.ui.ContainerElement;
|
import electrosphere.renderer.ui.elementtypes.ContainerElement;
|
||||||
import electrosphere.renderer.ui.DraggableElement;
|
import electrosphere.renderer.ui.elementtypes.DraggableElement;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.FocusableElement;
|
import electrosphere.renderer.ui.elementtypes.FocusableElement;
|
||||||
import electrosphere.renderer.ui.NavigableElement;
|
import electrosphere.renderer.ui.elementtypes.NavigableElement;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.events.DragEvent;
|
import electrosphere.renderer.ui.events.DragEvent;
|
||||||
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
||||||
|
|||||||
@ -13,8 +13,8 @@ import electrosphere.renderer.debug.DebugRendering;
|
|||||||
import electrosphere.renderer.model.Material;
|
import electrosphere.renderer.model.Material;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.texture.Texture;
|
import electrosphere.renderer.texture.Texture;
|
||||||
import electrosphere.renderer.ui.DraggableElement;
|
import electrosphere.renderer.ui.elementtypes.DraggableElement;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.events.DragEvent;
|
import electrosphere.renderer.ui.events.DragEvent;
|
||||||
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
|
|||||||
@ -9,8 +9,8 @@ import electrosphere.engine.Globals;
|
|||||||
import electrosphere.renderer.OpenGLState;
|
import electrosphere.renderer.OpenGLState;
|
||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
import electrosphere.renderer.debug.DebugRendering;
|
import electrosphere.renderer.debug.DebugRendering;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
import electrosphere.renderer.ui.font.Font;
|
import electrosphere.renderer.ui.font.Font;
|
||||||
import electrosphere.renderer.ui.font.FontUtils;
|
import electrosphere.renderer.ui.font.FontUtils;
|
||||||
|
|||||||
@ -14,9 +14,9 @@ import electrosphere.renderer.framebuffer.Framebuffer;
|
|||||||
import electrosphere.renderer.framebuffer.FramebufferUtils;
|
import electrosphere.renderer.framebuffer.FramebufferUtils;
|
||||||
import electrosphere.renderer.model.Material;
|
import electrosphere.renderer.model.Material;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.ui.ContainerElement;
|
import electrosphere.renderer.ui.elementtypes.ContainerElement;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.GL11.*;
|
import static org.lwjgl.opengl.GL11.*;
|
||||||
|
|||||||
@ -8,12 +8,12 @@ import electrosphere.renderer.OpenGLState;
|
|||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
import electrosphere.renderer.debug.DebugRendering;
|
import electrosphere.renderer.debug.DebugRendering;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.ui.ClickableElement;
|
import electrosphere.renderer.ui.elementtypes.ClickableElement;
|
||||||
import electrosphere.renderer.ui.DraggableElement;
|
import electrosphere.renderer.ui.elementtypes.DraggableElement;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.FocusableElement;
|
import electrosphere.renderer.ui.elementtypes.FocusableElement;
|
||||||
import electrosphere.renderer.ui.MenuEventElement;
|
import electrosphere.renderer.ui.elementtypes.MenuEventElement;
|
||||||
import electrosphere.renderer.ui.ValueElement;
|
import electrosphere.renderer.ui.elementtypes.ValueElement;
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
import electrosphere.renderer.ui.events.DragEvent;
|
import electrosphere.renderer.ui.events.DragEvent;
|
||||||
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
||||||
|
|||||||
@ -8,11 +8,11 @@ import org.joml.Vector3f;
|
|||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
import electrosphere.renderer.OpenGLState;
|
import electrosphere.renderer.OpenGLState;
|
||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.FocusableElement;
|
import electrosphere.renderer.ui.elementtypes.FocusableElement;
|
||||||
import electrosphere.renderer.ui.MenuEventElement;
|
import electrosphere.renderer.ui.elementtypes.MenuEventElement;
|
||||||
import electrosphere.renderer.ui.ValueElement;
|
import electrosphere.renderer.ui.elementtypes.ValueElement;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
import electrosphere.renderer.ui.events.FocusEvent;
|
import electrosphere.renderer.ui.events.FocusEvent;
|
||||||
import electrosphere.renderer.ui.events.MenuEvent;
|
import electrosphere.renderer.ui.events.MenuEvent;
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import electrosphere.engine.assetmanager.AssetDataStrings;
|
|||||||
import electrosphere.renderer.OpenGLState;
|
import electrosphere.renderer.OpenGLState;
|
||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
import electrosphere.renderer.ui.font.FontUtils;
|
import electrosphere.renderer.ui.font.FontUtils;
|
||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
|
|||||||
@ -9,10 +9,10 @@ import electrosphere.renderer.framebuffer.FramebufferUtils;
|
|||||||
import electrosphere.renderer.model.Material;
|
import electrosphere.renderer.model.Material;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.texture.Texture;
|
import electrosphere.renderer.texture.Texture;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.FocusableElement;
|
import electrosphere.renderer.ui.elementtypes.FocusableElement;
|
||||||
import electrosphere.renderer.ui.KeyEventElement;
|
import electrosphere.renderer.ui.elementtypes.KeyEventElement;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
import electrosphere.renderer.ui.events.FocusEvent;
|
import electrosphere.renderer.ui.events.FocusEvent;
|
||||||
import electrosphere.renderer.ui.events.KeyboardEvent;
|
import electrosphere.renderer.ui.events.KeyboardEvent;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.renderer.ui;
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
import electrosphere.renderer.ui.events.ClickEvent;
|
import electrosphere.renderer.ui.events.ClickEvent;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.renderer.ui;
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.renderer.ui;
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
import electrosphere.renderer.ui.events.DragEvent;
|
import electrosphere.renderer.ui.events.DragEvent;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.renderer.ui;
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
import electrosphere.renderer.OpenGLState;
|
import electrosphere.renderer.OpenGLState;
|
||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.renderer.ui;
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.renderer.ui;
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
import electrosphere.renderer.ui.events.FocusEvent;
|
import electrosphere.renderer.ui.events.FocusEvent;
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
|
import electrosphere.renderer.ui.events.HoverEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hover state handling
|
||||||
|
*/
|
||||||
|
public interface HoverableElement extends Element {
|
||||||
|
|
||||||
|
//Sets the callback that is triggered when this element is hovered over
|
||||||
|
public void setOnHoverCallback(HoverEventCallback callback);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The callback triggered when this element is hovered over
|
||||||
|
*/
|
||||||
|
public interface HoverEventCallback {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes the callback
|
||||||
|
* @param event The event to handle
|
||||||
|
* @return true if should propagate up to parents, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean execute(HoverEvent event);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.renderer.ui;
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
import electrosphere.renderer.ui.events.KeyboardEvent;
|
import electrosphere.renderer.ui.events.KeyboardEvent;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.renderer.ui;
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
import electrosphere.renderer.ui.events.MenuEvent;
|
import electrosphere.renderer.ui.events.MenuEvent;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.renderer.ui;
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
import electrosphere.renderer.ui.events.NavigationEvent;
|
import electrosphere.renderer.ui.events.NavigationEvent;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.renderer.ui;
|
package electrosphere.renderer.ui.elementtypes;
|
||||||
|
|
||||||
import electrosphere.renderer.ui.events.ValueChangeEvent;
|
import electrosphere.renderer.ui.events.ValueChangeEvent;
|
||||||
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package electrosphere.renderer.ui.events;
|
package electrosphere.renderer.ui.events;
|
||||||
|
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
|
|
||||||
public class DragEvent implements Event {
|
public class DragEvent implements Event {
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
package electrosphere.renderer.ui.events;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Triggered when an element is hovered over
|
||||||
|
*/
|
||||||
|
public class HoverEvent implements Event {
|
||||||
|
|
||||||
|
//if true, this element is hovered over, false otherwise
|
||||||
|
boolean isHovered;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the hover event
|
||||||
|
* @param isHovered true if hovered over, false otherwise
|
||||||
|
*/
|
||||||
|
public HoverEvent(boolean isHovered){
|
||||||
|
this.isHovered = isHovered;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns if the element is hovered over
|
||||||
|
* @return true if hovered over, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean isHovered(){
|
||||||
|
return isHovered;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@ import electrosphere.renderer.OpenGLState;
|
|||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
import electrosphere.renderer.model.Material;
|
import electrosphere.renderer.model.Material;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
import electrosphere.renderer.ui.font.Font;
|
import electrosphere.renderer.ui.font.Font;
|
||||||
// import electrosphere.renderer.ui.font.FontUtils;
|
// import electrosphere.renderer.ui.font.FontUtils;
|
||||||
|
|||||||
@ -5,9 +5,9 @@ import java.util.List;
|
|||||||
|
|
||||||
import electrosphere.renderer.OpenGLState;
|
import electrosphere.renderer.OpenGLState;
|
||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
import electrosphere.renderer.ui.ContainerElement;
|
import electrosphere.renderer.ui.elementtypes.ContainerElement;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
|
|
||||||
public class FormElement implements DrawableElement, ContainerElement {
|
public class FormElement implements DrawableElement, ContainerElement {
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
package electrosphere.renderer.ui.layout;
|
package electrosphere.renderer.ui.layout;
|
||||||
|
|
||||||
import electrosphere.renderer.ui.ContainerElement;
|
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import electrosphere.renderer.ui.elementtypes.ContainerElement;
|
||||||
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author amaterasu
|
* @author amaterasu
|
||||||
|
|||||||
@ -20,8 +20,8 @@ import electrosphere.renderer.framebuffer.Framebuffer;
|
|||||||
import electrosphere.renderer.framebuffer.FramebufferUtils;
|
import electrosphere.renderer.framebuffer.FramebufferUtils;
|
||||||
import electrosphere.renderer.model.Material;
|
import electrosphere.renderer.model.Material;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
import electrosphere.renderer.ui.DrawableElement;
|
import electrosphere.renderer.ui.elementtypes.DrawableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.elementtypes.Element;
|
||||||
import electrosphere.renderer.ui.events.Event;
|
import electrosphere.renderer.ui.events.Event;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user