diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index d0ca8fba97e..376b4ce6ceb 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -3542,20 +3542,20 @@ public static void saveTask(PrismObject oldTask, OperationResult resul result.recomputeStatus(); } - public static String getDisplayPolyStringValue(PolyStringType polyString, PageBase pageBase){ + public static String getDisplayPolyStringValue(PolyString polyString, PageBase pageBase){ if (polyString == null){ return null; } if ((polyString.getTranslation() == null || StringUtils.isEmpty(polyString.getTranslation().getKey())) && - (polyString.getLang() == null || polyString.getLang().getLang() == null || polyString.getLang().getLang().isEmpty())){ + (polyString.getLang() == null || polyString.getLang() == null || polyString.getLang().isEmpty())){ return polyString.getOrig(); } - if (polyString.getLang() != null && polyString.getLang().getLang() != null && !polyString.getLang().getLang().isEmpty()){ + if (polyString.getLang() != null && polyString.getLang() != null && !polyString.getLang().isEmpty()){ //check if it's really selected by user or configured through sysconfig locale String currentLocale = getCurrentLocale().getLanguage(); - for (String language : polyString.getLang().getLang().keySet()){ + for (String language : polyString.getLang().keySet()){ if (currentLocale.equals(language)){ - return polyString.getLang().getLang().get(language); + return polyString.getLang().get(language); } } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PolyStringEditorPanelFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PolyStringEditorPanelFactory.java new file mode 100644 index 00000000000..1e5f03c331e --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PolyStringEditorPanelFactory.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2010-2019 Evolveum + * + * Licensed 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 com.evolveum.midpoint.gui.impl.factory; + +import com.evolveum.midpoint.gui.api.factory.AbstractGuiComponentFactory; +import com.evolveum.midpoint.gui.api.prism.ItemWrapper; +import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; +import com.evolveum.midpoint.prism.polystring.PolyString; +import com.evolveum.midpoint.web.component.prism.PolyStringEditorPanel; +import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; +import org.apache.wicket.markup.html.panel.Panel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +/** + * Created by honchar + */ +@Component +public class PolyStringEditorPanelFactory extends AbstractGuiComponentFactory { + + private static final long serialVersionUID = 1L; + + @Autowired + GuiComponentRegistry registry; + + @PostConstruct + public void register() { + registry.addToRegistry(this); + } + @Override + public boolean match(IW wrapper) { + return PolyStringType.COMPLEX_TYPE.equals(wrapper.getTypeName()); + } + + @Override + protected Panel getPanel(PrismPropertyPanelContext panelCtx) { + PolyStringEditorPanel panel = new PolyStringEditorPanel(panelCtx.getComponentId(), panelCtx.getRealValueModel()); + + return panel; + } + +} \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PolyStringEditorPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PolyStringEditorPanel.html index d8adf6e63d5..30ba7a35fe7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PolyStringEditorPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PolyStringEditorPanel.html @@ -17,28 +17,23 @@ -
-
-
-
+
+
-
+
-
+
-
-
-
- +
+
-
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PolyStringEditorPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PolyStringEditorPanel.java index e240c48b99d..ea4d75855f5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PolyStringEditorPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PolyStringEditorPanel.java @@ -22,14 +22,9 @@ import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.input.TextPanel; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; -import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour; -import com.evolveum.prism.xml.ns._public.types_3.PolyStringLangType; -import com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationArgumentType; -import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; @@ -42,12 +37,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * Created by honchar */ -public class PolyStringEditorPanel extends BasePanel{ +public class PolyStringEditorPanel extends BasePanel{ private static final long serialVersionUID = 1L; private static final String ID_DEFAULT_VALUE_PANEL = "defaultValuePanel"; @@ -58,11 +52,11 @@ public class PolyStringEditorPanel extends BasePanel{ private static final String ID_LANGUAGE_NAME = "languageName"; private static final String ID_TRANSLATION = "translation"; private static final String ID_SHOW_HIDE_LANGUAGES = "showHideLanguages"; - private static final String ID_ADD_LANGUAGE_BUTTON = "addLanguageButton"; + private static final String ID_ADD_LANGUAGE = "addLanguage"; private boolean showFullData = false; - public PolyStringEditorPanel(String id, IModel model){ + public PolyStringEditorPanel(String id, IModel model){ super(id, model); } @@ -77,7 +71,7 @@ private void initLayout(){ TextPanel defaultValuePanel = new TextPanel(ID_DEFAULT_VALUE_PANEL, Model.of(getDefaultPolyStringValue())); defaultValuePanel.setOutputMarkupId(true); - defaultValuePanel.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); + defaultValuePanel.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); defaultValuePanel.add(new VisibleBehaviour(() -> !showFullData)); add(defaultValuePanel); @@ -87,16 +81,16 @@ private void initLayout(){ add(fullDataContainer); TextPanel origValue = new TextPanel(ID_ORIG_VALUE, Model.of(getDefaultPolyStringValue())); - origValue.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); + origValue.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); origValue.setOutputMarkupId(true); fullDataContainer.add(origValue); TextPanel keyValue = new TextPanel(ID_KEY_VALUE, Model.of(getKeyValue())); - keyValue.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); + keyValue.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); keyValue.setOutputMarkupId(true); fullDataContainer.add(keyValue); - Map languagesMap = getModelObject() != null && getModelObject().getLang() != null ? getModelObject().getLang().getLang() : new HashMap<>(); + Map languagesMap = getModelObject() != null && getModelObject().getLang() != null ? getModelObject().getLang() : new HashMap<>(); ListView languagesContainer = new ListView(ID_LANGUAGES_REPEATER, getLanguagesListModel()) { private static final long serialVersionUID = 1L; @@ -105,8 +99,7 @@ private void initLayout(){ protected void populateItem(ListItem listItem) { if (StringUtils.isEmpty(listItem.getModelObject())){ TextPanel languageName = new TextPanel(ID_LANGUAGE_NAME, Model.of(listItem.getModelObject())); - languageName.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); - languageName.setOutputMarkupId(true); + languageName.getBaseFormComponent().setOutputMarkupId(true); listItem.add(languageName); } else { Label languageName = new Label(ID_LANGUAGE_NAME, Model.of(listItem.getModelObject())); @@ -115,7 +108,7 @@ protected void populateItem(ListItem listItem) { } TextPanel translation = new TextPanel(ID_TRANSLATION, Model.of(languagesMap.get(listItem.getModelObject()))); - translation.add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); + translation.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour()); translation.setOutputMarkupId(true); listItem.add(translation); @@ -124,7 +117,7 @@ protected void populateItem(ListItem listItem) { languagesContainer.setOutputMarkupId(true); fullDataContainer.add(languagesContainer); - AjaxLink addLanguageButton = new AjaxLink(ID_ADD_LANGUAGE_BUTTON) { + AjaxButton addLanguageButton = new AjaxButton(ID_ADD_LANGUAGE, createStringResource("PolyStringEditorPanel.addLanguage")) { private static final long serialVersionUID = 1L; @Override @@ -132,6 +125,8 @@ public void onClick(AjaxRequestTarget target) { addNewLanguagePerformed(target); } }; + addLanguageButton.add(AttributeAppender.append("style", "cursor: pointer;")); + addLanguageButton.setOutputMarkupId(true); fullDataContainer.add(addLanguageButton); AjaxButton showHideLanguagesButton = new AjaxButton(ID_SHOW_HIDE_LANGUAGES, new LoadableModel() { @@ -173,7 +168,7 @@ private LoadableModel> getLanguagesListModel(){ @Override protected List load() { - Map languagesMap = getModelObject() != null && getModelObject().getLang() != null ? getModelObject().getLang().getLang() : new HashMap<>(); + Map languagesMap = getModelObject() != null && getModelObject().getLang() != null ? getModelObject().getLang() : new HashMap<>(); return new ArrayList<>(languagesMap.keySet()); } }; @@ -181,12 +176,9 @@ protected List load() { private void addNewLanguagePerformed(AjaxRequestTarget target){ if (getModelObject().getLang() == null){ - getModelObject().setLang(new PolyStringLangType()); - } - if (getModelObject().getLang().getLang() == null){ - getModelObject().getLang().setLang(new HashMap()); + getModelObject().setLang(new HashMap()); } - getModelObject().getLang().getLang().put("", ""); + getModelObject().getLang().put("", ""); target.add(PolyStringEditorPanel.this); }