38 string GUIDropDownController::CONDITION_DISABLED =
"disabled";
39 string GUIDropDownController::CONDITION_ENABLED =
"enabled";
40 string GUIDropDownController::CONDITION_OPENED =
"opened";
41 string GUIDropDownController::CONDITION_CLOSED =
"closed";
43 GUIDropDownController::GUIDropDownController(
GUINode* node)
47 this->
disabled = required_dynamic_cast<GUIElementNode*>(
node)->isDisabled();
57 auto& nodeConditions = required_dynamic_cast<GUIElementNode*>(
node)->getActiveConditions();
78 GUIElementController::initialize();
86 GUIElementController::dispose();
115 auto selectedDropDownOptionElementController = selectedDropDownOptionElementNode->
getController();
118 if (dropDownOptionController == selectedDropDownOptionElementController) {
142 vector<GUINode*> childControllerNodes;
144 required_dynamic_cast<GUIParentNode*>(
node)->getChildControllerNodes(childControllerNodes);
145 for (
auto i = 0; i < childControllerNodes.size(); i++) {
146 auto childControllerNode = childControllerNodes[i];
158 auto disabledCount = 0;
183 auto disabledCount = 0;
218 string selectedDropDownOptionText;
227 auto scrollToDropDownOption = -1;
228 auto searchLowerCase = StringTools::toLowerCase(
search);
231 auto match = dropDownOptionController->search(searchLowerCase);
235 if (scrollToDropDownOption != -1) {
244 GUIElementController::handleMouseEvent(
node, event);
246 auto elementNode = required_dynamic_cast<GUIElementNode*>(this->node);
249 if (event->
getType() == GUIMouseEvent::MOUSEEVENT_RELEASED) {
250 event->setProcessed(
true);
258 event->setProcessed(
true);
268 GUIElementController::handleKeyboardEvent(event);
270 auto keyChar =
event->getKeyChar();
271 if (keyChar > 32 && keyChar < 127 && keyChar >= 32) {
272 event->setProcessed(
true);
273 if (event->
getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_TYPED) {
275 search+=
event->getKeyChar();
280 case GUIKeyboardEvent::KEYCODE_ESCAPE:
281 if (event->
getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
288 case GUIKeyboardEvent::KEYCODE_BACKSPACE:
289 case GUIKeyboardEvent::KEYCODE_DELETE: {
290 if (event->
getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
295 case GUIKeyboardEvent::KEYCODE_UP: {
296 event->setProcessed(
true);
297 if (event->
getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
306 case GUIKeyboardEvent::KEYCODE_DOWN: {
307 event->setProcessed(
true);
308 if (event->
getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
317 case GUIKeyboardEvent::KEYCODE_SPACE: {
318 event->setProcessed(
true);
319 if (event->
getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
335 GUIElementController::tick();
367 auto dropDownOptionNode = required_dynamic_cast<GUIElementNode*>(dropDownOptionController->getNode());
368 if (
value.
equals(dropDownOptionNode->getValue())) {
381 auto dropDownOptionNode = required_dynamic_cast<GUIElementNode*>(dropDownOptionController->getNode());
382 dropDownOptionController->unselect();
383 if (dropDownOptionNode->isSelected() ==
true) {
void addMouseOutClickCandidateNode(GUINode *node)
Add node that is a possible mouse click out candidate as it received a mouse click.
void setFoccussedNode(GUIElementNode *newFoccussedNode)
Set focussed node.
GUI drop down controller.
void onFocusGained() override
On focus gained.
void dispose() override
Dispose controller.
GUIElementNode * arrowNode
static STATIC_DLL_IMPEXT string CONDITION_CLOSED
void postLayout() override
Post layout event.
GUIParentNode * dropDownContainerNode
void initialize() override
Initialize controller after element has been created.
void selectLast()
Select last.
void handleKeyboardEvent(GUIKeyboardEvent *event) override
Handle keyboard event.
void toggleOpenState()
Toggle open state.
GUIElementNode * textElementNode
void selectNext()
Select next node.
void onFocusLost() override
On focus lost.
void setValue(const MutableString &value) override
Set value.
void handleMouseEvent(GUINode *node, GUIMouseEvent *event) override
Handle mouse event.
void doSearch()
Do search.
vector< GUIDropDownOptionController * > dropDownOptionControllers
void tick() override
Tick method will be executed once per frame.
int lastSelectedDropDownOptionControllerIdx
void determineDropDownOptionControllers()
Determine drop down option controllers.
static STATIC_DLL_IMPEXT string CONDITION_DISABLED
static STATIC_DLL_IMPEXT string CONDITION_ENABLED
void setDisabled(bool disabled) override
Set disabled.
const MutableString & getValue() override
bool isDisabled() override
void onSubTreeChange() override
On sub tree change.
void select(int idx)
Select by index.
static STATIC_DLL_IMPEXT string CONDITION_OPENED
int selectedDropDownOptionControllerIdx
void selectPrevious()
Select previous.
GUI drop down option controller.
int32_t getKeyCode() const
GUIKeyboardEventType getType() const
GUIMouseEventType getType() const
GUINodeConditions & getActiveConditions()
GUI element node conditions.
bool add(const string &condition)
Add a condition.
bool remove(const string &condition)
Remove a condition.
bool isEventBelongingToNode(GUIMouseEvent *event, Vector2 &nodeCoordinate)
Is event belonging to node.
GUINodeController * getController()
GUIScreenNode * getScreenNode()
GUI parent node base class thats supporting child nodes.
GUI screen node that represents a screen that can be rendered via GUI system.
void forwardChange(GUIElementNode *node)
Forward change event.
GUINode * getInnerNodeById(const string &nodeId)
Get inner GUI node by id.
GUINode * getNodeById(const string &nodeId)
Get GUI node by id.
Mutable utf8 aware string class.
MutableString & append(char c)
Append character.
bool equals(const string &s2) const
Equals.
MutableString & reset()
Reset.