From c78122e677c381c4ae8bf7beebeea39ee022427a Mon Sep 17 00:00:00 2001 From: jensp Date: Tue, 17 May 2016 10:11:48 +0000 Subject: [PATCH] CCM NG: Some bugfixing for the configuration tab. git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4077 8810af33-2d31-482b-a856-94f89814c4df --- .../admin/configuration/ConfigurationTab.java | 34 +++++--- .../configuration/ConfigurationTable.java | 82 ++++++++++--------- .../configuration/ConfigurationsTable.java | 2 + .../ui/admin/AdminResources.properties | 1 + .../ui/admin/AdminResources_de.properties | 1 + .../ui/admin/AdminResources_en.properties | 1 + .../ui/admin/AdminResources_fr.properties | 1 + 7 files changed, 73 insertions(+), 49 deletions(-) diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTab.java index b2d562cc5..42a599c2e 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTab.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTab.java @@ -55,6 +55,7 @@ public class ConfigurationTab extends LayoutPanel { private final Form confClassesFilterForm; private final ConfigurationsTable configurationsTable; + private final ActionLink configurationBackLink; private final ConfigurationTable configurationTable; private final SettingFormBoolean settingFormBoolean; @@ -76,7 +77,7 @@ public class ConfigurationTab extends LayoutPanel { selectedSettingParam = new StringParameter("selectedSetting"); selectedSetting = new ParameterSingleSelectionModel<>( - selectedSettingParam); + selectedSettingParam); selectedValueParam = new StringParameter("selectedValue"); selectedValue = new ParameterSingleSelectionModel<>(selectedValueParam); @@ -84,15 +85,15 @@ public class ConfigurationTab extends LayoutPanel { final SegmentedPanel left = new SegmentedPanel(); confClassesFilterHeading = new Label(new GlobalizedMessage( - "ui.admin.configuration.classes.filter.heading", ADMIN_BUNDLE)); + "ui.admin.configuration.classes.filter.heading", ADMIN_BUNDLE)); confClassesFilterForm = new Form("confClassesForm"); final TextField confClassesFilter = new TextField(CONF_CLASSES_FILTER); confClassesFilterForm.add(confClassesFilter); confClassesFilterForm.add(new Submit(new GlobalizedMessage( - "ui.admin.configuration.classes.filter.submit", ADMIN_BUNDLE))); + "ui.admin.configuration.classes.filter.submit", ADMIN_BUNDLE))); final ActionLink clearLink = new ActionLink(new GlobalizedMessage( - "ui.admin.configuration.classes.filter.clear", ADMIN_BUNDLE)); + "ui.admin.configuration.classes.filter.clear", ADMIN_BUNDLE)); clearLink.addActionListener(e -> { final PageState state = e.getPageState(); confClassesFilter.setValue(state, null); @@ -104,9 +105,17 @@ public class ConfigurationTab extends LayoutPanel { final BoxPanel body = new BoxPanel(BoxPanel.VERTICAL); configurationsTable = new ConfigurationsTable( - this, selectedConf, confClassesFilter); + this, selectedConf, confClassesFilter); body.add(configurationsTable); + configurationBackLink = new ActionLink(new GlobalizedMessage( + "ui.admin.configuration.back_to_configurations", + ADMIN_BUNDLE)); + configurationBackLink.addActionListener(e -> { + final PageState state = e.getPageState(); + hideConfiguration(state); + }); + body.add(configurationBackLink); configurationTable = new ConfigurationTable(this, selectedConf, selectedSetting); @@ -138,15 +147,15 @@ public class ConfigurationTab extends LayoutPanel { body.add(settingFormString); settingEditorLocalizedString = new SettingEditorLocalizedString( - this, selectedConf, selectedSetting, selectedValue); + this, selectedConf, selectedSetting, selectedValue); body.add(settingEditorLocalizedString); settingEditorStringList = new SettingEditorStringList( - this, selectedConf, selectedSetting, selectedValue); + this, selectedConf, selectedSetting, selectedValue); body.add(settingEditorStringList); settingEditorEnum = new SettingEditorEnum( - this, selectedConf, selectedSetting, selectedValue); + this, selectedConf, selectedSetting, selectedValue); body.add(settingEditorEnum); setBody(body); @@ -164,6 +173,7 @@ public class ConfigurationTab extends LayoutPanel { page.setVisibleDefault(confClassesFilterForm, true); page.setVisibleDefault(configurationsTable, true); + page.setVisibleDefault(configurationBackLink, false); page.setVisibleDefault(configurationTable, false); page.setVisibleDefault(settingFormBoolean, false); @@ -203,14 +213,16 @@ public class ConfigurationTab extends LayoutPanel { hideConfigurationsTable(state); hideSettingForms(state); + configurationBackLink.setVisible(state, true); configurationTable.setVisible(state, true); } protected void hideConfiguration(final PageState state) { + configurationBackLink.setVisible(state, false); configurationTable.setVisible(state, false); selectedConf.clearSelection(state); - + showConfigurationsTable(state); } @@ -365,11 +377,9 @@ public class ConfigurationTab extends LayoutPanel { settingEditorLocalizedString.setVisible(state, false); settingEditorStringList.setVisible(state, false); settingEditorEnum.setVisible(state, false); - + selectedSetting.clearSelection(state); selectedValue.clearSelection(state); - - showConfiguration(state); } } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTable.java index 68bed6f9a..d5020d8a0 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTable.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationTable.java @@ -34,6 +34,7 @@ import com.arsdigita.bebop.table.TableModelBuilder; import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.util.LockableImpl; import com.arsdigita.util.UncheckedWrapperException; +import java.lang.reflect.Field; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -54,7 +55,7 @@ import static com.arsdigita.ui.admin.AdminUiConstants.*; public class ConfigurationTable extends Table { private static final Logger LOGGER = LogManager.getLogger( - ConfigurationTable.class); + ConfigurationTable.class); private static final int COL_SETTING_LABEL = 0; private static final int COL_SETTING_VALUE = 1; @@ -64,9 +65,9 @@ public class ConfigurationTable extends Table { private ParameterSingleSelectionModel selectedConf; public ConfigurationTable( - final ConfigurationTab configurationTab, - final ParameterSingleSelectionModel selectedConf, - final ParameterSingleSelectionModel selectedSetting) { + final ConfigurationTab configurationTab, + final ParameterSingleSelectionModel selectedConf, + final ParameterSingleSelectionModel selectedSetting) { super(); @@ -75,32 +76,32 @@ public class ConfigurationTable extends Table { this.selectedConf = selectedConf; setEmptyView(new Label(new GlobalizedMessage( - "ui.admin.configuration.settings.none", ADMIN_BUNDLE))); + "ui.admin.configuration.settings.none", ADMIN_BUNDLE))); final TableColumnModel columnModel = getColumnModel(); columnModel.add(new TableColumn( - COL_SETTING_LABEL, - new Label(new GlobalizedMessage( - "ui.admin.configuration.settings.table.col_setting_label.header", - ADMIN_BUNDLE)))); + COL_SETTING_LABEL, + new Label(new GlobalizedMessage( + "ui.admin.configuration.settings.table.col_setting_label.header", + ADMIN_BUNDLE)))); columnModel.add(new TableColumn( - COL_SETTING_VALUE, - new Label(new GlobalizedMessage( - "ui.admin.configuration.settings.table.col_setting_value.header", - ADMIN_BUNDLE)))); + COL_SETTING_VALUE, + new Label(new GlobalizedMessage( + "ui.admin.configuration.settings.table.col_setting_value.header", + ADMIN_BUNDLE)))); columnModel.add(new TableColumn( - COL_SETTING_DESC, - new Label(new GlobalizedMessage( - "ui.admin.configuration.settings.table.col_setting_desc.header", - ADMIN_BUNDLE)))); + COL_SETTING_DESC, + new Label(new GlobalizedMessage( + "ui.admin.configuration.settings.table.col_setting_desc.header", + ADMIN_BUNDLE)))); columnModel.add(new TableColumn( - COL_EDIT_SETTING, - new Label(new GlobalizedMessage( - "ui.admin.configuration.settings.table.col_edit_setting.header", - ADMIN_BUNDLE)))); + COL_EDIT_SETTING, + new Label(new GlobalizedMessage( + "ui.admin.configuration.settings.table.col_edit_setting.header", + ADMIN_BUNDLE)))); columnModel.get(COL_EDIT_SETTING).setCellRenderer( - new TableCellRenderer() { + new TableCellRenderer() { @Override public Component getComponent(final Table table, @@ -110,7 +111,7 @@ public class ConfigurationTable extends Table { final Object key, final int row, final int column) { - return new ControlLink((String) value); + return new ControlLink((Component) value); } }); @@ -124,6 +125,7 @@ public class ConfigurationTable extends Table { if (event.getColumn() == COL_EDIT_SETTING) { final String settingName = (String) event.getRowKey(); selectedSetting.setSelectedKey(state, settingName); + } } @@ -138,12 +140,12 @@ public class ConfigurationTable extends Table { } private class ConfigurationTableModelBuilder - extends LockableImpl implements TableModelBuilder { + extends LockableImpl implements TableModelBuilder { @Override public TableModel makeModel(final Table table, final PageState state) { final ConfigurationManager confManager = CdiUtil.createCdiUtil() - .findBean(ConfigurationManager.class); + .findBean(ConfigurationManager.class); final Class confClass; try { confClass = Class.forName(selectedConf.getSelectedKey(state)); @@ -151,12 +153,12 @@ public class ConfigurationTable extends Table { LOGGER.error("Configuration class '{}' not found.", selectedConf.getSelectedKey(state)); throw new UncheckedWrapperException(String.format( - "Configuration class '%s not found'", - selectedConf.getSelectedKey(state)), ex); + "Configuration class '%s not found'", + selectedConf.getSelectedKey(state)), ex); } final Object configuration = confManager - .findConfiguration(confClass); + .findConfiguration(confClass); return new ConfigurationTableModel(configuration, state); } @@ -201,30 +203,36 @@ public class ConfigurationTable extends Table { public Object getElementAt(final int columnIndex) { final String setting = settings.get(index); final SettingInfo settingInfo = settingManager.getSettingInfo( - configuration.getClass(), setting); + configuration.getClass(), setting); switch (columnIndex) { case COL_SETTING_LABEL: return settingInfo.getLabel(globalizationHelper - .getNegotiatedLocale()); + .getNegotiatedLocale()); case COL_SETTING_VALUE: { try { - return configuration.getClass().getField(setting).get( - configuration); - } catch (NoSuchFieldException | SecurityException | IllegalAccessException ex) { + final Field field = configuration.getClass(). + getDeclaredField(setting); + field.setAccessible(true); + return field.get(configuration); +// return configuration.getClass(). +// getDeclaredField(setting).get(configuration); + } catch (NoSuchFieldException | + SecurityException | + IllegalAccessException ex) { LOGGER.error("Failed to read value from configuration.", ex); return new Label(new GlobalizedMessage( - "ui.admin.configuration.settings.read_error", - ADMIN_BUNDLE)); + "ui.admin.configuration.settings.read_error", + ADMIN_BUNDLE)); } } case COL_SETTING_DESC: return settingInfo.getDescription(globalizationHelper - .getNegotiatedLocale()); + .getNegotiatedLocale()); case COL_EDIT_SETTING: return new Label(new GlobalizedMessage( - "ui.admin.configuration.settings.edit", ADMIN_BUNDLE)); + "ui.admin.configuration.settings.edit", ADMIN_BUNDLE)); default: throw new IllegalArgumentException("Illegal column index"); } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationsTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationsTable.java index 5bc7ad6a6..243a2b2b4 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationsTable.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/configuration/ConfigurationsTable.java @@ -106,6 +106,8 @@ public class ConfigurationsTable extends Table { if (event.getColumn() == COL_TITLE) { final String confClassName = (String) event.getRowKey(); selectedConf.setSelectedKey(state, confClassName); + + configurationTab.showConfiguration(state); } } 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 730e58a64..421296739 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 @@ -449,3 +449,4 @@ ui.admin.configuration.setting.enum.col_del=Delete ui.admin.configuration.setting.enum.value.edit=Edit ui.admin.configuration.setting.enum.value.del=Delete ui.admin.configuration.setting.enum.value.label=Value +ui.admin.configuration.back_to_configurations=Back to list of configurations 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 65d53d647..f347c2a4e 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 @@ -452,3 +452,4 @@ ui.admin.configuration.setting.enum.col_del=L\u00f6schen ui.admin.configuration.setting.enum.value.edit=Bearbeiten ui.admin.configuration.setting.enum.value.del=L\u00f6schen ui.admin.configuration.setting.enum.value.label=Wert +ui.admin.configuration.back_to_configurations=Zur\u00fcck zur Liste der Konfigurationen 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 b2f54da7e..ca74df499 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 @@ -425,3 +425,4 @@ ui.admin.configuration.setting.enum.col_del=Delete ui.admin.configuration.setting.enum.value.edit=Edit ui.admin.configuration.setting.enum.value.del=Delete ui.admin.configuration.setting.enum.value.label=Value +ui.admin.configuration.back_to_configurations=Back to list of configurations 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 48469efa7..dab60e153 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 @@ -416,3 +416,4 @@ ui.admin.configuration.setting.enum.col_del=Delete ui.admin.configuration.setting.enum.value.edit=Edit ui.admin.configuration.setting.enum.value.del=Delete ui.admin.configuration.setting.enum.value.label=Value +ui.admin.configuration.back_to_configurations=Back to list of configurations