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
ccm-docs
jensp 2017-03-31 16:49:41 +00:00
parent 4437a273a7
commit 86c26c4600
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.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.
@ -90,6 +88,7 @@ public class AssetFolderBrowser extends Table {
}
private void initComponents() {
setModelBuilder(new AssetFolderBrowserTableModelBuilder());
final GlobalizedMessage[] headers = {
@ -102,14 +101,17 @@ 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));
@ -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));
CmsConstants.CMS_FOLDER_BUNDLE));
return link;
}
}

View File

@ -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 <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 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;
@ -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());
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"));
@ -265,6 +343,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
editFolderMode(state);
}
}
});
actions.addAction(editFolderAction);