libreccm/ccm-cms/src/main/java/org/librecms/ui/ContentSectionView.java

100 lines
3.2 KiB
Java

/*
* 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.cdi.CDIView;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.ui.Label;
import com.vaadin.ui.Panel;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.themes.ValoTheme;
import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionRepository;
import java.util.Optional;
import javax.inject.Inject;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@CDIView(value = ContentSectionView.VIEWNAME,
uis = {CmsUI.class})
class ContentSectionView implements View {
private static final long serialVersionUID = 602851260519364741L;
public static final String VIEWNAME = "ContentSection";
private final ContentSectionViewController controller;
private ContentSection selectedSection;
private final TabSheet tabSheet;
private final Panel noSectionPanel;
@Inject
ContentSectionView(final ContentSectionViewController controller) {
super();
this.controller = controller;
tabSheet = new TabSheet();
noSectionPanel = new Panel();
noSectionPanel.setVisible(false);
}
@Override
public void enter(ViewChangeListener.ViewChangeEvent event) {
final String parameters = event.getParameters();
if (parameters == null || parameters.trim().isEmpty()) {
tabSheet.setVisible(false);
noSectionPanel.setCaption("No content section selected");
noSectionPanel.setContent(new Label("No content section selected"));
noSectionPanel.setVisible(true);
} else {
final ContentSectionRepository sectionRepo = controller
.getSectionRepo();
final Optional<ContentSection> contentSection = sectionRepo
.findByLabel(parameters);
if (contentSection.isPresent()) {
selectedSection = contentSection.get();
} else {
tabSheet.setVisible(false);
noSectionPanel.setCaption(String
.format("No content section \"%s\"", parameters));
noSectionPanel.setContent(new Label(String
.format("No content section with label \"%s\" found.",
parameters)));
noSectionPanel.setVisible(true);
}
}
}
}