diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/AbstractSettingForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/AbstractSettingForm.java
deleted file mode 100644
index cd73ed840..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/AbstractSettingForm.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.configuration;
-
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.UncheckedWrapperException;
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.configuration.ConfigurationInfo;
-import org.libreccm.configuration.ConfigurationManager;
-import org.libreccm.configuration.SettingInfo;
-import org.libreccm.configuration.SettingManager;
-import org.libreccm.l10n.GlobalizationHelper;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public abstract class AbstractSettingForm extends Form {
-
- public AbstractSettingForm(
- final String name,
- final ConfigurationTab configurationTab,
- final ParameterSingleSelectionModel selectedConf,
- final ParameterSingleSelectionModel selectedSetting) {
-
- super(name, new BoxPanel(BoxPanel.VERTICAL));
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
- final Label target = (Label) e.getTarget();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
- final SettingManager settingManager = cdiUtil.findBean(
- SettingManager.class);
- final GlobalizationHelper globalizationHelper = cdiUtil
- .findBean(GlobalizationHelper.class);
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationInfo confInfo = confManager
- .getConfigurationInfo(confClass);
- final SettingInfo settingInfo = settingManager.getSettingInfo(
- confClass, selectedSetting.getSelectedKey(state));
-
- final String confTitle = confInfo.getTitle(globalizationHelper
- .getNegotiatedLocale());
- final String settingLabel = settingInfo.getLabel(
- globalizationHelper.getNegotiatedLocale());
-
- target.setLabel(new GlobalizedMessage(
- "ui.admin.configuration.setting.edit.heading",
- ADMIN_BUNDLE,
- new String[]{confTitle, settingLabel}));
- });
-
- heading.setClassAttr("heading");
-
- add(heading);
-
- final Text desc = new Text(e -> {
- final PageState state = e.getPageState();
- final Text target = (Text) e.getTarget();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final SettingManager settingManager = cdiUtil.findBean(
- SettingManager.class);
- final GlobalizationHelper globalizationHelper = cdiUtil
- .findBean(GlobalizationHelper.class);
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final SettingInfo settingInfo = settingManager.getSettingInfo(
- confClass, selectedSetting.getSelectedKey(state));
-
- target.setText(settingInfo.getDescription(globalizationHelper
- .getNegotiatedLocale()));
- });
-
- add(desc);
-
- addCurrentValuePanel(selectedConf, selectedSetting);
-
-
-
-
-
- }
-
- protected abstract void addCurrentValuePanel(
- final ParameterSingleSelectionModel selectedConf,
- final ParameterSingleSelectionModel selectedSetting);
-
-
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/AbstractSettingFormSingleValue.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/AbstractSettingFormSingleValue.java
index 49dd0282a..0e3ff0340 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/AbstractSettingFormSingleValue.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/AbstractSettingFormSingleValue.java
@@ -51,7 +51,8 @@ import static com.arsdigita.ui.admin.AdminUiConstants.*;
*/
public abstract class AbstractSettingFormSingleValue extends Form {
- private static final Logger LOGGER = LogManager.getLogger(AbstractSettingFormSingleValue.class);
+ private static final Logger LOGGER = LogManager.getLogger(
+ AbstractSettingFormSingleValue.class);
private static final String VALUE_FIELD = "valueField";
@@ -80,7 +81,9 @@ public abstract class AbstractSettingFormSingleValue extends Form {
addValidationListener(new ValidationListener());
- addProcessListener(new ProcessListener(selectedConf, selectedSetting));
+ addProcessListener(new ProcessListener(configurationTab,
+ selectedConf,
+ selectedSetting));
}
@@ -121,9 +124,9 @@ public abstract class AbstractSettingFormSingleValue extends Form {
final Object config = confManager.findConfiguration(confClass);
- final BigDecimal value;
+ final Object value;
try {
- value = (BigDecimal) confClass.getField(selectedSetting
+ value = confClass.getField(selectedSetting
.getSelectedKey(state)).get(config);
} catch (NoSuchFieldException | SecurityException |
IllegalAccessException | ClassCastException ex) {
@@ -168,12 +171,15 @@ public abstract class AbstractSettingFormSingleValue extends Form {
private class ProcessListener implements FormProcessListener {
+ private final ConfigurationTab configurationTab;
private final ParameterSingleSelectionModel selectedConf;
private final ParameterSingleSelectionModel selectedSetting;
public ProcessListener(
+ final ConfigurationTab configurationTab,
final ParameterSingleSelectionModel selectedConf,
final ParameterSingleSelectionModel selectedSetting) {
+ this.configurationTab = configurationTab;
this.selectedConf = selectedConf;
this.selectedSetting = selectedSetting;
}
@@ -222,6 +228,7 @@ public abstract class AbstractSettingFormSingleValue extends Form {
try {
field.set(config, value);
+ configurationTab.hideSettingForms(state);
} catch (IllegalArgumentException | IllegalAccessException ex) {
throw new FormProcessException(
String.format(
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorLocalizedString.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorLocalizedString.java
new file mode 100644
index 000000000..865a9d81b
--- /dev/null
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingEditorLocalizedString.java
@@ -0,0 +1,396 @@
+/*p
+ * Copyright (C) 2016 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.ui.admin.configuration;
+
+import com.arsdigita.bebop.ActionLink;
+import com.arsdigita.bebop.BoxPanel;
+import com.arsdigita.bebop.Component;
+import com.arsdigita.bebop.ControlLink;
+import com.arsdigita.bebop.Form;
+import com.arsdigita.bebop.Label;
+import com.arsdigita.bebop.PageState;
+import com.arsdigita.bebop.ParameterSingleSelectionModel;
+import com.arsdigita.bebop.Table;
+import com.arsdigita.bebop.Text;
+import com.arsdigita.bebop.event.TableActionEvent;
+import com.arsdigita.bebop.event.TableActionListener;
+import com.arsdigita.bebop.form.Option;
+import com.arsdigita.bebop.form.Select;
+import com.arsdigita.bebop.form.SingleSelect;
+import com.arsdigita.bebop.form.TextField;
+import com.arsdigita.bebop.table.TableCellRenderer;
+import com.arsdigita.bebop.table.TableColumn;
+import com.arsdigita.bebop.table.TableColumnModel;
+import com.arsdigita.bebop.table.TableModel;
+import com.arsdigita.bebop.table.TableModelBuilder;
+import com.arsdigita.globalization.GlobalizedMessage;
+import com.arsdigita.kernel.KernelConfig;
+import com.arsdigita.util.LockableImpl;
+import com.arsdigita.util.UncheckedWrapperException;
+
+import com.sun.javafx.scene.control.skin.VirtualFlow;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.libreccm.cdi.utils.CdiUtil;
+import org.libreccm.configuration.ConfigurationManager;
+import org.libreccm.l10n.LocalizedString;
+import sun.util.resources.cldr.gv.LocaleNames_gv;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+import java.util.TooManyListenersException;
+
+import static com.arsdigita.ui.admin.AdminUiConstants.*;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class SettingEditorLocalizedString extends BoxPanel {
+
+ private final static Logger LOGGER = LogManager.getLogger(
+ SettingEditorLocalizedString.class);
+
+ private static final int COL_LOCALE = 0;
+ private static final int COL_VALUE = 1;
+ private static final int COL_EDIT = 2;
+ private static final int COL_DEL = 3;
+
+ private static final String LOCALE_SELECT = "localeSelect";
+ private static final String VALUE = "value";
+
+ private final ConfigurationTab configurationTab;
+ private final ParameterSingleSelectionModel selectedConf;
+ private final ParameterSingleSelectionModel selectedSetting;
+ private final ParameterSingleSelectionModel selectedValue;
+
+ public SettingEditorLocalizedString(
+ final ConfigurationTab configurationTab,
+ final ParameterSingleSelectionModel selectedConf,
+ final ParameterSingleSelectionModel selectedSetting,
+ final ParameterSingleSelectionModel selectedValue) {
+
+ super(BoxPanel.VERTICAL);
+
+ this.configurationTab = configurationTab;
+ this.selectedConf = selectedConf;
+ this.selectedSetting = selectedSetting;
+ this.selectedValue = selectedValue;
+
+ final ActionLink backLink = new ActionLink(new GlobalizedMessage(
+ "ui.admin.configuration.setting.localized_string.back",
+ ADMIN_BUNDLE));
+ backLink.addActionListener(e -> {
+ configurationTab.hideSettingForms(e.getPageState());
+ });
+ add(backLink);
+
+ add(new SettingFormHeader(selectedConf, selectedSetting));
+
+ add(new ValuesTable());
+
+ final Form form = new Form("settingLocalizedStringForm");
+
+ final SingleSelect localeSelect = new SingleSelect(LOCALE_SELECT);
+ localeSelect.setLabel(new GlobalizedMessage(
+ "ui.admin.configuration.setting.localized_string.locale.label",
+ ADMIN_BUNDLE));
+ try {
+ localeSelect.addPrintListener(e -> {
+ final PageState state = e.getPageState();
+ if (selectedValue.getSelectedKey(state) == null) {
+ final ConfigurationManager confManager = CdiUtil
+ .createCdiUtil().findBean(ConfigurationManager.class);
+
+ final Class> confClass;
+ try {
+ confClass = Class
+ .forName(selectedConf.getSelectedKey(state));
+ } catch (ClassNotFoundException ex) {
+ throw new UncheckedWrapperException(ex);
+ }
+
+ final Object config = confManager.findConfiguration(
+ confClass);
+
+ final LocalizedString value;
+ try {
+ value = (LocalizedString) confClass.getField(
+ selectedSetting.getSelectedKey(state)).get(config);
+ } catch (NoSuchFieldException | SecurityException | IllegalAccessException | ClassCastException ex) {
+ LOGGER.warn(
+ "Failed to read setting {} from configuration {}",
+ selectedSetting.getSelectedKey(state),
+ selectedConf.getSelectedKey(state));
+ LOGGER.warn(ex);
+ throw new UncheckedWrapperException(
+ String.format(
+ "Failed to read setting %s from configuration %s",
+ selectedSetting.getSelectedKey(state),
+ selectedConf.getSelectedKey(state)),
+ ex);
+ }
+
+ final Set supportedLanguages = KernelConfig
+ .getConfig().getSupportedLanguages();
+ final Set assignedLanguages = new HashSet<>();
+ value.getAvailableLocales().forEach(l -> {
+ assignedLanguages.add(l.toString());
+ });
+
+ final SingleSelect target = (SingleSelect) e.getTarget();
+
+ target.clearOptions();
+
+ supportedLanguages.forEach(l -> {
+ if (!assignedLanguages.contains(l)) {
+ target.addOption(new Option(l, new Text(l)));
+ }
+ });
+ } else {
+ final SingleSelect target = (SingleSelect) e.getTarget();
+
+ target.clearOptions();
+
+ final String language = selectedValue.getSelectedKey(state);
+ target.addOption(new Option(language, new Text(language)));
+ }
+ });
+ } catch (TooManyListenersException ex) {
+ //We are in big trouble...
+ throw new UncheckedWrapperException(ex);
+ }
+ form.add(localeSelect);
+
+ final TextField localizedValue = new TextField(VALUE);
+ localizedValue.setLabel(new GlobalizedMessage(
+ "ui.admin.configuration.setting.localized_string.value.label",
+ ADMIN_BUNDLE));
+ form.add(localizedValue);
+
+ form.addInitListener(e -> {
+ //ToDo
+ });
+
+ form.addProcessListener(e -> {
+ //ToDo
+ });
+
+ //Form
+ //process: if value is selected update selected value
+ // if no value is selected add new setting
+ add(form);
+
+ }
+
+ private class ValuesTable extends Table {
+
+ public ValuesTable() {
+
+ super();
+
+ setIdAttr("localizedStringSettingValues");
+
+ setEmptyView(new Label(new GlobalizedMessage(
+ "ui.admin.categories.setting.localized_string.no_values",
+ ADMIN_BUNDLE)));
+
+ final TableColumnModel columnModel = getColumnModel();
+ columnModel.add(new TableColumn(
+ COL_LOCALE,
+ new Label(new GlobalizedMessage(
+ "ui.admin.categories.setting.localized_string.col_lang",
+ ADMIN_BUNDLE))));
+ columnModel.add(new TableColumn(
+ COL_VALUE,
+ new Label(new GlobalizedMessage(
+ "ui.admin.categories.setting.localized_string.col_value",
+ ADMIN_BUNDLE))));
+ columnModel.add(new TableColumn(
+ COL_EDIT,
+ new Label(new GlobalizedMessage(
+ "ui.admin.categories.setting.localized_string.col_del",
+ ADMIN_BUNDLE))));
+ columnModel.add(new TableColumn(
+ COL_DEL,
+ new Label(new GlobalizedMessage(
+ "ui.admin.categories.setting.localized_string.col_del",
+ ADMIN_BUNDLE))));
+
+ columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() {
+
+ @Override
+ public Component getComponent(final Table table,
+ final PageState state,
+ final Object value,
+ final boolean isSelected,
+ final Object key,
+ final int row,
+ final int column) {
+ return new ControlLink((String) value);
+ }
+
+ });
+
+ columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() {
+
+ @Override
+ public Component getComponent(final Table table,
+ final PageState state,
+ final Object value,
+ final boolean isSelected,
+ final Object key,
+ final int row,
+ final int column) {
+ if (value == null) {
+ return new Text("");
+ } else {
+ final ControlLink link = new ControlLink(
+ (Component) value);
+ link.setConfirmation(new GlobalizedMessage(
+ "ui.admin.categories.setting.localized_string.del_confirm",
+ ADMIN_BUNDLE));
+ return link;
+ }
+ }
+
+ });
+
+ addTableActionListener(new TableActionListener() {
+
+ @Override
+ public void cellSelected(final TableActionEvent event) {
+ final PageState state = event.getPageState();
+
+ selectedValue.setSelectedKey(state, event.getRowKey());
+ }
+
+ @Override
+ public void headSelected(final TableActionEvent event) {
+ //Nothing
+ }
+
+ });
+
+ setModelBuilder(new ValuesTableModelBuilder());
+ }
+
+ }
+
+ private class ValuesTableModelBuilder
+ extends LockableImpl
+ implements TableModelBuilder {
+
+ @Override
+ public TableModel makeModel(final Table table,
+ final PageState state) {
+ table.getRowSelectionModel().clearSelection(state);
+
+ return new ValuesTableModel(state);
+ }
+
+ }
+
+ private class ValuesTableModel implements TableModel {
+
+ private final LocalizedString value;
+ private final List locales;
+ private int index = -1;
+
+ public ValuesTableModel(final PageState state) {
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
+
+ final Class> confClass;
+ try {
+ confClass = Class
+ .forName(selectedConf.getSelectedKey(state));
+ } catch (ClassNotFoundException ex) {
+ throw new UncheckedWrapperException(ex);
+ }
+
+ final ConfigurationManager confManager = cdiUtil.findBean(
+ ConfigurationManager.class);
+
+ final Object config = confManager.findConfiguration(confClass);
+
+ try {
+ value = (LocalizedString) confClass.getField(selectedSetting
+ .getSelectedKey(state)).get(config);
+
+ locales = new ArrayList<>();
+ locales.addAll(value.getAvailableLocales());
+ locales.sort((s1, s2) -> {
+ return s1.toString().compareTo(s2.toString());
+ });
+ } catch (NoSuchFieldException | SecurityException |
+ IllegalAccessException | ClassCastException ex) {
+ LOGGER.warn("Failed to read setting {} from configuration {}",
+ selectedSetting.getSelectedKey(state),
+ selectedConf.getSelectedKey(state));
+ LOGGER.warn(ex);
+ throw new UncheckedWrapperException(ex);
+ }
+ }
+
+ @Override
+ public int getColumnCount() {
+ return 4;
+ }
+
+ @Override
+ public boolean nextRow() {
+ index++;
+ return index < locales.size();
+ }
+
+ @Override
+ public Object getElementAt(final int columnIndex) {
+ final Locale locale = locales.get(index);
+
+ switch (columnIndex) {
+ case COL_LOCALE:
+ return locale.toString();
+ case COL_VALUE:
+ return value.getValue(locale);
+ case COL_EDIT:
+ return new Label(new GlobalizedMessage(
+ "ui.admin.configuration.setting.localized_string.value.edit",
+ ADMIN_BUNDLE));
+ case COL_DEL:
+ return new Label(new GlobalizedMessage(
+ "ui.admin.categories.setting.localized_string.title.del",
+ ADMIN_BUNDLE
+ ));
+ default:
+ throw new IllegalArgumentException(
+ "Not a valid column index");
+ }
+ }
+
+ @Override
+ public Object getKeyAt(final int columnIndex) {
+ return locales.get(index);
+ }
+
+ }
+
+}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormBigDecimal.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormBigDecimal.java
index 41787b735..55ad60a8d 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormBigDecimal.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormBigDecimal.java
@@ -18,282 +18,27 @@
*/
package com.arsdigita.ui.admin.configuration;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.GridPanel;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.UncheckedWrapperException;
-import java.lang.reflect.Field;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.util.Strings;
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.configuration.ConfigurationInfo;
-import org.libreccm.configuration.ConfigurationManager;
-import org.libreccm.configuration.SettingInfo;
-import org.libreccm.configuration.SettingManager;
-import org.libreccm.l10n.GlobalizationHelper;
import java.math.BigDecimal;
-import java.util.Objects;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
/**
*
* @author Jens Pelzetter
*/
-public class SettingFormBigDecimal extends Form {
-
- private static final Logger LOGGER = LogManager.getLogger(
- SettingFormBigDecimal.class);
-
- private static final String VALUE_FIELD = "valueField";
+public class SettingFormBigDecimal
+ extends AbstractSettingFormSingleValue {
public SettingFormBigDecimal(
- final ConfigurationTab configurationTab,
- final ParameterSingleSelectionModel selectedConf,
- final ParameterSingleSelectionModel selectedSetting) {
+ final ConfigurationTab configurationTab,
+ final ParameterSingleSelectionModel selectedConf,
+ final ParameterSingleSelectionModel selectedSetting) {
+ super(configurationTab, selectedConf, selectedSetting);
+ }
- super("settingFormBigDecimal", new BoxPanel(BoxPanel.VERTICAL));
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
- final Label target = (Label) e.getTarget();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
- final SettingManager settingManager = cdiUtil.findBean(
- SettingManager.class);
- final GlobalizationHelper globalizationHelper = cdiUtil
- .findBean(GlobalizationHelper.class);
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationInfo confInfo = confManager
- .getConfigurationInfo(confClass);
- final SettingInfo settingInfo = settingManager.getSettingInfo(
- confClass, selectedSetting.getSelectedKey(state));
-
- final String confTitle = confInfo.getTitle(globalizationHelper
- .getNegotiatedLocale());
- final String settingLabel = settingInfo.getLabel(
- globalizationHelper.getNegotiatedLocale());
-
- target.setLabel(new GlobalizedMessage(
- "ui.admin.configuration.setting.edit.heading",
- ADMIN_BUNDLE,
- new String[]{confTitle, settingLabel}));
- });
-
- heading.setClassAttr("heading");
-
- add(heading);
-
- final Text desc = new Text(e -> {
- final PageState state = e.getPageState();
- final Text target = (Text) e.getTarget();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final SettingManager settingManager = cdiUtil.findBean(
- SettingManager.class);
- final GlobalizationHelper globalizationHelper = cdiUtil
- .findBean(GlobalizationHelper.class);
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final SettingInfo settingInfo = settingManager.getSettingInfo(
- confClass, selectedSetting.getSelectedKey(state));
-
- target.setText(settingInfo.getDescription(globalizationHelper
- .getNegotiatedLocale()));
- });
-
- add(desc);
-
- final GridPanel gridPanel = new GridPanel(2);
-
- gridPanel.add(new Label(new GlobalizedMessage(
- "ui.admin.configuration.setting.edit.current_value",
- ADMIN_BUNDLE)));
-
- gridPanel.add(new Text(e -> {
- final PageState state = e.getPageState();
- final Text target = (Text) e.getTarget();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
-
- final Object config = confManager.findConfiguration(confClass);
-
- final BigDecimal value;
- try {
- value = (BigDecimal) confClass.getField(selectedSetting
- .getSelectedKey(state)).get(config);
- } catch (NoSuchFieldException | SecurityException |
- IllegalAccessException | ClassCastException ex) {
- LOGGER.warn("Failed to read setting {} from configuration {}",
- selectedSetting.getSelectedKey(state),
- selectedConf.getSelectedKey(state));
- LOGGER.warn(ex);
- target.setText("Failed to read setting value.");
- return;
- }
-
- target.setText(Objects.toString(value));
- }));
-
- add(gridPanel);
-
- final TextField valueField = new TextField(VALUE_FIELD);
- valueField.setLabel(new GlobalizedMessage(
- "ui.admin.configuration.setting.edit.new_value", ADMIN_BUNDLE));
- add(valueField);
-
- final SaveCancelSection saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- addInitListener(e -> {
- final PageState state = e.getPageState();
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
-
- final Object config = confManager.findConfiguration(confClass);
-
- final BigDecimal value;
- try {
- value = (BigDecimal) confClass.getField(selectedSetting
- .getSelectedKey(state)).get(config);
- } catch (NoSuchFieldException | SecurityException |
- IllegalAccessException | ClassCastException ex) {
- LOGGER.warn("Failed to read setting {} from configuration {}",
- selectedSetting.getSelectedKey(state),
- selectedConf.getSelectedKey(state));
- LOGGER.warn(ex);
- return;
- }
-
- valueField.setValue(state, value.toString());
- });
-
- addValidationListener(e -> {
- final FormData data = e.getFormData();
-
- final String valueData = data.getString(VALUE_FIELD);
-
- if (Strings.isBlank(valueData)) {
- data.addError(VALUE_FIELD,
- new GlobalizedMessage(
- "ui.admin.configuration.setting.error.blank",
- ADMIN_BUNDLE));
- }
-
- try {
- final BigDecimal value = new BigDecimal(valueData);
- LOGGER.debug("New value {} is a valid BigDecimal.", value);
- } catch (NumberFormatException ex) {
- data.addError(VALUE_FIELD,
- new GlobalizedMessage(
- "ui.admin.configuration.setting.error.not_a_bigdecimal",
- ADMIN_BUNDLE));
- }
- });
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
- final FormData data = e.getFormData();
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
- final String settingName = selectedSetting.getSelectedKey(state);
-
- final Object config = confManager.findConfiguration(confClass);
-
- final Field field;
- try {
- field = confClass.getField(settingName);
- } catch (NoSuchFieldException | SecurityException ex) {
- throw new FormProcessException(
- String.format(
- "Failed to retrieve field \"%s\" "
- + "from configuration class \"%s\".",
- settingName,
- confClass.getName()),
- new GlobalizedMessage(
- "ui.admin.configuration.setting.failed_to_set_value",
- ADMIN_BUNDLE),
- ex);
- }
-
- final String valueData = data.getString(VALUE_FIELD);
- final BigDecimal value = new BigDecimal(valueData);
-
- try {
- field.set(config, value);
- } catch (IllegalArgumentException | IllegalAccessException ex) {
- throw new FormProcessException(
- String.format(
- "Failed to change value of field \"%s\" "
- + "of configuration class \"%s\".",
- settingName,
- confClass.getName()),
- new GlobalizedMessage(
- "ui.admin.configuration.setting.failed_to_set_value",
- ADMIN_BUNDLE),
- ex);
- }
- });
+ @Override
+ BigDecimal convertValue(final String valueData) {
+ return new BigDecimal(valueData);
}
}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormBoolean.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormBoolean.java
index 62f4aa435..98a34a7b1 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormBoolean.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormBoolean.java
@@ -22,27 +22,21 @@ import com.arsdigita.bebop.BoxPanel;
import com.arsdigita.bebop.Form;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.GridPanel;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel;
import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.Text;
import com.arsdigita.bebop.form.CheckboxGroup;
import com.arsdigita.bebop.form.Option;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.util.UncheckedWrapperException;
+
import java.lang.reflect.Field;
-import java.util.Objects;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.configuration.ConfigurationInfo;
import org.libreccm.configuration.ConfigurationManager;
-import org.libreccm.configuration.SettingInfo;
-import org.libreccm.configuration.SettingManager;
-import org.libreccm.l10n.GlobalizationHelper;
import static com.arsdigita.ui.admin.AdminUiConstants.*;
@@ -56,133 +50,26 @@ public class SettingFormBoolean extends Form {
private static final String VALUE_FIELD = "valueField";
private static final Logger LOGGER = LogManager.getLogger(
- SettingFormBoolean.class);
+ SettingFormBoolean.class);
public SettingFormBoolean(
- final ConfigurationTab configurationTab,
- final ParameterSingleSelectionModel selectedConf,
- final ParameterSingleSelectionModel selectedSetting) {
+ final ConfigurationTab configurationTab,
+ final ParameterSingleSelectionModel selectedConf,
+ final ParameterSingleSelectionModel selectedSetting) {
super("settingFormBoolean", new BoxPanel(BoxPanel.VERTICAL));
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
- final Label target = (Label) e.getTarget();
+ add(new SettingFormHeader(selectedConf, selectedSetting));
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
- final SettingManager settingManager = cdiUtil.findBean(
- SettingManager.class);
- final GlobalizationHelper globalizationHelper = cdiUtil
- .findBean(GlobalizationHelper.class);
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationInfo confInfo = confManager
- .getConfigurationInfo(confClass);
- final SettingInfo settingInfo = settingManager.getSettingInfo(
- confClass, selectedSetting.getSelectedKey(state));
-
- final String confTitle = confInfo.getTitle(globalizationHelper
- .getNegotiatedLocale());
- final String settingLabel = settingInfo.getLabel(
- globalizationHelper.getNegotiatedLocale());
-
- target.setLabel(new GlobalizedMessage(
- "ui.admin.configuration.setting.edit.heading",
- ADMIN_BUNDLE,
- new String[]{confTitle, settingLabel}));
- });
-
- heading.setClassAttr("heading");
-
- add(heading);
-
- final Text desc = new Text(e -> {
- final PageState state = e.getPageState();
- final Text target = (Text) e.getTarget();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final SettingManager settingManager = cdiUtil.findBean(
- SettingManager.class);
- final GlobalizationHelper globalizationHelper = cdiUtil
- .findBean(GlobalizationHelper.class);
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final SettingInfo settingInfo = settingManager.getSettingInfo(
- confClass, selectedSetting.getSelectedKey(state));
-
- target.setText(settingInfo.getDescription(globalizationHelper
- .getNegotiatedLocale()));
- });
-
- add(desc);
-
- final GridPanel gridPanel = new GridPanel(2);
-
- gridPanel.add(new Label(new GlobalizedMessage(
- "ui.admin.configuration.setting.edit.current_value",
- ADMIN_BUNDLE)));
-
- gridPanel.add(new Text(e -> {
- final PageState state = e.getPageState();
- final Text target = (Text) e.getTarget();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
-
- final Object config = confManager.findConfiguration(confClass);
-
- final Boolean value;
- try {
- value = (Boolean) confClass.getField(selectedSetting
- .getSelectedKey(state)).get(config);
- } catch (NoSuchFieldException | SecurityException |
- IllegalAccessException | ClassCastException ex) {
- LOGGER.warn("Failed to read setting {} from configuration {}",
- selectedSetting.getSelectedKey(state),
- selectedConf.getSelectedKey(state));
- LOGGER.warn(ex);
- target.setText("Failed to read setting value.");
- return;
- }
-
- target.setText(Objects.toString(value));
- }));
-
- add(gridPanel);
+ add(new SettingFormCurrentValuePanel(selectedConf, selectedSetting));
final CheckboxGroup valueFieldGroup = new CheckboxGroup(
- VALUE_FIELD_GROUP);
+ VALUE_FIELD_GROUP);
valueFieldGroup.addOption(
- new Option(VALUE_FIELD,
- new Label(new GlobalizedMessage(
- "ui.admin.configuration.setting.edit.new_value",
- ADMIN_BUNDLE))));
+ new Option(VALUE_FIELD,
+ new Label(new GlobalizedMessage(
+ "ui.admin.configuration.setting.edit.new_value",
+ ADMIN_BUNDLE))));
final SaveCancelSection saveCancelSection = new SaveCancelSection();
add(saveCancelSection);
@@ -194,20 +81,20 @@ public class SettingFormBoolean extends Form {
final Class> confClass;
try {
confClass = Class
- .forName(selectedConf.getSelectedKey(state));
+ .forName(selectedConf.getSelectedKey(state));
} catch (ClassNotFoundException ex) {
throw new UncheckedWrapperException(ex);
}
final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ ConfigurationManager.class);
final Object config = confManager.findConfiguration(confClass);
final Boolean value;
try {
value = (Boolean) confClass.getField(selectedSetting
- .getSelectedKey(state)).get(config);
+ .getSelectedKey(state)).get(config);
} catch (NoSuchFieldException | SecurityException |
IllegalAccessException | ClassCastException ex) {
LOGGER.warn("Failed to read setting {} from configuration {}",
@@ -230,13 +117,13 @@ public class SettingFormBoolean extends Form {
final Class> confClass;
try {
confClass = Class
- .forName(selectedConf.getSelectedKey(state));
+ .forName(selectedConf.getSelectedKey(state));
} catch (ClassNotFoundException ex) {
throw new UncheckedWrapperException(ex);
}
final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
+ ConfigurationManager.class);
final String settingName = selectedSetting.getSelectedKey(state);
final Object config = confManager.findConfiguration(confClass);
@@ -246,38 +133,39 @@ public class SettingFormBoolean extends Form {
field = confClass.getField(settingName);
} catch (NoSuchFieldException | SecurityException ex) {
throw new FormProcessException(
- String.format(
- "Failed to retrieve field \"%s\" "
- + "from configuration class \"%s\".",
- settingName,
- confClass.getName()),
- new GlobalizedMessage(
- "ui.admin.configuration.setting.failed_to_set_value",
- ADMIN_BUNDLE),
- ex);
+ String.format(
+ "Failed to retrieve field \"%s\" "
+ + "from configuration class \"%s\".",
+ settingName,
+ confClass.getName()),
+ new GlobalizedMessage(
+ "ui.admin.configuration.setting.failed_to_set_value",
+ ADMIN_BUNDLE),
+ ex);
}
try {
final String[] valueData = (String[]) data.
- get(VALUE_FIELD_GROUP);
+ get(VALUE_FIELD_GROUP);
if (valueData != null && valueData.length > 0) {
if (VALUE_FIELD.equals(valueData[0])) {
field.set(config, Boolean.TRUE);
} else {
field.set(config, Boolean.FALSE);
}
+ configurationTab.hideSettingForms(state);
}
} catch (IllegalArgumentException | IllegalAccessException ex) {
throw new FormProcessException(
- String.format(
- "Failed to change value of field \"%s\" "
- + "of configuration class \"%s\".",
- settingName,
- confClass.getName()),
- new GlobalizedMessage(
- "ui.admin.configuration.setting.failed_to_set_value",
- ADMIN_BUNDLE),
- ex);
+ String.format(
+ "Failed to change value of field \"%s\" "
+ + "of configuration class \"%s\".",
+ settingName,
+ confClass.getName()),
+ new GlobalizedMessage(
+ "ui.admin.configuration.setting.failed_to_set_value",
+ ADMIN_BUNDLE),
+ ex);
}
});
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormDouble.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormDouble.java
new file mode 100644
index 000000000..0c2e8f4a3
--- /dev/null
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormDouble.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2016 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.ui.admin.configuration;
+
+import com.arsdigita.bebop.ParameterSingleSelectionModel;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class SettingFormDouble extends AbstractSettingFormSingleValue {
+
+ public SettingFormDouble(
+ final ConfigurationTab configurationTab,
+ final ParameterSingleSelectionModel selectedConf,
+ final ParameterSingleSelectionModel selectedSetting) {
+
+ super(configurationTab, selectedConf, selectedSetting);
+ }
+
+ @Override
+ Double convertValue(final String valueData) {
+ return Double.parseDouble(valueData);
+ }
+
+}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormLong.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormLong.java
index c84663600..dc286a7fb 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormLong.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormLong.java
@@ -18,279 +18,25 @@
*/
package com.arsdigita.ui.admin.configuration;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.GridPanel;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.UncheckedWrapperException;
-import java.lang.reflect.Field;
-import java.util.Objects;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.util.Strings;
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.configuration.ConfigurationInfo;
-import org.libreccm.configuration.ConfigurationManager;
-import org.libreccm.configuration.SettingInfo;
-import org.libreccm.configuration.SettingManager;
-import org.libreccm.l10n.GlobalizationHelper;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
/**
*
* @author Jens Pelzetter
*/
-public class SettingFormLong extends Form {
-
- private static final Logger LOGGER = LogManager.getLogger(
- SettingFormLong.class);
-
- private static final String VALUE_FIELD = "valueField";
+public class SettingFormLong extends AbstractSettingFormSingleValue {
public SettingFormLong(
- final ConfigurationTab configurationTab,
- final ParameterSingleSelectionModel selectedConf,
- final ParameterSingleSelectionModel selectedSetting) {
+ final ConfigurationTab configurationTab,
+ final ParameterSingleSelectionModel selectedConf,
+ final ParameterSingleSelectionModel selectedSetting) {
+
+ super(configurationTab, selectedConf, selectedSetting);
+ }
- super("settingBoolean", new BoxPanel(BoxPanel.VERTICAL));
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
- final Label target = (Label) e.getTarget();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
- final SettingManager settingManager = cdiUtil.findBean(
- SettingManager.class);
- final GlobalizationHelper globalizationHelper = cdiUtil
- .findBean(GlobalizationHelper.class);
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationInfo confInfo = confManager
- .getConfigurationInfo(confClass);
- final SettingInfo settingInfo = settingManager.getSettingInfo(
- confClass, selectedSetting.getSelectedKey(state));
-
- final String confTitle = confInfo.getTitle(globalizationHelper
- .getNegotiatedLocale());
- final String settingLabel = settingInfo.getLabel(
- globalizationHelper.getNegotiatedLocale());
-
- target.setLabel(new GlobalizedMessage(
- "ui.admin.configuration.setting.edit.heading",
- ADMIN_BUNDLE,
- new String[]{confTitle, settingLabel}));
- });
-
- heading.setClassAttr("heading");
-
- add(heading);
-
- final Text desc = new Text(e -> {
- final PageState state = e.getPageState();
- final Text target = (Text) e.getTarget();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final SettingManager settingManager = cdiUtil.findBean(
- SettingManager.class);
- final GlobalizationHelper globalizationHelper = cdiUtil
- .findBean(GlobalizationHelper.class);
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final SettingInfo settingInfo = settingManager.getSettingInfo(
- confClass, selectedSetting.getSelectedKey(state));
-
- target.setText(settingInfo.getDescription(globalizationHelper
- .getNegotiatedLocale()));
- });
-
- add(desc);
-
- final GridPanel gridPanel = new GridPanel(2);
-
- gridPanel.add(new Label(new GlobalizedMessage(
- "ui.admin.configuration.setting.edit.current_value",
- ADMIN_BUNDLE)));
-
- gridPanel.add(new Text(e -> {
- final PageState state = e.getPageState();
- final Text target = (Text) e.getTarget();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
-
- final Object config = confManager.findConfiguration(confClass);
-
- final Long value;
- try {
- value = (Long) confClass.getField(selectedSetting
- .getSelectedKey(state)).get(config);
- } catch (NoSuchFieldException | SecurityException |
- IllegalAccessException | ClassCastException ex) {
- LOGGER.warn("Failed to read setting {} from configuration {}",
- selectedSetting.getSelectedKey(state),
- selectedConf.getSelectedKey(state));
- LOGGER.warn(ex);
- target.setText("Failed to read setting value.");
- return;
- }
-
- target.setText(Objects.toString(value));
- }));
-
- add(gridPanel);
-
- final TextField valueField = new TextField(VALUE_FIELD);
- valueField.setLabel(new GlobalizedMessage(
- "ui.admin.configuration.setting.edit.new_value", ADMIN_BUNDLE));
- add(valueField);
-
- final SaveCancelSection saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- addInitListener(e -> {
- final PageState state = e.getPageState();
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
-
- final Object config = confManager.findConfiguration(confClass);
-
- final Long value;
- try {
- value = (Long) confClass.getField(selectedSetting
- .getSelectedKey(state)).get(config);
- } catch (NoSuchFieldException | SecurityException |
- IllegalAccessException | ClassCastException ex) {
- LOGGER.warn("Failed to read setting {} from configuration {}",
- selectedSetting.getSelectedKey(state),
- selectedConf.getSelectedKey(state));
- LOGGER.warn(ex);
- return;
- }
-
- valueField.setValue(state, value.toString());
- });
-
- addValidationListener(e -> {
- final FormData data = e.getFormData();
-
- final String valueData = data.getString(VALUE_FIELD);
-
- if (Strings.isBlank(valueData)) {
- data.addError(VALUE_FIELD,
- new GlobalizedMessage(
- "ui.admin.configuration.setting.error.blank",
- ADMIN_BUNDLE));
- }
-
- try {
- final Long value = new Long(valueData);
- LOGGER.debug("New value {} is a valid Long.", value);
- } catch (NumberFormatException ex) {
- data.addError(VALUE_FIELD,
- new GlobalizedMessage(
- "ui.admin.configuration.setting.error.not_a_long",
- ADMIN_BUNDLE));
- }
- });
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
- final FormData data = e.getFormData();
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
-
- final Class> confClass;
- try {
- confClass = Class
- .forName(selectedConf.getSelectedKey(state));
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- final ConfigurationManager confManager = cdiUtil.findBean(
- ConfigurationManager.class);
- final String settingName = selectedSetting.getSelectedKey(state);
-
- final Object config = confManager.findConfiguration(confClass);
-
- final Field field;
- try {
- field = confClass.getField(settingName);
- } catch (NoSuchFieldException | SecurityException ex) {
- throw new FormProcessException(
- String.format(
- "Failed to retrieve field \"%s\" "
- + "from configuration class \"%s\".",
- settingName,
- confClass.getName()),
- new GlobalizedMessage(
- "ui.admin.configuration.setting.failed_to_set_value",
- ADMIN_BUNDLE),
- ex);
- }
-
- final String valueData = data.getString(VALUE_FIELD);
- final Long value = new Long(valueData);
-
- try {
- field.set(config, value);
- } catch (IllegalArgumentException | IllegalAccessException ex) {
- throw new FormProcessException(
- String.format(
- "Failed to change value of field \"%s\" "
- + "of configuration class \"%s\".",
- settingName,
- confClass.getName()),
- new GlobalizedMessage(
- "ui.admin.configuration.setting.failed_to_set_value",
- ADMIN_BUNDLE),
- ex);
- }
- });
+ @Override
+ Long convertValue(final String valueData) {
+ return Long.parseLong(valueData);
}
}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormString.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormString.java
new file mode 100644
index 000000000..aa7f13e58
--- /dev/null
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/SettingFormString.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2016 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.ui.admin.configuration;
+
+import com.arsdigita.bebop.ParameterSingleSelectionModel;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class SettingFormString extends AbstractSettingFormSingleValue {
+
+ public SettingFormString(
+ final ConfigurationTab configurationTab,
+ final ParameterSingleSelectionModel selectedConf,
+ final ParameterSingleSelectionModel selectedSetting) {
+
+ super(configurationTab, selectedConf, selectedSetting);
+ }
+
+ @Override
+ String convertValue(final String valueData) {
+ return valueData;
+ }
+
+}
diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties
index 476be9e7b..053c5b9dc 100644
--- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties
+++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties
@@ -425,3 +425,9 @@ ui.admin.configuration.setting.edit.heading=Edit setting {0}/{1}
ui.admin.configuration.setting.edit.current_value=Current value
ui.admin.configuration.setting.edit.new_value=New value
ui.admin.configuration.setting.error.blank=New value can't be blank.
+ui.admin.categories.setting.localized_string.no_values=No values for this setting.
+ui.admin.categories.setting.localized_string.del_confirm=Are you sure to delete this value?
+ui.admin.configuration.setting.localized_string.value.edit=Edit
+ui.admin.categories.setting.localized_string.title.del=Delete
+ui.admin.configuration.setting.localized_string.back=Back
+ui.admin.configuration.setting.localized_string.locale.label=Locale
diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties
index 3c7d60ac8..6095c33ec 100644
--- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties
+++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties
@@ -428,3 +428,9 @@ ui.admin.configuration.setting.edit.heading=Parameter {0}/{1} bearbeiten
ui.admin.configuration.setting.edit.current_value=Aktueller Wert
ui.admin.configuration.setting.edit.new_value=Neuer Wert
ui.admin.configuration.setting.error.blank=Der neue Wert darf nicht leer sein.
+ui.admin.categories.setting.localized_string.no_values=Keine Werte f\u00fcr diesen Parameter.
+ui.admin.categories.setting.localized_string.del_confirm=Sind Sie sicher, dass Sie diesen Wert entfernen wollen?
+ui.admin.configuration.setting.localized_string.value.edit=Bearbeiten
+ui.admin.categories.setting.localized_string.title.del=L\u00f6schen
+ui.admin.configuration.setting.localized_string.back=Zur\u00fcck
+ui.admin.configuration.setting.localized_string.locale.label=Sprache
diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties
index dd8b88c0a..a575d5df6 100755
--- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties
+++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties
@@ -401,3 +401,9 @@ ui.admin.configuration.setting.edit.heading=Edit setting {0}/{1}
ui.admin.configuration.setting.edit.current_value=Current value
ui.admin.configuration.setting.edit.new_value=New value
ui.admin.configuration.setting.error.blank=New value can't be blank.
+ui.admin.categories.setting.localized_string.no_values=No values for this setting.
+ui.admin.categories.setting.localized_string.del_confirm=Are you sure to delete this value?
+ui.admin.configuration.setting.localized_string.value.edit=Edit
+ui.admin.categories.setting.localized_string.title.del=Delete
+ui.admin.configuration.setting.localized_string.back=Back
+ui.admin.configuration.setting.localized_string.locale.label=Locale
diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties
index 38b7457ee..479eb3a2d 100755
--- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties
+++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties
@@ -392,3 +392,9 @@ ui.admin.configuration.setting.edit.heading=Edit setting {0}/{1}
ui.admin.configuration.setting.edit.current_value=Current value
ui.admin.configuration.setting.edit.new_value=New value
ui.admin.configuration.setting.error.blank=New value can't be blank.
+ui.admin.categories.setting.localized_string.no_values=No values for this setting.
+ui.admin.categories.setting.localized_string.del_confirm=Are you sure to delete this value?
+ui.admin.configuration.setting.localized_string.value.edit=Edit
+ui.admin.categories.setting.localized_string.title.del=Delete
+ui.admin.configuration.setting.localized_string.back=Back
+ui.admin.configuration.setting.localized_string.locale.label=Locale