CCM NG: Some bugfixing for the configuration tab.

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4077 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2016-05-17 10:11:48 +00:00
parent 6c89d10a80
commit c78122e677
7 changed files with 73 additions and 49 deletions

View File

@ -55,6 +55,7 @@ public class ConfigurationTab extends LayoutPanel {
private final Form confClassesFilterForm; private final Form confClassesFilterForm;
private final ConfigurationsTable configurationsTable; private final ConfigurationsTable configurationsTable;
private final ActionLink configurationBackLink;
private final ConfigurationTable configurationTable; private final ConfigurationTable configurationTable;
private final SettingFormBoolean settingFormBoolean; private final SettingFormBoolean settingFormBoolean;
@ -76,7 +77,7 @@ public class ConfigurationTab extends LayoutPanel {
selectedSettingParam = new StringParameter("selectedSetting"); selectedSettingParam = new StringParameter("selectedSetting");
selectedSetting = new ParameterSingleSelectionModel<>( selectedSetting = new ParameterSingleSelectionModel<>(
selectedSettingParam); selectedSettingParam);
selectedValueParam = new StringParameter("selectedValue"); selectedValueParam = new StringParameter("selectedValue");
selectedValue = new ParameterSingleSelectionModel<>(selectedValueParam); selectedValue = new ParameterSingleSelectionModel<>(selectedValueParam);
@ -84,15 +85,15 @@ public class ConfigurationTab extends LayoutPanel {
final SegmentedPanel left = new SegmentedPanel(); final SegmentedPanel left = new SegmentedPanel();
confClassesFilterHeading = new Label(new GlobalizedMessage( 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"); confClassesFilterForm = new Form("confClassesForm");
final TextField confClassesFilter = new TextField(CONF_CLASSES_FILTER); final TextField confClassesFilter = new TextField(CONF_CLASSES_FILTER);
confClassesFilterForm.add(confClassesFilter); confClassesFilterForm.add(confClassesFilter);
confClassesFilterForm.add(new Submit(new GlobalizedMessage( 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( 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 -> { clearLink.addActionListener(e -> {
final PageState state = e.getPageState(); final PageState state = e.getPageState();
confClassesFilter.setValue(state, null); confClassesFilter.setValue(state, null);
@ -104,9 +105,17 @@ public class ConfigurationTab extends LayoutPanel {
final BoxPanel body = new BoxPanel(BoxPanel.VERTICAL); final BoxPanel body = new BoxPanel(BoxPanel.VERTICAL);
configurationsTable = new ConfigurationsTable( configurationsTable = new ConfigurationsTable(
this, selectedConf, confClassesFilter); this, selectedConf, confClassesFilter);
body.add(configurationsTable); 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, configurationTable = new ConfigurationTable(this,
selectedConf, selectedConf,
selectedSetting); selectedSetting);
@ -138,15 +147,15 @@ public class ConfigurationTab extends LayoutPanel {
body.add(settingFormString); body.add(settingFormString);
settingEditorLocalizedString = new SettingEditorLocalizedString( settingEditorLocalizedString = new SettingEditorLocalizedString(
this, selectedConf, selectedSetting, selectedValue); this, selectedConf, selectedSetting, selectedValue);
body.add(settingEditorLocalizedString); body.add(settingEditorLocalizedString);
settingEditorStringList = new SettingEditorStringList( settingEditorStringList = new SettingEditorStringList(
this, selectedConf, selectedSetting, selectedValue); this, selectedConf, selectedSetting, selectedValue);
body.add(settingEditorStringList); body.add(settingEditorStringList);
settingEditorEnum = new SettingEditorEnum( settingEditorEnum = new SettingEditorEnum(
this, selectedConf, selectedSetting, selectedValue); this, selectedConf, selectedSetting, selectedValue);
body.add(settingEditorEnum); body.add(settingEditorEnum);
setBody(body); setBody(body);
@ -164,6 +173,7 @@ public class ConfigurationTab extends LayoutPanel {
page.setVisibleDefault(confClassesFilterForm, true); page.setVisibleDefault(confClassesFilterForm, true);
page.setVisibleDefault(configurationsTable, true); page.setVisibleDefault(configurationsTable, true);
page.setVisibleDefault(configurationBackLink, false);
page.setVisibleDefault(configurationTable, false); page.setVisibleDefault(configurationTable, false);
page.setVisibleDefault(settingFormBoolean, false); page.setVisibleDefault(settingFormBoolean, false);
@ -203,14 +213,16 @@ public class ConfigurationTab extends LayoutPanel {
hideConfigurationsTable(state); hideConfigurationsTable(state);
hideSettingForms(state); hideSettingForms(state);
configurationBackLink.setVisible(state, true);
configurationTable.setVisible(state, true); configurationTable.setVisible(state, true);
} }
protected void hideConfiguration(final PageState state) { protected void hideConfiguration(final PageState state) {
configurationBackLink.setVisible(state, false);
configurationTable.setVisible(state, false); configurationTable.setVisible(state, false);
selectedConf.clearSelection(state); selectedConf.clearSelection(state);
showConfigurationsTable(state); showConfigurationsTable(state);
} }
@ -365,11 +377,9 @@ public class ConfigurationTab extends LayoutPanel {
settingEditorLocalizedString.setVisible(state, false); settingEditorLocalizedString.setVisible(state, false);
settingEditorStringList.setVisible(state, false); settingEditorStringList.setVisible(state, false);
settingEditorEnum.setVisible(state, false); settingEditorEnum.setVisible(state, false);
selectedSetting.clearSelection(state); selectedSetting.clearSelection(state);
selectedValue.clearSelection(state); selectedValue.clearSelection(state);
showConfiguration(state);
} }
} }

View File

@ -34,6 +34,7 @@ import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.util.LockableImpl; import com.arsdigita.util.LockableImpl;
import com.arsdigita.util.UncheckedWrapperException; import com.arsdigita.util.UncheckedWrapperException;
import java.lang.reflect.Field;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -54,7 +55,7 @@ import static com.arsdigita.ui.admin.AdminUiConstants.*;
public class ConfigurationTable extends Table { public class ConfigurationTable extends Table {
private static final Logger LOGGER = LogManager.getLogger( 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_LABEL = 0;
private static final int COL_SETTING_VALUE = 1; private static final int COL_SETTING_VALUE = 1;
@ -64,9 +65,9 @@ public class ConfigurationTable extends Table {
private ParameterSingleSelectionModel<String> selectedConf; private ParameterSingleSelectionModel<String> selectedConf;
public ConfigurationTable( public ConfigurationTable(
final ConfigurationTab configurationTab, final ConfigurationTab configurationTab,
final ParameterSingleSelectionModel<String> selectedConf, final ParameterSingleSelectionModel<String> selectedConf,
final ParameterSingleSelectionModel<String> selectedSetting) { final ParameterSingleSelectionModel<String> selectedSetting) {
super(); super();
@ -75,32 +76,32 @@ public class ConfigurationTable extends Table {
this.selectedConf = selectedConf; this.selectedConf = selectedConf;
setEmptyView(new Label(new GlobalizedMessage( setEmptyView(new Label(new GlobalizedMessage(
"ui.admin.configuration.settings.none", ADMIN_BUNDLE))); "ui.admin.configuration.settings.none", ADMIN_BUNDLE)));
final TableColumnModel columnModel = getColumnModel(); final TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
COL_SETTING_LABEL, COL_SETTING_LABEL,
new Label(new GlobalizedMessage( new Label(new GlobalizedMessage(
"ui.admin.configuration.settings.table.col_setting_label.header", "ui.admin.configuration.settings.table.col_setting_label.header",
ADMIN_BUNDLE)))); ADMIN_BUNDLE))));
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
COL_SETTING_VALUE, COL_SETTING_VALUE,
new Label(new GlobalizedMessage( new Label(new GlobalizedMessage(
"ui.admin.configuration.settings.table.col_setting_value.header", "ui.admin.configuration.settings.table.col_setting_value.header",
ADMIN_BUNDLE)))); ADMIN_BUNDLE))));
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
COL_SETTING_DESC, COL_SETTING_DESC,
new Label(new GlobalizedMessage( new Label(new GlobalizedMessage(
"ui.admin.configuration.settings.table.col_setting_desc.header", "ui.admin.configuration.settings.table.col_setting_desc.header",
ADMIN_BUNDLE)))); ADMIN_BUNDLE))));
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
COL_EDIT_SETTING, COL_EDIT_SETTING,
new Label(new GlobalizedMessage( new Label(new GlobalizedMessage(
"ui.admin.configuration.settings.table.col_edit_setting.header", "ui.admin.configuration.settings.table.col_edit_setting.header",
ADMIN_BUNDLE)))); ADMIN_BUNDLE))));
columnModel.get(COL_EDIT_SETTING).setCellRenderer( columnModel.get(COL_EDIT_SETTING).setCellRenderer(
new TableCellRenderer() { new TableCellRenderer() {
@Override @Override
public Component getComponent(final Table table, public Component getComponent(final Table table,
@ -110,7 +111,7 @@ public class ConfigurationTable extends Table {
final Object key, final Object key,
final int row, final int row,
final int column) { 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) { if (event.getColumn() == COL_EDIT_SETTING) {
final String settingName = (String) event.getRowKey(); final String settingName = (String) event.getRowKey();
selectedSetting.setSelectedKey(state, settingName); selectedSetting.setSelectedKey(state, settingName);
} }
} }
@ -138,12 +140,12 @@ public class ConfigurationTable extends Table {
} }
private class ConfigurationTableModelBuilder private class ConfigurationTableModelBuilder
extends LockableImpl implements TableModelBuilder { extends LockableImpl implements TableModelBuilder {
@Override @Override
public TableModel makeModel(final Table table, final PageState state) { public TableModel makeModel(final Table table, final PageState state) {
final ConfigurationManager confManager = CdiUtil.createCdiUtil() final ConfigurationManager confManager = CdiUtil.createCdiUtil()
.findBean(ConfigurationManager.class); .findBean(ConfigurationManager.class);
final Class<?> confClass; final Class<?> confClass;
try { try {
confClass = Class.forName(selectedConf.getSelectedKey(state)); confClass = Class.forName(selectedConf.getSelectedKey(state));
@ -151,12 +153,12 @@ public class ConfigurationTable extends Table {
LOGGER.error("Configuration class '{}' not found.", LOGGER.error("Configuration class '{}' not found.",
selectedConf.getSelectedKey(state)); selectedConf.getSelectedKey(state));
throw new UncheckedWrapperException(String.format( throw new UncheckedWrapperException(String.format(
"Configuration class '%s not found'", "Configuration class '%s not found'",
selectedConf.getSelectedKey(state)), ex); selectedConf.getSelectedKey(state)), ex);
} }
final Object configuration = confManager final Object configuration = confManager
.findConfiguration(confClass); .findConfiguration(confClass);
return new ConfigurationTableModel(configuration, state); return new ConfigurationTableModel(configuration, state);
} }
@ -201,30 +203,36 @@ public class ConfigurationTable extends Table {
public Object getElementAt(final int columnIndex) { public Object getElementAt(final int columnIndex) {
final String setting = settings.get(index); final String setting = settings.get(index);
final SettingInfo settingInfo = settingManager.getSettingInfo( final SettingInfo settingInfo = settingManager.getSettingInfo(
configuration.getClass(), setting); configuration.getClass(), setting);
switch (columnIndex) { switch (columnIndex) {
case COL_SETTING_LABEL: case COL_SETTING_LABEL:
return settingInfo.getLabel(globalizationHelper return settingInfo.getLabel(globalizationHelper
.getNegotiatedLocale()); .getNegotiatedLocale());
case COL_SETTING_VALUE: { case COL_SETTING_VALUE: {
try { try {
return configuration.getClass().getField(setting).get( final Field field = configuration.getClass().
configuration); getDeclaredField(setting);
} catch (NoSuchFieldException | SecurityException | IllegalAccessException ex) { 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.", LOGGER.error("Failed to read value from configuration.",
ex); ex);
return new Label(new GlobalizedMessage( return new Label(new GlobalizedMessage(
"ui.admin.configuration.settings.read_error", "ui.admin.configuration.settings.read_error",
ADMIN_BUNDLE)); ADMIN_BUNDLE));
} }
} }
case COL_SETTING_DESC: case COL_SETTING_DESC:
return settingInfo.getDescription(globalizationHelper return settingInfo.getDescription(globalizationHelper
.getNegotiatedLocale()); .getNegotiatedLocale());
case COL_EDIT_SETTING: case COL_EDIT_SETTING:
return new Label(new GlobalizedMessage( return new Label(new GlobalizedMessage(
"ui.admin.configuration.settings.edit", ADMIN_BUNDLE)); "ui.admin.configuration.settings.edit", ADMIN_BUNDLE));
default: default:
throw new IllegalArgumentException("Illegal column index"); throw new IllegalArgumentException("Illegal column index");
} }

View File

@ -106,6 +106,8 @@ public class ConfigurationsTable extends Table {
if (event.getColumn() == COL_TITLE) { if (event.getColumn() == COL_TITLE) {
final String confClassName = (String) event.getRowKey(); final String confClassName = (String) event.getRowKey();
selectedConf.setSelectedKey(state, confClassName); selectedConf.setSelectedKey(state, confClassName);
configurationTab.showConfiguration(state);
} }
} }

View File

@ -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.edit=Edit
ui.admin.configuration.setting.enum.value.del=Delete ui.admin.configuration.setting.enum.value.del=Delete
ui.admin.configuration.setting.enum.value.label=Value ui.admin.configuration.setting.enum.value.label=Value
ui.admin.configuration.back_to_configurations=Back to list of configurations

View File

@ -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.edit=Bearbeiten
ui.admin.configuration.setting.enum.value.del=L\u00f6schen ui.admin.configuration.setting.enum.value.del=L\u00f6schen
ui.admin.configuration.setting.enum.value.label=Wert ui.admin.configuration.setting.enum.value.label=Wert
ui.admin.configuration.back_to_configurations=Zur\u00fcck zur Liste der Konfigurationen

View File

@ -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.edit=Edit
ui.admin.configuration.setting.enum.value.del=Delete ui.admin.configuration.setting.enum.value.del=Delete
ui.admin.configuration.setting.enum.value.label=Value ui.admin.configuration.setting.enum.value.label=Value
ui.admin.configuration.back_to_configurations=Back to list of configurations

View File

@ -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.edit=Edit
ui.admin.configuration.setting.enum.value.del=Delete ui.admin.configuration.setting.enum.value.del=Delete
ui.admin.configuration.setting.enum.value.label=Value ui.admin.configuration.setting.enum.value.label=Value
ui.admin.configuration.back_to_configurations=Back to list of configurations