/** | |
* Copyright (c) 2014 Mia-Software. | |
* | |
* 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: | |
* 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; | |
} | |
} | |
} |