
org.opencms.setup.ui.CmsSetupStep04Modules Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of opencms-setup Show documentation
Show all versions of opencms-setup Show documentation
opencms-setup is the JAR-Library for OpenCms to make a initial setup or an update.
OpenCms is a Content Management System that is based on Open
Source Software. Complex Intranet and Internet websites can be
quickly and cost-effectively created, maintained and managed.
The newest version!
/*
* This library is part of OpenCms -
* the Open Source Content Management System
*
* Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
*
* 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.
*
* For further information about Alkacon Software, please see the
* company website: http://www.alkacon.com
*
* For further information about OpenCms, please see the
* project website: http://www.opencms.org
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.opencms.setup.ui;
import org.opencms.module.CmsModule;
import org.opencms.setup.CmsSetupBean;
import org.opencms.setup.CmsSetupComponent;
import org.opencms.ui.CmsVaadinUtils;
import org.opencms.util.CmsStringUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.FormLayout;
/**
* Setup step: Selecting components (= module groups).
*/
public class CmsSetupStep04Modules extends A_CmsSetupStep {
/** Serial version id. */
private static final long serialVersionUID = 1L;
/** Back button. */
private Button m_backButton;
/** The list of check boxes for the components. */
private List m_componentCheckboxes = new ArrayList<>();
/** The map of components, with their ids as keys. */
private Map m_componentMap = new HashMap<>();
/** Panel for components. */
private FormLayout m_components;
/** The forward button. */
private Button m_forwardButton;
/**
* Creates a new instance.
*
* @param context the setup context
*/
public CmsSetupStep04Modules(I_SetupUiContext context) {
super(context);
CmsVaadinUtils.readAndLocalizeDesign(this, null, null);
CmsSetupBean bean = context.getSetupBean();
bean.getAvailableModules();
initComponents(bean.getComponents().elementList());
m_forwardButton.addClickListener(evt -> forward());
m_backButton.addClickListener(evt -> m_context.stepBack());
}
/**
* Moves to the next step.
*/
private void forward() {
Set selected = new HashSet<>();
for (CheckBox checkbox : m_componentCheckboxes) {
CmsSetupComponent component = (CmsSetupComponent)(checkbox.getData());
if (checkbox.getValue().booleanValue()) {
selected.add(component.getId());
}
}
String error = null;
for (String compId : selected) {
CmsSetupComponent component = m_componentMap.get(compId);
for (String dep : component.getDependencies()) {
if (!selected.contains(dep)) {
error = "Unfulfilled dependency: The component "
+ component.getName()
+ " can not be installed because its dependency "
+ m_componentMap.get(dep).getName()
+ " is not selected";
break;
}
}
}
if (error == null) {
Set modules = new HashSet<>();
for (CmsSetupComponent component : m_componentMap.values()) {
if (selected.contains(component.getId())) {
for (CmsModule module : m_context.getSetupBean().getAvailableModules().values()) {
if (component.match(module.getName())) {
modules.add(module.getName());
}
}
}
}
List moduleList = new ArrayList<>(modules);
m_context.getSetupBean().setInstallModules(CmsStringUtil.listAsString(moduleList, "|"));
m_context.stepForward();
} else {
CmsSetupErrorDialog.showErrorDialog(error, error);
}
}
/**
* Initializes the components.
*
* @param components the components
*/
private void initComponents(List components) {
for (CmsSetupComponent component : components) {
CheckBox checkbox = new CheckBox();
checkbox.setValue(component.isChecked());
checkbox.setCaption(component.getName() + " - " + component.getDescription());
checkbox.setDescription(component.getDescription());
checkbox.setData(component);
checkbox.setWidth("100%");
m_components.addComponent(checkbox);
m_componentCheckboxes.add(checkbox);
m_componentMap.put(component.getId(), component);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy