CCM NG/ccm-cms: Some bugfixes for the AssetPane

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4658 8810af33-2d31-482b-a856-94f89814c4df

Former-commit-id: 5a9510928f
pull/2/head
jensp 2017-04-04 11:56:30 +00:00
parent 7d3829cb1d
commit a751d00349
2 changed files with 264 additions and 236 deletions

View File

@ -114,9 +114,9 @@ public class AssetPane extends LayoutPanel implements Resettable {
private final FolderSelectionModel folderSelectionModel; private final FolderSelectionModel folderSelectionModel;
private final FolderRequestLocal folderRequestLocal; private final FolderRequestLocal folderRequestLocal;
private final ArrayParameter sourcesParameter = new ArrayParameter( private final ArrayParameter sourcesParameter = new ArrayParameter(
new StringParameter(SOURCES_PARAM)); new StringParameter(SOURCES_PARAM));
private final StringParameter actionParameter = new StringParameter( private final StringParameter actionParameter = new StringParameter(
ACTION_PARAM); ACTION_PARAM);
private AssetFolderBrowser folderBrowser; private AssetFolderBrowser folderBrowser;
private Form browserForm; private Form browserForm;
@ -137,8 +137,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
@Override @Override
protected Folder getRootFolder(final PageState state) { protected Folder getRootFolder(final PageState state) {
final ContentSection section = CMS final ContentSection section = CMS
.getContext() .getContext()
.getContentSection(); .getContentSection();
return section.getRootAssetsFolder(); return section.getRootAssetsFolder();
} }
@ -149,8 +149,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
@Override @Override
protected Long getRootFolderID(final PageState state) { protected Long getRootFolderID(final PageState state) {
final ContentSection section = CMS final ContentSection section = CMS
.getContext() .getContext()
.getContentSection(); .getContentSection();
return section.getRootAssetsFolder().getObjectId(); return section.getRootAssetsFolder().getObjectId();
} }
@ -161,8 +161,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
setLeft(left); setLeft(left);
final Label heading = new Label( final Label heading = new Label(
new GlobalizedMessage("cms.ui.folder_browser", new GlobalizedMessage("cms.ui.folder_browser",
CmsConstants.CMS_BUNDLE)); CmsConstants.CMS_BUNDLE));
left.addSegment(heading, tree); left.addSegment(heading, tree);
// final Text placeholder = new Text("Placeholder"); // final Text placeholder = new Text("Placeholder");
@ -176,19 +176,19 @@ public class AssetPane extends LayoutPanel implements Resettable {
browseSegment = panel.addSegment(); browseSegment = panel.addSegment();
browserForm = new Form("assetFolderBrowser", browserForm = new Form("assetFolderBrowser",
new SimpleContainer()); new BoxPanel(BoxPanel.VERTICAL));
browserForm.setMethod(Form.GET); browserForm.setMethod(Form.GET);
folderBrowser = new AssetFolderBrowser(folderSelectionModel); folderBrowser = new AssetFolderBrowser(folderSelectionModel);
final Paginator paginator = new Paginator( final Paginator paginator = new Paginator(
new AssetFolderBrowserPaginationModelBuilder(folderBrowser), new AssetFolderBrowserPaginationModelBuilder(folderBrowser),
CMSConfig.getConfig().getFolderBrowseListSize()); CMSConfig.getConfig().getFolderBrowseListSize());
folderBrowser.setPaginator(paginator); folderBrowser.setPaginator(paginator);
final CheckboxGroup checkboxGroup = new CheckboxGroup(sourcesParameter); final CheckboxGroup checkboxGroup = new CheckboxGroup(sourcesParameter);
browserForm.add(checkboxGroup); browserForm.add(checkboxGroup);
final TableColumn checkboxCol = new TableColumn(); final TableColumn checkboxCol = new TableColumn();
checkboxCol.setHeaderValue( checkboxCol.setHeaderValue(
new GlobalizedMessage("empty_text", CmsConstants.CMS_BUNDLE)); new GlobalizedMessage("empty_text", CmsConstants.CMS_BUNDLE));
checkboxCol.setCellRenderer(new TableCellRenderer() { checkboxCol.setCellRenderer(new TableCellRenderer() {
@Override @Override
@ -213,31 +213,31 @@ public class AssetPane extends LayoutPanel implements Resettable {
browserForm.add(folderBrowser); browserForm.add(folderBrowser);
final SimpleContainer actionFormContainer = new SimpleContainer(); final SimpleContainer actionFormContainer = new SimpleContainer();
actionFormContainer.add(new Label( actionFormContainer.add(new Label(
new GlobalizedMessage( new GlobalizedMessage(
"cms.ui.folder.edit_selection", "cms.ui.folder.edit_selection",
CmsConstants.CMS_FOLDER_BUNDLE))); CmsConstants.CMS_FOLDER_BUNDLE)));
actionSelect = new SingleSelect(actionParameter); actionSelect = new SingleSelect(actionParameter);
actionSelect.addOption( actionSelect.addOption(
new Option(COPY, new Option(COPY,
new Label(new GlobalizedMessage( new Label(new GlobalizedMessage(
"cms.ui.folder.copy.action", "cms.ui.folder.copy.action",
CmsConstants.CMS_FOLDER_BUNDLE)))); CmsConstants.CMS_FOLDER_BUNDLE))));
actionSelect.addOption( actionSelect.addOption(
new Option(MOVE, new Option(MOVE,
new Label(new GlobalizedMessage( new Label(new GlobalizedMessage(
"cms.ui.folder.move.action", "cms.ui.folder.move.action",
CmsConstants.CMS_FOLDER_BUNDLE)))); CmsConstants.CMS_FOLDER_BUNDLE))));
actionFormContainer.add(actionSelect); actionFormContainer.add(actionSelect);
actionSubmit = new Submit( actionSubmit = new Submit(
"Go", "Go",
new GlobalizedMessage("cms.ui.folder.go", new GlobalizedMessage("cms.ui.folder.go",
CmsConstants.CMS_FOLDER_BUNDLE)); CmsConstants.CMS_FOLDER_BUNDLE));
actionFormContainer.add(actionSubmit); actionFormContainer.add(actionSubmit);
browserForm.addProcessListener(new FormProcessListener() { browserForm.addProcessListener(new FormProcessListener() {
@Override @Override
public void process(final FormSectionEvent event) public void process(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
@ -253,7 +253,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
@Override @Override
public void process(final FormSectionEvent event) public void process(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
@ -274,12 +274,12 @@ public class AssetPane extends LayoutPanel implements Resettable {
}); });
targetSelector.addValidationListener( targetSelector.addValidationListener(
new TargetSelectorValidationListener()); new TargetSelectorValidationListener());
targetSelector.addSubmissionListener(new FormSubmissionListener() { targetSelector.addSubmissionListener(new FormSubmissionListener() {
@Override @Override
public void submitted(final FormSectionEvent event) public void submitted(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
@ -287,8 +287,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
reset(state); reset(state);
browseMode(state); browseMode(state);
throw new FormProcessException(new GlobalizedMessage( throw new FormProcessException(new GlobalizedMessage(
"cms.ui.folder.cancelled", "cms.ui.folder.cancelled",
CmsConstants.CMS_FOLDER_BUNDLE)); CmsConstants.CMS_FOLDER_BUNDLE));
} }
} }
@ -310,13 +310,13 @@ public class AssetPane extends LayoutPanel implements Resettable {
final Label target = (Label) event.getTarget(); final Label target = (Label) event.getTarget();
final long selectedId = Long.parseLong(selectionModel final long selectedId = Long.parseLong(selectionModel
.getSelectedKey(state).toString()); .getSelectedKey(state).toString());
final long currentFolderId = folderSelectionModel final long currentFolderId = folderSelectionModel
.getSelectedObject(state).getObjectId(); .getSelectedObject(state).getObjectId();
target.setLabel(String.format( target.setLabel(String.format(
"selectedId = %d; currentFolderId = %d", "selectedId = %d; currentFolderId = %d",
selectedId, selectedId,
currentFolderId)); currentFolderId));
} }
}); });
@ -329,19 +329,19 @@ public class AssetPane extends LayoutPanel implements Resettable {
actionsSegment.add(actions); actionsSegment.add(actions);
final FolderCreateForm folderCreateForm = new FolderCreateForm( final FolderCreateForm folderCreateForm = new FolderCreateForm(
"fcreat", folderSelectionModel); "fcreat", folderSelectionModel);
folderCreateForm.addSubmissionListener(new FormSubmissionListener() { folderCreateForm.addSubmissionListener(new FormSubmissionListener() {
@Override @Override
public void submitted(final FormSectionEvent event) public void submitted(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
if (event.getSource() == folderCreateForm if (event.getSource() == folderCreateForm
&& folderCreateForm.isCancelled(state)) { && folderCreateForm.isCancelled(state)) {
browseMode(state); browseMode(state);
throw new FormProcessException(new GlobalizedMessage( throw new FormProcessException(new GlobalizedMessage(
"cms.ui.cancelled", CmsConstants.CMS_BUNDLE)); "cms.ui.cancelled", CmsConstants.CMS_BUNDLE));
} }
} }
@ -351,7 +351,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
@Override @Override
public void process(final FormSectionEvent event) public void process(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
final Object source = event.getSource(); final Object source = event.getSource();
@ -362,24 +362,24 @@ public class AssetPane extends LayoutPanel implements Resettable {
}); });
newFolderSegment = panel.addSegment( newFolderSegment = panel.addSegment(
new Label(new GlobalizedMessage("cms.ui.new_folder", new Label(new GlobalizedMessage("cms.ui.new_folder",
CmsConstants.CMS_BUNDLE)), CmsConstants.CMS_BUNDLE)),
folderCreateForm); folderCreateForm);
final FolderEditorForm folderEditorForm = new FolderEditorForm( final FolderEditorForm folderEditorForm = new FolderEditorForm(
"fedit", folderSelectionModel); "fedit", folderSelectionModel);
folderEditorForm.addSubmissionListener(new FormSubmissionListener() { folderEditorForm.addSubmissionListener(new FormSubmissionListener() {
@Override @Override
public void submitted(final FormSectionEvent event) public void submitted(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
if (event.getSource() == folderEditorForm if (event.getSource() == folderEditorForm
&& folderEditorForm.isCancelled(state)) { && folderEditorForm.isCancelled(state)) {
browseMode(state); browseMode(state);
throw new FormProcessException(new GlobalizedMessage( throw new FormProcessException(new GlobalizedMessage(
"cms.ui.cancelled", CmsConstants.CMS_BUNDLE)); "cms.ui.cancelled", CmsConstants.CMS_BUNDLE));
} }
} }
@ -388,7 +388,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
@Override @Override
public void process(final FormSectionEvent event) public void process(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
final Object source = event.getSource(); final Object source = event.getSource();
@ -399,13 +399,13 @@ public class AssetPane extends LayoutPanel implements Resettable {
}); });
editFolderSegment = panel.addSegment( editFolderSegment = panel.addSegment(
new Label(new GlobalizedMessage("cms.ui.edit_folder", new Label(new GlobalizedMessage("cms.ui.edit_folder",
CmsConstants.CMS_BUNDLE)), CmsConstants.CMS_BUNDLE)),
folderEditorForm); folderEditorForm);
final ActionLink createFolderAction = new ActionLink( final ActionLink createFolderAction = new ActionLink(
new Label(new GlobalizedMessage("cms.ui.new_folder", new Label(new GlobalizedMessage("cms.ui.new_folder",
CmsConstants.CMS_BUNDLE))); CmsConstants.CMS_BUNDLE)));
createFolderAction.addActionListener(new ActionListener() { createFolderAction.addActionListener(new ActionListener() {
@Override @Override
@ -421,8 +421,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
actions.addAction(createFolderAction); actions.addAction(createFolderAction);
final ActionLink editFolderAction = new ActionLink( final ActionLink editFolderAction = new ActionLink(
new Label(new GlobalizedMessage("cms.ui.edit_folder", new Label(new GlobalizedMessage("cms.ui.edit_folder",
CmsConstants.CMS_BUNDLE))); CmsConstants.CMS_BUNDLE)));
editFolderAction.addActionListener(new ActionListener() { editFolderAction.addActionListener(new ActionListener() {
@Override @Override
@ -545,7 +545,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final AssetFolderBrowserController controller = cdiUtil.findBean( final AssetFolderBrowserController controller = cdiUtil.findBean(
AssetFolderBrowserController.class); AssetFolderBrowserController.class);
controller.moveObjects(target, objectIds); controller.moveObjects(target, objectIds);
} }
@ -554,7 +554,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final AssetFolderBrowserController controller = cdiUtil.findBean( final AssetFolderBrowserController controller = cdiUtil.findBean(
AssetFolderBrowserController.class); AssetFolderBrowserController.class);
controller.copyObjects(target, objectIds); controller.copyObjects(target, objectIds);
} }
@ -569,14 +569,14 @@ public class AssetPane extends LayoutPanel implements Resettable {
if (!selectionModel.isSelected(state)) { if (!selectionModel.isSelected(state)) {
final String folder = state final String folder = state
.getRequest() .getRequest()
.getParameter(SET_FOLDER); .getParameter(SET_FOLDER);
if (folder == null) { if (folder == null) {
final Category root = CMS final Category root = CMS
.getContext() .getContext()
.getContentSection() .getContentSection()
.getRootAssetsFolder(); .getRootAssetsFolder();
final Long folderId = root.getObjectId(); final Long folderId = root.getObjectId();
selectionModel.setSelectedKey(state, folderId); selectionModel.setSelectedKey(state, folderId);
@ -596,18 +596,18 @@ public class AssetPane extends LayoutPanel implements Resettable {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
final Category root = CMS final Category root = CMS
.getContext() .getContext()
.getContentSection() .getContentSection()
.getRootAssetsFolder(); .getRootAssetsFolder();
if (!root.equals(folderRequestLocal.getFolder(state))) { if (!root.equals(folderRequestLocal.getFolder(state))) {
// Expand the ancestor nodes of the currently // Expand the ancestor nodes of the currently
// selected node. // selected node.
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final FolderTreeModelController controller = cdiUtil.findBean( final FolderTreeModelController controller = cdiUtil.findBean(
FolderTreeModelController.class); FolderTreeModelController.class);
final List<Long> ancestorIds = controller.findAncestorIds( final List<Long> ancestorIds = controller.findAncestorIds(
folderRequestLocal.getFolder(state)); folderRequestLocal.getFolder(state));
ancestorIds.forEach(id -> tree.expand(id.toString(), state)); ancestorIds.forEach(id -> tree.expand(id.toString(), state));
} }
@ -629,8 +629,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
@Override @Override
protected Long getRootFolderID(final PageState state) { protected Long getRootFolderID(final PageState state) {
final ContentSection section = CMS final ContentSection section = CMS
.getContext() .getContext()
.getContentSection(); .getContentSection();
return section.getRootAssetsFolder().getObjectId(); return section.getRootAssetsFolder().getObjectId();
} }
@ -648,24 +648,37 @@ public class AssetPane extends LayoutPanel implements Resettable {
final Label label = (Label) event.getTarget(); final Label label = (Label) event.getTarget();
final int numberOfItems = getSources(state).length; final int numberOfItems = getSources(state).length;
final Category folder = (Category) folderSelectionModel final Category folder = (Category) folderSelectionModel
.getSelectedObject(state); .getSelectedObject(state);
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryManager categoryManager = cdiUtil final CategoryManager categoryManager = cdiUtil
.findBean(CategoryManager.class); .findBean(CategoryManager.class);
final String targetFolderPath;
if (targetFolderModel.getSelectedObject(state) == null) {
targetFolderPath = "";
} else {
targetFolderPath = categoryManager.getCategoryPath(
targetFolderModel.getSelectedObject(state));
}
if (isMove(state)) { if (isMove(state)) {
label.setLabel(new GlobalizedMessage( label.setLabel(new GlobalizedMessage(
"cms.ui.folder.move", "cms.ui.folder.move",
CmsConstants.CMS_FOLDER_BUNDLE, CmsConstants.CMS_FOLDER_BUNDLE,
new Object[]{numberOfItems, new Object[]{
categoryManager.getCategoryPath(folder)})); numberOfItems,
categoryManager.getCategoryPath(folder),
targetFolderPath
}));
} else if (isCopy(state)) { } else if (isCopy(state)) {
label.setLabel(new GlobalizedMessage( label.setLabel(new GlobalizedMessage(
"cms.ui.folder.copy", "cms.ui.folder.copy",
CMS_BUNDLE, CMS_BUNDLE,
new Object[]{numberOfItems, new Object[]{
categoryManager.getCategoryPath( numberOfItems,
folder)})); categoryManager.getCategoryPath(folder),
targetFolderPath
}));
} }
} }
@ -683,8 +696,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
@Override @Override
public void register(final Page page) { public void register(final Page page) {
super.register(page); super.register(page);
page.addComponentStateParam(this, targetFolderModel page.addComponentStateParam(this,
.getStateParameter()); targetFolderModel.getStateParameter());
} }
public void expose(final PageState state) { public void expose(final PageState state) {
@ -694,17 +707,18 @@ public class AssetPane extends LayoutPanel implements Resettable {
if (folder != null) { if (folder != null) {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final FolderManager folderManager = cdiUtil.findBean( final FolderManager folderManager = cdiUtil.findBean(
FolderManager.class); FolderManager.class);
if (!folderManager.getParentFolder(folder).isPresent()) { if (!folderManager.getParentFolder(folder).isPresent()) {
folderTree.expand(Long.toString(folder.getObjectId()), folderTree.expand(Long.toString(folder.getObjectId()),
state); state);
} else { } else {
final List<Folder> parents = folderManager final List<Folder> parents = folderManager
.getParentFolders(folder); .getParentFolders(folder);
parents parents
.stream() .stream()
.map(parent -> Long.toString(parent.getObjectId())) .map(parent -> Long.toString(parent.getObjectId()))
.forEach(folderId -> folderTree.expand(folderId, state)); .forEach(folderId -> folderTree.expand(folderId,
state));
} }
} }
} }
@ -729,7 +743,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
private class FolderTreeCellRenderer implements TreeCellRenderer { private class FolderTreeCellRenderer implements TreeCellRenderer {
private final RequestLocal invalidFoldersRequestLocal private final RequestLocal invalidFoldersRequestLocal
= new RequestLocal(); = new RequestLocal();
/** /**
* Render the folders appropriately. The selected folder is a bold * Render the folders appropriately. The selected folder is a bold
@ -753,18 +767,18 @@ public class AssetPane extends LayoutPanel implements Resettable {
if (invalidFoldersRequestLocal.get(state) == null) { if (invalidFoldersRequestLocal.get(state) == null) {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final AssetFolderBrowserController controller = cdiUtil final AssetFolderBrowserController controller = cdiUtil
.findBean(AssetFolderBrowserController.class); .findBean(AssetFolderBrowserController.class);
invalidFolders = controller.createInvalidTargetsList( invalidFolders = controller.createInvalidTargetsList(
Arrays.asList(getSources(state))); Arrays.asList(getSources(state)));
invalidFoldersRequestLocal.set(state, invalidFolders); invalidFoldersRequestLocal.set(state, invalidFolders);
} else { } else {
invalidFolders = (List<String>) invalidFoldersRequestLocal invalidFolders = (List<String>) invalidFoldersRequestLocal
.get(state); .get(state);
} }
final Label label = new Label(value.toString()); final Label label = new Label(value.toString());
if (invalidFolders.contains(String.format( if (invalidFolders.contains(String.format(
FOLDER_BROWSER_KEY_PREFIX_FOLDER + "%s", key))) { FOLDER_BROWSER_KEY_PREFIX_FOLDER + "%s", key))) {
return label; return label;
} }
@ -780,11 +794,11 @@ public class AssetPane extends LayoutPanel implements Resettable {
} }
private class TargetSelectorValidationListener private class TargetSelectorValidationListener
implements FormValidationListener { implements FormValidationListener {
@Override @Override
public void validate(final FormSectionEvent event) public void validate(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
@ -796,24 +810,24 @@ public class AssetPane extends LayoutPanel implements Resettable {
final FormData data = event.getFormData(); final FormData data = event.getFormData();
if (target == null) { if (target == null) {
data.addError(new GlobalizedMessage( data.addError(new GlobalizedMessage(
"cms.ui.folder.need_select_target_folder", "cms.ui.folder.need_select_target_folder",
CmsConstants.CMS_FOLDER_BUNDLE)); CmsConstants.CMS_FOLDER_BUNDLE));
//If the target is null, we can skip the rest of the checks //If the target is null, we can skip the rest of the checks
return; return;
} }
if (target.equals(folderSelectionModel.getSelectedObject(state))) { if (target.equals(folderSelectionModel.getSelectedObject(state))) {
data.addError(new GlobalizedMessage( data.addError(new GlobalizedMessage(
"cms.ui.folder.not_within_same_folder", "cms.ui.folder.not_within_same_folder",
CmsConstants.CMS_FOLDER_BUNDLE)); CmsConstants.CMS_FOLDER_BUNDLE));
} }
// check create item permission // check create item permission
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final PermissionChecker permissionChecker = cdiUtil.findBean( final PermissionChecker permissionChecker = cdiUtil.findBean(
PermissionChecker.class); PermissionChecker.class);
if (!permissionChecker.isPermitted( if (!permissionChecker.isPermitted(
ItemPrivileges.CREATE_NEW, target)) { ItemPrivileges.CREATE_NEW, target)) {
data.addError("cms.ui.folder.no_permission_for_item", data.addError("cms.ui.folder.no_permission_for_item",
CmsConstants.CMS_FOLDER_BUNDLE); CmsConstants.CMS_FOLDER_BUNDLE);
} }
@ -834,34 +848,34 @@ public class AssetPane extends LayoutPanel implements Resettable {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final FolderRepository folderRepo = cdiUtil final FolderRepository folderRepo = cdiUtil
.findBean(FolderRepository.class); .findBean(FolderRepository.class);
final AssetRepository assetRepo = cdiUtil final AssetRepository assetRepo = cdiUtil
.findBean(AssetRepository.class); .findBean(AssetRepository.class);
final AssetManager assetManager = cdiUtil final AssetManager assetManager = cdiUtil
.findBean(AssetManager.class); .findBean(AssetManager.class);
final AssetFolderBrowserController controller = cdiUtil final AssetFolderBrowserController controller = cdiUtil
.findBean(AssetFolderBrowserController.class); .findBean(AssetFolderBrowserController.class);
final FolderManager folderManager = cdiUtil final FolderManager folderManager = cdiUtil
.findBean(FolderManager.class); .findBean(FolderManager.class);
final PermissionChecker permissionChecker = cdiUtil.findBean( final PermissionChecker permissionChecker = cdiUtil.findBean(
PermissionChecker.class); PermissionChecker.class);
final CcmObject object; final CcmObject object;
final String name; final String name;
if (objectId.startsWith(FOLDER_BROWSER_KEY_PREFIX_FOLDER)) { if (objectId.startsWith(FOLDER_BROWSER_KEY_PREFIX_FOLDER)) {
final long folderId = Long.parseLong(objectId.substring( final long folderId = Long.parseLong(objectId.substring(
FOLDER_BROWSER_KEY_PREFIX_FOLDER.length())); FOLDER_BROWSER_KEY_PREFIX_FOLDER.length()));
final Folder folder = folderRepo.findById(folderId).orElseThrow( final Folder folder = folderRepo.findById(folderId).orElseThrow(
() -> new IllegalArgumentException(String.format( () -> new IllegalArgumentException(String.format(
"No folder with id %d in database.", folderId))); "No folder with id %d in database.", folderId)));
name = folder.getName(); name = folder.getName();
//Check if folder or subfolder contains in use assets //Check if folder or subfolder contains in use assets
if (isMove(state)) { if (isMove(state)) {
final FolderManager.FolderIsMovable movable = folderManager final FolderManager.FolderIsMovable movable = folderManager
.folderIsMovable(folder, target); .folderIsMovable(folder, target);
switch (movable) { switch (movable) {
case DIFFERENT_SECTIONS: case DIFFERENT_SECTIONS:
addErrorMessage(data, addErrorMessage(data,
@ -893,22 +907,23 @@ public class AssetPane extends LayoutPanel implements Resettable {
break; break;
default: default:
throw new UnexpectedErrorException(String.format( throw new UnexpectedErrorException(String.format(
"Unknown state '%s' for '%s'.", "Unknown state '%s' for '%s'.",
movable, movable,
FolderManager.FolderIsMovable.class.getName())); FolderManager.FolderIsMovable.class.
getName()));
} }
} }
object = folder; object = folder;
} else if (objectId.startsWith(FOLDER_BROWSER_KEY_PREFIX_ASSET)) { } else if (objectId.startsWith(FOLDER_BROWSER_KEY_PREFIX_ASSET)) {
final long assetId = Long.parseLong(objectId.substring( final long assetId = Long.parseLong(objectId.substring(
FOLDER_BROWSER_KEY_PREFIX_ASSET.length())); FOLDER_BROWSER_KEY_PREFIX_ASSET.length()));
final Asset asset = assetRepo final Asset asset = assetRepo
.findById(assetId) .findById(assetId)
.orElseThrow(() -> new IllegalArgumentException( .orElseThrow(() -> new IllegalArgumentException(
String.format( String.format(
"No asset with id %d in the database.", "No asset with id %d in the database.",
assetId))); assetId)));
name = asset.getDisplayName(); name = asset.getDisplayName();
@ -919,11 +934,11 @@ public class AssetPane extends LayoutPanel implements Resettable {
object = asset; object = asset;
} else { } else {
throw new IllegalArgumentException(String.format( throw new IllegalArgumentException(String.format(
"Provided objectId '%s' does not start with '%s' " "Provided objectId '%s' does not start with '%s' "
+ "or '%s'.", + "or '%s'.",
objectId, objectId,
FOLDER_BROWSER_KEY_PREFIX_FOLDER, FOLDER_BROWSER_KEY_PREFIX_FOLDER,
FOLDER_BROWSER_KEY_PREFIX_ASSET)); FOLDER_BROWSER_KEY_PREFIX_ASSET));
} }
final long count = controller.countObjects(target, name); final long count = controller.countObjects(target, name);
@ -935,7 +950,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
if (!(permissionChecker.isPermitted( if (!(permissionChecker.isPermitted(
ItemPrivileges.DELETE, object)) ItemPrivileges.DELETE, object))
&& isMove(state)) { && isMove(state)) {
addErrorMessage(data, addErrorMessage(data,
"cms.ui.folder.no_permission_for_item", "cms.ui.folder.no_permission_for_item",
object.getDisplayName()); object.getDisplayName());
@ -962,14 +977,14 @@ public class AssetPane extends LayoutPanel implements Resettable {
@Override @Override
protected Folder getRootFolder(final PageState state) { protected Folder getRootFolder(final PageState state) {
final ContentSection section = CMS final ContentSection section = CMS
.getContext() .getContext()
.getContentSection(); .getContentSection();
return section.getRootAssetsFolder(); return section.getRootAssetsFolder();
} }
}); });
setSelectionModel(selectionModel); setSelectionModel(folderSelectionModel);
} }
@Override @Override
@ -977,9 +992,9 @@ public class AssetPane extends LayoutPanel implements Resettable {
if (key instanceof String) { if (key instanceof String) {
final Long keyAsLong; final Long keyAsLong;
if (((String) key).startsWith( if (((String) key).startsWith(
FOLDER_BROWSER_KEY_PREFIX_FOLDER)) { FOLDER_BROWSER_KEY_PREFIX_FOLDER)) {
keyAsLong = Long.parseLong(((String) key).substring( keyAsLong = Long.parseLong(((String) key).substring(
FOLDER_BROWSER_KEY_PREFIX_FOLDER.length())); FOLDER_BROWSER_KEY_PREFIX_FOLDER.length()));
} else { } else {
keyAsLong = Long.parseLong((String) key); keyAsLong = Long.parseLong((String) key);
} }

View File

@ -98,14 +98,14 @@ import static org.librecms.CmsConstants.*;
*/ */
@SuppressWarnings("PMD.BeanMembersShouldSerialize") @SuppressWarnings("PMD.BeanMembersShouldSerialize")
public class FolderManipulator extends SimpleContainer implements public class FolderManipulator extends SimpleContainer implements
//FormProcessListener, //FormProcessListener,
//FormValidationListener, //FormValidationListener,
//FormSubmissionListener, //FormSubmissionListener,
Resettable { Resettable {
//public static final String RESOURCE_BUNDLE = "com.arsdigita.cms.ui.folder.CMSFolderResources"; //public static final String RESOURCE_BUNDLE = "com.arsdigita.cms.ui.folder.CMSFolderResources";
private static final Logger LOGGER = LogManager.getLogger( private static final Logger LOGGER = LogManager.getLogger(
FolderManipulator.class); FolderManipulator.class);
private static final String ATOZ_FILTER_PARAM = "aToZfilter"; private static final String ATOZ_FILTER_PARAM = "aToZfilter";
private static final String ACTION_PARAM = "act"; private static final String ACTION_PARAM = "act";
@ -118,9 +118,9 @@ public class FolderManipulator extends SimpleContainer implements
//private static final String UNPUBLISH = "UnPublish"; //private static final String UNPUBLISH = "UnPublish";
private final ArrayParameter sourcesParam = new ArrayParameter( private final ArrayParameter sourcesParam = new ArrayParameter(
new StringParameter(SOURCES_PARAM)); new StringParameter(SOURCES_PARAM));
private final StringParameter actionParam private final StringParameter actionParam
= new StringParameter(ACTION_PARAM); = new StringParameter(ACTION_PARAM);
; ;
/** /**
* The folder in which the source items live. * The folder in which the source items live.
@ -132,9 +132,9 @@ public class FolderManipulator extends SimpleContainer implements
private FilterForm filterForm; private FilterForm filterForm;
private final StringParameter atozFilterParam = new StringParameter( private final StringParameter atozFilterParam = new StringParameter(
ATOZ_FILTER_PARAM); ATOZ_FILTER_PARAM);
private final StringParameter filterParam private final StringParameter filterParam
= new StringParameter(FILTER_PARAM); = new StringParameter(FILTER_PARAM);
public FolderManipulator(final FolderSelectionModel folderModel) { public FolderManipulator(final FolderSelectionModel folderModel) {
@ -148,9 +148,9 @@ public class FolderManipulator extends SimpleContainer implements
targetSelector.addProcessListener(new TargetSelectorProcessListener()); targetSelector.addProcessListener(new TargetSelectorProcessListener());
targetSelector.addValidationListener( targetSelector.addValidationListener(
new TargetSelectorValidationListener()); new TargetSelectorValidationListener());
targetSelector.addSubmissionListener( targetSelector.addSubmissionListener(
new TargetSelectorSubmissionListener()); new TargetSelectorSubmissionListener());
add(targetSelector); add(targetSelector);
//publishDialog.addProcessListener(new PublishDialogProcessListener()); //publishDialog.addProcessListener(new PublishDialogProcessListener());
@ -212,7 +212,7 @@ public class FolderManipulator extends SimpleContainer implements
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final FolderBrowserController controller = cdiUtil.findBean( final FolderBrowserController controller = cdiUtil.findBean(
FolderBrowserController.class); FolderBrowserController.class);
controller.moveObjects(target, objectIds); controller.moveObjects(target, objectIds);
} }
@ -221,7 +221,7 @@ public class FolderManipulator extends SimpleContainer implements
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final FolderBrowserController controller = cdiUtil.findBean( final FolderBrowserController controller = cdiUtil.findBean(
FolderBrowserController.class); FolderBrowserController.class);
controller.copyObjects(target, objectIds); controller.copyObjects(target, objectIds);
} }
@ -396,7 +396,7 @@ public class FolderManipulator extends SimpleContainer implements
@Override @Override
public void process(final FormSectionEvent event) public void process(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
@ -415,7 +415,7 @@ public class FolderManipulator extends SimpleContainer implements
@Override @Override
public void process(final FormSectionEvent event) public void process(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
@ -471,7 +471,7 @@ public class FolderManipulator extends SimpleContainer implements
@Override @Override
public void validate(final FormSectionEvent event) throws public void validate(final FormSectionEvent event) throws
FormProcessException { FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
final FormData data = event.getFormData(); final FormData data = event.getFormData();
@ -485,7 +485,7 @@ public class FolderManipulator extends SimpleContainer implements
} }
private class TargetSelectorValidationListener private class TargetSelectorValidationListener
implements FormValidationListener { implements FormValidationListener {
public TargetSelectorValidationListener() { public TargetSelectorValidationListener() {
//Nothing //Nothing
@ -493,7 +493,7 @@ public class FolderManipulator extends SimpleContainer implements
@Override @Override
public void validate(final FormSectionEvent event) public void validate(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
@ -505,24 +505,24 @@ public class FolderManipulator extends SimpleContainer implements
final FormData data = event.getFormData(); final FormData data = event.getFormData();
if (target == null) { if (target == null) {
data.addError(new GlobalizedMessage( data.addError(new GlobalizedMessage(
"cms.ui.folder.need_select_target_folder", "cms.ui.folder.need_select_target_folder",
CmsConstants.CMS_FOLDER_BUNDLE)); CmsConstants.CMS_FOLDER_BUNDLE));
//If the target is null, we can skip the rest of the checks //If the target is null, we can skip the rest of the checks
return; return;
} }
if (target.equals(sourceFolderModel.getSelectedObject(state))) { if (target.equals(sourceFolderModel.getSelectedObject(state))) {
data.addError(new GlobalizedMessage( data.addError(new GlobalizedMessage(
"cms.ui.folder.not_within_same_folder", "cms.ui.folder.not_within_same_folder",
CmsConstants.CMS_FOLDER_BUNDLE)); CmsConstants.CMS_FOLDER_BUNDLE));
} }
// check create item permission // check create item permission
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final PermissionChecker permissionChecker = cdiUtil.findBean( final PermissionChecker permissionChecker = cdiUtil.findBean(
PermissionChecker.class); PermissionChecker.class);
if (!permissionChecker.isPermitted( if (!permissionChecker.isPermitted(
ItemPrivileges.CREATE_NEW, target)) { ItemPrivileges.CREATE_NEW, target)) {
data.addError("cms.ui.folder.no_permission_for_item", data.addError("cms.ui.folder.no_permission_for_item",
CmsConstants.CMS_FOLDER_BUNDLE); CmsConstants.CMS_FOLDER_BUNDLE);
} }
@ -544,33 +544,33 @@ public class FolderManipulator extends SimpleContainer implements
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final FolderRepository folderRepo = cdiUtil.findBean( final FolderRepository folderRepo = cdiUtil.findBean(
FolderRepository.class); FolderRepository.class);
final ContentItemRepository itemRepo = cdiUtil.findBean( final ContentItemRepository itemRepo = cdiUtil.findBean(
ContentItemRepository.class); ContentItemRepository.class);
final ContentItemManager itemManager = cdiUtil.findBean( final ContentItemManager itemManager = cdiUtil.findBean(
ContentItemManager.class); ContentItemManager.class);
final FolderBrowserController controller = cdiUtil.findBean( final FolderBrowserController controller = cdiUtil.findBean(
FolderBrowserController.class); FolderBrowserController.class);
final FolderManager folderManager = cdiUtil.findBean( final FolderManager folderManager = cdiUtil.findBean(
FolderManager.class); FolderManager.class);
final PermissionChecker permissionChecker = cdiUtil.findBean( final PermissionChecker permissionChecker = cdiUtil.findBean(
PermissionChecker.class); PermissionChecker.class);
final CcmObject object; final CcmObject object;
final String name; final String name;
if (objectId.startsWith(FOLDER_BROWSER_KEY_PREFIX_FOLDER)) { if (objectId.startsWith(FOLDER_BROWSER_KEY_PREFIX_FOLDER)) {
final long folderId = Long.parseLong(objectId.substring( final long folderId = Long.parseLong(objectId.substring(
FOLDER_BROWSER_KEY_PREFIX_FOLDER.length())); FOLDER_BROWSER_KEY_PREFIX_FOLDER.length()));
final Folder folder = folderRepo.findById(folderId).orElseThrow( final Folder folder = folderRepo.findById(folderId).orElseThrow(
() -> new IllegalArgumentException(String.format( () -> new IllegalArgumentException(String.format(
"No folder with id %d in database.", folderId))); "No folder with id %d in database.", folderId)));
name = folder.getName(); name = folder.getName();
//Check if folder or subfolder contains live items //Check if folder or subfolder contains live items
if (isMove(state)) { if (isMove(state)) {
final FolderManager.FolderIsMovable movable = folderManager final FolderManager.FolderIsMovable movable = folderManager
.folderIsMovable(folder, target); .folderIsMovable(folder, target);
switch (movable) { switch (movable) {
case DIFFERENT_SECTIONS: case DIFFERENT_SECTIONS:
addErrorMessage(data, addErrorMessage(data,
@ -602,9 +602,10 @@ public class FolderManipulator extends SimpleContainer implements
break; break;
default: default:
throw new UnexpectedErrorException(String.format( throw new UnexpectedErrorException(String.format(
"Unknown state '%s' for '%s'.", "Unknown state '%s' for '%s'.",
movable, movable,
FolderManager.FolderIsMovable.class.getName())); FolderManager.FolderIsMovable.class.
getName()));
} }
} }
@ -612,13 +613,13 @@ public class FolderManipulator extends SimpleContainer implements
} else if (objectId.startsWith(FOLDER_BROWSER_KEY_PREFIX_ITEM)) { } else if (objectId.startsWith(FOLDER_BROWSER_KEY_PREFIX_ITEM)) {
final long itemId = Long.parseLong(objectId.substring( final long itemId = Long.parseLong(objectId.substring(
FOLDER_BROWSER_KEY_PREFIX_ITEM.length())); FOLDER_BROWSER_KEY_PREFIX_ITEM.length()));
final ContentItem item = itemRepo final ContentItem item = itemRepo
.findById(itemId) .findById(itemId)
.orElseThrow(() -> new IllegalArgumentException( .orElseThrow(() -> new IllegalArgumentException(
String.format( String.format(
"No content item with id %d in database.", "No content item with id %d in database.",
itemId))); itemId)));
name = item.getDisplayName(); name = item.getDisplayName();
@ -629,11 +630,11 @@ public class FolderManipulator extends SimpleContainer implements
object = item; object = item;
} else { } else {
throw new IllegalArgumentException(String.format( throw new IllegalArgumentException(String.format(
"Provided objectId '%s' does not start with '%s' " "Provided objectId '%s' does not start with '%s' "
+ "or '%s'.", + "or '%s'.",
objectId, objectId,
FOLDER_BROWSER_KEY_PREFIX_FOLDER, FOLDER_BROWSER_KEY_PREFIX_FOLDER,
FOLDER_BROWSER_KEY_PREFIX_ITEM)); FOLDER_BROWSER_KEY_PREFIX_ITEM));
} }
final long count = controller.countObjects(target, name); final long count = controller.countObjects(target, name);
@ -645,7 +646,7 @@ public class FolderManipulator extends SimpleContainer implements
if (!(permissionChecker.isPermitted( if (!(permissionChecker.isPermitted(
ItemPrivileges.DELETE, object)) ItemPrivileges.DELETE, object))
&& isMove(state)) { && isMove(state)) {
addErrorMessage(data, addErrorMessage(data,
"cms.ui.folder.no_permission_for_item", "cms.ui.folder.no_permission_for_item",
object.getDisplayName()); object.getDisplayName());
@ -674,7 +675,7 @@ public class FolderManipulator extends SimpleContainer implements
// } // }
// } // }
private class TargetSelectorSubmissionListener implements private class TargetSelectorSubmissionListener implements
FormSubmissionListener { FormSubmissionListener {
public TargetSelectorSubmissionListener() { public TargetSelectorSubmissionListener() {
//Nothing //Nothing
@ -682,15 +683,15 @@ public class FolderManipulator extends SimpleContainer implements
@Override @Override
public void submitted(final FormSectionEvent event) throws public void submitted(final FormSectionEvent event) throws
FormProcessException { FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
if (targetSelector.isCancelled(state)) { if (targetSelector.isCancelled(state)) {
reset(state); reset(state);
throw new FormProcessException(new GlobalizedMessage( throw new FormProcessException(new GlobalizedMessage(
"cms.ui.folder.cancelled", "cms.ui.folder.cancelled",
CmsConstants.CMS_FOLDER_BUNDLE)); CmsConstants.CMS_FOLDER_BUNDLE));
} }
} }
@ -727,8 +728,8 @@ public class FolderManipulator extends SimpleContainer implements
@Override @Override
protected Long getRootFolderID(final PageState state) { protected Long getRootFolderID(final PageState state) {
final ContentSection section = CMS final ContentSection section = CMS
.getContext() .getContext()
.getContentSection(); .getContentSection();
return section.getRootDocumentsFolder().getObjectId(); return section.getRootDocumentsFolder().getObjectId();
} }
@ -744,26 +745,37 @@ public class FolderManipulator extends SimpleContainer implements
final Label label = (Label) event.getTarget(); final Label label = (Label) event.getTarget();
final int numberOfItems = getSources(state).length; final int numberOfItems = getSources(state).length;
final Category folder = (Category) sourceFolderModel final Category folder = (Category) sourceFolderModel
.getSelectedObject(state); .getSelectedObject(state);
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryManager categoryManager = cdiUtil. final CategoryManager categoryManager = cdiUtil.
findBean(CategoryManager.class); findBean(CategoryManager.class);
final String targetFolderPath;
if (targetModel.getSelectedObject(state) == null) {
targetFolderPath = "";
} else {
targetFolderPath = categoryManager.getCategoryPath(
targetModel.getSelectedObject(state));
}
if (isMove(state)) { if (isMove(state)) {
label.setLabel(new GlobalizedMessage( label.setLabel(new GlobalizedMessage(
"cms.ui.folder.move", "cms.ui.folder.move",
CmsConstants.CMS_FOLDER_BUNDLE, CmsConstants.CMS_FOLDER_BUNDLE,
new Object[]{numberOfItems, new Object[]{
categoryManager.getCategoryPath( numberOfItems,
folder)})); categoryManager.getCategoryPath(folder),
targetFolderPath
}));
} else if (isCopy(state)) { } else if (isCopy(state)) {
label.setLabel(new GlobalizedMessage( label.setLabel(new GlobalizedMessage(
"cms.ui.folder.copy", "cms.ui.folder.copy",
CMS_BUNDLE, CMS_BUNDLE,
new Object[]{numberOfItems, new Object[]{
categoryManager.getCategoryPath( numberOfItems,
folder)})); categoryManager.getCategoryPath(folder),
targetFolderPath
}));
} }
} }
@ -791,17 +803,18 @@ public class FolderManipulator extends SimpleContainer implements
if (folder != null) { if (folder != null) {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final FolderManager folderManager = cdiUtil.findBean( final FolderManager folderManager = cdiUtil.findBean(
FolderManager.class); FolderManager.class);
if (!folderManager.getParentFolder(folder).isPresent()) { if (!folderManager.getParentFolder(folder).isPresent()) {
folderTree.expand(Long.toString(folder.getObjectId()), folderTree.expand(Long.toString(folder.getObjectId()),
state); state);
} else { } else {
final List<Folder> parents = folderManager final List<Folder> parents = folderManager
.getParentFolders(folder); .getParentFolders(folder);
parents parents
.stream() .stream()
.map(parent -> Long.toString(parent.getObjectId())) .map(parent -> Long.toString(parent.getObjectId()))
.forEach(folderId -> folderTree.expand(folderId, state)); .forEach(folderId -> folderTree.expand(folderId,
state));
} }
} }
} }
@ -892,15 +905,15 @@ public class FolderManipulator extends SimpleContainer implements
// folderBrowser.setFilterForm(filterForm); // folderBrowser.setFilterForm(filterForm);
folderBrowser.setFolderManipulator(FolderManipulator.this); folderBrowser.setFolderManipulator(FolderManipulator.this);
paginator = new Paginator( paginator = new Paginator(
new FolderBrowserPaginationModelBuilder(folderBrowser), new FolderBrowserPaginationModelBuilder(folderBrowser),
CMSConfig.getConfig().getFolderBrowseListSize()); CMSConfig.getConfig().getFolderBrowseListSize());
folderBrowser.setPaginator(paginator); folderBrowser.setPaginator(paginator);
panel.add(paginator); panel.add(paginator);
panel.add(folderBrowser); panel.add(folderBrowser);
LOGGER.debug("Adding filter form..."); LOGGER.debug("Adding filter form...");
filterForm = new FilterForm(new FolderBrowserFilterFormModelBuilder( filterForm = new FilterForm(new FolderBrowserFilterFormModelBuilder(
folderBrowser)); folderBrowser));
FolderManipulator.this.add(filterForm); FolderManipulator.this.add(filterForm);
checkboxGroup = new CheckboxGroup(sourcesParam); checkboxGroup = new CheckboxGroup(sourcesParam);
@ -912,19 +925,19 @@ public class FolderManipulator extends SimpleContainer implements
group.addAction(container); group.addAction(container);
container.add(new Label(new GlobalizedMessage( container.add(new Label(new GlobalizedMessage(
"cms.ui.folder.edit_selection", "cms.ui.folder.edit_selection",
CmsConstants.CMS_FOLDER_BUNDLE))); CmsConstants.CMS_FOLDER_BUNDLE)));
actionSelect = new SingleSelect(actionParam); actionSelect = new SingleSelect(actionParam);
actionSelect.addOption( actionSelect.addOption(
new Option(COPY, new Option(COPY,
new Label(new GlobalizedMessage( new Label(new GlobalizedMessage(
"cms.ui.folder.copy.action", "cms.ui.folder.copy.action",
CmsConstants.CMS_FOLDER_BUNDLE)))); CmsConstants.CMS_FOLDER_BUNDLE))));
actionSelect.addOption( actionSelect.addOption(
new Option(MOVE, new Option(MOVE,
new Label(new GlobalizedMessage( new Label(new GlobalizedMessage(
"cms.ui.folder.move.action", "cms.ui.folder.move.action",
CmsConstants.CMS_FOLDER_BUNDLE)))); CmsConstants.CMS_FOLDER_BUNDLE))));
//Publishing in the folder browser only works if threaded publishing is active //Publishing in the folder browser only works if threaded publishing is active
// if (CMSConfig.getInstanceOf().getThreadedPublishing()) { // if (CMSConfig.getInstanceOf().getThreadedPublishing()) {
// actionSelect.addOption(new Option(PUBLISH, // actionSelect.addOption(new Option(PUBLISH,
@ -937,8 +950,8 @@ public class FolderManipulator extends SimpleContainer implements
container.add(actionSelect); container.add(actionSelect);
submit = new Submit("Go", submit = new Submit("Go",
new GlobalizedMessage( new GlobalizedMessage(
"cms.ui.folder.go", "cms.ui.folder.go",
CmsConstants.CMS_FOLDER_BUNDLE)); CmsConstants.CMS_FOLDER_BUNDLE));
container.add(submit); container.add(submit);
// Add a new first column to the table // Add a new first column to the table
@ -1016,8 +1029,8 @@ public class FolderManipulator extends SimpleContainer implements
panel = new BoxPanel(BoxPanel.HORIZONTAL); panel = new BoxPanel(BoxPanel.HORIZONTAL);
final ActionLink allLink = new ActionLink( final ActionLink allLink = new ActionLink(
new GlobalizedMessage("cms.ui.folder.filter.all", new GlobalizedMessage("cms.ui.folder.filter.all",
CmsConstants.CMS_FOLDER_BUNDLE)); CmsConstants.CMS_FOLDER_BUNDLE));
allLink.addActionListener(new ActionListener() { allLink.addActionListener(new ActionListener() {
@Override @Override
@ -1043,14 +1056,14 @@ public class FolderManipulator extends SimpleContainer implements
// panel.add(link); // panel.add(link);
// } // }
panel.add(new Label(new GlobalizedMessage( panel.add(new Label(new GlobalizedMessage(
"cms.ui.folder.filter", "cms.ui.folder.filter",
CmsConstants.CMS_FOLDER_BUNDLE))); CmsConstants.CMS_FOLDER_BUNDLE)));
filterField = new TextField(filterParam); filterField = new TextField(filterParam);
panel.add(filterField); panel.add(filterField);
panel.add(new Submit("filterFolderSubmit", panel.add(new Submit("filterFolderSubmit",
new GlobalizedMessage( new GlobalizedMessage(
"cms.ui.folder.filter_do", "cms.ui.folder.filter_do",
CmsConstants.CMS_FOLDER_BUNDLE))); CmsConstants.CMS_FOLDER_BUNDLE)));
add(panel); add(panel);
@ -1062,28 +1075,28 @@ public class FolderManipulator extends SimpleContainer implements
@Override @Override
public void process(final FormSectionEvent event) throws public void process(final FormSectionEvent event) throws
FormProcessException { FormProcessException {
//Nothing //Nothing
} }
@Override @Override
public void init(final FormSectionEvent event) throws public void init(final FormSectionEvent event) throws
FormProcessException { FormProcessException {
//fse.getPageState().setValue(FolderManipulator.this.m_filter, null); //fse.getPageState().setValue(FolderManipulator.this.m_filter, null);
//filterField.setValue(fse.getPageState(), null); //filterField.setValue(fse.getPageState(), null);
} }
@Override @Override
public void submitted(final FormSectionEvent event) throws public void submitted(final FormSectionEvent event) throws
FormProcessException { FormProcessException {
} }
@Override @Override
public boolean isVisible(PageState state) { public boolean isVisible(PageState state) {
if (super.isVisible(state) if (super.isVisible(state)
&& (modelBuilder.getFolderSize(state) && (modelBuilder.getFolderSize(state)
>= CMSConfig.getConfig(). >= CMSConfig.getConfig().
getFolderAtoZShowLimit())) { getFolderAtoZShowLimit())) {
return true; return true;
} else { } else {
return false; return false;
@ -1115,7 +1128,7 @@ public class FolderManipulator extends SimpleContainer implements
private class FolderTreeCellRenderer implements TreeCellRenderer { private class FolderTreeCellRenderer implements TreeCellRenderer {
private final RequestLocal invalidFoldersRequestLocal private final RequestLocal invalidFoldersRequestLocal
= new RequestLocal(); = new RequestLocal();
/** /**
* Render the folders appropriately. The selected folder is a bold * Render the folders appropriately. The selected folder is a bold
@ -1137,13 +1150,13 @@ public class FolderManipulator extends SimpleContainer implements
if (invalidFoldersRequestLocal.get(state) == null) { if (invalidFoldersRequestLocal.get(state) == null) {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final FolderBrowserController controller = cdiUtil.findBean( final FolderBrowserController controller = cdiUtil.findBean(
FolderBrowserController.class); FolderBrowserController.class);
invalidFolders = controller.createInvalidTargetsList( invalidFolders = controller.createInvalidTargetsList(
Arrays.asList(getSources(state))); Arrays.asList(getSources(state)));
invalidFoldersRequestLocal.set(state, invalidFolders); invalidFoldersRequestLocal.set(state, invalidFolders);
} else { } else {
invalidFolders = (List<String>) invalidFoldersRequestLocal invalidFolders = (List<String>) invalidFoldersRequestLocal
.get(state); .get(state);
} }
final Label label = new Label(value.toString()); final Label label = new Label(value.toString());