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
parent
e1aeeaff4c
commit
f06ba48a5f
|
|
@ -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.
|
||||||
|
|
@ -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,14 +101,17 @@ 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));
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -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"));
|
||||||
|
|
@ -265,6 +343,7 @@ public class AssetPane extends LayoutPanel implements Resettable {
|
||||||
editFolderMode(state);
|
editFolderMode(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
actions.addAction(editFolderAction);
|
actions.addAction(editFolderAction);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue