| /******************************************************************************* |
| * 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 |