blob: 02f928af1c6413a2534e028c984dc63d9ce69932 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency
* 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:
* Pierre Allard - initial API and implementation
*
* SPDX-License-Identifier: EPL-1.0
*
*******************************************************************************/
package org.eclipse.apogy.common.topology.bindings.ui.impl;
import java.util.List;
import org.eclipse.apogy.common.emf.transaction.ApogyCommonTransactionFacade;
import org.eclipse.apogy.common.emf.ui.EClassSettings;
import org.eclipse.apogy.common.emf.ui.MapBasedEClassSettings;
import org.eclipse.apogy.common.topology.ApogyCommonTopologyPackage;
import org.eclipse.apogy.common.topology.Node;
import org.eclipse.apogy.common.topology.RotationNode;
import org.eclipse.apogy.common.topology.bindings.ApogyCommonTopologyBindingsFactory;
import org.eclipse.apogy.common.topology.bindings.ApogyCommonTopologyBindingsPackage;
import org.eclipse.apogy.common.topology.bindings.EnumerationSwitchBinding;
import org.eclipse.apogy.common.topology.bindings.ui.TopologyUIBindingsConstants;
import org.eclipse.apogy.common.topology.bindings.ui.wizards.EnumerationSwitchBindingWizardPage;
import org.eclipse.apogy.common.topology.bindings.ui.wizards.TopologyNodeSelectionWizardPage;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.wizard.WizardPage;
public class EnumerationSwitchBindingWizardPagesProviderCustomImpl
extends EnumerationSwitchBindingWizardPagesProviderImpl {
@Override
public EObject createEObject(EClass eClass, EClassSettings settings) {
EnumerationSwitchBinding enumerationSwitchBinding = ApogyCommonTopologyBindingsFactory.eINSTANCE
.createEnumerationSwitchBinding();
return enumerationSwitchBinding;
}
@SuppressWarnings("unchecked")
@Override
public EList<WizardPage> instantiateWizardPages(EObject eObject, EClassSettings settings) {
EList<WizardPage> list = new BasicEList<>();
list.addAll(super.instantiateWizardPages(eObject, settings));
// Add topology node selection page.
List<Node> nodes = null;
if (settings instanceof MapBasedEClassSettings) {
MapBasedEClassSettings mapBasedEClassSettings = (MapBasedEClassSettings) settings;
nodes = (List<Node>) mapBasedEClassSettings.getUserDataMap()
.get(TopologyUIBindingsConstants.NODES_LIST_USER_ID);
}
EnumerationSwitchBinding enumerationSwitchBinding = (EnumerationSwitchBinding) eObject;
TopologyNodeSelectionWizardPage topologyNodeSelectionWizardPage = new TopologyNodeSelectionWizardPage(
"Select Group Node", "Select the Group Node under which the sub topology will be attached.",
enumerationSwitchBinding, ApogyCommonTopologyPackage.Literals.GROUP_NODE, nodes) {
@Override
protected void nodeSelected(Node nodeSelected) {
if (enumerationSwitchBinding != null && nodeSelected instanceof RotationNode) {
ApogyCommonTransactionFacade.INSTANCE.basicSet(this.abstractTopologyBinding,
ApogyCommonTopologyBindingsPackage.Literals.ENUMERATION_SWITCH_BINDING__PARENT_NODE,
nodeSelected, true);
setMessage("Node selected : " + nodeSelected.getNodeId());
setErrorMessage(null);
} else {
setErrorMessage("The selected Node is not a Group Node !");
}
}
};
list.add(topologyNodeSelectionWizardPage);
list.add(new EnumerationSwitchBindingWizardPage(enumerationSwitchBinding));
return list;
}
} // EnumerationSwitchBindingWizardPagesProviderImpl