/******************************************************************************* * Copyright (c) 2007, 2013 Spring IDE Developers * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Spring IDE Developers - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.beans.ui.properties.model; import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import org.springframework.ide.eclipse.beans.core.internal.model.BeansConfigSet; import org.springframework.ide.eclipse.beans.core.model.IBeansConfig; import org.springframework.ide.eclipse.beans.core.model.IBeansConfigSet; import org.springframework.ide.eclipse.core.model.ModelChangeEvent; /** * This class defines a Spring beans config set (a list of beans config names). * * @author Torsten Juergeleit * @author Christian Dupuis * @author Martin Lippert */ public class PropertiesConfigSet extends BeansConfigSet { public PropertiesConfigSet(PropertiesProject project, String name, Type type) { super(project, name, new HashSet<String>(), type); } /** * Creates a deep copy of given config set associated with the specified * project. */ public PropertiesConfigSet(PropertiesProject project, IBeansConfigSet configSet, Type type) { super(project, configSet.getElementName(), configSet.getConfigNames(), type); super.setAllowAliasOverriding(configSet.isAllowAliasOverriding()); super.setAllowBeanDefinitionOverriding(configSet .isAllowBeanDefinitionOverriding()); super.setIncomplete(configSet.isIncomplete()); super.setProfiles(configSet.getProfiles()); } @Override public void setElementName(String name) { super.setElementName(name); notifyListeners(); } @Override public void setProfiles(Set<String> profiles) { super.setProfiles(profiles); notifyListeners(); } @Override public void setAllowBeanDefinitionOverriding( boolean allowBeanDefinitionOverriding) { super.setAllowBeanDefinitionOverriding(allowBeanDefinitionOverriding); notifyListeners(); } @Override public void setIncomplete(boolean isIncomplete) { super.setIncomplete(isIncomplete); notifyListeners(); } @Override public void addConfig(String configName) { super.addConfig(configName); notifyListeners(); } @Override public void removeConfig(String configName) { super.removeConfig(configName); notifyListeners(); } @Override public void removeAllConfigs() { super.removeAllConfigs(); notifyListeners(); } @Override public Set<IBeansConfig> getConfigs() { Set<IBeansConfig> configs = new LinkedHashSet<IBeansConfig>(); for (String configName : configNames) { IBeansConfig config = PropertiesConfigFactory.create(this, configName, IBeansConfig.Type.MANUAL); if (config != null) { configs.add(config); } } return configs; } public void moveConfigUp(IBeansConfig config) { String configName = config.getElementName(); if (configNames.contains(configName)) { ArrayList<String> newConfigNames = new ArrayList<String>( configNames); int index = newConfigNames.indexOf(configName); if (index > 0) { newConfigNames.remove(configName); newConfigNames.add(index - 1, configName); configNames.clear(); configNames.addAll(newConfigNames); notifyListeners(); } } } public void moveConfigDown(IBeansConfig config) { String configName = config.getElementName(); if (configNames.contains(configName)) { ArrayList<String> newConfigNames = new ArrayList<String>( configNames); int index = newConfigNames.indexOf(configName); if (index < (configNames.size() - 1)) { newConfigNames.remove(configName); newConfigNames.add(index + 1, configName); configNames.clear(); configNames.addAll(newConfigNames); notifyListeners(); } } } protected final void notifyListeners() { PropertiesModel model = (PropertiesModel) getElementParent() .getElementParent(); model.notifyListeners(this, ModelChangeEvent.Type.CHANGED); } }