CCM NG: JavaDoc for the Admin UI for PageModels
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5143 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
f5947051f2
commit
22cc0ea222
|
|
@ -27,7 +27,6 @@ import com.arsdigita.bebop.ParameterSingleSelectionModel;
|
||||||
import com.arsdigita.bebop.Table;
|
import com.arsdigita.bebop.Table;
|
||||||
import com.arsdigita.bebop.event.TableActionEvent;
|
import com.arsdigita.bebop.event.TableActionEvent;
|
||||||
import com.arsdigita.bebop.event.TableActionListener;
|
import com.arsdigita.bebop.event.TableActionListener;
|
||||||
import com.arsdigita.bebop.table.TableCellRenderer;
|
|
||||||
import com.arsdigita.bebop.table.TableColumn;
|
import com.arsdigita.bebop.table.TableColumn;
|
||||||
import com.arsdigita.bebop.table.TableColumnModel;
|
import com.arsdigita.bebop.table.TableColumnModel;
|
||||||
import com.arsdigita.bebop.table.TableModel;
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
|
|
@ -38,6 +37,7 @@ import com.arsdigita.util.LockableImpl;
|
||||||
|
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.pagemodel.ComponentModel;
|
import org.libreccm.pagemodel.ComponentModel;
|
||||||
|
import org.libreccm.pagemodel.PageModel;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -55,14 +55,41 @@ class ComponentsTable extends Table {
|
||||||
protected static final int COL_EDIT = 2;
|
protected static final int COL_EDIT = 2;
|
||||||
protected static final int COL_DELETE = 3;
|
protected static final int COL_DELETE = 3;
|
||||||
|
|
||||||
public ComponentsTable(
|
/**
|
||||||
final PageModelsTab pageModelTab,
|
* The {@link PageModelsTab} instance in which the table is displayed.
|
||||||
|
*/
|
||||||
|
private final PageModelsTab pageModelsTab;
|
||||||
|
/**
|
||||||
|
* The selection model for the ID of the selected page model.
|
||||||
|
*/
|
||||||
|
private final ParameterSingleSelectionModel<String> selectedModelId;
|
||||||
|
/**
|
||||||
|
* The selection model for the ID of the selected component.
|
||||||
|
*/
|
||||||
|
private final ParameterSingleSelectionModel<String> selectedComponentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for the table.
|
||||||
|
*
|
||||||
|
* @param pageModelsTab The {@link PageModelsTab} instance in which
|
||||||
|
* the table is displayed.
|
||||||
|
* @param selectedModelId The selection model for the ID of the selected
|
||||||
|
* page model.
|
||||||
|
* @param selectedComponentId The selection model for the ID of the selected
|
||||||
|
* component.
|
||||||
|
*/
|
||||||
|
ComponentsTable(
|
||||||
|
final PageModelsTab pageModelsTab,
|
||||||
final ParameterSingleSelectionModel<String> selectedModelId,
|
final ParameterSingleSelectionModel<String> selectedModelId,
|
||||||
final ParameterSingleSelectionModel<String> selectedComponentId) {
|
final ParameterSingleSelectionModel<String> selectedComponentId) {
|
||||||
|
|
||||||
super();
|
super();
|
||||||
super.setIdAttr("pageModelComponentModelsTable");
|
super.setIdAttr("pageModelComponentModelsTable");
|
||||||
|
|
||||||
|
this.pageModelsTab = pageModelsTab;
|
||||||
|
this.selectedModelId = selectedModelId;
|
||||||
|
this.selectedComponentId = selectedComponentId;
|
||||||
|
|
||||||
super.setEmptyView(new Label(new GlobalizedMessage(
|
super.setEmptyView(new Label(new GlobalizedMessage(
|
||||||
"ui.admin.pagemodels.componentmodels.none",
|
"ui.admin.pagemodels.componentmodels.none",
|
||||||
AdminUiConstants.ADMIN_BUNDLE)));
|
AdminUiConstants.ADMIN_BUNDLE)));
|
||||||
|
|
@ -89,86 +116,153 @@ class ComponentsTable extends Table {
|
||||||
"ui.admin.pagemodels.componentmodels.cols.delete.heading",
|
"ui.admin.pagemodels.componentmodels.cols.delete.heading",
|
||||||
AdminUiConstants.ADMIN_BUNDLE))));
|
AdminUiConstants.ADMIN_BUNDLE))));
|
||||||
|
|
||||||
columnModel.get(COL_EDIT).setCellRenderer(
|
columnModel.get(COL_EDIT).setCellRenderer(this::renderEditCell);
|
||||||
new TableCellRenderer() {
|
// 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) {
|
||||||
|
//
|
||||||
|
// final ControlLink link = new ControlLink((Component) value);
|
||||||
|
// return link;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// });
|
||||||
|
|
||||||
@Override
|
columnModel.get(COL_DELETE).setCellRenderer(this::renderDeleteCell);
|
||||||
public Component getComponent(final Table table,
|
// columnModel.get(COL_DELETE).setCellRenderer(
|
||||||
final PageState state,
|
// new TableCellRenderer() {
|
||||||
final Object value,
|
//
|
||||||
final boolean isSelected,
|
// @Override
|
||||||
final Object key,
|
// public Component getComponent(final Table table,
|
||||||
final int row,
|
// final PageState state,
|
||||||
final int column) {
|
// final Object value,
|
||||||
|
// final boolean isSelected,
|
||||||
|
// final Object key,
|
||||||
|
// final int row,
|
||||||
|
// final int column) {
|
||||||
|
//
|
||||||
|
// final ControlLink link = new ControlLink((Component) value);
|
||||||
|
// link.setConfirmation(new GlobalizedMessage(
|
||||||
|
// "ui.admin.pagemodels.componentmodels.cols.delete.confirmation",
|
||||||
|
// AdminUiConstants.ADMIN_BUNDLE));
|
||||||
|
// return link;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// });
|
||||||
|
|
||||||
final ControlLink link = new ControlLink((Component) value);
|
super.addTableActionListener(new ComponentsTableActionListener());
|
||||||
return link;
|
// super.addTableActionListener(new TableActionListener() {
|
||||||
}
|
//
|
||||||
|
// @Override
|
||||||
});
|
// public void cellSelected(final TableActionEvent event)
|
||||||
|
// throws FormProcessException {
|
||||||
columnModel.get(COL_DELETE).setCellRenderer(
|
//
|
||||||
new TableCellRenderer() {
|
// final PageState state = event.getPageState();
|
||||||
|
// final String selectedModelIdStr = selectedModelId
|
||||||
@Override
|
// .getSelectedKey(state);
|
||||||
public Component getComponent(final Table table,
|
// final String key = (String) event.getRowKey();
|
||||||
final PageState state,
|
//
|
||||||
final Object value,
|
// switch (event.getColumn()) {
|
||||||
final boolean isSelected,
|
// case COL_EDIT:
|
||||||
final Object key,
|
// selectedComponentId.setSelectedKey(state, key);
|
||||||
final int row,
|
// pageModelsTab.showComponentForm(state);
|
||||||
final int column) {
|
// break;
|
||||||
|
// case COL_DELETE:
|
||||||
final ControlLink link = new ControlLink((Component) value);
|
// final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
link.setConfirmation(new GlobalizedMessage(
|
// final PageModelsController controller = cdiUtil
|
||||||
"ui.admin.pagemodels.componentmodels.cols.delete.confirmation",
|
// .findBean(PageModelsController.class);
|
||||||
AdminUiConstants.ADMIN_BUNDLE));
|
// controller.removeComponentModel(
|
||||||
return link;
|
// Long.parseLong(selectedModelIdStr),
|
||||||
}
|
// Long.parseLong(key));
|
||||||
|
// break;
|
||||||
});
|
// default:
|
||||||
|
// throw new IllegalArgumentException(
|
||||||
super.addTableActionListener(new TableActionListener() {
|
// "Invalid value for column");
|
||||||
|
// }
|
||||||
@Override
|
// }
|
||||||
public void cellSelected(final TableActionEvent event)
|
//
|
||||||
throws FormProcessException {
|
// @Override
|
||||||
|
// public void headSelected(final TableActionEvent event) {
|
||||||
final PageState state = event.getPageState();
|
// //Nothing
|
||||||
final String selectedModelIdStr = selectedModelId
|
// }
|
||||||
.getSelectedKey(state);
|
//
|
||||||
final String key = (String) event.getRowKey();
|
// });
|
||||||
|
|
||||||
switch (event.getColumn()) {
|
|
||||||
case COL_EDIT:
|
|
||||||
selectedComponentId.setSelectedKey(state, key);
|
|
||||||
pageModelTab.showComponentForm(state);
|
|
||||||
break;
|
|
||||||
case COL_DELETE:
|
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
|
||||||
final PageModelsController controller = cdiUtil
|
|
||||||
.findBean(PageModelsController.class);
|
|
||||||
controller.removeComponentModel(
|
|
||||||
Long.parseLong(selectedModelIdStr),
|
|
||||||
Long.parseLong(key));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
"Invalid value for column");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void headSelected(final TableActionEvent event) {
|
|
||||||
//Nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
super.setModelBuilder(new ComponentsTableModelBuilder(
|
super.setModelBuilder(new ComponentsTableModelBuilder(
|
||||||
selectedModelId));
|
selectedModelId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Component renderEditCell(final Table table,
|
||||||
|
final PageState state,
|
||||||
|
final Object value,
|
||||||
|
final boolean isSelected,
|
||||||
|
final Object key,
|
||||||
|
final int row,
|
||||||
|
final int columnv) {
|
||||||
|
|
||||||
|
final ControlLink link = new ControlLink((Component) value);
|
||||||
|
return link;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Component renderDeleteCell(final Table table,
|
||||||
|
final PageState state,
|
||||||
|
final Object value,
|
||||||
|
final boolean isSelected,
|
||||||
|
final Object key,
|
||||||
|
final int row,
|
||||||
|
final int column) {
|
||||||
|
|
||||||
|
final ControlLink link = new ControlLink((Component) value);
|
||||||
|
link.setConfirmation(new GlobalizedMessage(
|
||||||
|
"ui.admin.pagemodels.componentmodels.cols.delete.confirmation",
|
||||||
|
AdminUiConstants.ADMIN_BUNDLE));
|
||||||
|
return link;
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ComponentsTableActionListener implements TableActionListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cellSelected(final TableActionEvent event)
|
||||||
|
throws FormProcessException {
|
||||||
|
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
final String selectedModelIdStr = selectedModelId
|
||||||
|
.getSelectedKey(state);
|
||||||
|
final String key = (String) event.getRowKey();
|
||||||
|
|
||||||
|
switch (event.getColumn()) {
|
||||||
|
case COL_EDIT:
|
||||||
|
selectedComponentId.setSelectedKey(state, key);
|
||||||
|
pageModelsTab.showComponentForm(state);
|
||||||
|
break;
|
||||||
|
case COL_DELETE:
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final PageModelsController controller = cdiUtil
|
||||||
|
.findBean(PageModelsController.class);
|
||||||
|
controller.removeComponentModel(
|
||||||
|
Long.parseLong(selectedModelIdStr),
|
||||||
|
Long.parseLong(key));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Invalid value for column");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void headSelected(final TableActionEvent event) {
|
||||||
|
//Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private class ComponentsTableModelBuilder
|
private class ComponentsTableModelBuilder
|
||||||
extends LockableImpl
|
extends LockableImpl
|
||||||
implements TableModelBuilder {
|
implements TableModelBuilder {
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,12 @@ class PageModelsController implements Serializable {
|
||||||
@Inject
|
@Inject
|
||||||
private PageModelRepository pageModelRepo;
|
private PageModelRepository pageModelRepo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads the data for rows of the table of page models. Takes care of
|
||||||
|
* loading all required lazily fetched properties.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected List<PageModelsTableRow> findPageModels() {
|
protected List<PageModelsTableRow> findPageModels() {
|
||||||
|
|
||||||
|
|
@ -83,6 +89,15 @@ class PageModelsController implements Serializable {
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the name of a {@link PageModel} is unique within the page
|
||||||
|
* models for an application.
|
||||||
|
*
|
||||||
|
* @param applicationId The ID of the application.
|
||||||
|
* @param name The name to check.
|
||||||
|
*
|
||||||
|
* @return {@code true} if the name is unique, {@code false} otherwise.
|
||||||
|
*/
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected boolean isUnique(final long applicationId,
|
protected boolean isUnique(final long applicationId,
|
||||||
final String name) {
|
final String name) {
|
||||||
|
|
@ -98,6 +113,11 @@ class PageModelsController implements Serializable {
|
||||||
.isPresent();
|
.isPresent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a {@link PageModel}.
|
||||||
|
*
|
||||||
|
* @param pageModelId The ID of the {@link PageModel} to delete.
|
||||||
|
*/
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected void deletePageModel(final long pageModelId) {
|
protected void deletePageModel(final long pageModelId) {
|
||||||
|
|
||||||
|
|
@ -110,6 +130,16 @@ class PageModelsController implements Serializable {
|
||||||
pageModelRepo.delete(model);
|
pageModelRepo.delete(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method for building the data object containing all data required
|
||||||
|
* for one row the tables of {@link PageModel}s.
|
||||||
|
*
|
||||||
|
* @param model The {@link PageModel} which is represented by the row.
|
||||||
|
*
|
||||||
|
* @return The {@link PageModelsTableRow} containing all data about the
|
||||||
|
* provided {@link PageModel} required to create the row about the
|
||||||
|
* {@link PageModel} in the table of {@link PageModel}s.
|
||||||
|
*/
|
||||||
private PageModelsTableRow buildRow(final PageModel model) {
|
private PageModelsTableRow buildRow(final PageModel model) {
|
||||||
|
|
||||||
final PageModelsTableRow row = new PageModelsTableRow();
|
final PageModelsTableRow row = new PageModelsTableRow();
|
||||||
|
|
@ -126,6 +156,13 @@ class PageModelsController implements Serializable {
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the localised title of the {@link ComponentModel}.
|
||||||
|
*
|
||||||
|
* @param clazz The class of the {@link ComponentModel}.
|
||||||
|
*
|
||||||
|
* @return The localised title of the {@link ComponentModel}.
|
||||||
|
*/
|
||||||
protected String getComponentModelTitle(
|
protected String getComponentModelTitle(
|
||||||
final Class<? extends ComponentModel> clazz) {
|
final Class<? extends ComponentModel> clazz) {
|
||||||
|
|
||||||
|
|
@ -142,6 +179,14 @@ class PageModelsController implements Serializable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the form for editing a {@link ComponentModel}.
|
||||||
|
*
|
||||||
|
* @param componentModelId The ID of the {@link ComponentModel} instance.
|
||||||
|
*
|
||||||
|
* @return The form for editing the properties of the {@link ComponentModel}
|
||||||
|
* instance.
|
||||||
|
*/
|
||||||
protected Class<? extends Form> getComponentModelForm(
|
protected Class<? extends Form> getComponentModelForm(
|
||||||
final long componentModelId) {
|
final long componentModelId) {
|
||||||
|
|
||||||
|
|
@ -157,6 +202,14 @@ class PageModelsController implements Serializable {
|
||||||
return getComponentModelForm(clazz);
|
return getComponentModelForm(clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the form for creating/editing an instance of
|
||||||
|
* {@link ComponentModel}.
|
||||||
|
*
|
||||||
|
* @param clazz The class of the {@link ComponentModel}.
|
||||||
|
*
|
||||||
|
* @return The form for the {@link ComponentModel}.
|
||||||
|
*/
|
||||||
protected Class<? extends Form> getComponentModelForm(
|
protected Class<? extends Form> getComponentModelForm(
|
||||||
final Class<? extends ComponentModel> clazz) {
|
final Class<? extends ComponentModel> clazz) {
|
||||||
|
|
||||||
|
|
@ -172,6 +225,15 @@ class PageModelsController implements Serializable {
|
||||||
.editor();
|
.editor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a list of all {@link ComponentModel} instances assigned to a
|
||||||
|
* {@link PageModel}.
|
||||||
|
*
|
||||||
|
* @param pageModelId The ID of the {@link PageModel}.
|
||||||
|
*
|
||||||
|
* @return A list of all {@link ComponentModel}s assigned to the
|
||||||
|
* {@link PageModel}.
|
||||||
|
*/
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected List<ComponentModel> retrieveComponents(final long pageModelId) {
|
protected List<ComponentModel> retrieveComponents(final long pageModelId) {
|
||||||
|
|
||||||
|
|
@ -188,6 +250,14 @@ class PageModelsController implements Serializable {
|
||||||
return components;
|
return components;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an instance of a {@link ComponentModel} and adds the instance to
|
||||||
|
* a {@link PageModel}.
|
||||||
|
*
|
||||||
|
* @param pageModelId The ID of the {@link PageModel} to which the new
|
||||||
|
* {@link ComponentModel} is assigned.
|
||||||
|
* @param componentModel The new {@link ComponentModel}.
|
||||||
|
*/
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected void addComponentModel(final long pageModelId,
|
protected void addComponentModel(final long pageModelId,
|
||||||
final ComponentModel componentModel) {
|
final ComponentModel componentModel) {
|
||||||
|
|
@ -202,6 +272,14 @@ class PageModelsController implements Serializable {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a {@link ComponentModel} instance from a {@link PageModel}. This
|
||||||
|
* deletes the component model.
|
||||||
|
*
|
||||||
|
* @param pageModelId The ID of the {@link PageModel} from which the
|
||||||
|
* {@link ComponentModel} is removed.
|
||||||
|
* @param componentModelId The ID of the {@link ComponentModel} to remove.
|
||||||
|
*/
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
protected void removeComponentModel(final long pageModelId,
|
protected void removeComponentModel(final long pageModelId,
|
||||||
final long componentModelId) {
|
final long componentModelId) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue