blob: 9ff0472855897e263684e4da96ab3641bd94d978 [file] [log] [blame]
/**
* Copyright (c) 2015, 2019 Soft-Maint, and Mia-Software and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Thomas Cicognani (Soft-Maint) - Bug 472075 - Update API to create UI shortcuts to activate FacetSets
* Grégoire Dupé (Mia-Software) - Bug 472075 - Update API to create UI shortcuts to activate FacetSets
*/
package org.eclipse.modisco.facet.efacet.ui;
import java.util.List;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.modisco.facet.custom.core.ICustomizationManager;
import org.eclipse.modisco.facet.custom.core.ICustomizationManagerProvider;
import org.eclipse.modisco.facet.efacet.core.IFacetManager;
import org.eclipse.modisco.facet.efacet.core.IFacetSetCatalogManager;
import org.eclipse.modisco.facet.efacet.core.IFacetSetCatalogManagerFactory;
import org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.FacetSet;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.handlers.HandlerUtil;
/**
* Utilitarian to manage Handlers which will (un)load FacetSets: allow users to
* (des)activate facet sets (customizations are facet sets). If you want to
* create a menu shortcut, your Handler must extends this class
* @noinstantiate This class is not intended to be instantiated by clients.
* @since 1.1
*/
public final class FacetSetLoaderHandlerUtils {
private FacetSetLoaderHandlerUtils() {
// Must not be used.
}
/**
* Execute the Handler
*
* @param event
* The execution event that contains the application context
* @param facetSetID
* ID of the facet set linked to this Handler
* @return the result of the execution. Reserved for future use, can be
* <code>null</code>.
* @throws ExecutionException
*/
public static Object execute(final ExecutionEvent event,
final String facetSetID) throws ExecutionException {
final boolean toggle = HandlerUtil.toggleCommandState(event
.getCommand());
final IWorkbenchPart activePart = HandlerUtil.getActivePart(event);
if (activePart != null) {
final ICustomizationManagerProvider customMgrProvider = (ICustomizationManagerProvider) activePart
.getAdapter(ICustomizationManagerProvider.class);
if (customMgrProvider != null) {
execute(facetSetID, toggle, customMgrProvider);
}
}
return null;
}
private static void execute(final String facetSetID, final boolean toggle,
final ICustomizationManagerProvider customMgrProvider) {
final ICustomizationManager manager = customMgrProvider
.getCustomizationManager();
final IFacetSetCatalogManager catalog = IFacetSetCatalogManagerFactory.DEFAULT
.getOrCreateFacetSetCatalogManager(manager.getResourceSet());
FacetSet facetSetToActive = null;
for (FacetSet facetSet : catalog.getRegisteredFacetSets()) {
if (facetSetID.equals(facetSet.getName())) {
facetSetToActive = facetSet;
break;
}
}
if (facetSetToActive != null) {
final IFacetManager facetManager = manager.getFacetManager();
final List<FacetSet> managedFacetSets = facetManager
.getManagedFacetSets();
if (toggle) {
managedFacetSets.remove(facetSetToActive);
} else {
if (!managedFacetSets.contains(facetSetToActive)) {
managedFacetSets.add(0, facetSetToActive);
}
}
}
}
}