CCM NG/ccm-cms: Some work for the AssetFolderBrowser

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4656 8810af33-2d31-482b-a856-94f89814c4df
jensp 2017-03-31 16:49:41 +00:00
parent e1aeeaff4c
commit f06ba48a5f
2 changed files with 158 additions and 76 deletions

View File

@ -22,7 +22,6 @@ import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink; import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Image; import com.arsdigita.bebop.Image;
import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.Page; import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.PageState; import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Paginator; import com.arsdigita.bebop.Paginator;
@ -37,19 +36,18 @@ import com.arsdigita.bebop.table.DefaultTableCellRenderer;
import com.arsdigita.bebop.table.DefaultTableColumnModel; import com.arsdigita.bebop.table.DefaultTableColumnModel;
import com.arsdigita.bebop.table.TableCellRenderer; import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn; import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableHeader;
import com.arsdigita.cms.CMS; import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ui.folder.FolderBrowser;
import com.arsdigita.cms.ui.folder.FolderSelectionModel; import com.arsdigita.cms.ui.folder.FolderSelectionModel;
import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.globalization.GlobalizedMessage;
import java.util.Date; import java.util.Date;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.CmsConstants; import org.librecms.CmsConstants;
import org.librecms.contentsection.ContentSection; import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionManager; import org.librecms.contentsection.ContentSectionManager;
import org.librecms.dispatcher.ItemResolver;
/** /**
* Browse folder and assets. * Browse folder and assets.
@ -72,9 +70,9 @@ public class AssetFolderBrowser extends Table {
private TableColumn nameColumn; private TableColumn nameColumn;
private TableColumn deleteColumn; private TableColumn deleteColumn;
private final StringParameter sortTypeParameter = new StringParameter( private final StringParameter sortTypeParameter = new StringParameter(
"sortType"); "sortType");
private final StringParameter sortDirectionParameter = new StringParameter( private final StringParameter sortDirectionParameter = new StringParameter(
"sortDir"); "sortDir");
private Paginator paginator; private Paginator paginator;
private long folderSize; private long folderSize;
@ -90,6 +88,7 @@ public class AssetFolderBrowser extends Table {
} }
private void initComponents() { private void initComponents() {
setModelBuilder(new AssetFolderBrowserTableModelBuilder()); setModelBuilder(new AssetFolderBrowserTableModelBuilder());
final GlobalizedMessage[] headers = { final GlobalizedMessage[] headers = {
@ -102,25 +101,28 @@ public class AssetFolderBrowser extends Table {
setModelBuilder(new AssetFolderBrowserTableModelBuilder()); setModelBuilder(new AssetFolderBrowserTableModelBuilder());
setColumnModel(new DefaultTableColumnModel(headers)); setColumnModel(new DefaultTableColumnModel(headers));
setHeader(new TableHeader(getColumnModel()));
setClassAttr("dataTable"); setClassAttr("dataTable");
getHeader().setDefaultRenderer(new DefaultTableCellRenderer()); getHeader().setDefaultRenderer(
new com.arsdigita.cms.ui.util.DefaultTableCellRenderer());
nameColumn = getColumn(AssetFolderBrowserTableModel.COL_NAME); nameColumn = getColumn(AssetFolderBrowserTableModel.COL_NAME);
nameColumn.setCellRenderer(new NameCellRenderer()); nameColumn.setCellRenderer(new NameCellRenderer());
nameColumn.setHeaderRenderer(new HeaderCellRenderer(SORT_KEY_NAME)); nameColumn.setHeaderRenderer(new HeaderCellRenderer(SORT_KEY_NAME));
getColumn(AssetFolderBrowserTableModel.COL_CREATION_DATE) getColumn(AssetFolderBrowserTableModel.COL_CREATION_DATE)
.setHeaderRenderer( .setHeaderRenderer(
new HeaderCellRenderer(SORT_KEY_CREATION_DATE)); new HeaderCellRenderer(SORT_KEY_CREATION_DATE));
getColumn(AssetFolderBrowserTableModel.COL_CREATION_DATE) getColumn(AssetFolderBrowserTableModel.COL_CREATION_DATE)
.setCellRenderer(new DateCellRenderer()); .setCellRenderer(new DateCellRenderer());
getColumn(AssetFolderBrowserTableModel.COL_LAST_MODIFIED) getColumn(AssetFolderBrowserTableModel.COL_LAST_MODIFIED)
.setHeaderRenderer(new HeaderCellRenderer( .setHeaderRenderer(new HeaderCellRenderer(
SORT_KEY_LAST_MODIFIED_DATE)); SORT_KEY_LAST_MODIFIED_DATE));
getColumn(AssetFolderBrowserTableModel.COL_LAST_MODIFIED) getColumn(AssetFolderBrowserTableModel.COL_LAST_MODIFIED)
.setCellRenderer(new DateCellRenderer()); .setCellRenderer(new DateCellRenderer());
deleteColumn = getColumn(AssetFolderBrowserTableModel.COL_DELETEABLE); deleteColumn = getColumn(AssetFolderBrowserTableModel.COL_DELETEABLE);
deleteColumn.setCellRenderer(new ActionCellRenderer()); deleteColumn.setCellRenderer(new ActionCellRenderer());
@ -139,7 +141,7 @@ public class AssetFolderBrowser extends Table {
public void register(final Page page) { public void register(final Page page) {
super.register(page); super.register(page);
page.addComponentStateParam(this, folderSelectionModel. page.addComponentStateParam(this, folderSelectionModel.
getStateParameter()); getStateParameter());
page.addComponentStateParam(this, sortTypeParameter); page.addComponentStateParam(this, sortTypeParameter);
@ -157,7 +159,7 @@ public class AssetFolderBrowser extends Table {
protected void setPaginator(final Paginator paginator) { protected void setPaginator(final Paginator paginator) {
this.paginator = paginator; this.paginator = paginator;
} }
protected String getSortType(final PageState state) { protected String getSortType(final PageState state) {
return (String) state.getValue(sortTypeParameter); return (String) state.getValue(sortTypeParameter);
} }
@ -198,7 +200,7 @@ public class AssetFolderBrowser extends Table {
final String sortKey = (String) state.getValue(sortTypeParameter); final String sortKey = (String) state.getValue(sortTypeParameter);
final boolean isCurrentKey = sortKey.equals(key); final boolean isCurrentKey = sortKey.equals(key);
final String currentSortDirection = (String) state final String currentSortDirection = (String) state
.getValue(sortDirectionParameter); .getValue(sortDirectionParameter);
final String imageUrlStub; final String imageUrlStub;
if (SORT_ACTION_UP.equals(currentSortDirection)) { if (SORT_ACTION_UP.equals(currentSortDirection)) {
@ -215,7 +217,7 @@ public class AssetFolderBrowser extends Table {
// by default, everything sorts "up" unless it // by default, everything sorts "up" unless it
// is the current key and it is already pointing up // is the current key and it is already pointing up
if (SORT_ACTION_UP.equals(currentSortDirection) if (SORT_ACTION_UP.equals(currentSortDirection)
&& isCurrentKey) { && isCurrentKey) {
sortDirectionAction = SORT_ACTION_DOWN; sortDirectionAction = SORT_ACTION_DOWN;
} else { } else {
sortDirectionAction = SORT_ACTION_UP; sortDirectionAction = SORT_ACTION_UP;
@ -266,14 +268,14 @@ public class AssetFolderBrowser extends Table {
final String name = (String) value; final String name = (String) value;
final ContentSection section = CMS.getContext(). final ContentSection section = CMS.getContext().
getContentSection(); getContentSection();
final ContentSectionManager sectionManager = CdiUtil. final ContentSectionManager sectionManager = CdiUtil.
createCdiUtil() createCdiUtil()
.findBean(ContentSectionManager.class); .findBean(ContentSectionManager.class);
final boolean isFolder = ((AssetFolderBrowserTableModel) table final boolean isFolder = ((AssetFolderBrowserTableModel) table
.getTableModel(state)) .getTableModel(state))
.isFolder(); .isFolder();
final long objectId = getObjectId(key); final long objectId = getObjectId(key);
if (isFolder) { if (isFolder) {
@ -337,12 +339,13 @@ public class AssetFolderBrowser extends Table {
return new Label(" ", false); return new Label(" ", false);
} else { } else {
final ControlLink link = new ControlLink( final ControlLink link = new ControlLink(
new Label(new GlobalizedMessage("cms.ui.folder.delete", new Label(
CmsConstants.CMS_BUNDLE))); new GlobalizedMessage("cms.ui.folder.delete",
CmsConstants.CMS_FOLDER_BUNDLE)));
link.setConfirmation( link.setConfirmation(
new GlobalizedMessage( new GlobalizedMessage(
"cms.ui.folder.delete_confirmation", "cms.ui.folder.delete_confirmation",
CmsConstants.CMS_BUNDLE)); CmsConstants.CMS_FOLDER_BUNDLE));
return link; return link;
} }
} }
@ -364,7 +367,7 @@ public class AssetFolderBrowser extends Table {
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.deleteObject((String) event.getRowKey()); controller.deleteObject((String) event.getRowKey());
((Table) event.getSource()).clearSelection(state); ((Table) event.getSource()).clearSelection(state);
@ -385,8 +388,8 @@ public class AssetFolderBrowser extends Table {
clearSelection(state); clearSelection(state);
getFolderSelectionModel().setSelectedKey( getFolderSelectionModel().setSelectedKey(
state, state,
getObjectId(event.getRowKey())); getObjectId(event.getRowKey()));
} }
} }

View File

@ -19,6 +19,8 @@
package com.arsdigita.cms.ui.assets; package com.arsdigita.cms.ui.assets;
import com.arsdigita.bebop.ActionLink; import com.arsdigita.bebop.ActionLink;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.Form;
import com.arsdigita.bebop.FormProcessException; import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Page; import com.arsdigita.bebop.Page;
@ -28,6 +30,7 @@ import com.arsdigita.bebop.Resettable;
import com.arsdigita.bebop.SegmentedPanel; import com.arsdigita.bebop.SegmentedPanel;
import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.bebop.SimpleContainer;
import com.arsdigita.bebop.SingleSelectionModel; import com.arsdigita.bebop.SingleSelectionModel;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.Text; import com.arsdigita.bebop.Text;
import com.arsdigita.bebop.event.ActionEvent; import com.arsdigita.bebop.event.ActionEvent;
import com.arsdigita.bebop.event.ActionListener; import com.arsdigita.bebop.event.ActionListener;
@ -36,6 +39,14 @@ import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener; import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.bebop.event.PrintEvent; import com.arsdigita.bebop.event.PrintEvent;
import com.arsdigita.bebop.event.PrintListener; import com.arsdigita.bebop.event.PrintListener;
import com.arsdigita.bebop.form.CheckboxGroup;
import com.arsdigita.bebop.form.Option;
import com.arsdigita.bebop.form.SingleSelect;
import com.arsdigita.bebop.form.Submit;
import com.arsdigita.bebop.parameters.ArrayParameter;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.cms.CMS; import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ui.BaseTree; import com.arsdigita.cms.ui.BaseTree;
import com.arsdigita.cms.ui.folder.FolderCreateForm; import com.arsdigita.cms.ui.folder.FolderCreateForm;
@ -55,8 +66,11 @@ import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.Folder; import org.librecms.contentsection.Folder;
import java.util.List; import java.util.List;
import org.arsdigita.cms.CMSConfig; import org.arsdigita.cms.CMSConfig;
import javax.swing.CellRendererPane;
/** /**
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -64,13 +78,21 @@ import org.arsdigita.cms.CMSConfig;
public class AssetPane extends LayoutPanel implements Resettable { public class AssetPane extends LayoutPanel implements Resettable {
public static final String SET_FOLDER = "set_folder"; public static final String SET_FOLDER = "set_folder";
private static final String SOURCES_PARAM = "sources";
private static final String ACTION_PARAM = "action";
private static final String MOVE = "Move";
private static final String COPY = "Copy";
private final BaseTree tree; private final BaseTree tree;
private final SingleSelectionModel selectionModel; private final SingleSelectionModel selectionModel;
private final FolderSelectionModel folderSelectionModel; private final FolderSelectionModel folderSelectionModel;
private final FolderRequestLocal folderRequestLocal; private final FolderRequestLocal folderRequestLocal;
private final ArrayParameter sourcesParameter = new ArrayParameter(
new StringParameter(SOURCES_PARAM));
private AssetFolderBrowser folderBrowser; private AssetFolderBrowser folderBrowser;
private SingleSelect actionSelect;
private Submit actionSubmit;
private SegmentedPanel.Segment browseSegment; private SegmentedPanel.Segment browseSegment;
private SegmentedPanel.Segment currentFolderSegment; private SegmentedPanel.Segment currentFolderSegment;
@ -85,8 +107,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();
} }
@ -97,8 +119,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();
} }
@ -109,8 +131,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");
@ -123,13 +145,69 @@ public class AssetPane extends LayoutPanel implements Resettable {
final SegmentedPanel panel = new SegmentedPanel(); final SegmentedPanel panel = new SegmentedPanel();
browseSegment = panel.addSegment(); browseSegment = panel.addSegment();
final Form browserForm = new Form("assetFolderBrowser",
new SimpleContainer());
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);
browseSegment.add(paginator);
browseSegment.add(folderBrowser); final CheckboxGroup checkboxGroup = new CheckboxGroup(sourcesParameter);
browserForm.add(checkboxGroup);
final TableColumn checkboxCol = new TableColumn();
checkboxCol.setHeaderValue(
new GlobalizedMessage("empty_text", CmsConstants.CMS_BUNDLE));
checkboxCol.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 Option result = new Option(key.toString(),
new Text(""));
result.setGroup(checkboxGroup);
return result;
}
});
folderBrowser.getColumnModel().add(0, checkboxCol);
browserForm.add(paginator);
browserForm.add(folderBrowser);
final SimpleContainer actionFormContainer = new SimpleContainer();
actionFormContainer.add(new Label(
new GlobalizedMessage(
"cms.ui.folder.edit_selection",
CmsConstants.CMS_FOLDER_BUNDLE)));
actionSelect = new SingleSelect(ACTION_PARAM);
actionSelect.addOption(
new Option(COPY,
new Label(new GlobalizedMessage(
"cms.ui.folder.copy.action",
CmsConstants.CMS_FOLDER_BUNDLE))));
actionSelect.addOption(
new Option(MOVE,
new Label(new GlobalizedMessage(
"cms.ui.folder.move.action",
CmsConstants.CMS_FOLDER_BUNDLE))));
actionFormContainer.add(actionSelect);
actionSubmit = new Submit(
"Go",
new GlobalizedMessage("cms.ui.folder.go",
CmsConstants.CMS_FOLDER_BUNDLE));
actionFormContainer.add(actionSubmit);
browserForm.add(actionFormContainer);
// browseSegment.add(paginator);
// browseSegment.add(folderBrowser);
browseSegment.add(browserForm);
currentFolderSegment = panel.addSegment(); currentFolderSegment = panel.addSegment();
currentFolderSegment.addHeader(new Text("Current folder")); currentFolderSegment.addHeader(new Text("Current folder"));
@ -142,13 +220,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));
} }
}); });
@ -161,19 +239,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));
} }
} }
@ -183,7 +261,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();
@ -194,24 +272,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));
} }
} }
@ -220,7 +298,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();
@ -231,13 +309,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
@ -253,8 +331,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
@ -265,6 +343,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
editFolderMode(state); editFolderMode(state);
} }
} }
}); });
actions.addAction(editFolderAction); actions.addAction(editFolderAction);
@ -312,7 +391,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
public void reset(final PageState state) { public void reset(final PageState state) {
super.reset(state); super.reset(state);
folderBrowser.getPaginator().reset(state); folderBrowser.getPaginator().reset(state);
} }
@ -327,14 +406,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);
@ -354,18 +433,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));
} }