1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.client.console.panels;
20
21 import java.io.Serializable;
22 import java.util.Arrays;
23 import java.util.stream.Collectors;
24 import org.apache.syncope.client.console.pages.BasePage;
25 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
26 import org.apache.syncope.common.lib.to.ImplementationTO;
27 import org.apache.syncope.common.lib.types.ImplementationEngine;
28 import org.apache.wicket.PageReference;
29 import org.apache.wicket.ajax.AjaxRequestTarget;
30 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
31 import org.apache.wicket.markup.html.form.Form;
32 import org.apache.wicket.model.PropertyModel;
33
34 public abstract class ImplementationEngineTogglePanel extends TogglePanel<Serializable> {
35
36 private static final long serialVersionUID = -7869528596656778267L;
37
38 public ImplementationEngineTogglePanel(
39 final String id,
40 final ImplementationTO implementation,
41 final PageReference pageRef) {
42
43 super(id, pageRef);
44
45 Form<?> form = new Form<>("implementationEngineForm");
46 addInnerObject(form);
47
48 PropertyModel<ImplementationEngine> engineModel = new PropertyModel<>(implementation, "engine");
49
50 form.add(new AjaxDropDownChoicePanel<>(
51 "engine", "Engine", engineModel, false).
52 setNullValid(false).
53 setChoices(Arrays.stream(ImplementationEngine.values()).collect(Collectors.toList())).
54 setStyleSheet("form-control").
55 hideLabel());
56
57 form.add(new AjaxSubmitLink("changeit", form) {
58
59 private static final long serialVersionUID = -7978723352517770644L;
60
61 @Override
62 protected void onSubmit(final AjaxRequestTarget target) {
63 ImplementationEngineTogglePanel.this.onSubmit(engineModel.getObject(), target);
64 target.add(form);
65 toggle(target, false);
66
67 ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
68 }
69
70 @Override
71 protected void onError(final AjaxRequestTarget target) {
72 ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
73 }
74 });
75
76 }
77
78 protected abstract void onSubmit(ImplementationEngine engine, AjaxRequestTarget target);
79
80 public void setHeaderLabel(final AjaxRequestTarget target) {
81 setHeader(target, getString("engine"));
82 }
83 }