/*******************************************************************************
 * Copyright (c) 2004-2008 Andras Schmidt, Andras Balogh, Istvan Rath and Daniel Varro
 * 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:
 *    Andras Schmidt, Andras Balogh, Istvan Rath - initial API and implementation
 *******************************************************************************/

package org.eclipse.viatra2.core.simple.notification;

import org.eclipse.viatra2.core.IModelElement;
import org.eclipse.viatra2.core.notification.ICoreNotificationObjectDeleteInstanceOf;
import org.eclipse.viatra2.core.notification.NotificationType;

/**
 * @author Andras Schmidt
 *
 */
public class NotificationObjectDeleteInstanceOf extends NotificationObject
		implements ICoreNotificationObjectDeleteInstanceOf {
	IModelElement type;

	IModelElement inst;

	public NotificationObjectDeleteInstanceOf(IModelElement type,
			IModelElement inst) {
		this.type = type;
		this.inst = inst;
		addListener(type);
		addListener(inst);

	}

	@Override
	public NotificationType getActionTypeEnum() {
		return NotificationType.ACTION_DELETE_INSTANCEOF;
	}

	public IModelElement getType() {
		return type;
	}

	public IModelElement getInstance() {
		return inst;
	}
}
