View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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  }