diff --git a/ccm-cms/src/main/java/org/librecms/ui/BrowseDocuments.java b/ccm-cms/src/main/java/org/librecms/ui/BrowseDocuments.java deleted file mode 100644 index 10bcbf9a0..000000000 --- a/ccm-cms/src/main/java/org/librecms/ui/BrowseDocuments.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2017 LibreCCM Foundation. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -package org.librecms.ui; - -import com.vaadin.ui.CustomComponent; -import com.vaadin.ui.Grid; -import com.vaadin.ui.HorizontalSplitPanel; -import com.vaadin.ui.ItemCollapseAllowedProvider; -import com.vaadin.ui.Tree; -import org.librecms.contentsection.Folder; - -/** - * - * @author Jens Pelzetter - */ -public class BrowseDocuments extends CustomComponent { - - private static final long serialVersionUID = -7241214812224026430L; - - private static final String COL_DOCUMENT_CREATED = "created"; - private static final String COL_DOCUMENT_LAST_MODIFIED = "lastmodified"; - private static final String COL_DOCUMENT_NAME = "name"; - private static final String COL_DOCUMENT_TITLE = "title"; - private static final String COL_DOCUMENT_TYPE = "ttype"; - - private final ContentSectionViewController controller; - - private final Tree folderTree; - private final Grid documentsGrid; - private final BrowseDocumentsDataProvider documentsDataProvider; - private final BrowseDocumentsFolderTreeDataProvider folderTreeDataProvider; - - public BrowseDocuments(final ContentSectionViewController controller) { - - super(); - - this.controller = controller; - - folderTreeDataProvider = controller.getFolderTreeDataProvider(); - folderTree = new Tree<>(folderTreeDataProvider); - folderTree.setItemCaptionGenerator(folder -> { - return controller - .getGlobalizationHelper() - .getValueFromLocalizedString(folder.getTitle()); - }); - - documentsGrid = new Grid<>(); - documentsGrid - .addColumn(BrowseDocumentsItem::getName) - .setCaption("Name") - .setId(COL_DOCUMENT_NAME); - documentsGrid - .addColumn(BrowseDocumentsItem::getTitle) - .setCaption("Title") - .setId(COL_DOCUMENT_TITLE); - documentsGrid - .addColumn(BrowseDocumentsItem::getType) - .setCaption("Type") - .setId(COL_DOCUMENT_TYPE); - documentsGrid - .addColumn(BrowseDocumentsItem::getCreationDate) - .setCaption("Created") - .setId(COL_DOCUMENT_CREATED); - documentsGrid - .addColumn(BrowseDocumentsItem::getLastModified) - .setCaption("Last modified") - .setId(COL_DOCUMENT_LAST_MODIFIED); - documentsDataProvider = controller.getBrowseDocumentsDataProvider(); - documentsGrid.setDataProvider(documentsDataProvider); - documentsGrid.setWidth("100%"); - documentsGrid.setHeight("100%"); - - folderTree.addItemClickListener(event -> { - documentsDataProvider.setCurrentFolder(event.getItem()); - documentsDataProvider.refreshAll(); - }); - folderTree.setItemCollapseAllowedProvider(folder -> { - return folder.getParentCategory() != null; - }); - - final HorizontalSplitPanel splitPanel = new HorizontalSplitPanel( - folderTree, documentsGrid); - splitPanel.setSplitPosition(17.5f, Unit.PERCENTAGE); - splitPanel.setHeight("100%"); - super.setCompositionRoot(splitPanel); - } - - public Tree getFolderTree() { - return folderTree; - } - - public Grid getDocumentsGrid() { - return documentsGrid; - } - -} diff --git a/ccm-cms/src/main/java/org/librecms/ui/ContentSectionView.java b/ccm-cms/src/main/java/org/librecms/ui/ContentSectionView.java index 93358911d..784c53428 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/ContentSectionView.java +++ b/ccm-cms/src/main/java/org/librecms/ui/ContentSectionView.java @@ -21,12 +21,12 @@ package org.librecms.ui; import com.vaadin.cdi.CDIView; import com.vaadin.navigator.View; import com.vaadin.navigator.ViewChangeListener; +import com.vaadin.ui.Component; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.Label; import com.vaadin.ui.Panel; import com.vaadin.ui.TabSheet; import com.vaadin.ui.VerticalLayout; -import com.vaadin.ui.themes.ValoTheme; import org.librecms.contentsection.ContentSection; import org.librecms.contentsection.ContentSectionRepository; @@ -46,6 +46,14 @@ class ContentSectionView extends CustomComponent implements View { public static final String VIEWNAME = "ContentSection"; + private static final String TAB_DOCUMENTS = "tab_documents"; + private static final String TAB_SEARCH = "tab_search"; + private static final String TAB_MEDIA = "tab_media"; + private static final String TAB_ROLES = "tab_roles"; + private static final String TAB_WORKFLOWS = "tab_workflows"; + private static final String TAB_LIFECYCLES = "tab_lifecycles"; + private static final String TAB_DOCUMENT_TYPES = "tab_document_types"; + private final ContentSectionViewController controller; private ContentSection selectedSection; @@ -53,6 +61,8 @@ class ContentSectionView extends CustomComponent implements View { private final TabSheet tabSheet; private final Panel noSectionPanel; + private final FolderBrowser folderBrowser; + @Inject ContentSectionView(final ContentSectionViewController controller) { @@ -60,26 +70,63 @@ class ContentSectionView extends CustomComponent implements View { this.controller = controller; - final BrowseDocuments browseDocuments = new BrowseDocuments(controller); + folderBrowser = new FolderBrowser(controller); + final VerticalLayout folderBrowserLayout = new VerticalLayout(); + folderBrowserLayout.setHeight("100%"); + folderBrowserLayout.addComponentsAndExpand(folderBrowser); tabSheet = new TabSheet(); - tabSheet.addTab(browseDocuments, "Documents"); - tabSheet.addTab(new Label("Search placeholder"), "Search"); - tabSheet.addTab(new Label("Media & Records placeholder"), - "Media & Records"); - tabSheet.addTab(new Label("Roles placeholder"), "Roles"); - tabSheet.addTab(new Label("Workflows Placeholder"), "Workflows"); - tabSheet.addTab(new Label("Lifecycles placeholder"), "Lifecycles"); - tabSheet.addTab(new Label("Document types placeholder"), - "Documents types"); + tabSheet + .addTab(folderBrowser, "Documents") + .setId(TAB_DOCUMENTS); + tabSheet + .addTab(new Label("Search placeholder"), "Search") + .setId(TAB_SEARCH); + tabSheet + .addTab(new Label("Media & Records placeholder"), "Media & Records") + .setId(TAB_MEDIA); + tabSheet + .addTab(new Label("Roles placeholder"), "Roles") + .setId(TAB_ROLES); + tabSheet + .addTab(new Label("Workflows Placeholder"), "Workflows") + .setId(TAB_WORKFLOWS); + tabSheet + .addTab(new Label("Lifecycles placeholder"), "Lifecycles") + .setId(TAB_LIFECYCLES); + tabSheet + .addTab(new Label("Document types placeholder"), "Documents types") + .setId(TAB_DOCUMENT_TYPES); + tabSheet.addSelectedTabChangeListener(event -> { + + final Component selectedTab = event.getTabSheet().getSelectedTab(); + + if (TAB_DOCUMENTS.equals(selectedTab.getId())) { + + final FolderBrowser browser = (FolderBrowser) selectedTab; + + browser + .getFolderTree() + .expand(controller + .getContentSectionViewState() + .getSelectedContentSection() + .getRootDocumentsFolder()); + } + }); + + tabSheet.setHeight("100%"); + noSectionPanel = new Panel(); noSectionPanel.setVisible(false); - - final VerticalLayout layout = new VerticalLayout(tabSheet, - noSectionPanel); - + + final VerticalLayout layout = new VerticalLayout(); + layout.addComponentsAndExpand(tabSheet, noSectionPanel); + layout.setHeight("100%"); + layout.addStyleName("content-section-view-layout"); + super.setCompositionRoot(layout); + super.setHeight("100%"); } @Override @@ -104,6 +151,13 @@ class ContentSectionView extends CustomComponent implements View { controller .getContentSectionViewState() .setSelectedContentSection(selectedSection); + + folderBrowser + .getFolderTree() + .expand(controller + .getContentSectionViewState() + .getSelectedContentSection() + .getRootDocumentsFolder()); } else { tabSheet.setVisible(false); noSectionPanel.setCaption(String diff --git a/ccm-cms/src/main/java/org/librecms/ui/ContentSectionViewController.java b/ccm-cms/src/main/java/org/librecms/ui/ContentSectionViewController.java index 5c101a266..52d22324a 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/ContentSectionViewController.java +++ b/ccm-cms/src/main/java/org/librecms/ui/ContentSectionViewController.java @@ -36,10 +36,10 @@ import javax.inject.Inject; public class ContentSectionViewController { @Inject - private BrowseDocumentsDataProvider browseDocumentsDataProvider; + private FolderBrowserDataProvider browseDocumentsDataProvider; @Inject - private BrowseDocumentsFolderTreeDataProvider folderTreeDataProvider; + private FolderBrowserFolderTreeDataProvider folderTreeDataProvider; @Inject private ContentTypesManager contentTypesManager; @@ -59,11 +59,11 @@ public class ContentSectionViewController { @Inject private ContentSectionViewState contentSectionViewState; - protected BrowseDocumentsDataProvider getBrowseDocumentsDataProvider() { + protected FolderBrowserDataProvider getBrowseDocumentsDataProvider() { return browseDocumentsDataProvider; } - protected BrowseDocumentsFolderTreeDataProvider getFolderTreeDataProvider() { + protected FolderBrowserFolderTreeDataProvider getFolderTreeDataProvider() { return folderTreeDataProvider; } diff --git a/ccm-cms/src/main/java/org/librecms/ui/ContentSectionsGrid.java b/ccm-cms/src/main/java/org/librecms/ui/ContentSectionsGrid.java index 034502c02..3f190947f 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/ContentSectionsGrid.java +++ b/ccm-cms/src/main/java/org/librecms/ui/ContentSectionsGrid.java @@ -19,17 +19,20 @@ package org.librecms.ui; import com.vaadin.icons.VaadinIcons; -import com.vaadin.navigator.Navigator; import com.vaadin.ui.Button; import com.vaadin.ui.Component; +import com.vaadin.ui.FormLayout; import com.vaadin.ui.Grid; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; +import com.vaadin.ui.TextField; +import com.vaadin.ui.Window; import com.vaadin.ui.components.grid.HeaderCell; import com.vaadin.ui.components.grid.HeaderRow; import com.vaadin.ui.themes.ValoTheme; import org.libreccm.security.PermissionChecker; import org.librecms.contentsection.ContentSection; +import org.librecms.contentsection.Folder; import org.librecms.contentsection.privileges.AdminPrivileges; import org.librecms.contentsection.privileges.ItemPrivileges; @@ -55,9 +58,6 @@ class ContentSectionsGrid extends Grid { this.controller = controller; - final PermissionChecker permissionChecker = controller - .getPermissionChecker(); - addComponentColumn(this::buildSectionLink) .setId(COL_LABEL) .setCaption("Content Section"); @@ -68,6 +68,8 @@ class ContentSectionsGrid extends Grid { .setId(COL_DELETE) .setCaption("Delete"); + setSelectionMode(SelectionMode.NONE); + setDataProvider(controller.getSectionsDataProvider()); if (controller.getPermissionChecker().isPermitted("admin")) { diff --git a/ccm-cms/src/main/java/org/librecms/ui/FolderBrowser.java b/ccm-cms/src/main/java/org/librecms/ui/FolderBrowser.java new file mode 100644 index 000000000..b750a3eda --- /dev/null +++ b/ccm-cms/src/main/java/org/librecms/ui/FolderBrowser.java @@ -0,0 +1,252 @@ +/* + * Copyright (C) 2017 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.librecms.ui; + +import com.vaadin.icons.VaadinIcons; +import com.vaadin.ui.Button; +import com.vaadin.ui.Component; +import com.vaadin.ui.CustomComponent; +import com.vaadin.ui.FormLayout; +import com.vaadin.ui.Grid; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.HorizontalSplitPanel; +import com.vaadin.ui.TextField; +import com.vaadin.ui.Tree; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Window; +import com.vaadin.ui.components.grid.HeaderCell; +import com.vaadin.ui.components.grid.HeaderRow; +import com.vaadin.ui.renderers.DateRenderer; +import com.vaadin.ui.themes.ValoTheme; +import org.librecms.contentsection.Folder; + +/** + * + * @author Jens Pelzetter + */ +public class FolderBrowser extends CustomComponent { + + private static final long serialVersionUID = -7241214812224026430L; + + private static final String COL_DOCUMENT_CREATED = "created"; + private static final String COL_DOCUMENT_LAST_MODIFIED = "lastmodified"; + private static final String COL_DOCUMENT_NAME = "name"; + private static final String COL_DOCUMENT_TITLE = "title"; + private static final String COL_DOCUMENT_TYPE = "ttype"; + + private final ContentSectionViewController controller; + + private final Tree folderTree; + private final Grid documentsGrid; + + private final Button renameCurrentFolderButton; + + private final FolderBrowserDataProvider documentsDataProvider; + private final FolderBrowserFolderTreeDataProvider folderTreeDataProvider; + + public FolderBrowser(final ContentSectionViewController controller) { + + super(); + + this.controller = controller; + + folderTreeDataProvider = controller.getFolderTreeDataProvider(); + folderTree = new Tree<>(folderTreeDataProvider); + folderTree.setItemCaptionGenerator(folder -> { + return controller + .getGlobalizationHelper() + .getValueFromLocalizedString(folder.getTitle()); + }); + + documentsGrid = new Grid<>(); + documentsGrid + .addComponentColumn(item -> buildFolderItemLink(item)) + .setCaption("Name") + .setId(COL_DOCUMENT_NAME); + documentsGrid + .addColumn(FolderBrowserItem::getTitle) + .setCaption("Title") + .setId(COL_DOCUMENT_TITLE); + documentsGrid + .addColumn(FolderBrowserItem::getType) + .setCaption("Type") + .setId(COL_DOCUMENT_TYPE); + documentsGrid + .addColumn(FolderBrowserItem::getCreationDate, + new DateRenderer("%tF")) + .setCaption("Created") + .setId(COL_DOCUMENT_CREATED); + documentsGrid + .addColumn(FolderBrowserItem::getLastModified, + new DateRenderer("%tF")) + .setCaption("Last modified") + .setId(COL_DOCUMENT_LAST_MODIFIED); + documentsDataProvider = controller.getBrowseDocumentsDataProvider(); + documentsGrid.setDataProvider(documentsDataProvider); + documentsGrid.setSelectionMode(Grid.SelectionMode.MULTI); + documentsGrid.setWidth("100%"); + documentsGrid.setHeight("100%"); + + final Button createSubFolderButton = new Button("New subfolder", + VaadinIcons.PLUS_CIRCLE_O); + createSubFolderButton.addStyleName(ValoTheme.BUTTON_TINY); + renameCurrentFolderButton = new Button("Rename current folder", + VaadinIcons.EDIT); + renameCurrentFolderButton.addStyleName(ValoTheme.BUTTON_TINY); + renameCurrentFolderButton.setEnabled(false); + renameCurrentFolderButton.setVisible(false); + final HeaderRow headerRow = documentsGrid.prependHeaderRow(); + final HeaderCell actionsCell = headerRow.join(COL_DOCUMENT_NAME, + COL_DOCUMENT_TITLE, + COL_DOCUMENT_TYPE, + COL_DOCUMENT_CREATED, + COL_DOCUMENT_LAST_MODIFIED); + actionsCell.setComponent(new HorizontalLayout(createSubFolderButton, + renameCurrentFolderButton)); + + folderTree.addItemClickListener(event -> { +// documentsDataProvider.setCurrentFolder(event.getItem()); +// documentsDataProvider.refreshAll(); + setCurrentFolder(event.getItem()); + }); + folderTree.setItemCollapseAllowedProvider(folder -> { + return folder.getParentCategory() != null; + }); + +// final Button root = new Button("/ "); +// root.addStyleName(ValoTheme.BUTTON_LINK); +// root.addClickListener(event -> { +// folderTree.getSelectionModel().deselectAll(); +// documentsDataProvider.setCurrentFolder(null); +// documentsDataProvider.refreshAll(); +// }); +// final VerticalLayout folders = new VerticalLayout(root, folderTree); + final VerticalLayout folderTreeLayout = new VerticalLayout(folderTree); + + final VerticalLayout documentsGridLayout = new VerticalLayout(); + documentsGridLayout.addComponentsAndExpand(documentsGrid); + + final HorizontalSplitPanel splitPanel = new HorizontalSplitPanel( + folderTreeLayout, documentsGridLayout); + splitPanel.setSplitPosition(17.5f, Unit.PERCENTAGE); + splitPanel.setHeight("100%"); + final VerticalLayout layout = new VerticalLayout(); + layout.addComponentsAndExpand(splitPanel); + super.setCompositionRoot(layout); + } + + private Component buildFolderItemLink(final FolderBrowserItem item) { + + final Button itemLink = new Button(); + itemLink.setCaption(item.getName()); + itemLink.setStyleName(ValoTheme.BUTTON_LINK); + itemLink.addClickListener(event -> folderBrowserItemClicked(event, + item)); + if (item.isFolder()) { + itemLink.setIcon(VaadinIcons.FOLDER); + } + + return itemLink; + } + + private void folderBrowserItemClicked(final Button.ClickEvent event, + final FolderBrowserItem item) { + + if (item.isFolder()) { + final Folder folder = controller + .getFolderRepository() + .findById(item.getItemId()) + .orElseThrow(() -> new IllegalArgumentException(String.format( + "No Folder with ID %d in the database.", + item.getItemId()))); +// folderTree.expand(folder); +// documentsDataProvider.setCurrentFolder(folder); +// documentsDataProvider.refreshAll(); + setCurrentFolder(folder); + } + } + + private void setCurrentFolder(final Folder folder) { + folderTree.expand(folder); + documentsDataProvider.setCurrentFolder(folder); + documentsDataProvider.refreshAll(); + + renameCurrentFolderButton.setEnabled(folder.getParentCategory() != null); + renameCurrentFolderButton.setVisible(folder.getParentCategory() != null); + } + + public Tree getFolderTree() { + return folderTree; + } + + public Grid getDocumentsGrid() { + return documentsGrid; + } + + private class FolderDialog extends Window { + + private static final long serialVersionUID = -6767403288966354533L; + + private final TextField nameField; + private final TextField titleField; + private final Button submitButton; + + private Folder currentFolder; + + public FolderDialog() { + super(); + + nameField = new TextField("Name"); + nameField.setDescription("The name (URL-Fragment) of the folder."); + nameField.setRequiredIndicatorVisible(true); + nameField.setMaxLength(256); + + titleField = new TextField("Title"); + titleField.setDescription("The title of the folder."); + titleField.setRequiredIndicatorVisible(true); + titleField.setMaxLength(256); + + final Button cancelButton = new Button("Cancel"); + cancelButton.addClickListener(event -> close()); + + submitButton = new Button("Submit"); + submitButton.addClickListener(event -> save()); + + final FormLayout layout = new FormLayout(nameField, + titleField, + cancelButton, + submitButton); + + super.setContent(layout); + } + + public FolderDialog(final Folder folder) { + this(); + + currentFolder = folder; + nameField.setValue(currentFolder.getName()); + + } + + private void save() { + this.close(); + } + + } +} \ No newline at end of file diff --git a/ccm-cms/src/main/java/org/librecms/ui/BrowseDocumentsDataProvider.java b/ccm-cms/src/main/java/org/librecms/ui/FolderBrowserDataProvider.java similarity index 96% rename from ccm-cms/src/main/java/org/librecms/ui/BrowseDocumentsDataProvider.java rename to ccm-cms/src/main/java/org/librecms/ui/FolderBrowserDataProvider.java index f7437efce..31fe33df4 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/BrowseDocumentsDataProvider.java +++ b/ccm-cms/src/main/java/org/librecms/ui/FolderBrowserDataProvider.java @@ -47,8 +47,8 @@ import javax.transaction.Transactional; * @author Jens Pelzetter */ @ViewScoped -class BrowseDocumentsDataProvider - extends AbstractBackEndDataProvider { +class FolderBrowserDataProvider + extends AbstractBackEndDataProvider { private static final long serialVersionUID = 7693820518000376630L; @@ -77,8 +77,8 @@ class BrowseDocumentsDataProvider @Transactional(Transactional.TxType.REQUIRED) @Override - protected Stream fetchFromBackEnd( - final Query query) { + protected Stream fetchFromBackEnd( + final Query query) { final Folder folder; if (currentFolder == null) { @@ -157,9 +157,9 @@ class BrowseDocumentsDataProvider .map(this::buildRow); } - private BrowseDocumentsItem buildRow(final CcmObject object) { + private FolderBrowserItem buildRow(final CcmObject object) { - final BrowseDocumentsItem row = new BrowseDocumentsItem(); + final FolderBrowserItem row = new FolderBrowserItem(); if (object instanceof Folder) { final Folder folder = (Folder) object; @@ -198,7 +198,7 @@ class BrowseDocumentsDataProvider @Transactional(Transactional.TxType.REQUIRED) @Override protected int sizeInBackEnd( - final Query query) { + final Query query) { final Folder folder; if (currentFolder == null) { @@ -382,10 +382,10 @@ class BrowseDocumentsDataProvider // .getResultList(); // } // -// private BrowseDocumentsItem createBrowseDocumentsItem( +// private FolderBrowserItem createBrowseDocumentsItem( // final Folder fromFolder) { // -// final BrowseDocumentsItem item = new BrowseDocumentsItem(); +// final FolderBrowserItem item = new FolderBrowserItem(); // item.setItemId(fromFolder.getObjectId()); // item.setName(fromFolder.getName()); // item.setTitle(fromFolder @@ -396,10 +396,10 @@ class BrowseDocumentsDataProvider // return item; // } // -// private BrowseDocumentsItem createBrowseDocumentsItem( +// private FolderBrowserItem createBrowseDocumentsItem( // final ContentItem fromItem) { // -// final BrowseDocumentsItem item = new BrowseDocumentsItem(); +// final FolderBrowserItem item = new FolderBrowserItem(); // item.setCreationDate(fromItem.getCreationDate()); // item.setFolder(false); // item.setItemId(fromItem.getObjectId()); diff --git a/ccm-cms/src/main/java/org/librecms/ui/BrowseDocumentsFolderTreeDataProvider.java b/ccm-cms/src/main/java/org/librecms/ui/FolderBrowserFolderTreeDataProvider.java similarity index 83% rename from ccm-cms/src/main/java/org/librecms/ui/BrowseDocumentsFolderTreeDataProvider.java rename to ccm-cms/src/main/java/org/librecms/ui/FolderBrowserFolderTreeDataProvider.java index c48a6f252..350c28db2 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/BrowseDocumentsFolderTreeDataProvider.java +++ b/ccm-cms/src/main/java/org/librecms/ui/FolderBrowserFolderTreeDataProvider.java @@ -42,7 +42,7 @@ import javax.transaction.Transactional; * @author Jens Pelzetter */ @ViewScoped -public class BrowseDocumentsFolderTreeDataProvider +public class FolderBrowserFolderTreeDataProvider extends AbstractBackEndHierarchicalDataProvider { private static final long serialVersionUID = 5330319780008907163L; @@ -69,7 +69,7 @@ public class BrowseDocumentsFolderTreeDataProvider .orElseThrow(() -> new IllegalArgumentException(String .format("No folder with ID %d in the database.", selectedParent.get().getObjectId()))); - + return folderRepo.findSubFolders(parent).stream(); } else { final ContentSection section = sectionRepo @@ -87,6 +87,7 @@ public class BrowseDocumentsFolderTreeDataProvider return result.stream(); } +// return folderRepo.findSubFolders(parent).stream(); } @Transactional(Transactional.TxType.REQUIRED) @@ -103,22 +104,24 @@ public class BrowseDocumentsFolderTreeDataProvider .orElseThrow(() -> new IllegalArgumentException(String .format("No folder with ID %d in the database.", selectedParent.get().getObjectId()))); - } else { - final ContentSection section = sectionRepo - .findById(contentSectionViewState - .getSelectedContentSection() - .getObjectId()) - .orElseThrow(() -> new UnexpectedErrorException(String - .format("No ContentSection with ID %d in the database.", - contentSectionViewState - .getSelectedContentSection() - .getObjectId()))); - parent = section.getRootDocumentsFolder(); + return (int) folderRepo.countSubFolders(parent); + } else { +// final ContentSection section = sectionRepo +// .findById(contentSectionViewState +// .getSelectedContentSection() +// .getObjectId()) +// .orElseThrow(() -> new UnexpectedErrorException(String +// .format("No ContentSection with ID %d in the database.", +// contentSectionViewState +// .getSelectedContentSection() +// .getObjectId()))); +// +// parent = section.getRootDocumentsFolder(); + return 1; } - return (int) folderRepo.countSubFolders(parent); - +// return (int) folderRepo.countSubFolders(parent); } @Override diff --git a/ccm-cms/src/main/java/org/librecms/ui/BrowseDocumentsItem.java b/ccm-cms/src/main/java/org/librecms/ui/FolderBrowserItem.java similarity index 95% rename from ccm-cms/src/main/java/org/librecms/ui/BrowseDocumentsItem.java rename to ccm-cms/src/main/java/org/librecms/ui/FolderBrowserItem.java index e9d961ced..722df6db9 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/BrowseDocumentsItem.java +++ b/ccm-cms/src/main/java/org/librecms/ui/FolderBrowserItem.java @@ -25,8 +25,8 @@ import java.util.Objects; * * @author Jens Pelzetter */ -public final class BrowseDocumentsItem implements - Comparable { +public final class FolderBrowserItem implements + Comparable { private long itemId; @@ -111,7 +111,7 @@ public final class BrowseDocumentsItem implements } @Override - public int compareTo(final BrowseDocumentsItem other) { + public int compareTo(final FolderBrowserItem other) { int result = title.compareTo(other.getTitle()); if (result != 0) { @@ -157,10 +157,10 @@ public final class BrowseDocumentsItem implements if (obj == null) { return false; } - if (!(obj instanceof BrowseDocumentsItem)) { + if (!(obj instanceof FolderBrowserItem)) { return false; } - final BrowseDocumentsItem other = (BrowseDocumentsItem) obj; + final FolderBrowserItem other = (FolderBrowserItem) obj; if (itemId != other.getItemId()) { return false; }