1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.client.ui.commons.panels;
20
21 import org.apache.wicket.Component;
22 import org.apache.wicket.markup.html.basic.Label;
23 import org.apache.wicket.markup.html.panel.Panel;
24 import org.apache.wicket.model.ResourceModel;
25
26 public final class CardPanel<T extends Component> extends Panel {
27
28 private static final long serialVersionUID = -7906010415162945394L;
29
30 private CardPanel(final String id, final Builder<T> builder) {
31 super(id);
32 this.setOutputMarkupId(true);
33 this.setVisible(builder.visible);
34
35 this.add(new Label("cardLabel", new ResourceModel(builder.name, builder.name)).setOutputMarkupId(true));
36 this.add(builder.component);
37 }
38
39 public static class Builder<T extends Component> {
40
41 protected String name;
42
43 protected T component;
44
45 protected boolean visible;
46
47 public Builder<T> setName(final String name) {
48 this.name = name;
49 return this;
50 }
51
52 public Builder<T> setComponent(final T component) {
53 this.component = component;
54 return this;
55 }
56
57 public Builder<T> isVisible(final boolean visible) {
58 this.visible = visible;
59 return this;
60 }
61
62 public CardPanel<T> build(final String id) {
63 return new CardPanel<>(id, this);
64 }
65 }
66 }