| /**
|
| * Copyright (c) 2014, 2019 Mia-Software.
|
| *
|
| * 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:
|
| * Gregoire Dupe (Mia-Software) - Bug 441051 - Reusable customization and facet loading dialogs
|
| * Gregoire Dupe (Mia-Software) - Bug 443682 - Access to the super facet
|
| */ |
| package org.eclipse.modisco.facet.custom.ui.internal.handler;
|
|
|
| import java.util.ArrayList;
|
| import java.util.HashSet;
|
| import java.util.List;
|
| import java.util.Set;
|
|
|
| import org.eclipse.core.commands.AbstractHandler;
|
| import org.eclipse.core.commands.ExecutionEvent;
|
| import org.eclipse.core.commands.ExecutionException;
|
| import org.eclipse.modisco.facet.custom.core.ICustomizationCatalogManager;
|
| import org.eclipse.modisco.facet.custom.core.ICustomizationCatalogManagerFactory;
|
| import org.eclipse.modisco.facet.custom.core.ICustomizationManager;
|
| import org.eclipse.modisco.facet.custom.core.ICustomizationManagerProvider;
|
| import org.eclipse.modisco.facet.custom.metamodel.v0_2_0.custom.Customization;
|
| import org.eclipse.modisco.facet.custom.ui.internal.exported.dialog.ILoadCustomizationsDialog;
|
| import org.eclipse.modisco.facet.custom.ui.internal.exported.dialog.ILoadCustomizationsDialogFactory;
|
| import org.eclipse.modisco.facet.efacet.core.IFacetManager;
|
| import org.eclipse.modisco.facet.util.ui.internal.exported.dialog.IDialogCallback;
|
| import org.eclipse.modisco.facet.util.ui.internal.exported.dialog.IDialogCallbackWithPreCommit;
|
| import org.eclipse.modisco.facet.util.ui.internal.exported.dialog.IQuestionDialog;
|
| import org.eclipse.ui.IWorkbenchPart;
|
| import org.eclipse.ui.handlers.HandlerUtil;
|
|
|
| public class LoadCustomizationsHandler extends AbstractHandler {
|
|
|
| public Object execute(final ExecutionEvent event) throws ExecutionException {
|
| final IWorkbenchPart activePart = HandlerUtil.getActivePart(event);
|
| if (activePart != null) {
|
| final ICustomizationManagerProvider customMgrProvider = (ICustomizationManagerProvider) activePart
|
| .getAdapter(ICustomizationManagerProvider.class);
|
| if (customMgrProvider != null) {
|
| final ICustomizationManager manager = customMgrProvider
|
| .getCustomizationManager();
|
| final Set<Customization> availableCustoms = new HashSet<Customization>();
|
| final ICustomizationCatalogManager catalog = ICustomizationCatalogManagerFactory.DEFAULT
|
| .getOrCreateCustomizationCatalogManager(manager.getResourceSet());
|
| availableCustoms.addAll(catalog.getRegisteredCustomizations());
|
| availableCustoms.addAll(manager.getManagedCustomizations());
|
| final IDialogCallbackWithPreCommit<List<Customization>, Boolean, IQuestionDialog> callback = new DialogCallbackWithPreCommit(manager);
|
| final List<Customization> availableCustomsL = new ArrayList<Customization>(
|
| availableCustoms);
|
| final ILoadCustomizationsDialog<IQuestionDialog> dialog = ILoadCustomizationsDialogFactory.DEFAULT
|
| .createLoadCustomizationDialog(null,
|
| availableCustomsL,
|
| manager.getManagedCustomizations(),
|
| new ArrayList<Customization>(),
|
| callback,
|
| ""); //$NON-NLS-1$
|
| dialog.asyncOpen();
|
| }
|
| }
|
| return null;
|
| }
|
|
|
| private class DialogCallbackWithPreCommit implements IDialogCallbackWithPreCommit<List<Customization>, Boolean, IQuestionDialog> {
|
|
|
| private final ICustomizationManager manager;
|
|
|
| public DialogCallbackWithPreCommit(final ICustomizationManager manager) {
|
| this.manager = manager;
|
| }
|
|
|
| public void committed(final List<Customization> result,
|
| final Boolean precommitResult) {
|
| if (precommitResult.booleanValue()) {
|
| this.manager.getManagedCustomizations().clear();
|
| final IFacetManager facetManager = this.manager.getFacetManager();
|
| facetManager.getManagedFacetSets().addAll(0, result);
|
| }
|
| }
|
|
|
| public IQuestionDialog openPrecommitDialog(
|
| final List<Customization> result,
|
| final IDialogCallback<Boolean> precommitCallback) {
|
| return null;
|
| }
|
| }
|
| }
|