blob: 2b2b06f9458bd569e78a994963d9bec625e88e5f [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,
* Regent L'Archeveque - initial API and implementation
*
* SPDX-License-Identifier: EPL-1.0
*
*******************************************************************************/
package org.eclipse.apogy.addons.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.eclipse.apogy.addons.ApogyAddonsFactory;
import org.eclipse.apogy.addons.ApogyAddonsPackage;
import org.eclipse.apogy.addons.SimpleTool;
import org.eclipse.apogy.addons.SimpleToolList;
import org.eclipse.apogy.common.emf.transaction.ApogyCommonTransactionFacade;
import org.eclipse.apogy.core.FeatureOfInterestList;
import org.eclipse.apogy.core.environment.ApogyEnvironment;
import org.eclipse.apogy.core.environment.surface.AbstractMapLayer;
import org.eclipse.apogy.core.environment.surface.FeaturesOfInterestMapLayer;
import org.eclipse.apogy.core.environment.surface.Map;
import org.eclipse.apogy.core.environment.surface.SurfaceWorksite;
import org.eclipse.apogy.core.invocator.AbstractToolsListContainer;
import org.eclipse.apogy.core.invocator.ApogyCoreInvocatorFacade;
import org.eclipse.apogy.core.invocator.ApogyCoreInvocatorPackage;
import org.eclipse.apogy.core.invocator.InvocatorSession;
public class ApogyAddonsFacadeCustomImpl extends ApogyAddonsFacadeImpl {
@Override
public void deleteTool(SimpleTool simpleTool) {
// Calls the dispose method.
simpleTool.dispose();
// Removes the tool from the list.
ApogyCommonTransactionFacade.INSTANCE.basicRemove(simpleTool.getToolList(),
ApogyAddonsPackage.Literals.SIMPLE_TOOL_LIST__SIMPLE_TOOLS, simpleTool);
}
@Override
public Collection<FeatureOfInterestList> getAllFeatureOfInterestLists(InvocatorSession invocatorSession) {
List<FeatureOfInterestList> list = new ArrayList<FeatureOfInterestList>();
if (invocatorSession != null) {
if (invocatorSession.getEnvironment() instanceof ApogyEnvironment) {
ApogyEnvironment apogyEnvironment = (ApogyEnvironment) invocatorSession.getEnvironment();
if (apogyEnvironment.getActiveWorksite() instanceof SurfaceWorksite) {
SurfaceWorksite surfaceWorksite = (SurfaceWorksite) apogyEnvironment.getActiveWorksite();
if (surfaceWorksite.getMapsList() != null) {
for (Map map : surfaceWorksite.getMapsList().getMaps()) {
for (AbstractMapLayer layer : map.getLayers()) {
if (layer instanceof FeaturesOfInterestMapLayer) {
FeaturesOfInterestMapLayer featuresOfInterestMapLayer = (FeaturesOfInterestMapLayer) layer;
if (!list.contains(featuresOfInterestMapLayer.getFeatures())) {
list.add(featuresOfInterestMapLayer.getFeatures());
}
}
}
}
}
}
}
}
return list;
}
@Override
public SimpleToolList getSimpleToolList() {
InvocatorSession invocatorSession = ApogyCoreInvocatorFacade.INSTANCE.getActiveInvocatorSession();
if (invocatorSession != null && invocatorSession.getToolsList() != null) {
for (AbstractToolsListContainer atlc : invocatorSession.getToolsList().getToolsListContainers()) {
if (atlc instanceof SimpleToolList) {
return (SimpleToolList) atlc;
}
}
}
SimpleToolList simpleToolList = ApogyAddonsFactory.eINSTANCE.createSimpleToolList();
ApogyCommonTransactionFacade.INSTANCE.basicAdd(invocatorSession.getToolsList(),
ApogyCoreInvocatorPackage.Literals.TOOLS_LIST__TOOLS_LIST_CONTAINERS, simpleToolList);
return simpleToolList;
}
} // ApogyAddonsFacadeImpl