/******************************************************************************* * Copyright (c) 2010-2015 Henshin developers. 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: * TU Berlin, University of Luxembourg, SES S.A. *******************************************************************************/ package de.tub.tfs.henshin.editor.util; /** * * Die Klasse wird zum Refresh einzelner Komponenten ben�tigt. * Wird eine der beschriebenen Aktionen ausgef�hrt, werden durch diese * Klasse, die entsprechenden Objekte benachrichtigt. */ import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.henshin.model.Formula; import org.eclipse.emf.henshin.model.Graph; import org.eclipse.emf.henshin.model.HenshinPackage; import org.eclipse.emf.henshin.model.Mapping; import org.eclipse.emf.henshin.model.Module; import org.eclipse.emf.henshin.model.Node; import org.eclipse.emf.henshin.model.ParameterMapping; import org.eclipse.emf.henshin.model.Rule; import org.eclipse.emf.henshin.model.Unit; /** * The Class SendNotify. */ public class SendNotify { /** * Send add mapping notify. * * @param mapping * the mapping */ public static void sendAddMappingNotify(Mapping mapping) { mapping.getImage().eNotify( new ENotificationImpl((InternalEObject) mapping.getImage(), Notification.ADD, HenshinPackage.MAPPING__IMAGE, null, mapping)); mapping.getOrigin().eNotify( new ENotificationImpl((InternalEObject) mapping.getOrigin(), Notification.ADD, HenshinPackage.MAPPING__ORIGIN, null, mapping)); } /** * Send remove mapping notify. * * @param mapping * the mapping */ public static void sendRemoveMappingNotify(Mapping mapping) { mapping.getImage().eNotify( new ENotificationImpl((InternalEObject) mapping.getImage(), Notification.REMOVE, HenshinPackage.MAPPING__IMAGE, mapping, null)); mapping.getOrigin().eNotify( new ENotificationImpl((InternalEObject) mapping.getOrigin(), Notification.REMOVE, HenshinPackage.MAPPING__ORIGIN, mapping, null)); } /** * Send set image mapping notify. * * @param mapping * the mapping */ public static void sendSetImageMappingNotify(Mapping mapping) { mapping.getImage().eNotify( new ENotificationImpl((InternalEObject) mapping.getImage(), Notification.SET, HenshinPackage.MAPPING__IMAGE, mapping, null)); } /** * Send update mapping notify. * * @param node * the node */ public static void sendUpdateMappingNotify(Node node) { ENotificationImpl notification = new ENotificationImpl( (InternalEObject) node, Notification.SET, HenshinPackage.NODE, null, null); node.eNotify(notification); } /** * Send add formula notify. * * @param rule * the rule * @param formula * the formula */ public static void sendAddFormulaNotify(Rule rule, EObject formula) { ENotificationImpl notification = new ENotificationImpl( (InternalEObject) rule, Notification.ADD, HenshinPackage.FORMULA, null, formula); rule.eNotify(notification); } /** * Send add formula notify. * * @param parent * the parent * @param formula * the formula */ public static void sendAddFormulaNotify(EObject parent, Formula formula) { if (parent != null && formula != null) { ENotificationImpl notification = new ENotificationImpl( (InternalEObject) parent, Notification.ADD, HenshinPackage.FORMULA, null, formula); parent.eNotify(notification); } } /** * Send add formula notify. * * @param parent * the parent * @param formula * the formula */ public static void sendSwapFormulaNotify(EObject notifier, Formula oldFormula, Formula newFormula) { notifier.eNotify(new ENotificationImpl((InternalEObject) notifier, HenshinNotification.BINARY_FORMULA_SWAP, HenshinPackage.FORMULA, oldFormula, newFormula)); } /** * Send remove formula notify. * * @param parent * the parent * @param formula * the formula */ public static void sendRemoveFormulaNotify(EObject parent, Formula formula) { ENotificationImpl notification = new ENotificationImpl( (InternalEObject) parent, Notification.REMOVE, HenshinPackage.FORMULA, null, formula); parent.eNotify(notification); } /** * Send remove formula notify. * * @param rule * the rule * @param formula * the formula */ public static void sendRemoveFormulaNotify(Rule rule, EObject formula) { ENotificationImpl notification = new ENotificationImpl( (InternalEObject) rule, Notification.REMOVE, HenshinPackage.FORMULA, formula, null); rule.eNotify(notification); } /** * Send add port mapping notify. * * @param mapping * the mapping * @param tUnit * the t unit */ public static void sendAddPortMappingNotify(ParameterMapping mapping, Unit tUnit) { if (mapping.getSource().getUnit() == tUnit) { mapping.getSource().eNotify( new ENotificationImpl( (InternalEObject) mapping.getSource(), Notification.ADD, HenshinPackage.PARAMETER_MAPPING, null, mapping)); mapping.getTarget() .getUnit() .eNotify( new ENotificationImpl((InternalEObject) mapping .getTarget().getUnit(), Notification.ADD, HenshinPackage.PARAMETER_MAPPING, null, mapping)); } else { mapping.getSource() .getUnit() .eNotify( new ENotificationImpl((InternalEObject) mapping .getSource().getUnit(), Notification.ADD, HenshinPackage.PARAMETER_MAPPING, null, mapping)); mapping.getTarget().eNotify( new ENotificationImpl( (InternalEObject) mapping.getTarget(), Notification.ADD, HenshinPackage.PARAMETER_MAPPING, null, mapping)); } } /** * Send remove port mapping notify. * * @param mapping * the mapping * @param tUnit * the t unit */ public static void sendRemovePortMappingNotify(ParameterMapping mapping, Unit tUnit) { if (mapping.getSource().getUnit() == tUnit) { mapping.getSource().eNotify( new ENotificationImpl( (InternalEObject) mapping.getSource(), Notification.REMOVE, HenshinPackage.PARAMETER_MAPPING, mapping, null)); mapping.getTarget() .getUnit() .eNotify( new ENotificationImpl((InternalEObject) mapping .getTarget().getUnit(), Notification.REMOVE, HenshinPackage.PARAMETER_MAPPING, mapping, null)); } else { mapping.getSource() .getUnit() .eNotify( new ENotificationImpl((InternalEObject) mapping .getSource().getUnit(), Notification.REMOVE, HenshinPackage.PARAMETER_MAPPING, mapping, null)); mapping.getTarget().eNotify( new ENotificationImpl( (InternalEObject) mapping.getTarget(), Notification.REMOVE, HenshinPackage.PARAMETER_MAPPING, mapping, null)); } } /** * Send set transformation unit notify. * * @param tUnit * the t unit */ public static void sendSetTransformationUnitNotify(Unit tUnit) { Module tSys = HenshinUtil.INSTANCE .getTransformationSystem(tUnit); if (tSys != null) { tSys.eNotify(new ENotificationImpl((InternalEObject) tSys, Notification.SET, HenshinPackage.MODULE__UNITS, tUnit, tUnit)); } } /** * Send execute command notify. * * @param graph * the graph */ public static void sendExecuteCommandNotify(Graph graph) { graph.eNotify(new ENotificationImpl((InternalEObject) graph, HenshinNotification.EXECUTED, HenshinPackage.MODULE__INSTANCES, graph, null)); } /** * Send transformation undo notify. * * @param graph * the graph */ public static void sendTransformationUndoNotify(Graph graph) { graph.eNotify(new ENotificationImpl((InternalEObject) graph, HenshinNotification.TRANSFORMATION_UNDO, HenshinPackage.MODULE__INSTANCES, graph, null)); } /** * Send transformation redo notify. * * @param graph * the graph */ public static void sendTransformationRedoNotify(Graph graph) { graph.eNotify(new ENotificationImpl((InternalEObject) graph, HenshinNotification.TRANSFORMATION_REDO, HenshinPackage.MODULE__INSTANCES, graph, null)); } }