//Methods //-Child API implementation override protected void implementation_addElementToElement( HierarchicalUIElementObject inElement, HierarchicalUIElementObject inSubelementToAdd) { if (_elementShownInGrid == inElement) { refreshShowingElement(); } }
//-Internal API internal void addElementToElement( HierarchicalUIElementObject inElement, HierarchicalUIElementObject inSubelement) { XUtils.check(inElement && inSubelement); inSubelement._hierarchicalUIobject = this; inElement._elements.add(inSubelement); implementation_addElementToElement(inElement, inSubelement); }
internal void removeElementFromElement( HierarchicalUIElementObject inElement, HierarchicalUIElementObject inSubelement) { XUtils.check(inElement && inSubelement); XUtils.check(inElement._elements.contains(inSubelement)); implementation_removeElementFromElement(inElement, inSubelement); inElement._elements.removeElement(inSubelement); inSubelement._hierarchicalUIobject = null; }
override protected void implementation_removeElementFromElement( HierarchicalUIElementObject inElement, HierarchicalUIElementObject inSubelementToRemove) { Optional <int> theWayIndexOfRemovingElement = _wayUI.getIndexOfElement(inSubelementToRemove); if (theWayIndexOfRemovingElement.isSet()) { goInto(_wayUI.getElementByIndex(theWayIndexOfRemovingElement.getValue() - 1)); } else if (inElement == _elementShownInGrid) { refreshShowingElement(); } }
private HierarchicalGridWayUIElement createWayElementForElement( HierarchicalUIElementObject inElement) { HierarchicalGridWayUIElement theWayElement = inElement.createWayElement(); if (!theWayElement) { GameObject theWayElementGameObject = Instantiate(_defaultWayElementPrefab); theWayElement = XUtils.verify( theWayElementGameObject.GetComponent <HierarchicalGridWayUIElement>() ); } theWayElement._hierarchicalGridUIObject = this; theWayElement._element = inElement; return(theWayElement); }
override protected void implementation_goInto( HierarchicalUIElementObject inElement) { XUtils.check(inElement); if (inElement == _elementShownInGrid) { return; } Optional <int> theWayIndexOfElementToGoInto = _wayUI.getIndexOfElement(inElement); if (theWayIndexOfElementToGoInto.isSet()) { _wayUI.removeWayElementsUpToEnd(theWayIndexOfElementToGoInto.getValue() + 1); } else { _wayUI.addWayElement(createWayElementForElement(inElement)); } showElementInGrid(inElement); }
internal Optional <int> getIndexOfElement(HierarchicalUIElementObject inElement) { return(_wayElements.findIndex((HierarchicalGridWayUIElement inWayElement) => { return inElement == inWayElement._element; })); }
//Methods //-API public void addRootElement(HierarchicalUIElementObject inElement) { _rootElement.addElement(inElement); }
abstract protected void implementation_goInto( HierarchicalUIElementObject inElement );
abstract protected void implementation_removeElementFromElement( HierarchicalUIElementObject inElement, HierarchicalUIElementObject inSubelement );
//-Child API to implement abstract protected void implementation_addElementToElement( HierarchicalUIElementObject inElement, HierarchicalUIElementObject inSubelement );
internal void goInto(HierarchicalUIElementObject inElement) { XUtils.check(inElement); implementation_goInto(inElement); }
public void removeRootElement(HierarchicalUIElementObject inElement) { _rootElement.removeElement(inElement); }
//Methods //-API public void addElement(HierarchicalUIElementObject inElement) { XUtils.check(null != inElement && null != _hierarchicalUIobject); _hierarchicalUIobject.addElementToElement(this, inElement); }
public void removeElement(HierarchicalUIElementObject inElement) { XUtils.check(null != inElement && null != _hierarchicalUIobject); _hierarchicalUIobject.removeElementFromElement(this, inElement); }
//-Utils private void showElementInGrid(HierarchicalUIElementObject inElement) { _elementShownInGrid = XUtils.verify(inElement); refreshShowingElement(); }