diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java index 25e9633dd24..8551ae73217 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFactory.java @@ -111,7 +111,8 @@ public static Search createSearch(Class type, PrismCon PrismObjectDefinition objDef = registry.findObjectDefinitionByCompileTimeClass(ObjectType.class); PrismPropertyDefinition def = objDef.findPropertyDefinition(ObjectType.F_NAME); - search.addItem(def); + SearchItem item = search.addItem(def); + item.setFixed(true); return search; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItem.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItem.java index 99dbebf98b6..dc713998d51 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItem.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItem.java @@ -47,6 +47,9 @@ public enum Type { private ItemDefinition definition; private List> values; + private boolean fixed; + private boolean editWhenVisible; + public SearchItem(Search search, ItemPath path, ItemDefinition definition) { Validate.notNull(path, "Item path must not be null."); Validate.notNull(definition, "Item definition must not be null."); @@ -122,6 +125,22 @@ public List getAllowedValues() { return list; } + public boolean isFixed() { + return fixed; + } + + public void setFixed(boolean fixed) { + this.fixed = fixed; + } + + public boolean isEditWhenVisible() { + return editWhenVisible; + } + + public void setEditWhenVisible(boolean editWhenVisible) { + this.editWhenVisible = editWhenVisible; + } + @Override public String toString() { return new ToStringBuilder(this) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItemPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItemPanel.java index eecf443a951..4726600c720 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItemPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItemPanel.java @@ -24,6 +24,7 @@ import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.AjaxSubmitButton; +import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; import org.apache.commons.lang.StringUtils; import org.apache.wicket.AttributeModifier; @@ -88,6 +89,20 @@ public SearchItemPanel(String id, IModel model) { initLayout(); } + @Override + protected void onConfigure() { + super.onConfigure(); + + SearchItem item = getModelObject(); + if (!item.isEditWhenVisible()) { + return; + } + + item.setEditWhenVisible(false); + + //todo show popover for this item somehow [lazyman] + } + private void initLayout() { popoverModel = new LoadableModel(false) { @@ -118,6 +133,13 @@ public void onClick(AjaxRequestTarget target) { } }; mainButton.add(deleteButton); + deleteButton.add(new VisibleEnableBehaviour() { + + @Override + public boolean isVisible() { + return !getModelObject().isFixed(); + } + }); initPopover(); initBrowserPopup(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.html index 191e4a3f7e8..b84ba346fd9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.html @@ -61,7 +61,10 @@
- +
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.java index a3dd9bf525f..ce3777cd2e2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.java @@ -76,6 +76,7 @@ public class SearchPanel extends BasePanel { private static final String ID_PROPERTIES = "properties"; private static final String ID_CHECK = "check"; private static final String ID_PROP_NAME = "propName"; + private static final String ID_PROP_LINK = "propLink"; private static final String ID_PROP_LIST = "propList"; private static final String ID_ADVANCED = "advanced"; private static final String ID_ADVANCED_GROUP = "advancedGroup"; @@ -313,11 +314,20 @@ protected void onUpdate(AjaxRequestTarget target) { }); item.add(check); + AjaxLink propLink = new AjaxLink(ID_PROP_LINK) { + + @Override + public void onClick(AjaxRequestTarget target) { + addOneItemPerformed(item.getModelObject(), target); + } + }; + item.add(propLink); + Label name = new Label(ID_PROP_NAME, new PropertyModel<>(item.getModel(), Property.F_NAME)); name.setRenderBodyOnly(true); - item.add(name); + propLink.add(name); - item.add(new VisibleEnableBehaviour() { + propLink.add(new VisibleEnableBehaviour() { @Override public boolean isVisible() { @@ -397,6 +407,15 @@ private List createPropertiesList() { return list; } + private void addOneItemPerformed(Property property, AjaxRequestTarget target) { + Search search = getModelObject(); + SearchItem item = search.addItem(property.getDefinition()); + item.setEditWhenVisible(true); + + moreDialogModel.reset(); + refreshSearchForm(target); + } + private void addItemPerformed(AjaxRequestTarget target) { Search search = getModelObject();