/*************************************************************************** * Copyright (c) 2008 Conselleria de Infraestructuras y Transporte, * Generalitat de la Comunitat Valenciana . 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: Francisco Javier Cano Muñoz (Prodevelop) - initial api implementation * ******************************************************************************/ package org.eclipse.papyrus.uml.diagram.common.providers; import java.io.IOException; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gmf.runtime.common.core.service.IProvider; import org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.AbstractContributionItemProvider; import org.eclipse.gmf.runtime.common.ui.util.IWorkbenchPartDescriptor; import org.eclipse.jface.action.IAction; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.papyrus.uml.diagram.common.Activator; import org.eclipse.papyrus.uml.diagram.common.actions.ValidationAction; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.PlatformUI; /** * A provider that contributes the ValidationAction to the diagram context menu. * * @author <a href="mailto:fjcano@prodevelop.es">Francisco Javier Cano Muñoz</a> * */ public class DiagramValidationProvider extends AbstractContributionItemProvider implements IProvider { public static final String VALIDATE_ACTION_KEY = "validateDiagramAction"; //$NON-NLS-1$ protected IAction createAction(String actionId, IWorkbenchPartDescriptor partDescriptor) { if(ValidationAction.VALIDATE_ACTION_KEY.equals(actionId)) { ValidationAction va = new ValidationAction(partDescriptor); try { String imagePath = ""; Image image = null; imagePath = FileLocator.toFileURL(Platform.getBundle(Activator.ID).getResource("icons")).getPath(); imagePath += "validation.gif"; image = new Image(PlatformUI.getWorkbench().getDisplay(), imagePath); va.setImageDescriptor(ImageDescriptor.createFromImage(image)); return va; } catch (IOException ex) { Activator.getDefault().logWarning("Image file for Validation Action not found", ex); return va; } } return super.createAction(actionId, partDescriptor); } public static void runWithConstraints(TransactionalEditingDomain editingDomain, Runnable operation) { final Runnable op = operation; Runnable task = new Runnable() { public void run() { try { op.run(); } finally { } } }; if(editingDomain != null) { try { editingDomain.runExclusive(task); } catch (Exception e) { Activator.getDefault().logError("Diagram Validation failed", e); //$NON-NLS-1$ } } else { task.run(); } } }