You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2015/09/23 15:10:48 UTC
[1/2] syncope git commit: [SYNCOPE-156] fix for ajax component panels
Repository: syncope
Updated Branches:
refs/heads/SYNCOPE-156 767a30aa2 -> b2e93ca73
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.java
index f42b67f..08de6f8 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.java
@@ -70,7 +70,7 @@ public class AjaxTextFieldPanel extends FieldPanel<String> implements Cloneable
return result.iterator();
}
};
-
+
add(field.setLabel(new ResourceModel(name, name)).setOutputMarkupId(true));
if (enableOnChange && !isReadOnly()) {
@@ -84,7 +84,7 @@ public class AjaxTextFieldPanel extends FieldPanel<String> implements Cloneable
}
});
}
-
+
add(new Label("label", new ResourceModel(name, name)));
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/CheckBoxMultipleChoiceFieldPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/CheckBoxMultipleChoiceFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/CheckBoxMultipleChoiceFieldPanel.java
index dc7bfec..9d0afea 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/CheckBoxMultipleChoiceFieldPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/CheckBoxMultipleChoiceFieldPanel.java
@@ -35,7 +35,7 @@ public class CheckBoxMultipleChoiceFieldPanel<E> extends AbstractFieldPanel<List
public CheckBoxMultipleChoiceFieldPanel(
final String id, final IModel<List<E>> model, final IModel<List<E>> choices) {
- super(id, model);
+ super(id, id, model);
field = new CheckBoxMultipleChoice<E>("checkBoxMultipleChoice", model, choices);
add(field.
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
index 3a48d38..5bf1cdc 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
@@ -31,7 +31,7 @@ import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
-public abstract class FieldPanel<T> extends AbstractFieldPanel<T> implements Cloneable {
+public abstract class FieldPanel<T extends Serializable> extends AbstractFieldPanel<T> implements Cloneable {
private static final long serialVersionUID = -198988924922541273L;
@@ -42,12 +42,14 @@ public abstract class FieldPanel<T> extends AbstractFieldPanel<T> implements Clo
protected boolean isRequiredLabelAdded = false;
public FieldPanel(final String id, final IModel<T> model) {
- super(id, model);
+ this(id, id, model);
+ }
+
+ public FieldPanel(final String id, final String name, final IModel<T> model) {
+ super(id, name, model);
final Fragment fragment = new Fragment("required", "notRequiredFragment", this);
add(fragment);
-
- setOutputMarkupId(true);
}
public FormComponent<T> getField() {
@@ -97,9 +99,7 @@ public abstract class FieldPanel<T> extends AbstractFieldPanel<T> implements Clo
}
final Fragment fragment = new Fragment("required", "requiredFragment", this);
-
fragment.add(new Label("requiredLabel", "*"));
-
replace(fragment);
this.isRequiredLabelAdded = true;
@@ -128,11 +128,11 @@ public abstract class FieldPanel<T> extends AbstractFieldPanel<T> implements Clo
}
public T getModelObject() {
- return field.getModelObject();
+ return this.field.getModelObject();
}
public FieldPanel<T> setNewModel(final IModel<T> model) {
- field.setModel(model);
+ field.setModel(model == null ? new Model<T>() : model);
return this;
}
@@ -196,6 +196,7 @@ public abstract class FieldPanel<T> extends AbstractFieldPanel<T> implements Clo
public FieldPanel<T> clone() {
final FieldPanel<T> panel = SerializationUtils.clone(this);
panel.setModelObject(null);
+ panel.addLabel();
return panel;
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
index f35321f..ccffd20 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.client.console.wicket.markup.html.form;
+import java.io.Serializable;
import java.util.List;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -26,27 +27,41 @@ import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.event.Broadcast;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
-public class MultiFieldPanel<E> extends AbstractFieldPanel<List<E>> {
+public class MultiFieldPanel<E extends Serializable> extends AbstractFieldPanel<List<E>> {
private static final long serialVersionUID = -6322397761456513324L;
private ListView<E> view;
+ private final FieldPanel<E> panelTemplate;
+
+ private final boolean eventTemplate;
+
private WebMarkupContainer container;
- public MultiFieldPanel(final String id, final IModel<List<E>> model, final FieldPanel<E> panelTemplate) {
- this(id, model, panelTemplate, false);
+ public MultiFieldPanel(
+ final String id, final String name, final IModel<List<E>> model, final FieldPanel<E> panelTemplate) {
+ this(id, name, model, panelTemplate, false);
}
- public MultiFieldPanel(final String id, final IModel<List<E>> model, final FieldPanel<E> panelTemplate,
+ public MultiFieldPanel(
+ final String id,
+ final String name,
+ final IModel<List<E>> model,
+ final FieldPanel<E> panelTemplate,
final boolean eventTemplate) {
- super(id, model);
+ super(id, name, model);
+
+ this.panelTemplate = panelTemplate;
+ this.eventTemplate = eventTemplate;
// -----------------------
// Object container definition
@@ -56,12 +71,30 @@ public class MultiFieldPanel<E> extends AbstractFieldPanel<List<E>> {
add(container);
// -----------------------
+ if (model.getObject().isEmpty()) {
+ container.add(getNoDataFragment(model, name));
+ } else {
+ container.addOrReplace(getDataFragment(model, name));
+ }
+ }
+
+ private Fragment getNoDataFragment(final IModel<List<E>> model, final String label) {
+ final Fragment fragment = new Fragment("content", "noDataFragment", MultiFieldPanel.this);
+ fragment.add(new Label("field-label", new ResourceModel(label, label)));
+ fragment.add(getPlusFragment(model, label));
+ return fragment;
+ }
+
+ private Fragment getDataFragment(final IModel<List<E>> model, final String label) {
+ final Fragment contentFragment = new Fragment("content", "dataFragment", MultiFieldPanel.this);
+
view = new ListView<E>("view", model) {
private static final long serialVersionUID = -9180479401817023838L;
@Override
protected void populateItem(final ListItem<E> item) {
+
final FieldPanel<E> fieldPanel = panelTemplate.clone();
if (eventTemplate) {
@@ -86,9 +119,9 @@ public class MultiFieldPanel<E> extends AbstractFieldPanel<List<E>> {
});
fieldPanel.setNewModel(item);
- item.add(fieldPanel);
+ item.add(fieldPanel.hideLabel().setRenderBodyOnly(true));
- AjaxLink<Void> minus = new IndicatingAjaxLink<Void>("drop") {
+ final AjaxLink<Void> minus = new IndicatingAjaxLink<Void>("drop") {
private static final long serialVersionUID = -7978723352517770644L;
@@ -97,6 +130,11 @@ public class MultiFieldPanel<E> extends AbstractFieldPanel<List<E>> {
//Drop current component
model.getObject().remove(item.getModelObject());
fieldPanel.getField().clearInput();
+
+ if (model.getObject().isEmpty()) {
+ container.addOrReplace(getNoDataFragment(model, label));
+ }
+
target.add(container);
if (eventTemplate) {
@@ -107,40 +145,45 @@ public class MultiFieldPanel<E> extends AbstractFieldPanel<List<E>> {
item.add(minus);
- if (model.getObject().size() <= 1) {
- minus.setVisible(false);
- minus.setEnabled(false);
+ final Fragment fragment;
+ if (item.getIndex() == model.getObject().size() - 1) {
+ fragment = getPlusFragment(model, label);
} else {
- minus.setVisible(true);
- minus.setEnabled(true);
+ fragment = new Fragment("panelPlus", "emptyFragment", MultiFieldPanel.this);
}
- final Fragment fragment;
- if (item.getIndex() == model.getObject().size() - 1) {
- final AjaxLink<Void> plus = new IndicatingAjaxLink<Void>("add") {
+ item.add(fragment);
+ }
+ };
- private static final long serialVersionUID = -7978723352517770644L;
+ contentFragment.add(view.setOutputMarkupId(true));
- @Override
- public void onClick(final AjaxRequestTarget target) {
- //Add current component
- model.getObject().add(null);
- target.add(container);
- }
- };
+ return contentFragment;
+ }
- fragment = new Fragment("panelPlus", "fragmentPlus", container);
+ private Fragment getPlusFragment(final IModel<List<E>> model, final String label) {
+ final AjaxLink<Void> plus = new IndicatingAjaxLink<Void>("add") {
- fragment.add(plus);
- } else {
- fragment = new Fragment("panelPlus", "emptyFragment", container);
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+ //Add current component
+ model.getObject().add(null);
+
+ if (model.getObject().size() == 1) {
+ container.addOrReplace(getDataFragment(model, label));
}
- item.add(fragment);
+
+ target.add(container);
}
};
- container.add(view.setOutputMarkupId(true));
- setOutputMarkupId(true);
+ final Fragment fragment = new Fragment("panelPlus", "fragmentPlus", MultiFieldPanel.this);
+ fragment.add(plus);
+ fragment.setRenderBodyOnly(true);
+
+ return fragment;
}
public ListView<E> getView() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/SpinnerFieldPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/SpinnerFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/SpinnerFieldPanel.java
index 4f71f81..4eb7270 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/SpinnerFieldPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/SpinnerFieldPanel.java
@@ -18,170 +18,72 @@
*/
package org.apache.syncope.client.console.wicket.markup.html.form;
-import java.io.Serializable;
-import java.util.List;
-import java.util.UUID;
-import org.apache.commons.lang3.math.NumberUtils;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.list.ListItem;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.spinner.Spinner;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.spinner.SpinnerConfig;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.springframework.util.StringUtils;
public class SpinnerFieldPanel<T extends Number> extends FieldPanel<T> {
private static final long serialVersionUID = 6413819574530703577L;
- private final String name;
+ private String name;
- private final Class<T> reference;
+ private Class<T> reference;
- private final IModel<T> model;
+ private IModel<T> model;
- private final T min;
+ private SpinnerConfig conf;
- private final T max;
-
- @SuppressWarnings("unchecked")
- public SpinnerFieldPanel(final String id, final String name, final Class<T> reference, final IModel<T> model,
+ public SpinnerFieldPanel(
+ final String id,
+ final String name,
+ final Class<T> reference,
+ final IModel<T> model,
final T min, final T max) {
+ super(id, name, model);
- super(id, model);
- this.name = name;
- this.reference = reference;
- this.model = model;
- this.min = min;
- this.max = max;
-
- String uuid = UUID.randomUUID().toString();
- field = new TextField<T>("spinnerField", model, reference);
- field.setMarkupId(uuid);
- add(field.setLabel(new Model<String>(name)));
+ final SpinnerConfig config = new SpinnerConfig();
+ config.withMax(max);
+ config.withMin(min);
- if (!isReadOnly()) {
- field.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+ init(name, reference, model, config);
+ }
- private static final long serialVersionUID = -1107858522700306810L;
+ public SpinnerFieldPanel(
+ final String id,
+ final String name,
+ final Class<T> reference,
+ final IModel<T> model) {
+ this(id, name, reference, model, new SpinnerConfig());
+ }
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- // nothing to do
- }
- });
- }
+ public SpinnerFieldPanel(
+ final String id,
+ final String name,
+ final Class<T> reference,
+ final IModel<T> model,
+ final SpinnerConfig conf) {
- final StringBuilder statements = new StringBuilder();
- statements.append("jQuery(function() {").
- append("var spinner = $('#").append(uuid).append("').spinner();").
- append("$('#").append(uuid).append("').spinner(").
- append("'option', 'stop', function(event, ui) { $(this).change(); });");
- if (this.min != null) {
- statements.
- append("$('#").append(uuid).append("').spinner(").
- append("'option', 'min', ").append(this.min).append(");");
- }
- if (this.max != null) {
- statements.
- append("$('#").append(uuid).append("').spinner(").
- append("'option', 'max', ").append(this.max).append(");");
- }
- statements.append("});");
- Label spinnerFieldJS = new Label("spinnerFieldJS", statements.toString());
- spinnerFieldJS.setEscapeModelStrings(false);
- add(spinnerFieldJS);
+ super(id, name, model);
+ init(name, reference, model, conf);
}
- @Override
- public SpinnerFieldPanel<T> setNewModel(final List<Serializable> list) {
- setNewModel(new Model<T>() {
-
- private static final long serialVersionUID = 527651414610325237L;
-
- @Override
- public T getObject() {
- T value = null;
-
- if (list != null && !list.isEmpty() && StringUtils.hasText(list.get(0).toString())) {
- value = reference.equals(Integer.class)
- ? reference.cast(NumberUtils.toInt(list.get(0).toString()))
- : reference.equals(Long.class)
- ? reference.cast(NumberUtils.toLong(list.get(0).toString()))
- : reference.equals(Short.class)
- ? reference.cast(NumberUtils.toShort(list.get(0).toString()))
- : reference.equals(Float.class)
- ? reference.cast(NumberUtils.toFloat(list.get(0).toString()))
- : reference.equals(byte.class)
- ? reference.cast(NumberUtils.toByte(list.get(0).toString()))
- : reference.cast(NumberUtils.toDouble(list.get(0).toString()));
- }
-
- return value;
- }
-
- @Override
- public void setObject(final T object) {
- list.clear();
- if (object != null) {
- list.add(object.toString());
- }
- }
- });
-
- return this;
- }
+ private void init(final String name, final Class<T> reference, final IModel<T> model, final SpinnerConfig conf) {
+ final Spinner<T> spinner = new Spinner<>("spinner", model, conf);
+ add(spinner);
- @SuppressWarnings("rawtypes")
- @Override
- public SpinnerFieldPanel<T> setNewModel(final ListItem item) {
- field.setModel(new Model<T>() {
-
- private static final long serialVersionUID = 6799404673615637845L;
-
- @Override
- public T getObject() {
- T number = null;
-
- final Object obj = item.getModelObject();
-
- if (obj != null && !obj.toString().isEmpty()) {
- if (obj instanceof String) {
- number = reference.equals(Integer.class)
- ? reference.cast(Integer.valueOf((String) obj))
- : reference.equals(Long.class)
- ? reference.cast(Long.valueOf((String) obj))
- : reference.equals(Short.class)
- ? reference.cast(Short.valueOf((String) obj))
- : reference.equals(Float.class)
- ? reference.cast(Float.valueOf((String) obj))
- : reference.equals(byte.class)
- ? reference.cast(Byte.valueOf((String) obj))
- : reference.cast(Double.valueOf((String) obj));
- } else if (obj instanceof Number) {
- // Don't parse anything
- number = reference.cast(obj);
- }
- }
-
- return number;
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public void setObject(final T object) {
- item.setModelObject(object == null ? null : object.toString());
- }
- });
-
- return this;
+ this.name = name;
+ this.model = model;
+ this.conf = conf;
+ this.reference = reference;
+
+ this.conf.withMouseWheel(true);
+ this.conf.withVerticalbuttons(true);
}
@Override
public SpinnerFieldPanel<T> clone() {
- SpinnerFieldPanel<T> panel = new SpinnerFieldPanel<T>(getId(), name, reference, model, min, max);
+ SpinnerFieldPanel<T> panel = new SpinnerFieldPanel<T>(getId(), name, reference, model, conf);
panel.setRequired(isRequired());
panel.setReadOnly(isReadOnly());
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java
index 3fef056..d7dddec 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java
@@ -85,8 +85,8 @@ public class ConnConfPropertyListView extends AltListView<ConnConfProperty> {
} else {
Class<?> propertySchemaClass;
try {
- propertySchemaClass =
- ClassUtils.forName(property.getSchema().getType(), ClassUtils.getDefaultClassLoader());
+ propertySchemaClass = ClassUtils.forName(property.getSchema().getType(), ClassUtils.
+ getDefaultClassLoader());
if (ClassUtils.isPrimitiveOrWrapper(propertySchemaClass)) {
propertySchemaClass = org.apache.commons.lang3.ClassUtils.primitiveToWrapper(propertySchemaClass);
}
@@ -128,7 +128,7 @@ public class ConnConfPropertyListView extends AltListView<ConnConfProperty> {
property.getValues().add(null);
}
- final MultiFieldPanel multiFieldPanel = new MultiFieldPanel("panel",
+ final MultiFieldPanel multiFieldPanel = new MultiFieldPanel("panel", "connPropAttrSchema",
new PropertyModel<List<String>>(property, "values"), field);
item.add(multiFieldPanel);
} else {
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
index fcdc8db..039f845 100644
--- a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
+++ b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
@@ -191,7 +191,10 @@ div.basepage-content{
}
.modal-content {
- overflow: hidden;
+ max-height: 600px;
+ max-width: 1240px;
+ overflow-x: hidden;
+ overflow-y: auto;
}
.modal-open .modal {
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html
index ce13f8f..ed5aae3 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Login.html
@@ -32,7 +32,6 @@ under the License.
<link href="webjars/ionicons/${ionicons.version}/css/ionicons.min.css" rel="stylesheet" type="text/css" />
<link href="css/login.css" rel="stylesheet" type="text/css" />
<link href="css/syncopeConsole.css" rel="stylesheet" type="text/css" />
- <script type="text/javascript" src="webjars/bootstrap-select/${bootstrap-select.version}/js/bootstrap-select.min.js"></script>
</head>
<body class="skin-green">
<div class="container">
@@ -42,23 +41,21 @@ under the License.
<div wicket:id="feedback" role="alert"/>
<form class="form-signin" wicket:id="login">
- <input type="text" wicket:id="username" id="username" class="form-control"
- wicket:message="placeholder:username" required="required" autofocus="autofocus" />
- <input type="password" wicket:id="password" id="password" class="form-control"
- wicket:message="placeholder:password" required="required" />
- <select wicket:id="language" id="language" class="selectpicker"/>
- <select wicket:id="domain" id="domain" class="selectpicker"/>
- <button wicket:id="submit" type="submit"
- class="btn btn-lg btn-primary btn-block btn-signin"><wicket:message key="submit"/></button>
+ <fieldset class="form-group input-group">
+ <input type="text" wicket:id="username" class="form-control"
+ wicket:message="placeholder:username" required="required" autofocus="autofocus" />
+ <input type="password" wicket:id="password" class="form-control"
+ wicket:message="placeholder:password" required="required" />
+
+ <select wicket:id="language"/>
+ <div />
+ <select wicket:id="domain"/>
+
+ <button wicket:id="submit" type="submit"
+ class="btn btn-lg btn-primary btn-block btn-signin"><wicket:message key="submit"/></button>
+ </fieldset>
</form>
</div>
</div>
-
- <script type="text/javascript">
- $('.selectpicker').selectpicker({
- width: '100%'
- });
- </script>
-
</body>
</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal.html
index a07a8dc..2580a91 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal.html
@@ -18,137 +18,130 @@ under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<wicket:extend>
- <form wicket:id="form">
- <div class="tabbable tabs-left">
- <ul class="nav nav-tabs">
- <li class="active"><a data-toggle="tab" href="#tabs-1"><span><wicket:message key="tab1"/></span></a></li>
- <li><a data-toggle="tab" href="#tabs-2"><span><wicket:message key="tab2"/></span></a></li>
- <li><a data-toggle="tab" href="#tabs-3"><span><wicket:message key="tab3"/></span></a></li>
- </ul>
- <div class="tab-content">
- <div id="tabs-1" class="tab-pane active">
- <div id="formtable">
- <div class="tablerow alt">
- <div class="tablecolumn_label short_dynamicsize">
- <label for="displayName"><wicket:message key="displayName"/></label>
- </div>
- <div class="tablecolumn_field short_dynamicsize">
- <span wicket:id="displayName">[displayName]</span>
- </div>
+ <div class="tabbable tabs-left">
+ <ul class="nav nav-tabs">
+ <li class="active"><a data-toggle="tab" href="#tabs-1"><span><wicket:message key="tab1"/></span></a></li>
+ <li><a data-toggle="tab" href="#tabs-2"><span><wicket:message key="tab2"/></span></a></li>
+ <li><a data-toggle="tab" href="#tabs-3"><span><wicket:message key="tab3"/></span></a></li>
+ </ul>
+ <div class="tab-content">
+ <div id="tabs-1" class="tab-pane active">
+ <div id="formtable">
+ <div class="tablerow alt">
+ <div class="tablecolumn_label short_dynamicsize">
+ <label for="displayName"><wicket:message key="displayName"/></label>
</div>
+ <div class="tablecolumn_field short_dynamicsize">
+ <span wicket:id="displayName">[displayName]</span>
+ </div>
+ </div>
- <div class="tablerow">
- <div class="tablecolumn_label short_dynamicsize">
- <label for="location"><wicket:message key="location"/></label>
- </div>
- <div class="tablecolumn_field short_dynamicsize">
- <span wicket:id="location">[location]</span>
- </div>
+ <div class="tablerow">
+ <div class="tablecolumn_label short_dynamicsize">
+ <label for="location"><wicket:message key="location"/></label>
+ </div>
+ <div class="tablecolumn_field short_dynamicsize">
+ <span wicket:id="location">[location]</span>
</div>
+ </div>
- <div class="tablerow alt">
- <div class="tablecolumn_label short_dynamicsize">
- <label for="name"><wicket:message key="name"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="connectorName">[connectorName]</span>
- </div>
+ <div class="tablerow alt">
+ <div class="tablecolumn_label short_dynamicsize">
+ <label for="name"><wicket:message key="name"/></label>
</div>
+ <div class="tablecolumn_field medium_dynamicsize">
+ <span wicket:id="connectorName">[connectorName]</span>
+ </div>
+ </div>
- <div class="tablerow">
- <div class="tablecolumn_label short_dynamicsize">
- <label for="version"><wicket:message key="version"/></label>
- </div>
- <div class="tablecolumn_field short_dynamicsize">
- <span wicket:id="version">[version]</span>
- </div>
+ <div class="tablerow">
+ <div class="tablecolumn_label short_dynamicsize">
+ <label for="version"><wicket:message key="version"/></label>
+ </div>
+ <div class="tablecolumn_field short_dynamicsize">
+ <span wicket:id="version">[version]</span>
</div>
</div>
- <div style="display: table; border: 1px solid #BBBBBB;">
- <div class="tablerow2 alt">
- <div class="tablecolumn2_label short_dynamicsize">
- <label for="connRequestTimeout"><wicket:message key="connRequestTimeout"/></label>
- </div>
- <div class="tablecolumn2_field short_dynamicsize">
- <span wicket:id="connRequestTimeout">[connRequestTimeout]</span>
- </div>
- <div class="tablecolumn2_label short_dynamicsize">
- <label for="poolMaxObjects"><wicket:message key="poolMaxObjects"/></label>
- </div>
- <div class="tablecolumn2_field short_dynamicsize">
- <span wicket:id="poolMaxObjects">[poolMaxObjects]</span>
- </div>
+ </div>
+ <div style="display: table; border: 1px solid #BBBBBB;">
+ <div class="tablerow2 alt">
+ <div class="tablecolumn2_label short_dynamicsize">
+ <label for="connRequestTimeout"><wicket:message key="connRequestTimeout"/></label>
</div>
- <div class="tablerow2">
- <div class="tablecolumn2_label short_dynamicsize">
- <label for="poolMinIdle"><wicket:message key="poolMinIdle"/></label>
- </div>
- <div class="tablecolumn2_field short_dynamicsize">
- <span wicket:id="poolMinIdle">[poolMinIdle]</span>
- </div>
- <div class="tablecolumn2_label short_dynamicsize">
- <label for="poolMaxIdle"><wicket:message key="poolMaxIdle"/></label>
- </div>
- <div class="tablecolumn2_field short_dynamicsize">
- <span wicket:id="poolMaxIdle">[poolMaxIdle]</span>
- </div>
+ <div class="tablecolumn2_field short_dynamicsize">
+ <span wicket:id="connRequestTimeout">[connRequestTimeout]</span>
</div>
- <div class="tablerow2 alt">
- <div class="tablecolumn2_label short_dynamicsize">
- <label for="poolMaxWait"><wicket:message key="poolMaxWait"/></label>
- </div>
- <div class="tablecolumn2_field short_dynamicsize">
- <span wicket:id="poolMaxWait">[poolMaxWait]</span>
- </div>
- <div class="tablecolumn2_label short_dynamicsize">
- <label for="poolMinEvictableIdleTime"><wicket:message key="poolMinEvictableIdleTime"/></label>
- </div>
- <div class="tablecolumn2_field short_dynamicsize">
- <span wicket:id="poolMinEvictableIdleTime">[poolMinEvictableIdleTime]</span>
- </div>
+ <div class="tablecolumn2_label short_dynamicsize">
+ <label for="poolMaxObjects"><wicket:message key="poolMaxObjects"/></label>
+ </div>
+ <div class="tablecolumn2_field short_dynamicsize">
+ <span wicket:id="poolMaxObjects">[poolMaxObjects]</span>
+ </div>
+ </div>
+ <div class="tablerow2">
+ <div class="tablecolumn2_label short_dynamicsize">
+ <label for="poolMinIdle"><wicket:message key="poolMinIdle"/></label>
+ </div>
+ <div class="tablecolumn2_field short_dynamicsize">
+ <span wicket:id="poolMinIdle">[poolMinIdle]</span>
+ </div>
+ <div class="tablecolumn2_label short_dynamicsize">
+ <label for="poolMaxIdle"><wicket:message key="poolMaxIdle"/></label>
+ </div>
+ <div class="tablecolumn2_field short_dynamicsize">
+ <span wicket:id="poolMaxIdle">[poolMaxIdle]</span>
+ </div>
+ </div>
+ <div class="tablerow2 alt">
+ <div class="tablecolumn2_label short_dynamicsize">
+ <label for="poolMaxWait"><wicket:message key="poolMaxWait"/></label>
+ </div>
+ <div class="tablecolumn2_field short_dynamicsize">
+ <span wicket:id="poolMaxWait">[poolMaxWait]</span>
+ </div>
+ <div class="tablecolumn2_label short_dynamicsize">
+ <label for="poolMinEvictableIdleTime"><wicket:message key="poolMinEvictableIdleTime"/></label>
+ </div>
+ <div class="tablecolumn2_field short_dynamicsize">
+ <span wicket:id="poolMinEvictableIdleTime">[poolMinEvictableIdleTime]</span>
</div>
</div>
</div>
- <div id="tabs-2" class="tab-pane">
- <div id="formtable">
- <span wicket:id="container">
- <div style="border-bottom: 10px">
- <div style="width: 40px; text-align: center; font-size: 7px">
- <label for="version"><wicket:message key="overridable"/></label>
- </div>
+ </div>
+ <div id="tabs-2" class="tab-pane">
+ <div id="formtable">
+ <span wicket:id="container">
+ <div style="border-bottom: 10px">
+ <div style="width: 40px; text-align: center; font-size: 7px">
+ <label for="version"><wicket:message key="overridable"/></label>
</div>
- <form wicket:id="connectorPropForm">
- <div class="tablerow connectorProp" wicket:id="connectorProperties">
- <div class="tablecolumn_check" style="width: 27px; text-align: center; margin-right: 10px">
- <span wicket:id="connPropAttrOverridable">[connPropAttrOverridable]</span>
- </div>
- <div class="tablecolumn_connPropAttr">
- <span wicket:id="connPropAttrSchema">[connPropAttrSchema]</span>
- </div>
- <div class="tablecolumn_field veryshort_fixedsize">
- <span wicket:id="panel">[panel]</span>
- </div>
+ </div>
+ <form wicket:id="connectorPropForm">
+ <div class="tablerow connectorProp" wicket:id="connectorProperties">
+ <div class="tablecolumn_check" style="width: 27px; text-align: center; margin-right: 10px">
+ <span wicket:id="connPropAttrOverridable">[connPropAttrOverridable]</span>
</div>
- <div>
- <a style="position: absolute; top: 2px; right:20px;" wicket:id="check">
- <img src="img/ping.png"width="30" height="30"
- alt="ping" title="title" wicket:message="title:check"/>
- </a>
+ <div class="tablecolumn_connPropAttr">
+ <span wicket:id="connPropAttrSchema">[connPropAttrSchema]</span>
</div>
- </form>
- </span>
- </div>
- </div>
- <div id="tabs-3" class="tab-pane">
- <span wicket:id="capabilitiesPalette"/>
+ <div class="tablecolumn_field veryshort_fixedsize">
+ <span wicket:id="panel">[panel]</span>
+ </div>
+ </div>
+ <div>
+ <a style="position: absolute; top: 2px; right:20px;" wicket:id="check">
+ <img src="img/ping.png"width="30" height="30"
+ alt="ping" title="title" wicket:message="title:check"/>
+ </a>
+ </div>
+ </form>
+ </span>
</div>
</div>
+ <div id="tabs-3" class="tab-pane">
+ <span wicket:id="capabilitiesPalette"/>
+ </div>
</div>
-
- <div class="modal-footer">
- <input type="submit" class="btn btn-primary" wicket:id="apply"/>
- <input type="button" class="btn btn-default" wicket:id="cancel"/>
- </div>
- </form>
+ </div>
</wicket:extend>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent.html
deleted file mode 100644
index e1fbeff..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
-
- <wicket:head>
- <script type="text/javascript">
- var notificationShownTimes = 0;
-
- function showNotification(componentId, messagecount) {
- notificationShownTimes++;
- timeout = 1700 + (messagecount * 500) + notificationShownTimes * 200;
- $('div#' + componentId).fadeTo('normal', 1.0);
- setTimeout("$('div#" + componentId + "').fadeOut('normal')", timeout);
- }
- </script>
-
- <style type="text/css">
- table.palette td.header {
- background:url("images/ui-bg_glass_75_e6e6e6_1x400.png")
- repeat-x scroll 50% 50% #E6E6E6 !important;
- }
- </style>
- </wicket:head>
-
- <wicket:panel>
- <div wicket:id="feedback"/>
- <wicket:child />
- </wicket:panel>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent.properties
deleted file mode 100644
index e696256..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-submit=Save
-add=Add
-remove=Delete
-cancel=Cancel
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent_it.properties
deleted file mode 100644
index 58e0aa0..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent_it.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-submit=Salva
-add=Aggiungi
-remove=Elimina
-cancel=Annulla
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent_pt_BR.properties
deleted file mode 100644
index 490fe30..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ModalContent_pt_BR.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-submit=Salvar
-add=Adicionar
-remove=Remover
-cancel=Cancelar
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceDetailsPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceDetailsPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceDetailsPanel.html
index 0b7ca7f..660449a 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceDetailsPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceDetailsPanel.html
@@ -16,122 +16,32 @@ KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div id="formtable">
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="name"><wicket:message key="name"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="name">[name]</span>
- </div>
- </div>
-
- <div class="tablerow">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="connector"><wicket:message key="connector"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="connector">[connector]</span>
- </div>
- </div>
-
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="enforceMandatoryCondition"><wicket:message key="enforceMandatoryCondition"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="enforceMandatoryCondition">[enforceMandatoryCondition]</span>
- </div>
- </div>
-
- <div class="tablerow">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="propagationPrimary"><wicket:message key="propagationPrimary"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="propagationPrimary">[propagationPrimary]</span>
- </div>
- </div>
-
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="propagationPriority"><wicket:message key="propagationPriority"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="propagationPriority">[propagationPriority]</span>
- </div>
- </div>
-
- <div class="tablerow">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="propagationMode"><wicket:message key="propagationMode"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="propagationMode">[propagationMode]</span>
- </div>
- </div>
-
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="randomPwdIfNotProvided"><wicket:message key="randomPwdIfNotProvided"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="randomPwdIfNotProvided">[randomPwdIfNotProvided]</span>
- </div>
- </div>
-
- <div class="tablerow">
- <div class="tablecolumn_label short_dynamicsize">
- <label for="propagationActionsClassNames"><wicket:message key="actionsClasses"/></label>
- </div>
- <span wicket:id="propagationActionsClassNames">
- <span wicket:id="actionsClasses">
- <select class="text ui-widget-content ui-corner-all" wicket:id="actionsClass"/>
- <a wicket:id="drop"><i class="fa fa-minus"></i></a>
- <a wicket:id="add"><i class="fa fa-plus"></i></a>
- <br/>
- </span>
- <a wicket:id="first"><i class="fa fa-plus"></i></a>
- </span>
- </div>
-
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="createTraceLevel"><wicket:message key="createTraceLevel"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="createTraceLevel">[createTraceLevel]</span>
- </div>
- </div>
-
- <div class="tablerow">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="updateTraceLevel"><wicket:message key="updateTraceLevel"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="updateTraceLevel">[updateTraceLevel]</span>
- </div>
- </div>
-
- <div class="tablerow alt">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="deleteTraceLevel"><wicket:message key="deleteTraceLevel"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="deleteTraceLevel">[deleteTraceLevel]</span>
- </div>
- </div>
-
- <div class="tablerow">
- <div class="tablecolumn_label medium_fixedsize">
- <label for="syncTraceLevel"><wicket:message key="syncTraceLevel"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="syncTraceLevel">[syncTraceLevel]</span>
- </div>
- </div>
- </div>
- </wicket:panel>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
+ <head>
+ <title>Resource details panel</title>
+ </head>
+ <body>
+ <wicket:panel>
+
+ <div wicket:id="container" class="summarize">
+ <span wicket:id="name">[name]</span>
+ <span wicket:id="connector">[connector]</span>
+ <span wicket:id="enforceMandatoryCondition">[enforceMandatoryCondition]</span>
+ <span wicket:id="propagationPrimary">[propagationPrimary]</span>
+ <span wicket:id="propagationPriority">[propagationPriority]</span>
+ <span wicket:id="propagationMode">[propagationMode]</span>
+ <span wicket:id="randomPwdIfNotProvided">[randomPwdIfNotProvided]</span>
+ <span wicket:id="actionsClasses">[actionsClasses]</span>
+ <span wicket:id="createTraceLevel">[createTraceLevel]</span>
+ <span wicket:id="updateTraceLevel">[updateTraceLevel]</span>
+ <span wicket:id="deleteTraceLevel">[deleteTraceLevel]</span>
+ <span wicket:id="syncTraceLevel">[syncTraceLevel]</span>
+ </div>
+
+ <span wicket:id="systeminformation">[System Information]</span>
+ </wicket:panel>
+ </body>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceModal.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceModal.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceModal.html
index 2d4f7b4..bd4cd4b 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceModal.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceModal.html
@@ -18,37 +18,6 @@ under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<wicket:extend>
- <form wicket:id="form">
- <div class="tabbable tabs-left">
- <ul class="nav nav-tabs">
- <li class="active"><a data-toggle="tab" href="#resource"><span><wicket:message key="resource"/></span></a></li>
- <li><a data-toggle="tab" href="#provisions"><span><wicket:message key="provisions"/></span></a></li>
- <li><a data-toggle="tab" href="#connectorProperties"><span><wicket:message key="connectorProperties"/></span></a></li>
- <li><a data-toggle="tab" href="#security"><span><wicket:message key="security"/></span></a></li>
- </ul>
- <div class="tab-content">
- <div id="resource" class="tab-pane active">
- <span wicket:id="details">[details]</span>
- <span wicket:id="systeminformation">[System Information]</span>
- </div>
- <div id="provisions" class="tab-pane">
- <span wicket:id="pcontainer">
- <span wicket:id="provisions">[provisions]</span>
- </span>
- </div>
- <div id="connectorProperties" class="tab-pane">
- <span wicket:id="connconf">[connconf]</span>
- </div>
- <div id="security" class="tab-pane">
- <span wicket:id="security">[security]</span>
- </div>
- </div>
- </div>
-
- <div class="modal-footer">
- <input type="submit" class="btn btn-primary" wicket:id="apply"/>
- <input type="button" class="btn btn-default" wicket:id="cancel"/>
- </div>
- </form>
+ <div wicket:id="tabbedPanel"></div>
</wicket:extend>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.html
index ddabe05..10cfb54 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceSecurityPanel.html
@@ -18,39 +18,16 @@ under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
- <div id="formtable" wicket:id="security">
- <div class="tablerow alt">
- <div class="tablecolumn_label short_dynamicsize">
- <label for="passwordPolicy"><wicket:message key="passwordPolicy"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="passwordPolicy">
- [panel for dynamic input type markup]
- </span>
- </div>
- </div>
-
- <div class="tablerow">
- <div class="tablecolumn_label short_dynamicsize">
- <label for="accountPolicy"><wicket:message key="accountPolicy"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="accountPolicy">
- [panel for dynamic input type markup]
- </span>
- </div>
- </div>
-
- <div class="tablerow alt">
- <div class="tablecolumn_label short_dynamicsize">
- <label for="syncPolicy"><wicket:message key="syncPolicy"/></label>
- </div>
- <div class="tablecolumn_field medium_dynamicsize">
- <span wicket:id="syncPolicy">
- [panel for dynamic input type markup]
- </span>
- </div>
- </div>
+ <div wicket:id="container" class="summarize">
+ <span wicket:id="passwordPolicy">
+ [panel for dynamic input type markup]
+ </span>
+ <span wicket:id="accountPolicy">
+ [panel for dynamic input type markup]
+ </span>
+ <span wicket:id="syncPolicy">
+ [panel for dynamic input type markup]
+ </span>
</div>
</wicket:panel>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.html
index fc7596f..ccb8d5e 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.html
@@ -16,6 +16,18 @@ KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
-<wicket:extend>
- <input type="checkbox" class="checkbox" wicket:id="checkboxField"/>
-</wicket:extend>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <head>
+ <title>Ajax checkbox panel</title>
+ </head>
+ <body>
+ <wicket:extend>
+ <div class="checkbox">
+ <label>
+ <input type="checkbox" wicket:id="checkboxField">
+ <label wicket:id="label">[LABEL]</label>
+ </label>
+ </div>
+ </wicket:extend>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.html
index 12d5bf2..e1ff5da 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.html
@@ -17,8 +17,15 @@ specific language governing permissions and limitations
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <head>
+ <title>Drop down choice</title>
+ </head>
<wicket:extend>
- <select class="ui-widget-content ui-corner-all medium_dynamicsize"
- wicket:id="dropDownChoiceField" />
+ <wicket:enclosure child="field-label">
+ <label wicket:id="field-label">[LABEL]</label><span wicket:id="required"/>
+ </wicket:enclosure>
+ <fieldset class="input-group">
+ <select wicket:id="dropDownChoiceField" />
+ </fieldset>
</wicket:extend>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.html
index 28d897d..f2b0cd3 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.html
@@ -17,10 +17,17 @@ specific language governing permissions and limitations
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:extend>
- <div class="form-group">
- <label wicket:id="label">[LABEL]</label><span wicket:id="required"/>
- <input type="text" class="form-control" wicket:id="textField"/>
- </div>
- </wicket:extend>
+ <head>
+ <title>Ajaxt text field panel</title>
+ </head>
+ <body>
+ <wicket:extend>
+ <wicket:enclosure child="field-label">
+ <label wicket:id="field-label">[LABEL]</label><span wicket:id="required"/>
+ </wicket:enclosure>
+ <fieldset class="form-group input-group">
+ <input type="text" class="form-control" wicket:id="textField"/>
+ </fieldset>
+ </wicket:extend>
+ </body>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.html
index e35205c..8dc7fd0 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.html
@@ -17,19 +17,48 @@ specific language governing permissions and limitations
under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <span wicket:id="multiValueContainer">
- <span wicket:id="view">
- <span wicket:id="panel">[form field]</span>
- <a wicket:id="drop"><img src="img/minus-icon.png" alt="remove icon" class="drop_button" /></a>
- <span wicket:id="panelPlus">[plus]</span>
- <br />
+ <head>
+ <title>Multivalue conatiner</title>
+ </head>
+ <body>
+ <wicket:panel>
+ <wicket:enclosure child="field-label">
+ <!--<label wicket:id="field-label">[LABEL]</label><span wicket:id="required"/>-->
+ <label wicket:id="field-label">[LABEL]</label>
+ </wicket:enclosure>
+ <span wicket:id="multiValueContainer">
+ <span wicket:id="content">[content]</span>
</span>
+
+ <wicket:fragment wicket:id="noDataFragment">
+ <div class="input-group form-group">
+ <div class="form-control" style="background-color:#EEE">
+ <label wicket:id="field-label">[LABEL]</label>
+ </div>
+ <span wicket:id="panelPlus">[plus]</span>
+ </div>
+ </wicket:fragment>
+
+ <wicket:fragment wicket:id="dataFragment">
+ <span wicket:id="view">
+ <div class="input-group form-group">
+ <span wicket:id="panel">[form field]</span>
+ <div class="input-group-addon">
+ <a wicket:id="drop"><i class="fa fa-minus"></i></a>
+ </div>
+ <span wicket:id="panelPlus">[plus]</span>
+ </div>
+ </span>
+ </wicket:fragment>
+
<wicket:fragment wicket:id="fragmentPlus">
- <a wicket:id="add"><i class="fa fa-plus"></i></a>
+ <div class="input-group-addon">
+ <a wicket:id="add"><i class="fa fa-plus"></i></a>
+ </div>
</wicket:fragment>
+
<wicket:fragment wicket:id="emptyFragment">
</wicket:fragment>
- </span>
- </wicket:panel>
+ </wicket:panel>
+ </body>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/SpinnerFieldPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/SpinnerFieldPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/SpinnerFieldPanel.html
index a6f0e51..c9ee0e1 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/SpinnerFieldPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/SpinnerFieldPanel.html
@@ -18,12 +18,9 @@ under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<wicket:extend>
- <script type="text/javascript" wicket:id="spinnerFieldJS">
- </script>
- <div style="display: inline-table;">
- <div style="display: table-cell;">
- <input wicket:id="spinnerField"/>
- </div>
- </div>
+ <wicket:enclosure child="field-label">
+ <label wicket:id="field-label">[LABEL]</label><span wicket:id="required"/>
+ </wicket:enclosure>
+ <input wicket:id="spinner"/>
</wicket:extend>
</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 685996f..2d5aa1a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -372,7 +372,8 @@ under the License.
<activiti-modeler.directory>${project.build.directory}/activiti-modeler</activiti-modeler.directory>
<jquery.version>2.1.4</jquery.version>
- <jquery-ui.version>1.11.4</jquery-ui.version>
+ <!-- upgrade jquery-ui version after wicket bootstrap upgrading -->
+ <jquery-ui.version>1.10.3</jquery-ui.version>
<jquery-cookie.version>1.4.1-1</jquery-cookie.version>
<bootstrap.version>3.3.5</bootstrap.version>
[2/2] syncope git commit: [SYNCOPE-156] fix for ajax component panels
Posted by fm...@apache.org.
[SYNCOPE-156] fix for ajax component panels
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/b2e93ca7
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/b2e93ca7
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/b2e93ca7
Branch: refs/heads/SYNCOPE-156
Commit: b2e93ca73f22b8a28fc6565d8c9da0fcd8ad9514
Parents: 767a30a
Author: fmartelli <fa...@gmail.com>
Authored: Wed Sep 23 15:10:10 2015 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Wed Sep 23 15:10:10 2015 +0200
----------------------------------------------------------------------
.../syncope/client/console/pages/Login.java | 5 +-
.../console/panels/AbstractModalPanel.java | 8 +-
.../console/panels/AbstractResourceModal.java | 9 +-
.../client/console/panels/ConnectorModal.java | 192 +++++++---------
.../console/panels/FailureMessageModal.java | 8 +-
.../client/console/panels/GroupModalPanel.java | 11 +-
.../console/panels/GroupSearchResultPanel.java | 5 +-
.../client/console/panels/ModalContent.java | 103 ---------
.../client/console/panels/RealmModalPanel.java | 7 +-
.../console/panels/ResourceConnConfPanel.java | 2 +-
.../console/panels/ResourceDetailsPanel.java | 131 +++--------
.../client/console/panels/ResourceModal.java | 209 +++++++++---------
.../console/panels/ResourceSecurityPanel.java | 16 +-
.../client/console/topology/Topology.java | 31 ++-
.../console/topology/TopologyNodePanel.java | 93 +++++---
.../markup/html/bootstrap/dialog/BaseModal.java | 35 ++-
.../markup/html/form/AbstractFieldPanel.java | 29 ++-
.../markup/html/form/AjaxCheckBoxPanel.java | 4 +
.../html/form/AjaxDropDownChoicePanel.java | 22 +-
.../markup/html/form/AjaxPalettePanel.java | 2 +-
.../markup/html/form/AjaxTextFieldPanel.java | 4 +-
.../form/CheckBoxMultipleChoiceFieldPanel.java | 2 +-
.../wicket/markup/html/form/FieldPanel.java | 17 +-
.../markup/html/form/MultiFieldPanel.java | 103 ++++++---
.../markup/html/form/SpinnerFieldPanel.java | 184 ++++------------
.../html/list/ConnConfPropertyListView.java | 6 +-
.../META-INF/resources/css/syncopeConsole.css | 5 +-
.../syncope/client/console/pages/Login.html | 29 ++-
.../client/console/panels/ConnectorModal.html | 219 +++++++++----------
.../client/console/panels/ModalContent.html | 45 ----
.../console/panels/ModalContent.properties | 20 --
.../console/panels/ModalContent_it.properties | 20 --
.../panels/ModalContent_pt_BR.properties | 20 --
.../console/panels/ResourceDetailsPanel.html | 146 +++----------
.../client/console/panels/ResourceModal.html | 33 +--
.../console/panels/ResourceSecurityPanel.html | 43 +---
.../markup/html/form/AjaxCheckBoxPanel.html | 18 +-
.../html/form/AjaxDropDownChoicePanel.html | 11 +-
.../markup/html/form/AjaxTextFieldPanel.html | 19 +-
.../markup/html/form/MultiFieldPanel.html | 49 ++++-
.../markup/html/form/SpinnerFieldPanel.html | 11 +-
pom.xml | 3 +-
42 files changed, 808 insertions(+), 1121 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
index 23fb25f..7e56e92 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.client.console.pages;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.select.BootstrapSelect;
import java.security.AccessControlException;
import java.util.Locale;
import org.apache.syncope.client.console.SyncopeConsoleApplication;
@@ -120,7 +121,7 @@ public class Login extends WebPage {
/**
* Inner class which implements (custom) Locale DropDownChoice component.
*/
- private class LocaleDropDown extends DropDownChoice<Locale> {
+ private class LocaleDropDown extends BootstrapSelect<Locale> {
private static final long serialVersionUID = 2349382679992357202L;
@@ -171,7 +172,7 @@ public class Login extends WebPage {
/**
* Inner class which implements (custom) Domain DropDownChoice component.
*/
- private class DomainDropDown extends DropDownChoice<String> {
+ private class DomainDropDown extends BootstrapSelect<String> {
private static final long serialVersionUID = -7401167913360133325L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
index 139283f..96d538b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
@@ -30,6 +30,7 @@ import org.apache.syncope.client.console.rest.UserRestClient;
import org.apache.syncope.client.console.rest.UserSelfRestClient;
import org.apache.syncope.client.console.wicket.markup.head.MetaHeaderItem;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.head.HeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
@@ -54,6 +55,10 @@ public class AbstractModalPanel extends Panel {
protected static final String APPLY = "apply";
+ protected static final String FORM = "form";
+
+ protected final PageReference pageRef;
+
protected final HeaderItem meta = new MetaHeaderItem("X-UA-Compatible", "IE=edge");
@SpringBean
@@ -86,8 +91,9 @@ public class AbstractModalPanel extends Panel {
@SpringBean
protected MIMETypesLoader mimeTypesInitializer;
- public AbstractModalPanel(final BaseModal<?> modal) {
+ public AbstractModalPanel(final BaseModal<?> modal, final PageReference pageRef) {
super(BaseModal.getContentId());
+ this.pageRef = pageRef;
this.modal = modal;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractResourceModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractResourceModal.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractResourceModal.java
index 1ed9050..fa18012 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractResourceModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractResourceModal.java
@@ -20,19 +20,20 @@ package org.apache.syncope.client.console.panels;
import java.io.Serializable;
import org.apache.syncope.client.console.topology.TopologyNode;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal.ModalEvent;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
/**
* Modal window with Resource form.
*/
-public abstract class AbstractResourceModal extends ModalContent {
+public abstract class AbstractResourceModal extends AbstractModalPanel {
private static final long serialVersionUID = 1734415311027284221L;
- public AbstractResourceModal(final ModalWindow window, final PageReference pageRef) {
- super(window, pageRef);
+ public AbstractResourceModal(final BaseModal<?> modal, final PageReference pageRef) {
+ super(modal, pageRef);
}
public static class CreateEvent extends ModalEvent {
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
index 4f5e8eb..8a1ecdb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorModal.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.client.console.panels;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -30,6 +31,7 @@ import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.pages.BasePage;
import org.apache.syncope.client.console.topology.Topology;
import org.apache.syncope.client.console.topology.TopologyNode;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
import org.apache.syncope.client.console.wicket.markup.html.form.CheckBoxMultipleChoiceFieldPanel;
@@ -42,16 +44,13 @@ import org.apache.syncope.common.lib.to.ConnPoolConfTO;
import org.apache.syncope.common.lib.types.ConnConfPropSchema;
import org.apache.syncope.common.lib.types.ConnConfProperty;
import org.apache.syncope.common.lib.types.ConnectorCapability;
-import org.apache.syncope.common.lib.types.Entitlement;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
import org.apache.wicket.event.Broadcast;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.DropDownChoice;
@@ -82,10 +81,16 @@ public class ConnectorModal extends AbstractResourceModal {
private final WebMarkupContainer propertiesContainer;
+ private final ListView<ConnConfProperty> connPropView;
+
+ private final ConnInstanceTO connInstanceTO;
+
public ConnectorModal(
- final ModalWindow window, final PageReference pageRef, final ConnInstanceTO connInstanceTO) {
+ final BaseModal<Serializable> modal, final PageReference pageRef, final ConnInstanceTO connInstanceTO) {
+
+ super(modal, pageRef);
- super(window, pageRef);
+ this.connInstanceTO = connInstanceTO;
this.add(new Label("new", connInstanceTO.getKey() == 0
? new ResourceModel("new")
@@ -122,15 +127,9 @@ public class ConnectorModal extends AbstractResourceModal {
bundleTO = getSelectedBundleTO(connInstanceTO);
properties = fillProperties(bundleTO, connInstanceTO);
- // form - first tab
- final Form<ConnInstanceTO> connectorForm = new Form<>(FORM);
- connectorForm.setModel(new CompoundPropertyModel<>(connInstanceTO));
- connectorForm.setOutputMarkupId(true);
- add(connectorForm);
-
propertiesContainer = new WebMarkupContainer("container");
propertiesContainer.setOutputMarkupId(true);
- connectorForm.add(propertiesContainer);
+ add(propertiesContainer);
final Form<ConnInstanceTO> connectorPropForm = new Form<>("connectorPropForm");
connectorPropForm.setModel(new CompoundPropertyModel<>(connInstanceTO));
@@ -141,7 +140,7 @@ public class ConnectorModal extends AbstractResourceModal {
"displayName", "display name", new PropertyModel<String>(connInstanceTO, "displayName"));
displayName.setOutputMarkupId(true);
displayName.addRequiredLabel();
- connectorForm.add(displayName);
+ add(displayName);
final AjaxDropDownChoicePanel<String> location = new AjaxDropDownChoicePanel<>("location", "location",
new Model<>(bundleTO == null ? connInstanceTO.getLocation() : bundleTO.getLocation()));
@@ -153,7 +152,7 @@ public class ConnectorModal extends AbstractResourceModal {
location.setOutputMarkupId(true);
location.setEnabled(connInstanceTO.getKey() == 0 && StringUtils.isBlank(connInstanceTO.getLocation()));
location.getField().setOutputMarkupId(true);
- connectorForm.add(location);
+ add(location);
final AjaxDropDownChoicePanel<String> connectorName = new AjaxDropDownChoicePanel<>("connectorName",
"connectorName",
@@ -170,7 +169,7 @@ public class ConnectorModal extends AbstractResourceModal {
connectorName.setOutputMarkupId(true);
connectorName.setEnabled(connInstanceTO.getKey() == 0);
connectorName.getField().setOutputMarkupId(true);
- connectorForm.add(connectorName);
+ add(connectorName);
final AjaxDropDownChoicePanel<String> version = new AjaxDropDownChoicePanel<>("version", "version",
new Model<>(bundleTO == null ? null : bundleTO.getVersion()));
@@ -185,13 +184,13 @@ public class ConnectorModal extends AbstractResourceModal {
version.setOutputMarkupId(true);
version.addRequiredLabel();
version.getField().setOutputMarkupId(true);
- connectorForm.add(version);
+ add(version);
final SpinnerFieldPanel<Integer> connRequestTimeout = new SpinnerFieldPanel<>("connRequestTimeout",
"connRequestTimeout", Integer.class,
new PropertyModel<Integer>(connInstanceTO, "connRequestTimeout"), 0, null);
connRequestTimeout.getField().add(new RangeValidator<>(0, Integer.MAX_VALUE));
- connectorForm.add(connRequestTimeout);
+ add(connRequestTimeout);
if (connInstanceTO.getPoolConf() == null) {
connInstanceTO.setPoolConf(new ConnPoolConfTO());
@@ -200,27 +199,27 @@ public class ConnectorModal extends AbstractResourceModal {
Integer.class,
new PropertyModel<Integer>(connInstanceTO.getPoolConf(), "maxObjects"), 0, null);
poolMaxObjects.getField().add(new RangeValidator<>(0, Integer.MAX_VALUE));
- connectorForm.add(poolMaxObjects);
+ add(poolMaxObjects);
final SpinnerFieldPanel<Integer> poolMinIdle = new SpinnerFieldPanel<>("poolMinIdle", "poolMinIdle",
Integer.class,
new PropertyModel<Integer>(connInstanceTO.getPoolConf(), "minIdle"), 0, null);
poolMinIdle.getField().add(new RangeValidator<>(0, Integer.MAX_VALUE));
- connectorForm.add(poolMinIdle);
+ add(poolMinIdle);
final SpinnerFieldPanel<Integer> poolMaxIdle = new SpinnerFieldPanel<>("poolMaxIdle", "poolMaxIdle",
Integer.class,
new PropertyModel<Integer>(connInstanceTO.getPoolConf(), "maxIdle"), 0, null);
poolMaxIdle.getField().add(new RangeValidator<>(0, Integer.MAX_VALUE));
- connectorForm.add(poolMaxIdle);
+ add(poolMaxIdle);
final SpinnerFieldPanel<Long> poolMaxWait = new SpinnerFieldPanel<>("poolMaxWait", "poolMaxWait", Long.class,
new PropertyModel<Long>(connInstanceTO.getPoolConf(), "maxWait"), 0L, null);
poolMaxWait.getField().add(new RangeValidator<>(0L, Long.MAX_VALUE));
- connectorForm.add(poolMaxWait);
+ add(poolMaxWait);
final SpinnerFieldPanel<Long> poolMinEvictableIdleTime = new SpinnerFieldPanel<>("poolMinEvictableIdleTime",
"poolMinEvictableIdleTime", Long.class,
new PropertyModel<Long>(connInstanceTO.getPoolConf(), "minEvictableIdleTimeMillis"),
0L, null);
poolMinEvictableIdleTime.getField().add(new RangeValidator<>(0L, Long.MAX_VALUE));
- connectorForm.add(poolMinEvictableIdleTime);
+ add(poolMinEvictableIdleTime);
// form - first tab - onchange()
location.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
@@ -284,7 +283,7 @@ public class ConnectorModal extends AbstractResourceModal {
});
// form - second tab (properties)
- final ListView<ConnConfProperty> connPropView = new ConnConfPropertyListView("connectorProperties",
+ connPropView = new ConnConfPropertyListView("connectorProperties",
new PropertyModel<List<ConnConfProperty>>(this, "properties"),
true, connInstanceTO.getConfiguration());
connPropView.setOutputMarkupId(true);
@@ -309,14 +308,14 @@ public class ConnectorModal extends AbstractResourceModal {
error(getString("error_connection"));
}
- feedbackPanel.refresh(target);
+ modal.getFeedbackPanel().refresh(target);
}
};
connectorPropForm.add(check);
// form - third tab (capabilities)
- final IModel<List<ConnectorCapability>> capabilities =
- new LoadableDetachableModel<List<ConnectorCapability>>() {
+ final IModel<List<ConnectorCapability>> capabilities
+ = new LoadableDetachableModel<List<ConnectorCapability>>() {
private static final long serialVersionUID = 5275935387613157437L;
@@ -325,8 +324,8 @@ public class ConnectorModal extends AbstractResourceModal {
return Arrays.asList(ConnectorCapability.values());
}
};
- CheckBoxMultipleChoiceFieldPanel<ConnectorCapability> capabilitiesPalette =
- new CheckBoxMultipleChoiceFieldPanel<>(
+ CheckBoxMultipleChoiceFieldPanel<ConnectorCapability> capabilitiesPalette
+ = new CheckBoxMultipleChoiceFieldPanel<>(
"capabilitiesPalette",
new PropertyModel<List<ConnectorCapability>>(this, "selectedCapabilities"), capabilities);
@@ -339,86 +338,7 @@ public class ConnectorModal extends AbstractResourceModal {
}
});
- connectorForm.add(capabilitiesPalette);
-
- // form - submit / cancel buttons
- final AjaxButton submit = new IndicatingAjaxButton(APPLY, new Model<>(getString(SUBMIT))) {
-
- private static final long serialVersionUID = -958724007591692537L;
-
- @Override
- protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- final ConnInstanceTO conn = (ConnInstanceTO) form.getModelObject();
-
- conn.setConnectorName(bundleTO.getConnectorName());
- conn.setBundleName(bundleTO.getBundleName());
- conn.setVersion(bundleTO.getVersion());
- conn.getConfiguration().clear();
- conn.getConfiguration().addAll(connPropView.getModelObject());
-
- // Set the model object's capabilities to capabilitiesPalette's converted Set
- conn.getCapabilities().clear();
- conn.getCapabilities().addAll(selectedCapabilities.isEmpty()
- ? EnumSet.noneOf(ConnectorCapability.class)
- : EnumSet.copyOf(selectedCapabilities));
-
- // Reset pool configuration if all fields are null
- if (conn.getPoolConf() != null
- && conn.getPoolConf().getMaxIdle() == null
- && conn.getPoolConf().getMaxObjects() == null
- && conn.getPoolConf().getMaxWait() == null
- && conn.getPoolConf().getMinEvictableIdleTimeMillis() == null
- && conn.getPoolConf().getMinIdle() == null) {
-
- conn.setPoolConf(null);
- }
-
- try {
- if (connInstanceTO.getKey() == 0) {
- connectorRestClient.create(conn);
- send(pageRef.getPage(), Broadcast.BREADTH, new CreateEvent(
- conn.getKey(),
- conn.getDisplayName(),
- TopologyNode.Kind.CONNECTOR,
- conn.getLocation().startsWith(Topology.CONNECTOR_SERVER_LOCATION_PREFIX)
- ? conn.getLocation() : Topology.ROOT_NAME,
- target));
- } else {
- connectorRestClient.update(conn);
- }
-
- ((BasePage) pageRef.getPage()).setModalResult(true);
- window.close(target);
- } catch (SyncopeClientException e) {
- error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
- ((BasePage) pageRef.getPage()).setModalResult(false);
- LOG.error("While creating or updating connector {}", conn, e);
- }
- }
-
- @Override
- protected void onError(final AjaxRequestTarget target, final Form<?> form) {
- feedbackPanel.refresh(target);
- }
- };
- String entitlements = connInstanceTO.getKey() == 0
- ? Entitlement.CONNECTOR_CREATE : Entitlement.CONNECTOR_UPDATE;
-
- MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE, entitlements);
- connectorForm.add(submit);
-
- final IndicatingAjaxButton cancel = new IndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL)) {
-
- private static final long serialVersionUID = -958724007591692537L;
-
- @Override
- protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- window.close(target);
- }
- };
- cancel.setDefaultFormProcessing(false);
- connectorForm.add(cancel);
+ add(capabilitiesPalette);
}
private ConnBundleTO getSelectedBundleTO(final ConnInstanceTO connInstanceTO) {
@@ -482,4 +402,60 @@ public class ConnectorModal extends AbstractResourceModal {
public List<ConnConfProperty> getProperties() {
return properties;
}
+
+ @Override
+ public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ final ConnInstanceTO conn = (ConnInstanceTO) form.getModelObject();
+
+ conn.setConnectorName(bundleTO.getConnectorName());
+ conn.setBundleName(bundleTO.getBundleName());
+ conn.setVersion(bundleTO.getVersion());
+ conn.getConfiguration().clear();
+ conn.getConfiguration().addAll(connPropView.getModelObject());
+
+ // Set the model object's capabilities to capabilitiesPalette's converted Set
+ conn.getCapabilities().clear();
+ conn.getCapabilities().addAll(selectedCapabilities.isEmpty()
+ ? EnumSet.noneOf(ConnectorCapability.class)
+ : EnumSet.copyOf(selectedCapabilities));
+
+ // Reset pool configuration if all fields are null
+ if (conn.getPoolConf() != null
+ && conn.getPoolConf().getMaxIdle() == null
+ && conn.getPoolConf().getMaxObjects() == null
+ && conn.getPoolConf().getMaxWait() == null
+ && conn.getPoolConf().getMinEvictableIdleTimeMillis() == null
+ && conn.getPoolConf().getMinIdle() == null) {
+
+ conn.setPoolConf(null);
+ }
+
+ try {
+ if (connInstanceTO.getKey() == 0) {
+ connectorRestClient.create(conn);
+ send(pageRef.getPage(), Broadcast.BREADTH, new CreateEvent(
+ conn.getKey(),
+ conn.getDisplayName(),
+ TopologyNode.Kind.CONNECTOR,
+ conn.getLocation().startsWith(Topology.CONNECTOR_SERVER_LOCATION_PREFIX)
+ ? conn.getLocation() : Topology.ROOT_NAME,
+ target));
+ } else {
+ connectorRestClient.update(conn);
+ }
+
+ ((BasePage) pageRef.getPage()).setModalResult(true);
+ modal.close(target);
+ } catch (SyncopeClientException e) {
+ error(getString(Constants.ERROR) + ": " + e.getMessage());
+ modal.getFeedbackPanel().refresh(target);
+ ((BasePage) pageRef.getPage()).setModalResult(false);
+ LOG.error("While creating or updating connector {}", conn, e);
+ }
+ }
+
+ @Override
+ public void onError(final AjaxRequestTarget target, final Form<?> form) {
+ modal.getFeedbackPanel().refresh(target);
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/FailureMessageModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/FailureMessageModal.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/FailureMessageModal.java
index 38edbf0..f23cecb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/FailureMessageModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/FailureMessageModal.java
@@ -18,17 +18,17 @@
*/
package org.apache.syncope.client.console.panels;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.wicket.PageReference;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;
-public class FailureMessageModal extends ModalContent {
+public class FailureMessageModal extends AbstractModalPanel {
private static final long serialVersionUID = 9216117990503199258L;
- public FailureMessageModal(final PageReference pageRef, final ModalWindow window, final String failureMessage) {
- super(window, pageRef);
+ public FailureMessageModal(final BaseModal<?> modal, final PageReference pageRef, final String failureMessage) {
+ super(modal, pageRef);
final Label executionFailureMessage;
if (!failureMessage.isEmpty()) {
executionFailureMessage = new Label("failureMessage", new Model<String>(failureMessage));
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupModalPanel.java
index 8c0e0ae..2e4caf5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupModalPanel.java
@@ -23,6 +23,7 @@ import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.commons.Mode;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
@@ -46,14 +47,16 @@ public class GroupModalPanel extends AbstractModalPanel {
protected GroupTO originalGroupTO;
- public GroupModalPanel(final BaseModal<?> modal, final GroupTO groupTO) {
- this(modal, groupTO, Mode.ADMIN);
+ public GroupModalPanel(
+ final BaseModal<?> modal, final PageReference pageRef, final GroupTO groupTO) {
+ this(modal, pageRef, groupTO, Mode.ADMIN);
}
@SuppressWarnings({ "unchecked", "rawtypes" })
- public GroupModalPanel(final BaseModal<?> modal, final GroupTO groupTO, final Mode mode) {
+ public GroupModalPanel(
+ final BaseModal<?> modal, final PageReference pageRef, final GroupTO groupTO, final Mode mode) {
- super(modal);
+ super(modal, pageRef);
this.mode = mode;
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
index ffc232a..60fb1b7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupSearchResultPanel.java
@@ -55,7 +55,7 @@ public class GroupSearchResultPanel extends AnySearchResultPanel {
private final String entitlement = "GROUP_READ";
- private final BaseModal<AbstractModalPanel> editModal;
+ private final BaseModal<?> editModal;
public GroupSearchResultPanel(final String type, final String parentId,
final boolean filtered, final String fiql, final PageReference callerRef,
@@ -125,7 +125,8 @@ public class GroupSearchResultPanel extends AnySearchResultPanel {
@Override
public void onClick(final AjaxRequestTarget target, final AnyTO anyTO) {
- editModal.addOrReplace(new GroupModalPanel(editModal, (GroupTO) model.getObject()));
+ editModal.addOrReplace(new GroupModalPanel(
+ editModal, getPage().getPageReference(), GroupTO.class.cast(model.getObject())));
target.add(editModal);
editModal.show(target);
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/ModalContent.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ModalContent.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ModalContent.java
deleted file mode 100644
index 6a123c0..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ModalContent.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.console.panels;
-
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.rest.ConnectorRestClient;
-import org.apache.syncope.client.console.rest.ResourceRestClient;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Modal window with Resource form.
- */
-public class ModalContent extends Panel {
-
- private static final long serialVersionUID = 8611724965544132636L;
-
- protected static final Logger LOG = LoggerFactory.getLogger(ModalContent.class);
-
- protected static final String CANCEL = "cancel";
-
- protected static final String SUBMIT = "submit";
-
- protected static final String APPLY = "apply";
-
- protected static final String FORM = "form";
-
- @SpringBean
- protected ResourceRestClient resourceRestClient;
-
- @SpringBean
- protected ConnectorRestClient connectorRestClient;
-
- protected NotificationPanel feedbackPanel;
-
- protected final PageReference pageRef;
-
- protected final ModalWindow window;
-
- public ModalContent(final ModalWindow window, final PageReference pageRef) {
- super(window.getContentId());
- this.pageRef = pageRef;
- this.window = window;
-
- feedbackPanel = new NotificationPanel(Constants.FEEDBACK);
- feedbackPanel.setOutputMarkupId(true);
- add(feedbackPanel);
- }
-
- public NotificationPanel getFeedbackPanel() {
- return feedbackPanel;
- }
-
- /**
- * Generic modal event.
- */
- public static class ModalEvent {
-
- /**
- * Request target.
- */
- private final AjaxRequestTarget target;
-
- /**
- * Constructor.
- *
- * @param target request target.
- */
- public ModalEvent(final AjaxRequestTarget target) {
- this.target = target;
- }
-
- /**
- * Target getter.
- *
- * @return request target.
- */
- public AjaxRequestTarget getTarget() {
- return target;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmModalPanel.java
index 7e8f415..9ea299f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmModalPanel.java
@@ -39,8 +39,6 @@ public class RealmModalPanel extends AbstractModalPanel {
protected RealmTO realmTO;
- private final PageReference pageRef;
-
private boolean newRealm = false;
@SpringBean
@@ -65,10 +63,9 @@ public class RealmModalPanel extends AbstractModalPanel {
final String entitlement,
final boolean newRealm) {
- super(modal);
- this.newRealm = newRealm;
+ super(modal, pageRef);
- this.pageRef = pageRef;
+ this.newRealm = newRealm;
this.realmTO = realmTO;
this.parentPath = parentPath;
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceConnConfPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceConnConfPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceConnConfPanel.java
index 1b536c4..0101895 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceConnConfPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceConnConfPanel.java
@@ -24,9 +24,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.syncope.client.console.pages.BaseModalPage;
-import org.apache.syncope.client.console.panels.ModalContent.ModalEvent;
import org.apache.syncope.client.console.panels.ResourceDetailsPanel.DetailsModEvent;
import org.apache.syncope.client.console.rest.ConnectorRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal.ModalEvent;
import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel.MultiValueSelectorEvent;
import org.apache.syncope.client.console.wicket.markup.html.list.ConnConfPropertyListView;
import org.apache.syncope.common.lib.to.ResourceTO;
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDetailsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDetailsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDetailsPanel.java
index d556346..ba5388d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDetailsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDetailsPanel.java
@@ -20,13 +20,13 @@ package org.apache.syncope.client.console.panels;
import java.util.Arrays;
import java.util.List;
-import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.panels.ModalContent.ModalEvent;
import org.apache.syncope.client.console.rest.ConnectorRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal.ModalEvent;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
import org.apache.syncope.client.console.wicket.markup.html.form.SpinnerFieldPanel;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.ResourceTO;
@@ -34,14 +34,9 @@ import org.apache.syncope.common.lib.types.PropagationMode;
import org.apache.syncope.common.lib.types.TraceLevel;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
-import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
@@ -72,139 +67,83 @@ public class ResourceDetailsPanel extends Panel {
super(id);
setOutputMarkupId(true);
+ final WebMarkupContainer container = new WebMarkupContainer("container");
+ container.setOutputMarkupId(true);
+ container.setRenderBodyOnly(true);
+ add(container);
+
final AjaxTextFieldPanel resourceName = new AjaxTextFieldPanel("name", new ResourceModel("name", "name").
getObject(), new PropertyModel<String>(resourceTO, "key"));
resourceName.setEnabled(createFlag);
resourceName.addRequiredLabel();
- add(resourceName);
+ container.add(resourceName);
final AjaxCheckBoxPanel enforceMandatoryCondition = new AjaxCheckBoxPanel("enforceMandatoryCondition",
new ResourceModel("enforceMandatoryCondition", "enforceMandatoryCondition").getObject(),
new PropertyModel<Boolean>(resourceTO, "enforceMandatoryCondition"));
- add(enforceMandatoryCondition);
+ container.add(enforceMandatoryCondition);
final AjaxCheckBoxPanel propagationPrimary = new AjaxCheckBoxPanel("propagationPrimary", new ResourceModel(
"propagationPrimary", "propagationPrimary").getObject(), new PropertyModel<Boolean>(resourceTO,
"propagationPrimary"));
- add(propagationPrimary);
+ container.add(propagationPrimary);
- final SpinnerFieldPanel<Integer> propagationPriority = new SpinnerFieldPanel<>("propagationPriority",
- "propagationPriority", Integer.class,
- new PropertyModel<Integer>(resourceTO, "propagationPriority"), null, null);
- add(propagationPriority);
+ final SpinnerFieldPanel<Integer> propagationPriority = new SpinnerFieldPanel<>(
+ "propagationPriority",
+ "propagationPriority",
+ Integer.class,
+ new PropertyModel<Integer>(resourceTO, "propagationPriority"));
+ container.add(propagationPriority);
final AjaxDropDownChoicePanel<PropagationMode> propagationMode = new AjaxDropDownChoicePanel<>(
"propagationMode", new ResourceModel("propagationMode", "propagationMode").getObject(),
new PropertyModel<PropagationMode>(resourceTO, "propagationMode"));
propagationMode.setChoices(Arrays.asList(PropagationMode.values()));
- add(propagationMode);
+ container.add(propagationMode);
final AjaxCheckBoxPanel randomPwdIfNotProvided = new AjaxCheckBoxPanel("randomPwdIfNotProvided",
new ResourceModel("randomPwdIfNotProvided", "randomPwdIfNotProvided").getObject(),
new PropertyModel<Boolean>(resourceTO, "randomPwdIfNotProvided"));
- add(randomPwdIfNotProvided);
-
- final WebMarkupContainer propagationActionsClassNames = new WebMarkupContainer("propagationActionsClassNames");
- propagationActionsClassNames.setOutputMarkupId(true);
- add(propagationActionsClassNames);
+ container.add(randomPwdIfNotProvided);
- final AjaxLink<Void> first = new IndicatingAjaxLink<Void>("first") {
+ final AjaxDropDownChoicePanel<String> template
+ = new AjaxDropDownChoicePanel<>("panel", "panel", new Model<String>());
+ template.setChoices(actionClassNames);
+ template.setNullValid(true);
+ template.setRequired(true);
- private static final long serialVersionUID = -7978723352517770644L;
+ final MultiFieldPanel<String> actions = new MultiFieldPanel<>(
+ "actionsClasses",
+ "actionsClasses",
+ new PropertyModel<List<String>>(resourceTO, "propagationActionsClassNames"),
+ template);
- @Override
- public void onClick(final AjaxRequestTarget target) {
- resourceTO.getPropagationActionsClassNames().add(StringUtils.EMPTY);
- setVisible(false);
- target.add(propagationActionsClassNames);
- }
- };
- first.setOutputMarkupPlaceholderTag(true);
- first.setVisible(resourceTO.getPropagationActionsClassNames().isEmpty());
- propagationActionsClassNames.add(first);
-
- final ListView<String> actionsClasses = new ListView<String>("actionsClasses",
- new PropertyModel<List<String>>(resourceTO, "propagationActionsClassNames")) {
-
- private static final long serialVersionUID = 9101744072914090143L;
-
- @Override
- protected void populateItem(final ListItem<String> item) {
- final String className = item.getModelObject();
-
- final DropDownChoice<String> actionsClass = new DropDownChoice<>(
- "actionsClass", new Model<>(className), actionClassNames);
- actionsClass.setNullValid(true);
- actionsClass.setRequired(true);
- actionsClass.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_BLUR) {
-
- private static final long serialVersionUID = -1107858522700306810L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- resourceTO.getPropagationActionsClassNames().
- set(item.getIndex(), actionsClass.getModelObject());
- }
- });
- actionsClass.setRequired(true);
- actionsClass.setOutputMarkupId(true);
- actionsClass.setRequired(true);
- item.add(actionsClass);
-
- final AjaxLink<Void> minus = new IndicatingAjaxLink<Void>("drop") {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- public void onClick(final AjaxRequestTarget target) {
- resourceTO.getPropagationActionsClassNames().remove(className);
- first.setVisible(resourceTO.getPropagationActionsClassNames().isEmpty());
- target.add(propagationActionsClassNames);
- }
- };
- item.add(minus);
-
- final AjaxLink<Void> plus = new IndicatingAjaxLink<Void>("add") {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- public void onClick(final AjaxRequestTarget target) {
- resourceTO.getPropagationActionsClassNames().add(StringUtils.EMPTY);
- target.add(propagationActionsClassNames);
- }
- };
- plus.setOutputMarkupPlaceholderTag(true);
- plus.setVisible(item.getIndex() == resourceTO.getPropagationActionsClassNames().size() - 1);
- item.add(plus);
- }
- };
- propagationActionsClassNames.add(actionsClasses);
+ container.add(actions);
final AjaxDropDownChoicePanel<TraceLevel> createTraceLevel = new AjaxDropDownChoicePanel<>(
"createTraceLevel", new ResourceModel("createTraceLevel", "createTraceLevel").getObject(),
new PropertyModel<TraceLevel>(resourceTO, "createTraceLevel"));
createTraceLevel.setChoices(Arrays.asList(TraceLevel.values()));
- add(createTraceLevel);
+ container.add(createTraceLevel);
final AjaxDropDownChoicePanel<TraceLevel> updateTraceLevel = new AjaxDropDownChoicePanel<>(
"updateTraceLevel", new ResourceModel("updateTraceLevel", "updateTraceLevel").getObject(),
new PropertyModel<TraceLevel>(resourceTO, "updateTraceLevel"));
updateTraceLevel.setChoices(Arrays.asList(TraceLevel.values()));
- add(updateTraceLevel);
+ container.add(updateTraceLevel);
final AjaxDropDownChoicePanel<TraceLevel> deleteTraceLevel = new AjaxDropDownChoicePanel<>(
"deleteTraceLevel", new ResourceModel("deleteTraceLevel", "deleteTraceLevel").getObject(),
new PropertyModel<TraceLevel>(resourceTO, "deleteTraceLevel"));
deleteTraceLevel.setChoices(Arrays.asList(TraceLevel.values()));
- add(deleteTraceLevel);
+ container.add(deleteTraceLevel);
final AjaxDropDownChoicePanel<TraceLevel> syncTraceLevel = new AjaxDropDownChoicePanel<>(
"syncTraceLevel", new ResourceModel("syncTraceLevel", "syncTraceLevel").getObject(),
new PropertyModel<TraceLevel>(resourceTO, "syncTraceLevel"));
syncTraceLevel.setChoices(Arrays.asList(TraceLevel.values()));
- add(syncTraceLevel);
+ container.add(syncTraceLevel);
final IModel<List<ConnInstanceTO>> connectors = new LoadableDetachableModel<List<ConnInstanceTO>>() {
@@ -257,7 +196,9 @@ public class ResourceDetailsPanel extends Panel {
}
});
- add(conn);
+ container.add(conn);
+
+ add(new AnnotatedBeanPanel("systeminformation", resourceTO));
}
/**
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
index 54b22b8..7b84312 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceModal.java
@@ -18,14 +18,20 @@
*/
package org.apache.syncope.client.console.panels;
+import static org.apache.wicket.Component.ENABLE;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.lang3.SerializationUtils;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.pages.AbstractBasePage;
import org.apache.syncope.client.console.topology.TopologyNode;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.wizards.AjaxWizard;
import org.apache.syncope.client.console.wizards.provision.ProvisionWizardBuilder;
@@ -35,14 +41,12 @@ import org.apache.syncope.common.lib.to.ResourceTO;
import org.apache.syncope.common.lib.types.Entitlement;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.ResourceModel;
/**
@@ -52,33 +56,39 @@ public class ResourceModal extends AbstractResourceModal {
private static final long serialVersionUID = 1734415311027284221L;
- @SuppressWarnings({ "unchecked", "rawtypes" })
+ private final boolean createFlag;
+
public ResourceModal(
- final ModalWindow window,
+ final BaseModal<Serializable> modal,
final PageReference pageRef,
final ResourceTO resourceTO,
final boolean createFlag) {
- super(window, pageRef);
+ super(modal, pageRef);
+
+ this.createFlag = createFlag;
- final Form<ResourceTO> form = new Form<>(FORM);
- form.setModel(new CompoundPropertyModel<>(resourceTO));
+ final List<ITab> tabs = new ArrayList<>();
+ add(new AjaxBootstrapTabbedPanel<>("tabbedPanel", tabs));
//--------------------------------
// Resource details panel
//--------------------------------
- form.add(new ResourceDetailsPanel("details", resourceTO,
- resourceRestClient.getPropagationActionsClasses(), createFlag));
+ tabs.add(new AbstractTab(new ResourceModel("resource", "resource")) {
- form.add(new AnnotatedBeanPanel("systeminformation", resourceTO));
+ private static final long serialVersionUID = -5861786415855103549L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ return new ResourceDetailsPanel(panelId, resourceTO,
+ resourceRestClient.getPropagationActionsClasses(), createFlag);
+ }
+ });
//--------------------------------
//--------------------------------
// Resource provision panels
//--------------------------------
- final WebMarkupContainer provisions = new WebMarkupContainer("pcontainer");
- form.add(provisions.setOutputMarkupId(true));
-
final ListViewPanel.Builder<ProvisionTO> builder = ListViewPanel.builder(ProvisionTO.class, pageRef);
builder.setItems(resourceTO.getProvisions());
builder.includes("anyType", "objectClass");
@@ -133,114 +143,109 @@ public class ResourceModal extends AbstractResourceModal {
}, ActionLink.ActionType.DELETE, Entitlement.RESOURCE_DELETE);
builder.addNewItemPanelBuilder(new ProvisionWizardBuilder("wizard", resourceTO, pageRef));
- builder.addNotificationPanel(feedbackPanel);
+ builder.addNotificationPanel(modal.getFeedbackPanel());
+
+ tabs.add(new AbstractTab(new ResourceModel("provisions", "provisions")) {
- provisions.add(builder.build("provisions"));
+ private static final long serialVersionUID = -5861786415855103549L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ return builder.build(panelId);
+ }
+ });
//--------------------------------
//--------------------------------
// Resource connector configuration panel
//--------------------------------
- ResourceConnConfPanel resourceConnConfPanel = new ResourceConnConfPanel("connconf", resourceTO, createFlag);
- MetaDataRoleAuthorizationStrategy.authorize(resourceConnConfPanel, ENABLE, Entitlement.CONNECTOR_READ);
- form.add(resourceConnConfPanel);
+ tabs.add(new AbstractTab(new ResourceModel("connectorProperties", "connectorProperties")) {
+
+ private static final long serialVersionUID = -5861786415855103549L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ final ResourceConnConfPanel panel = new ResourceConnConfPanel(panelId, resourceTO, createFlag);
+ MetaDataRoleAuthorizationStrategy.authorize(panel, ENABLE, Entitlement.CONNECTOR_READ);
+ return panel;
+ }
+ });
//--------------------------------
//--------------------------------
// Resource security panel
//--------------------------------
- form.add(new ResourceSecurityPanel("security", resourceTO));
- //--------------------------------
-
- AjaxButton submit = new IndicatingAjaxButton(APPLY, new ResourceModel(SUBMIT, SUBMIT)) {
+ tabs.add(new AbstractTab(new ResourceModel("security", "security")) {
- private static final long serialVersionUID = -958724007591692537L;
+ private static final long serialVersionUID = -5861786415855103549L;
@Override
- protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- final ResourceTO resourceTO = (ResourceTO) form.getDefaultModelObject();
-
- boolean connObjectKeyError = false;
-
- final Collection<ProvisionTO> provisions = new ArrayList<>(resourceTO.getProvisions());
-
- for (ProvisionTO provision : provisions) {
- if (provision != null) {
- if (provision.getMapping() == null || provision.getMapping().getItems().isEmpty()) {
- resourceTO.getProvisions().remove(provision);
- } else {
- int uConnObjectKeyCount = CollectionUtils.countMatches(
- provision.getMapping().getItems(), new Predicate<MappingItemTO>() {
-
- @Override
- public boolean evaluate(final MappingItemTO item) {
- return item.isConnObjectKey();
- }
- });
-
- connObjectKeyError = uConnObjectKeyCount != 1;
- }
- }
- }
-
- if (connObjectKeyError) {
- error(getString("connObjectKeyValidation"));
- feedbackPanel.refresh(target);
- } else {
- try {
- if (createFlag) {
- resourceRestClient.create(resourceTO);
- send(pageRef.getPage(), Broadcast.BREADTH, new CreateEvent(
- resourceTO.getKey(),
- resourceTO.getKey(),
- TopologyNode.Kind.RESOURCE,
- resourceTO.getConnector(),
- target));
- } else {
- resourceRestClient.update(resourceTO);
- }
-
- if (pageRef.getPage() instanceof AbstractBasePage) {
- ((AbstractBasePage) pageRef.getPage()).setModalResult(true);
- }
- window.close(target);
- } catch (Exception e) {
- LOG.error("Failure managing resource {}", resourceTO, e);
- error(getString(Constants.ERROR) + ": " + e.getMessage());
- feedbackPanel.refresh(target);
- }
- }
+ public Panel getPanel(final String panelId) {
+ return new ResourceSecurityPanel(panelId, resourceTO);
}
+ });
+ //--------------------------------
+ }
- @Override
- protected void onError(final AjaxRequestTarget target, final Form<?> form) {
- feedbackPanel.refresh(target);
- }
- };
-
- form.add(submit);
- form.setDefaultButton(submit);
+ @Override
+ public void onError(final AjaxRequestTarget target, final Form<?> form) {
+ modal.getFeedbackPanel().refresh(target);
+ }
- final AjaxButton cancel = new IndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL)) {
+ @Override
+ public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ final ResourceTO resourceTO = (ResourceTO) form.getDefaultModelObject();
- private static final long serialVersionUID = -958724007591692537L;
+ boolean connObjectKeyError = false;
- @Override
- protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- window.close(target);
- }
+ final Collection<ProvisionTO> provisions = new ArrayList<>(resourceTO.getProvisions());
- @Override
- protected void onError(final AjaxRequestTarget target, final Form<?> form) {
- }
- };
+ for (ProvisionTO provision : provisions) {
+ if (provision != null) {
+ if (provision.getMapping() == null || provision.getMapping().getItems().isEmpty()) {
+ resourceTO.getProvisions().remove(provision);
+ } else {
+ int uConnObjectKeyCount = CollectionUtils.countMatches(
+ provision.getMapping().getItems(), new Predicate<MappingItemTO>() {
- cancel.setDefaultFormProcessing(false);
- form.add(cancel);
+ @Override
+ public boolean evaluate(final MappingItemTO item) {
+ return item.isConnObjectKey();
+ }
+ });
- add(form);
+ connObjectKeyError = uConnObjectKeyCount != 1;
+ }
+ }
+ }
+
+ if (connObjectKeyError) {
+ error(getString("connObjectKeyValidation"));
+ modal.getFeedbackPanel().refresh(target);
+ } else {
+ try {
+ if (createFlag) {
+ resourceRestClient.create(resourceTO);
+ send(pageRef.getPage(), Broadcast.BREADTH, new CreateEvent(
+ resourceTO.getKey(),
+ resourceTO.getKey(),
+ TopologyNode.Kind.RESOURCE,
+ resourceTO.getConnector(),
+ target));
+ } else {
+ resourceRestClient.update(resourceTO);
+ }
- MetaDataRoleAuthorizationStrategy.authorize(
- submit, ENABLE, createFlag ? Entitlement.RESOURCE_CREATE : Entitlement.RESOURCE_UPDATE);
+ if (pageRef.getPage() instanceof AbstractBasePage) {
+ ((AbstractBasePage) pageRef.getPage()).setModalResult(true);
+ }
+ modal.close(target);
+ } catch (Exception e) {
+ LOG.error("Failure managing resource {}", resourceTO, e);
+ error(getString(Constants.ERROR) + ": " + e.getMessage());
+ modal.getFeedbackPanel().refresh(target);
+ }
+ }
}
+
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceSecurityPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceSecurityPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceSecurityPanel.java
index a0a1ddc..2be0d95 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceSecurityPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceSecurityPanel.java
@@ -53,6 +53,11 @@ public class ResourceSecurityPanel extends Panel {
super(id);
+ final WebMarkupContainer container = new WebMarkupContainer("container");
+ container.setOutputMarkupId(true);
+ container.setRenderBodyOnly(true);
+ add(container);
+
setOutputMarkupId(true);
passwordPolicies = new LoadableDetachableModel<Map<Long, String>>() {
@@ -97,11 +102,6 @@ public class ResourceSecurityPanel extends Panel {
}
};
- final WebMarkupContainer securityContainer = new WebMarkupContainer("security");
-
- securityContainer.setOutputMarkupId(true);
- add(securityContainer);
-
// -------------------------------
// Password policy specification
// -------------------------------
@@ -115,7 +115,7 @@ public class ResourceSecurityPanel extends Panel {
((DropDownChoice<?>) passwordPolicy.getField()).setNullValid(true);
- securityContainer.add(passwordPolicy);
+ container.add(passwordPolicy);
// -------------------------------
// -------------------------------
@@ -131,7 +131,7 @@ public class ResourceSecurityPanel extends Panel {
((DropDownChoice<?>) accountPolicy.getField()).setNullValid(true);
- securityContainer.add(accountPolicy);
+ container.add(accountPolicy);
// -------------------------------
// -------------------------------
@@ -147,7 +147,7 @@ public class ResourceSecurityPanel extends Panel {
((DropDownChoice<?>) syncPolicy.getField()).setNullValid(true);
- securityContainer.add(syncPolicy);
+ container.add(syncPolicy);
// -------------------------------
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java b/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
index 409a16b..8b2fa75 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
@@ -29,8 +29,10 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.pages.BasePage;
import org.apache.syncope.client.console.panels.AbstractResourceModal.CreateEvent;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
@@ -64,11 +66,7 @@ public class Topology extends BasePage {
private final int origY = 2800;
- private static final int RESOURCE_MODAL_WIN_HEIGHT = 700;
-
- private static final int RESOURCE_MODAL_WIN_WIDTH = 1000;
-
- private final ModalWindow modal;
+ private final BaseModal<Serializable> modal;
private final WebMarkupContainer newlyCreatedContainer;
@@ -140,13 +138,24 @@ public class Topology extends BasePage {
}
public Topology() {
- modal = new ModalWindow("modal");
+ modal = new BaseModal<>("modal");
add(modal);
- modal.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
- modal.setInitialHeight(RESOURCE_MODAL_WIN_HEIGHT);
- modal.setInitialWidth(RESOURCE_MODAL_WIN_WIDTH);
- modal.setCookieName("resource-modal");
+ modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+
+ private static final long serialVersionUID = 8804221891699487139L;
+
+ @Override
+ public void onClose(final AjaxRequestTarget target) {
+ modal.show(false);
+
+ if (isModalResult()) {
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ feedbackPanel.refresh(target);
+ setModalResult(false);
+ }
+ }
+ });
add(new WebSocketBehavior());
@@ -509,7 +518,7 @@ public class Topology extends BasePage {
private TopologyNodePanel topologyNodePanel(final String id, final TopologyNode node) {
- final TopologyNodePanel panel = new TopologyNodePanel(id, node, getPageReference(), modal);
+ final TopologyNodePanel panel = new TopologyNodePanel(id, node, modal, getPageReference());
panel.setMarkupId(String.valueOf(node.getKey()));
panel.setOutputMarkupId(true);
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
index 7756a25..d3aa975 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
@@ -18,6 +18,9 @@
*/
package org.apache.syncope.client.console.topology;
+import static org.apache.wicket.Component.ENABLE;
+
+import java.io.Serializable;
import java.text.MessageFormat;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.commons.Constants;
@@ -27,19 +30,22 @@ import org.apache.syncope.client.console.panels.ResourceModal;
import org.apache.syncope.client.console.rest.ConnectorRestClient;
import org.apache.syncope.client.console.rest.ResourceRestClient;
import org.apache.syncope.client.console.wicket.ajax.markup.html.ClearIndicatingAjaxLink;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.lib.types.Entitlement;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.IAjaxIndicatorAware;
import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
import org.apache.wicket.behavior.AttributeAppender;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,7 +56,7 @@ public class TopologyNodePanel extends Panel implements IAjaxIndicatorAware {
protected static final Logger LOG = LoggerFactory.getLogger(TopologyNodePanel.class);
- private final ModalWindow modal;
+ private final BaseModal<Serializable> modal;
@SpringBean
private ResourceRestClient resourceRestClient;
@@ -61,8 +67,8 @@ public class TopologyNodePanel extends Panel implements IAjaxIndicatorAware {
public TopologyNodePanel(
final String id,
final TopologyNode node,
- final PageReference pageRef,
- final ModalWindow modal) {
+ final BaseModal<Serializable> modal,
+ final PageReference pageRef) {
super(id);
final String resourceName = node.getDisplayName().length() > 20
@@ -124,16 +130,24 @@ public class TopologyNodePanel extends Panel implements IAjaxIndicatorAware {
@Override
public void onClickInternal(final AjaxRequestTarget target) {
+ final ConnInstanceTO model = new ConnInstanceTO();
+ model.setLocation(node.getKey().toString());
+
+ modal.setFormModel(model);
+ target.add(modal.setContent(new ConnectorModal(modal, pageRef, model)));
+
+ modal.header(new Model<String>(MessageFormat.format(getString("connector.new"), node.getKey())));
- final ConnInstanceTO connectorTO = new ConnInstanceTO();
- connectorTO.setLocation(node.getKey().toString());
- modal.setContent(new ConnectorModal(modal, pageRef, connectorTO));
- modal.setTitle(MessageFormat.format(getString("connector.new"), node.getKey()));
- modal.show(target);
+ MetaDataRoleAuthorizationStrategy.
+ authorize(modal.addSumbitButton(), ENABLE, Entitlement.CONNECTOR_CREATE);
+
+ modal.show(true);
}
};
fragment.add(create);
+ MetaDataRoleAuthorizationStrategy.authorize(create, ENABLE, Entitlement.CONNECTOR_CREATE);
+
return fragment;
}
@@ -158,40 +172,56 @@ public class TopologyNodePanel extends Panel implements IAjaxIndicatorAware {
};
fragment.add(delete);
+ MetaDataRoleAuthorizationStrategy.authorize(delete, ENABLE, Entitlement.CONNECTOR_DELETE);
+
final AjaxLink<String> create = new ClearIndicatingAjaxLink<String>("create", pageRef) {
private static final long serialVersionUID = 3776750333491622263L;
@Override
public void onClickInternal(final AjaxRequestTarget target) {
- final ResourceTO resourceTO = new ResourceTO();
- resourceTO.setConnector(Long.class.cast(node.getKey()));
- resourceTO.setConnectorDisplayName(node.getDisplayName());
- modal.setContent(new ResourceModal(modal, pageRef, resourceTO, true));
- modal.setTitle(getString("resource.new"));
- modal.show(target);
+ final ResourceTO model = new ResourceTO();
+ model.setConnector(Long.class.cast(node.getKey()));
+ model.setConnectorDisplayName(node.getDisplayName());
+
+ modal.setFormModel(model);
+ target.add(modal.setContent(new ResourceModal(modal, pageRef, model, true)));
+
+ modal.header(new Model<String>(MessageFormat.format(getString("resource.new"), node.getKey())));
+
+ MetaDataRoleAuthorizationStrategy.
+ authorize(modal.addSumbitButton(), ENABLE, Entitlement.RESOURCE_CREATE);
+
+ modal.show(true);
}
};
fragment.add(create);
+ MetaDataRoleAuthorizationStrategy.authorize(create, ENABLE, Entitlement.RESOURCE_CREATE);
+
final AjaxLink<String> edit = new ClearIndicatingAjaxLink<String>("edit", pageRef) {
private static final long serialVersionUID = 3776750333491622263L;
@Override
public void onClickInternal(final AjaxRequestTarget target) {
+ final ConnInstanceTO model = connectorRestClient.read(Long.class.cast(node.getKey()));
+
+ modal.setFormModel(model);
+ target.add(modal.setContent(new ConnectorModal(modal, pageRef, model)));
+
+ modal.header(new Model<String>(MessageFormat.format(getString("connector.edit"), node.getKey())));
- modal.setContent(new ConnectorModal(
- modal,
- pageRef,
- connectorRestClient.read(Long.class.cast(node.getKey()))));
+ MetaDataRoleAuthorizationStrategy.
+ authorize(modal.addSumbitButton(), ENABLE, Entitlement.CONNECTOR_UPDATE);
- modal.setTitle(MessageFormat.format(getString("connector.edit"), node.getKey()));
- modal.show(target);
+ modal.show(true);
}
};
fragment.add(edit);
+ MetaDataRoleAuthorizationStrategy.authorize(edit, ENABLE, Entitlement.CONNECTOR_UPDATE);
+
return fragment;
}
@@ -216,6 +246,8 @@ public class TopologyNodePanel extends Panel implements IAjaxIndicatorAware {
};
fragment.add(delete);
+ MetaDataRoleAuthorizationStrategy.authorize(delete, ENABLE, Entitlement.RESOURCE_DELETE);
+
final AjaxLink<String> edit = new ClearIndicatingAjaxLink<String>("edit", pageRef) {
private static final long serialVersionUID = 3776750333491622263L;
@@ -223,18 +255,23 @@ public class TopologyNodePanel extends Panel implements IAjaxIndicatorAware {
@Override
public void onClickInternal(final AjaxRequestTarget target) {
- modal.setContent(new ResourceModal(
- modal,
- pageRef,
- resourceRestClient.read(node.getKey().toString()),
- false));
+ final ResourceTO model = resourceRestClient.read(node.getKey().toString());
- modal.setTitle(MessageFormat.format(getString("resource.edit"), node.getKey()));
- modal.show(target);
+ modal.setFormModel(model);
+ target.add(modal.setContent(new ResourceModal(modal, pageRef, model, false)));
+
+ modal.header(new Model<String>(MessageFormat.format(getString("resource.edit"), node.getKey())));
+
+ MetaDataRoleAuthorizationStrategy.
+ authorize(modal.addSumbitButton(), ENABLE, Entitlement.RESOURCE_UPDATE);
+
+ modal.show(true);
}
};
fragment.add(edit);
+ MetaDataRoleAuthorizationStrategy.authorize(edit, ENABLE, Entitlement.RESOURCE_UPDATE);
+
return fragment;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
index e67daac..2d26c08 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
@@ -78,7 +78,7 @@ public class BaseModal<T extends Serializable> extends Modal<T> {
form = new Form<T>(FORM);
add(form);
- content = new AbstractModalPanel(this) {
+ content = new AbstractModalPanel(this, null) {
private static final long serialVersionUID = 1L;
@@ -153,7 +153,7 @@ public class BaseModal<T extends Serializable> extends Modal<T> {
}
}
- public void addSumbitButton() {
+ public PrimaryModalButton addSumbitButton() {
final PrimaryModalButton submit = new PrimaryModalButton(SUBMIT, SUBMIT, form) {
@@ -179,6 +179,8 @@ public class BaseModal<T extends Serializable> extends Modal<T> {
submitButton.replaceWith(submit);
submitButton = submit;
}
+
+ return submit;
}
@Override
@@ -196,4 +198,33 @@ public class BaseModal<T extends Serializable> extends Modal<T> {
}
}.setOutputMarkupId(true));
}
+
+ /**
+ * Generic modal event.
+ */
+ public static class ModalEvent {
+
+ /**
+ * Request target.
+ */
+ private final AjaxRequestTarget target;
+
+ /**
+ * Constructor.
+ *
+ * @param target request target.
+ */
+ public ModalEvent(final AjaxRequestTarget target) {
+ this.target = target;
+ }
+
+ /**
+ * Target getter.
+ *
+ * @return request target.
+ */
+ public AjaxRequestTarget getTarget() {
+ return target;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AbstractFieldPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AbstractFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AbstractFieldPanel.java
index 41643ea..165f20d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AbstractFieldPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AbstractFieldPanel.java
@@ -18,8 +18,11 @@
*/
package org.apache.syncope.client.console.wicket.markup.html.form;
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,8 +35,32 @@ public abstract class AbstractFieldPanel<T> extends Panel {
private static final long serialVersionUID = 5958017546318855690L;
- public AbstractFieldPanel(final String id, final IModel<T> model) {
+ protected final String name;
+
+ public AbstractFieldPanel(final String id, final String name, final IModel<T> model) {
super(id, model);
+ this.name = name;
+
+ addLabel();
+ setOutputMarkupId(true);
+ }
+
+ public final AbstractFieldPanel<T> addLabel() {
+ return addLabel(this.name);
+ }
+
+ public final AbstractFieldPanel<T> addLabel(final String name) {
+ addOrReplace(new Label("field-label", new ResourceModel(name, name)));
+ return this;
+ }
+
+ public AbstractFieldPanel<T> hideLabel() {
+ final Component label = get("field-label");
+
+ if (label != null) {
+ label.setVisible(false);
+ }
+ return this;
}
public abstract AbstractFieldPanel<T> setModelObject(T object);
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
index ff64fbe..bd1cd0d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxCheckBoxPanel.java
@@ -23,10 +23,12 @@ import java.util.List;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
+import org.apache.wicket.model.ResourceModel;
public class AjaxCheckBoxPanel extends FieldPanel<Boolean> {
@@ -54,6 +56,8 @@ public class AjaxCheckBoxPanel extends FieldPanel<Boolean> {
}
});
}
+
+ add(new Label("label", new ResourceModel(name, name)));
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
index ae3a01f..daba6e9 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDropDownChoicePanel.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.client.console.wicket.markup.html.form;
+import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.select.BootstrapSelect;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
@@ -41,9 +42,11 @@ public class AjaxDropDownChoicePanel<T extends Serializable> extends FieldPanel<
public AjaxDropDownChoicePanel(
final String id, final String name, final IModel<T> model, final boolean enableOnBlur) {
- super(id, model);
+ super(id, name, model);
+
+ field = new BootstrapSelect<>(
+ "dropDownChoiceField", model, Collections.<T>emptyList(), new ChoiceRenderer<T>());
- field = new DropDownChoice<>("dropDownChoiceField", model, Collections.<T>emptyList(), new ChoiceRenderer<T>());
add(field.setLabel(new Model<>(name)).setOutputMarkupId(true));
if (enableOnBlur) {
@@ -61,19 +64,24 @@ public class AjaxDropDownChoicePanel<T extends Serializable> extends FieldPanel<
@SuppressWarnings("unchecked")
public AjaxDropDownChoicePanel<T> setChoiceRenderer(final IChoiceRenderer<T> renderer) {
- ((DropDownChoice) field).setChoiceRenderer(renderer);
+ DropDownChoice.class.cast(field).setChoiceRenderer(renderer);
return this;
}
@SuppressWarnings("unchecked")
public AjaxDropDownChoicePanel<T> setChoices(final List<T> choices) {
- ((DropDownChoice) field).setChoices(choices);
+ DropDownChoice.class.cast(field).setChoices(choices);
return this;
}
@SuppressWarnings("unchecked")
public AjaxDropDownChoicePanel<T> setChoices(final IModel<? extends List<? extends T>> choices) {
- ((DropDownChoice) field).setChoices(choices);
+ DropDownChoice.class.cast(field).setChoices(choices);
+ return this;
+ }
+
+ public AjaxDropDownChoicePanel<T> setNullValid(final boolean validity) {
+ DropDownChoice.class.cast(field).setNullValid(validity);
return this;
}
@@ -81,8 +89,8 @@ public class AjaxDropDownChoicePanel<T extends Serializable> extends FieldPanel<
@SuppressWarnings("unchecked")
public FieldPanel<T> clone() {
final AjaxDropDownChoicePanel<T> panel = (AjaxDropDownChoicePanel<T>) super.clone();
- panel.setChoiceRenderer(((DropDownChoice) field).getChoiceRenderer());
- panel.setChoices(((DropDownChoice) field).getChoices());
+ panel.setChoiceRenderer(DropDownChoice.class.cast(field).getChoiceRenderer());
+ panel.setChoices(DropDownChoice.class.cast(field).getChoices());
return panel;
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/b2e93ca7/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
index 932948b..97866e3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
@@ -44,7 +44,7 @@ public class AjaxPalettePanel<T> extends AbstractFieldPanel<List<T>> {
public AjaxPalettePanel(final String id, final IModel<List<T>> model, final ListModel<T> choices,
final IChoiceRenderer<T> renderer, final boolean allowOrder, final boolean allowMoveAll) {
- super(id, model);
+ super(id, id, model);
this.palette = createPalette(model, choices, renderer, allowOrder, allowMoveAll);
add(palette.setOutputMarkupId(true));