diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowser.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowser.java index a7126f6f6..4ddb2fe92 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowser.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowser.java @@ -119,24 +119,6 @@ public class FolderBrowser extends Table { this.folderSelectionModel = folderSelectionModel; - /* - * - * This code should be uncommented if the desired behaviour is for a - * change of folder to cause reversion to default ordering of contained - * items (by name ascending). Our feeling is that the user selected - * ordering should be retained for the duration of the folder browsing - * session. If anyone wants this alternative behaviour it should be - * brought in under the control of a config parameter. - * - * m_currentFolder.addChangeListener(new ChangeListener() { - * - * public void stateChanged(ChangeEvent e) { PageState state = - * e.getPageState(); state.setValue(m_sortType, - * m_sortType.getDefaultValue()); state.setValue(m_sortDirection, - * m_sortDirection.getDefaultValue()); - * - * }}); - */ setClassAttr("dataTable"); getHeader().setDefaultRenderer( @@ -194,8 +176,7 @@ public class FolderBrowser extends Table { final PermissionChecker permissionChecker = cdiUtil.findBean( PermissionChecker.class); final Category folder = (Category) folderSelectionModel - .getSelectedObject( - state); + .getSelectedObject(state); final boolean canDelete = permissionChecker.isPermitted( ItemPrivileges.DELETE, folder); @@ -258,79 +239,6 @@ public class FolderBrowser extends Table { return (String) state.getValue(atozFilterParameter); } -// private class FolderTableModelBuilder -// extends AbstractTableModelBuilder -// implements PaginationModelBuilder, -// FolderManipulator.FilterFormModelBuilder { -// -// private final FolderSelectionModel folderModel; -// private final FolderBrowser folderBrowser; -//// private final ContentItemRepository itemRepo; -//// private final ConfigurationManager confManager; -//// private final ContentSectionManager sectionManager; -// final FolderBrowserController controller; -// -// public FolderTableModelBuilder(final FolderSelectionModel folderModel) { -// this(folderModel, null); -// } -// -// public FolderTableModelBuilder(final FolderSelectionModel folderModel, -// final FolderBrowser folderBrowser) { -// this.folderModel = folderModel; -// this.folderBrowser = folderBrowser; -// final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); -// controller = cdiUtil.findBean(FolderBrowserController.class); -//// itemRepo = cdiUtil.findBean(ContentItemRepository.class); -//// confManager = cdiUtil.findBean(ConfigurationManager.class); -//// sectionManager = cdiUtil.findBean(ContentSectionManager.class); -// } -// -// @Override -// public TableModel makeModel(final Table table, final PageState state) { -// final FolderSelectionModel folderSelectionModel -// = getFolderSelectionModel(); -// final Folder folder = folderSelectionModel.getSelectedObject(state); -// if (folder == null) { -// return Table.EMPTY_MODEL; -// } else { -// table.getRowSelectionModel().clearSelection(state); -// final List subFolders = folder.getSubFolders(); -// final List items = folder.getObjects() -// .stream() -// .map(categorization -> categorization.getCategorizedObject()) -// .filter(object -> object instanceof ContentItem) -// .map(object -> (ContentItem) object) -// .collect(Collectors.toList()); -// -// final List objects = new ArrayList<>(); -// objects.addAll(subFolders); -// objects.addAll(items); -// -// -// } -// -// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. -// } -// -// @Override -// public int getTotalSize(final Paginator paginator, -// final PageState state) { -// throw new UnsupportedOperationException(); -// -// } -// -// @Override -// public boolean isVisible(final PageState state) { -// return folderBrowser != null && folderBrowser.isVisible(state); -// } -// -// @Override -// public long getFolderSize(final PageState state) { -// throw new UnsupportedOperationException(); -// } -// -// } -// private class HeaderCellRenderer extends com.arsdigita.cms.ui.util.DefaultTableCellRenderer { @@ -420,11 +328,6 @@ public class FolderBrowser extends Table { final int row, final int column) { -// final ContentItem item = (ContentItem) value; -// final String name = item.getDisplayName(); -// final ContentSection section = item.getContentType(). -// getContentSection(); - final long itemId = (long) key; final String name = (String) value; final ContentSection section = CMS.getContext().getContentSection(); final ContentSectionManager sectionManager = CdiUtil.createCdiUtil() @@ -432,20 +335,26 @@ public class FolderBrowser extends Table { final ItemResolver itemResolver = sectionManager.getItemResolver( section); - return new Link(name, - itemResolver.generateItemURL(state, - itemId, - name, - section, - "DRAFT")); -// return new Link(name, -// itemResolver.generateItemURL( -// state, -// item.getObjectId(), -// name, -// section, -// item.getVersion().name())); + final boolean isFolder = ((FolderBrowserTableModel) table + .getTableModel(state)).isFolder(); + if (isFolder) { + //return new ControlLink(new Text(name)); + return super.getComponent(table, + state, + value, + isSelected, + key, + row, + column); + } else { + return new Link(new Text(name), + itemResolver.generateItemURL(state, + (long) key, + name, + section, + "DRAFT")); + } } } @@ -510,11 +419,12 @@ public class FolderBrowser extends Table { final List availableLocales = (List) value; availableLocales.forEach(locale -> container.add(new Link( new Text(locale.toString()), - itemResolver.generateItemURL(state, - (long) key, - locale.toString(), - section, - "DRAFT")))); + itemResolver.generateItemURL( + state, + (long) key, + locale.toString(), + section, + "DRAFT")))); return container; } @@ -765,11 +675,10 @@ public class FolderBrowser extends Table { return; } final String key = (String) event.getRowKey(); - if (key.startsWith("-")) { // XXX dirty dirty - clearSelection(state); - getFolderSelectionModel().setSelectedKey( - state, Long.parseLong(key.substring(1))); - } + + clearSelection(state); + getFolderSelectionModel().setSelectedKey(state, Long.parseLong(key)); + } } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserController.java index 6e3623b98..2bf41c4af 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserController.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserController.java @@ -299,6 +299,7 @@ public class FolderBrowserController { } else { row.setTitle(folder.getTitle().getValue(defaultLocale)); } + row.setFolder(true); } else if (object instanceof ContentItem) { final ContentItem item = (ContentItem) object; row.setObjectId(item.getObjectId()); @@ -320,6 +321,7 @@ public class FolderBrowserController { final ContentTypeInfo typeInfo = typesManager.getContentTypeInfo(type); row.setTypeLabelBundle(typeInfo.getLabelBundle()); row.setTypeLabelKey(typeInfo.getLabelKey()); + row.setFolder(false); } else { row.setObjectId(object.getObjectId()); row.setObjectUuid(object.getUuid()); @@ -327,6 +329,7 @@ public class FolderBrowserController { row.setLanguages(Collections.emptyList()); final LocalizedString title = new LocalizedString(); title.addValue(globalizationHelper.getNegotiatedLocale(), "???"); + row.setFolder(false); } return row; diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserTableModel.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserTableModel.java index c01c9a5a2..e6e1e57d1 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserTableModel.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserTableModel.java @@ -99,7 +99,16 @@ class FolderBrowserTableModel implements TableModel { @Override public Object getKeyAt(final int columnIndex) { +// if (currentRow.isFolder()) { +// return String.format("folder-%d", currentRow.getObjectId()); +// } else { +// return String.format("item-%d", currentRow.getObjectId()); +// } return currentRow.getObjectId(); } + + public boolean isFolder() { + return currentRow.isFolder(); + } } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserTableRow.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserTableRow.java index 6cf4508a5..3cc523812 100644 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserTableRow.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderBrowserTableRow.java @@ -18,7 +18,6 @@ */ package com.arsdigita.cms.ui.folder; -import org.libreccm.l10n.LocalizedString; import java.util.Collections; import java.util.Date; @@ -41,6 +40,7 @@ class FolderBrowserTableRow { private Date created; private Date lastModified; private boolean deletable; + private boolean folder; public long getObjectId() { return objectId; @@ -137,5 +137,13 @@ class FolderBrowserTableRow { protected void setDeletable(final boolean deletable) { this.deletable = deletable; } + + public boolean isFolder() { + return folder; + } + + protected void setFolder(final boolean folder) { + this.folder = folder; + } } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderSelectionModel.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderSelectionModel.java index e83150c75..1ae5e8fcd 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderSelectionModel.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/folder/FolderSelectionModel.java @@ -58,6 +58,11 @@ public class FolderSelectionModel extends CcmObjectSelectionModel { return result; } + @Override + public void setSelectedKey(final PageState state, final Long key) { + super.setSelectedKey(state, key); + } + /** * Clear the selection by resetting it to the root folder id. *