diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/ItemAttachmentSelectionModel.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/ItemAttachmentSelectionModel.java
index 6ce4cfef7..4e1c0c4a1 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/ItemAttachmentSelectionModel.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/ItemAttachmentSelectionModel.java
@@ -33,18 +33,18 @@ import org.librecms.contentsection.ItemAttachmentManager;
*
* @author Jens Pelzetter
*/
-public class ItemAttachmentSelectionModel implements SingleSelectionModel{
-
+public class ItemAttachmentSelectionModel implements SingleSelectionModel {
+
private final SingleSelectionModel model;
public ItemAttachmentSelectionModel(final LongParameter parameter) {
this.model = new ParameterSingleSelectionModel<>(parameter);
}
-
+
public ItemAttachmentSelectionModel(final String parameterName) {
this(new LongParameter(parameterName));
}
-
+
@Override
public boolean isSelected(final PageState state) {
return model.isSelected(state);
@@ -71,12 +71,16 @@ public class ItemAttachmentSelectionModel implements SingleSelectionModel{
public ItemAttachment> getSelectedAttachment(final PageState state) {
final Long key = getSelectedKey(state);
- final ItemAttachmentManager manager = CdiUtil
- .createCdiUtil()
- .findBean(ItemAttachmentManager.class);
- return manager.findById(key).get();
+ if (key == null) {
+ return null;
+ } else {
+ final ItemAttachmentManager manager = CdiUtil
+ .createCdiUtil()
+ .findBean(ItemAttachmentManager.class);
+ return manager.findById(key).get();
+ }
}
-
+
@Override
public void clearSelection(final PageState state) {
model.clearSelection(state);
@@ -96,5 +100,5 @@ public class ItemAttachmentSelectionModel implements SingleSelectionModel{
public ParameterModel getStateParameter() {
return model.getStateParameter();
}
-
+
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java
index 5f79a1a00..07b003dfb 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java
@@ -133,11 +133,12 @@ class AssignedImagesTable extends Table {
switch (column.getModelIndex()) {
case COL_MOVE:
if (moveAttachmentModel
- .getSelectedAttachment(state) == null) {
+ .getSelectedKey(state) == null) {
moveAttachmentModel
.setSelectedKey(state,
- Long.parseLong(column.getKey()));
+ Long.parseLong((String) event
+ .getRowKey()));
} else {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ImageStepController controller = cdiUtil
@@ -151,6 +152,7 @@ class AssignedImagesTable extends Table {
.parseLong((String) event.getRowKey());
controller.moveAfter(selectedAttachment, destId);
+ moveAttachmentModel.setSelectedKey(state, null);
}
break;
case COL_REMOVE:
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java
index d4de04514..dbdcee13c 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java
@@ -146,6 +146,8 @@ public class ImageStep extends ResettableContainer {
.findBean(ImageStepController.class);
controller.moveToFirst(toMove);
+
+ moveAttachmentModel.setSelectedKey(state, null);
});
assignedImagesTable = new AssignedImagesTable(itemSelectionModel,
@@ -197,6 +199,8 @@ public class ImageStep extends ResettableContainer {
page.setVisibleDefault(addImageHeader, false);
page.setVisibleDefault(cancelAddImage, false);
page.setVisibleDefault(availableImages, false);
+
+ page.addComponentStateParam(assignedImagesTable, moveAttachmentParam);
}
protected void showAssignedImages(final PageState state) {
diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ItemAttachmentManager.java b/ccm-cms/src/main/java/org/librecms/contentsection/ItemAttachmentManager.java
index 77ee12c45..236c974ac 100644
--- a/ccm-cms/src/main/java/org/librecms/contentsection/ItemAttachmentManager.java
+++ b/ccm-cms/src/main/java/org/librecms/contentsection/ItemAttachmentManager.java
@@ -53,6 +53,7 @@ public class ItemAttachmentManager {
@Inject
private AssetManager assetManager;
+ @Transactional(Transactional.TxType.REQUIRED)
public Optional> findById(final long attachmentId) {
final TypedQuery query = entityManager