Skip to content

Commit cd1d43b

Browse files
committed
Refactoring
1 parent 344f8ee commit cd1d43b

File tree

3 files changed

+68
-35
lines changed

3 files changed

+68
-35
lines changed

src/main/java/com/flowingcode/addons/applayout/AppHeader.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -64,18 +64,6 @@ public AppToolbar getAppToolbar() {
6464
return appToolbar;
6565
}
6666

67-
public void addToolbarIconButtons(Component... components) {
68-
appToolbar.addToolbarIconButtons(components);
69-
}
70-
71-
public void clearToolbarIconButtons(Component... components) {
72-
appToolbar.addToolbarIconButtons(components);
73-
}
74-
75-
public void setMenuIconVisible(boolean visible) {
76-
appToolbar.setMenuIconVisible(visible);
77-
}
78-
7967
/**Mantains the header fixed at the top so it never moves away.*/
8068
public void setFixed(boolean fixed) {
8169
this.getElement().setAttribute("fixed", fixed);

src/main/java/com/flowingcode/addons/applayout/AppLayout.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,21 +94,25 @@ public void clearMenuItems() {
9494
}
9595

9696
public void setToolbarIconButtons(Component... components) {
97-
header.clearToolbarIconButtons();
98-
header.addToolbarIconButtons(components);
97+
header.getAppToolbar().clearToolbarIconButtons();
98+
header.getAppToolbar().addToolbarIconButtons(components);
9999
}
100100

101101
public void addToolbarIconButtons(Component... components) {
102-
header.addToolbarIconButtons(components);
102+
header.getAppToolbar().addToolbarIconButtons(components);
103103
}
104-
104+
105+
public void addToolbarIconButtonAsFirst(Component component) {
106+
header.getAppToolbar().addToolbarIconButtonAsFirst(component);
107+
}
108+
105109
public void clearToolbarIconButtons() {
106-
header.clearToolbarIconButtons();
110+
header.getAppToolbar().clearToolbarIconButtons();
107111
}
108112

109113
public void setMenuVisible(boolean visible) {
110114
drawer.setVisible(visible);
111-
header.setMenuIconVisible(visible);
115+
header.getAppToolbar().setMenuIconVisible(visible);
112116
}
113117

114118
public boolean isMenuVisible() {

src/main/java/com/flowingcode/addons/applayout/AppToolbar.java

Lines changed: 58 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@
2222

2323

2424
import com.vaadin.flow.component.Component;
25-
import com.vaadin.flow.component.HasComponents;
25+
import com.vaadin.flow.component.HasOrderedComponents;
2626
import com.vaadin.flow.component.Tag;
2727
import com.vaadin.flow.component.dependency.HtmlImport;
2828
import com.vaadin.flow.component.dependency.JsModule;
2929
import com.vaadin.flow.component.dependency.NpmPackage;
3030
import com.vaadin.flow.component.html.Div;
3131
import com.vaadin.flow.component.html.Image;
32+
import com.vaadin.flow.dom.Element;
3233

3334
/**
3435
* Component that renders the app toolbar
@@ -44,47 +45,87 @@
4445
@JsModule("@polymer/app-layout/app-toolbar/app-toolbar.js")
4546
@JsModule("@polymer/iron-icons/iron-icons.js")
4647
@Tag("app-toolbar")
47-
public class AppToolbar extends Component implements HasComponents {
48+
public class AppToolbar extends Component {
4849

4950
private ToolbarIconButton menu;
50-
private Component ctitle;
5151
private Div divTitle;
52+
private int index;
53+
54+
private HasOrderedComponents<AppToolbar> hasOrderedComponents = new HasOrderedComponents<AppToolbar>() {
55+
@Override
56+
public Element getElement() {
57+
return AppToolbar.this.getElement();
58+
}
59+
60+
@Override
61+
public int getComponentCount() {
62+
return (int) getChildren().count();
63+
};
64+
65+
@Override
66+
public Component getComponentAt(int index) {
67+
if (index < 0) {
68+
throw new IllegalArgumentException(
69+
"The 'index' argument should be greater than or equal to 0. It was: "
70+
+ index);
71+
}
72+
return getChildren().sequential().skip(index).findFirst()
73+
.orElseThrow(() -> new IllegalArgumentException(
74+
"The 'index' argument should not be greater than or equals to the number of children components. It was: "
75+
+ index));
76+
};
77+
78+
};
5279

5380
public AppToolbar(String title, AppDrawer drawer) {
5481
this(null,title, drawer);
5582
}
5683

5784
public AppToolbar(Image logo, String title, AppDrawer drawer) {
58-
menu = new ToolbarIconButton().setIcon("menu");
85+
menu = new ToolbarIconButton().setIcon("menu");
86+
add(menu);
87+
5988
drawer.getId().ifPresent(id -> menu.getElement().setAttribute("onclick", id + ".toggle()"));
6089
if (logo!=null) {
61-
ctitle = logo;
90+
add(logo);
6291
}
92+
6393
divTitle = new Div();
64-
divTitle.getElement().setAttribute("main-title", true);
94+
divTitle.getElement().setAttribute("main-title", true);
6595
setTitle(title);
66-
67-
clearToolbarIconButtons();
96+
add(divTitle);
97+
98+
index = hasOrderedComponents.getComponentCount();
99+
}
100+
101+
private void add(Component... components) {
102+
hasOrderedComponents.add(components);
103+
}
104+
105+
private void addComponentAtIndex(int index, Component component) {
106+
hasOrderedComponents.addComponentAtIndex(index, component);
68107
}
69108

70109
public void setTitle(String title) {
71110
divTitle.setText(title);
72111
}
73112

74113
public void clearToolbarIconButtons() {
75-
this.removeAll();
76-
this.add(menu);
77-
if (ctitle!=null) this.add(ctitle);
78-
if (divTitle!=null) this.add(divTitle);
114+
while (hasOrderedComponents.getComponentCount()>index) {
115+
hasOrderedComponents.remove(hasOrderedComponents.getComponentAt(index));
116+
}
79117
}
80-
81-
public void addToolbarIconButtons(Component... components) {
82-
this.add(components);
83-
}
84-
118+
85119
public void setMenuIconVisible(boolean visible) {
86120
menu.setVisible(visible);
87121
}
88122

123+
public void addToolbarIconButtons(Component... components) {
124+
this.add(components);
125+
}
126+
127+
public void addToolbarIconButtonAsFirst(Component component) {
128+
this.addComponentAtIndex(index, component);
129+
}
89130

90131
}

0 commit comments

Comments
 (0)