diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AssetFolderBrowser.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AssetFolderBrowser.java
index 98b8f9fa9..01f83f1af 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AssetFolderBrowser.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AssetFolderBrowser.java
@@ -22,7 +22,6 @@ import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Image;
import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.Link;
import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.PageState;
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.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
+import com.arsdigita.bebop.table.TableHeader;
import com.arsdigita.cms.CMS;
-import com.arsdigita.cms.ui.folder.FolderBrowser;
import com.arsdigita.cms.ui.folder.FolderSelectionModel;
import com.arsdigita.globalization.GlobalizedMessage;
+
import java.util.Date;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+
import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.CmsConstants;
import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionManager;
-import org.librecms.dispatcher.ItemResolver;
/**
* Browse folder and assets.
@@ -72,9 +70,9 @@ public class AssetFolderBrowser extends Table {
private TableColumn nameColumn;
private TableColumn deleteColumn;
private final StringParameter sortTypeParameter = new StringParameter(
- "sortType");
+ "sortType");
private final StringParameter sortDirectionParameter = new StringParameter(
- "sortDir");
+ "sortDir");
private Paginator paginator;
private long folderSize;
@@ -90,6 +88,7 @@ public class AssetFolderBrowser extends Table {
}
private void initComponents() {
+
setModelBuilder(new AssetFolderBrowserTableModelBuilder());
final GlobalizedMessage[] headers = {
@@ -102,25 +101,28 @@ public class AssetFolderBrowser extends Table {
setModelBuilder(new AssetFolderBrowserTableModelBuilder());
setColumnModel(new DefaultTableColumnModel(headers));
+ setHeader(new TableHeader(getColumnModel()));
setClassAttr("dataTable");
- getHeader().setDefaultRenderer(new DefaultTableCellRenderer());
+ getHeader().setDefaultRenderer(
+ new com.arsdigita.cms.ui.util.DefaultTableCellRenderer());
nameColumn = getColumn(AssetFolderBrowserTableModel.COL_NAME);
nameColumn.setCellRenderer(new NameCellRenderer());
nameColumn.setHeaderRenderer(new HeaderCellRenderer(SORT_KEY_NAME));
+
getColumn(AssetFolderBrowserTableModel.COL_CREATION_DATE)
- .setHeaderRenderer(
- new HeaderCellRenderer(SORT_KEY_CREATION_DATE));
+ .setHeaderRenderer(
+ new HeaderCellRenderer(SORT_KEY_CREATION_DATE));
getColumn(AssetFolderBrowserTableModel.COL_CREATION_DATE)
- .setCellRenderer(new DateCellRenderer());
+ .setCellRenderer(new DateCellRenderer());
getColumn(AssetFolderBrowserTableModel.COL_LAST_MODIFIED)
- .setHeaderRenderer(new HeaderCellRenderer(
- SORT_KEY_LAST_MODIFIED_DATE));
+ .setHeaderRenderer(new HeaderCellRenderer(
+ SORT_KEY_LAST_MODIFIED_DATE));
getColumn(AssetFolderBrowserTableModel.COL_LAST_MODIFIED)
- .setCellRenderer(new DateCellRenderer());
+ .setCellRenderer(new DateCellRenderer());
deleteColumn = getColumn(AssetFolderBrowserTableModel.COL_DELETEABLE);
deleteColumn.setCellRenderer(new ActionCellRenderer());
@@ -139,7 +141,7 @@ public class AssetFolderBrowser extends Table {
public void register(final Page page) {
super.register(page);
-
+
page.addComponentStateParam(this, folderSelectionModel.
getStateParameter());
page.addComponentStateParam(this, sortTypeParameter);
@@ -157,7 +159,7 @@ public class AssetFolderBrowser extends Table {
protected void setPaginator(final Paginator paginator) {
this.paginator = paginator;
}
-
+
protected String getSortType(final PageState state) {
return (String) state.getValue(sortTypeParameter);
}
@@ -198,7 +200,7 @@ public class AssetFolderBrowser extends Table {
final String sortKey = (String) state.getValue(sortTypeParameter);
final boolean isCurrentKey = sortKey.equals(key);
final String currentSortDirection = (String) state
- .getValue(sortDirectionParameter);
+ .getValue(sortDirectionParameter);
final String imageUrlStub;
if (SORT_ACTION_UP.equals(currentSortDirection)) {
@@ -215,7 +217,7 @@ public class AssetFolderBrowser extends Table {
// by default, everything sorts "up" unless it
// is the current key and it is already pointing up
if (SORT_ACTION_UP.equals(currentSortDirection)
- && isCurrentKey) {
+ && isCurrentKey) {
sortDirectionAction = SORT_ACTION_DOWN;
} else {
sortDirectionAction = SORT_ACTION_UP;
@@ -266,14 +268,14 @@ public class AssetFolderBrowser extends Table {
final String name = (String) value;
final ContentSection section = CMS.getContext().
- getContentSection();
+ getContentSection();
final ContentSectionManager sectionManager = CdiUtil.
- createCdiUtil()
- .findBean(ContentSectionManager.class);
+ createCdiUtil()
+ .findBean(ContentSectionManager.class);
final boolean isFolder = ((AssetFolderBrowserTableModel) table
.getTableModel(state))
- .isFolder();
+ .isFolder();
final long objectId = getObjectId(key);
if (isFolder) {
@@ -337,12 +339,13 @@ public class AssetFolderBrowser extends Table {
return new Label(" ", false);
} else {
final ControlLink link = new ControlLink(
- new Label(new GlobalizedMessage("cms.ui.folder.delete",
- CmsConstants.CMS_BUNDLE)));
+ new Label(
+ new GlobalizedMessage("cms.ui.folder.delete",
+ CmsConstants.CMS_FOLDER_BUNDLE)));
link.setConfirmation(
- new GlobalizedMessage(
- "cms.ui.folder.delete_confirmation",
- CmsConstants.CMS_BUNDLE));
+ new GlobalizedMessage(
+ "cms.ui.folder.delete_confirmation",
+ CmsConstants.CMS_FOLDER_BUNDLE));
return link;
}
}
@@ -364,7 +367,7 @@ public class AssetFolderBrowser extends Table {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final AssetFolderBrowserController controller = cdiUtil.findBean(
- AssetFolderBrowserController.class);
+ AssetFolderBrowserController.class);
controller.deleteObject((String) event.getRowKey());
((Table) event.getSource()).clearSelection(state);
@@ -385,8 +388,8 @@ public class AssetFolderBrowser extends Table {
clearSelection(state);
getFolderSelectionModel().setSelectedKey(
- state,
- getObjectId(event.getRowKey()));
+ state,
+ getObjectId(event.getRowKey()));
}
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AssetPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AssetPane.java
index aea69bca9..446b5572d 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AssetPane.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/AssetPane.java
@@ -19,6 +19,8 @@
package com.arsdigita.cms.ui.assets;
import com.arsdigita.bebop.ActionLink;
+import com.arsdigita.bebop.Component;
+import com.arsdigita.bebop.Form;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Page;
@@ -28,6 +30,7 @@ import com.arsdigita.bebop.Resettable;
import com.arsdigita.bebop.SegmentedPanel;
import com.arsdigita.bebop.SimpleContainer;
import com.arsdigita.bebop.SingleSelectionModel;
+import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.Text;
import com.arsdigita.bebop.event.ActionEvent;
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.PrintEvent;
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.ui.BaseTree;
import com.arsdigita.cms.ui.folder.FolderCreateForm;
@@ -55,8 +66,11 @@ import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.Folder;
import java.util.List;
+
import org.arsdigita.cms.CMSConfig;
+import javax.swing.CellRendererPane;
+
/**
*
* @author Jens Pelzetter
@@ -64,13 +78,21 @@ import org.arsdigita.cms.CMSConfig;
public class AssetPane extends LayoutPanel implements Resettable {
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 SingleSelectionModel selectionModel;
private final FolderSelectionModel folderSelectionModel;
private final FolderRequestLocal folderRequestLocal;
+ private final ArrayParameter sourcesParameter = new ArrayParameter(
+ new StringParameter(SOURCES_PARAM));
private AssetFolderBrowser folderBrowser;
+ private SingleSelect actionSelect;
+ private Submit actionSubmit;
private SegmentedPanel.Segment browseSegment;
private SegmentedPanel.Segment currentFolderSegment;
@@ -85,8 +107,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
@Override
protected Folder getRootFolder(final PageState state) {
final ContentSection section = CMS
- .getContext()
- .getContentSection();
+ .getContext()
+ .getContentSection();
return section.getRootAssetsFolder();
}
@@ -97,8 +119,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
@Override
protected Long getRootFolderID(final PageState state) {
final ContentSection section = CMS
- .getContext()
- .getContentSection();
+ .getContext()
+ .getContentSection();
return section.getRootAssetsFolder().getObjectId();
}
@@ -109,8 +131,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
setLeft(left);
final Label heading = new Label(
- new GlobalizedMessage("cms.ui.folder_browser",
- CmsConstants.CMS_BUNDLE));
+ new GlobalizedMessage("cms.ui.folder_browser",
+ CmsConstants.CMS_BUNDLE));
left.addSegment(heading, tree);
// final Text placeholder = new Text("Placeholder");
@@ -123,13 +145,69 @@ public class AssetPane extends LayoutPanel implements Resettable {
final SegmentedPanel panel = new SegmentedPanel();
browseSegment = panel.addSegment();
+ final Form browserForm = new Form("assetFolderBrowser",
+ new SimpleContainer());
+ browserForm.setMethod(Form.GET);
folderBrowser = new AssetFolderBrowser(folderSelectionModel);
final Paginator paginator = new Paginator(
- new AssetFolderBrowserPaginationModelBuilder(folderBrowser),
- CMSConfig.getConfig().getFolderBrowseListSize());
+ new AssetFolderBrowserPaginationModelBuilder(folderBrowser),
+ CMSConfig.getConfig().getFolderBrowseListSize());
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.addHeader(new Text("Current folder"));
@@ -142,13 +220,13 @@ public class AssetPane extends LayoutPanel implements Resettable {
final Label target = (Label) event.getTarget();
final long selectedId = Long.parseLong(selectionModel
- .getSelectedKey(state).toString());
+ .getSelectedKey(state).toString());
final long currentFolderId = folderSelectionModel
- .getSelectedObject(state).getObjectId();
+ .getSelectedObject(state).getObjectId();
target.setLabel(String.format(
- "selectedId = %d; currentFolderId = %d",
- selectedId,
- currentFolderId));
+ "selectedId = %d; currentFolderId = %d",
+ selectedId,
+ currentFolderId));
}
});
@@ -161,19 +239,19 @@ public class AssetPane extends LayoutPanel implements Resettable {
actionsSegment.add(actions);
final FolderCreateForm folderCreateForm = new FolderCreateForm(
- "fcreat", folderSelectionModel);
+ "fcreat", folderSelectionModel);
folderCreateForm.addSubmissionListener(new FormSubmissionListener() {
@Override
public void submitted(final FormSectionEvent event)
- throws FormProcessException {
+ throws FormProcessException {
final PageState state = event.getPageState();
if (event.getSource() == folderCreateForm
- && folderCreateForm.isCancelled(state)) {
+ && folderCreateForm.isCancelled(state)) {
browseMode(state);
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
public void process(final FormSectionEvent event)
- throws FormProcessException {
+ throws FormProcessException {
final PageState state = event.getPageState();
final Object source = event.getSource();
@@ -194,24 +272,24 @@ public class AssetPane extends LayoutPanel implements Resettable {
});
newFolderSegment = panel.addSegment(
- new Label(new GlobalizedMessage("cms.ui.new_folder",
- CmsConstants.CMS_BUNDLE)),
- folderCreateForm);
+ new Label(new GlobalizedMessage("cms.ui.new_folder",
+ CmsConstants.CMS_BUNDLE)),
+ folderCreateForm);
final FolderEditorForm folderEditorForm = new FolderEditorForm(
- "fedit", folderSelectionModel);
+ "fedit", folderSelectionModel);
folderEditorForm.addSubmissionListener(new FormSubmissionListener() {
@Override
public void submitted(final FormSectionEvent event)
- throws FormProcessException {
+ throws FormProcessException {
final PageState state = event.getPageState();
if (event.getSource() == folderEditorForm
- && folderEditorForm.isCancelled(state)) {
+ && folderEditorForm.isCancelled(state)) {
browseMode(state);
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
public void process(final FormSectionEvent event)
- throws FormProcessException {
+ throws FormProcessException {
final PageState state = event.getPageState();
final Object source = event.getSource();
@@ -231,13 +309,13 @@ public class AssetPane extends LayoutPanel implements Resettable {
});
editFolderSegment = panel.addSegment(
- new Label(new GlobalizedMessage("cms.ui.edit_folder",
- CmsConstants.CMS_BUNDLE)),
- folderEditorForm);
+ new Label(new GlobalizedMessage("cms.ui.edit_folder",
+ CmsConstants.CMS_BUNDLE)),
+ folderEditorForm);
final ActionLink createFolderAction = new ActionLink(
- new Label(new GlobalizedMessage("cms.ui.new_folder",
- CmsConstants.CMS_BUNDLE)));
+ new Label(new GlobalizedMessage("cms.ui.new_folder",
+ CmsConstants.CMS_BUNDLE)));
createFolderAction.addActionListener(new ActionListener() {
@Override
@@ -253,8 +331,8 @@ public class AssetPane extends LayoutPanel implements Resettable {
actions.addAction(createFolderAction);
final ActionLink editFolderAction = new ActionLink(
- new Label(new GlobalizedMessage("cms.ui.edit_folder",
- CmsConstants.CMS_BUNDLE)));
+ new Label(new GlobalizedMessage("cms.ui.edit_folder",
+ CmsConstants.CMS_BUNDLE)));
editFolderAction.addActionListener(new ActionListener() {
@Override
@@ -265,6 +343,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
editFolderMode(state);
}
}
+
});
actions.addAction(editFolderAction);
@@ -312,7 +391,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
public void reset(final PageState state) {
super.reset(state);
-
+
folderBrowser.getPaginator().reset(state);
}
@@ -327,14 +406,14 @@ public class AssetPane extends LayoutPanel implements Resettable {
if (!selectionModel.isSelected(state)) {
final String folder = state
- .getRequest()
- .getParameter(SET_FOLDER);
+ .getRequest()
+ .getParameter(SET_FOLDER);
if (folder == null) {
final Category root = CMS
- .getContext()
- .getContentSection()
- .getRootAssetsFolder();
+ .getContext()
+ .getContentSection()
+ .getRootAssetsFolder();
final Long folderId = root.getObjectId();
selectionModel.setSelectedKey(state, folderId);
@@ -354,18 +433,18 @@ public class AssetPane extends LayoutPanel implements Resettable {
final PageState state = event.getPageState();
final Category root = CMS
- .getContext()
- .getContentSection()
- .getRootAssetsFolder();
+ .getContext()
+ .getContentSection()
+ .getRootAssetsFolder();
if (!root.equals(folderRequestLocal.getFolder(state))) {
// Expand the ancestor nodes of the currently
// selected node.
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final FolderTreeModelController controller = cdiUtil.findBean(
- FolderTreeModelController.class);
+ FolderTreeModelController.class);
final List ancestorIds = controller.findAncestorIds(
- folderRequestLocal.getFolder(state));
+ folderRequestLocal.getFolder(state));
ancestorIds.forEach(id -> tree.expand(id.toString(), state));
}