currentElements;
private HistoryToken currentToken;
private ContentDelegation contentDelegation = new DefaultContentDelegation();
@@ -361,13 +354,18 @@ private void hideCurrentPage(P requestPage, NavigationControl control) {
requestPage, hideControl);
} else {
// Cannot call content delegation. The contract requests that currentPage != null!
- removeChildrenFrom(navigationContainer);
+ if (navigationContainer != null) {
+ while (navigationContainer.firstChild != null) {
+ navigationContainer.removeChild(navigationContainer.firstChild);
+ }
+ }
+
hideControl.proceed();
}
}
}
- private
void pageHiding(P page, ElementsBag pageElements, Request
request,
+ private
void pageHiding(P page, JsArray pageElements, Request request,
boolean fireEvent) {
HTMLElement navigationContainer = navigationContainer();
if (navigationContainer != null) {
@@ -408,17 +406,17 @@ && sameElements(navigationContainer, pageElements)) {
}
}
- private boolean sameElements(HTMLElement navigationContainer, ElementsBag elements) {
+ private boolean sameElements(HTMLElement navigationContainer, JsArray elements) {
int currentElementCount = (int) navigationContainer.childElementCount;
int newElementsCount = 0;
- for (HTMLElement ignored : elements.elements()) {
+ for (HTMLElement ignored : elements.asList()) {
newElementsCount++;
}
if (currentElementCount != newElementsCount) {
return false;
}
- Iterator currentIterator = Elements.iterator(navigationContainer);
- Iterator newIterator = elements.elements().iterator();
+ Iterator currentIterator = new JsArrayElementIterator(navigationContainer);
+ Iterator newIterator = elements.asList().iterator();
while (currentIterator.hasNext() && newIterator.hasNext()) {
HTMLElement currentElement = currentIterator.next();
HTMLElement newElement = newIterator.next();
@@ -488,10 +486,10 @@ public void setContentDelegation(ContentDelegation contentDelegation) {
this.contentDelegation = contentDelegation;
}
- public void setNavigationContainerSelector(By selector) {
+ public void setNavigationContainerSelector(String selector) {
this.navigationContainerSelector = selector;
if (selector != null) {
- this.navigationContainer = Elements.find(document.body, navigationContainerSelector);
+ document.body.querySelector(navigationContainerSelector);
}
}
@@ -524,7 +522,7 @@ private HTMLElement navigationContainer() {
return navigationContainer;
}
if (navigationContainerSelector != null) {
- navigationContainer = Elements.find(document.body, navigationContainerSelector);
+ navigationContainer = (HTMLElement) document.body.querySelector(navigationContainerSelector);
}
if (navigationContainer == null) {
console.warn(
@@ -538,21 +536,17 @@ private HTMLElement navigationContainer() {
}
@SuppressWarnings("rawtypes")
- private ElementsBag pageElements(Object page) {
- ElementsBag elements = new ElementsBag();
+ private JsArray pageElements(Object page) {
+ JsArray elements = new JsArray<>();
if (page != null) {
- if (page instanceof IsElement) {
- elements.add(((IsElement) page).element());
- } else if (page instanceof io.crysknife.client.IsElement) {
- elements.add(((io.crysknife.client.IsElement) page).getElement());
+ if (page instanceof io.crysknife.client.IsElement) {
+ elements.push(((io.crysknife.client.IsElement) page).getElement());
} else if (page instanceof Iterable) {
for (Object o : ((Iterable) page)) {
- if (o instanceof IsElement) {
- elements.add(((IsElement) o).element());
- } else if (page instanceof io.crysknife.client.IsElement) {
- elements.add(((io.crysknife.client.IsElement) o).getElement());
+ if (page instanceof io.crysknife.client.IsElement) {
+ elements.push(((io.crysknife.client.IsElement) o).getElement());
} else if (o instanceof HTMLElement) {
- elements.add(((HTMLElement) o));
+ elements.push(((HTMLElement) o));
}
}
}
@@ -573,4 +567,39 @@ private Request(PageNode pageNode, HistoryToken state) {
this.state = state;
}
}
+
+ private static class JsArrayElementIterator implements Iterator {
+
+ private HTMLElement parent, last, next;
+
+ public JsArrayElementIterator(HTMLElement parent) {
+ this.parent = parent;
+ next = (HTMLElement) parent.firstElementChild;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return next != null;
+ }
+
+ @Override
+ public HTMLElement next() {
+ if (!hasNext()) {
+ throw new NoSuchElementException();
+ }
+ last = next;
+ next = (HTMLElement) last.nextElementSibling;
+ return last;
+ }
+
+ @Override
+ public void remove() {
+ if (last == null) {
+ throw new IllegalStateException();
+ }
+ parent.removeChild(last);
+ last = null;
+ }
+ }
+
}
diff --git a/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/PageTransitionProvider.java b/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/PageTransitionProvider.java
index 9f4e1a5b..ae0bc436 100644
--- a/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/PageTransitionProvider.java
+++ b/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/PageTransitionProvider.java
@@ -14,11 +14,11 @@
package io.crysknife.ui.navigation.client.local;
+import io.crysknife.client.IsElement;
+
import javax.inject.Inject;
import javax.inject.Singleton;
-import org.jboss.elemento.IsElement;
-
@Singleton
public class PageTransitionProvider {
diff --git a/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/TransitionAnchorFactoryProvider.java b/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/TransitionAnchorFactoryProvider.java
index bc04bf48..77181ff3 100644
--- a/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/TransitionAnchorFactoryProvider.java
+++ b/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/TransitionAnchorFactoryProvider.java
@@ -14,11 +14,11 @@
package io.crysknife.ui.navigation.client.local;
+import io.crysknife.client.IsElement;
+
import javax.inject.Inject;
import javax.inject.Singleton;
-import org.jboss.elemento.IsElement;
-
/**
* Provides new instances of the {@link TransitionAnchorFactory} class, which allows them to be
* injected.
diff --git a/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/spi/NavigationGraph.java b/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/spi/NavigationGraph.java
index 86506fd7..81d39f1b 100644
--- a/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/spi/NavigationGraph.java
+++ b/ui/navigation/api/src/main/java/io/crysknife/ui/navigation/client/local/spi/NavigationGraph.java
@@ -24,8 +24,8 @@
import javax.enterprise.event.Event;
import javax.inject.Inject;
+import io.crysknife.client.IsElement;
import io.crysknife.client.utils.CreationalCallback;
-import org.jboss.elemento.IsElement;
import io.crysknife.client.BeanManager;
import io.crysknife.client.internal.collections.Multimap;
import io.crysknife.ui.navigation.client.local.PageRole;
diff --git a/ui/navigation/generator/pom.xml b/ui/navigation/generator/pom.xml
index 08f3b314..65d268a9 100644
--- a/ui/navigation/generator/pom.xml
+++ b/ui/navigation/generator/pom.xml
@@ -45,10 +45,6 @@
com.google.elemental2
elemental2-dom