/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.module.deployment.internal.util; import java.beans.PropertyChangeEvent; /** * */ public abstract class ElementEvent<E> extends PropertyChangeEvent { public static final int ADDED = 0; public static final int UPDATED = 1; public static final int REMOVED = 2; public static final int CLEARED = 3; public static final int MULTI_ADD = 4; public static final int MULTI_REMOVE = 5; private static final String PROPERTY_NAME = "ObservableList__element"; protected static final Object OLDVALUE = new Object(); protected static final Object NEWVALUE = new Object(); private int type; private int index; public ElementEvent(Object source, Object oldValue, Object newValue, int index, int type) { super(source, PROPERTY_NAME, oldValue, newValue); switch (type) { case ADDED: case UPDATED: case REMOVED: case CLEARED: case MULTI_ADD: case MULTI_REMOVE: this.type = type; break; default: this.type = UPDATED; break; } this.index = index; } public int getIndex() { return index; } public int getType() { return type; } public String getTypeAsString() { switch (type) { case ADDED: return "ADDED"; case UPDATED: return "UPDATED"; case REMOVED: return "REMOVED"; case CLEARED: return "CLEARED"; case MULTI_ADD: return "MULTI_ADD"; case MULTI_REMOVE: return "MULTI_REMOVE"; default: return "UPDATED"; } } }