blob: 10a6ef9987f23f2b3d856a62bafdf7449becdfe2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2011 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Serge Beauchamp (Freescale Semiconductor) - [229633] Group Support
*******************************************************************************/
package org.eclipse.core.internal.events;
import org.eclipse.core.resources.IResource;
/**
* Class used for broadcasting internal workspace lifecycle events. There is a
* singleton instance, so no listener is allowed to keep references to the event
* after the notification is finished.
*/
public class LifecycleEvent {
//constants for kinds of internal workspace lifecycle events
public static final int PRE_PROJECT_CLOSE = 0x01;
public static final int POST_PROJECT_CHANGE = 0x02;
public static final int PRE_PROJECT_COPY = 0x04;
public static final int PRE_PROJECT_CREATE = 0x08;
public static final int PRE_PROJECT_DELETE = 0x10;
public static final int PRE_PROJECT_OPEN = 0x20;
public static final int PRE_PROJECT_MOVE = 0x40;
public static final int PRE_LINK_COPY = 0x100;
public static final int PRE_LINK_CREATE = 0x200;
public static final int PRE_LINK_DELETE = 0x400;
public static final int PRE_LINK_MOVE = 0x800;
public static final int PRE_REFRESH = 0x1000;
public static final int PRE_GROUP_COPY = 0x2000;
public static final int PRE_GROUP_CREATE = 0x4000;
public static final int PRE_GROUP_DELETE = 0x8000;
public static final int PRE_GROUP_MOVE = 0x10000;
public static final int PRE_FILTER_ADD = 0x20000;
public static final int PRE_FILTER_REMOVE = 0x40000;
public static final int PRE_LINK_CHANGE = 0x80000;
/**
* The kind of event
*/
public int kind;
/**
* For events that only involve one resource, this is it. More
* specifically, this is used for all events that don't involve a more or
* copy. For copy/move events, this resource represents the source of the
* copy/move.
*/
public IResource resource;
/**
* For copy/move events, this resource represents the destination of the
* copy/move.
*/
public IResource newResource;
/**
* The update flags for the event.
*/
public int updateFlags;
private static final LifecycleEvent instance = new LifecycleEvent();
private LifecycleEvent() {
super();
}
public static LifecycleEvent newEvent(int kind, IResource resource) {
instance.kind = kind;
instance.resource = resource;
instance.newResource = null;
instance.updateFlags = 0;
return instance;
}
public static LifecycleEvent newEvent(int kind, IResource oldResource, IResource newResource, int updateFlags) {
instance.kind = kind;
instance.resource = oldResource;
instance.newResource = newResource;
instance.updateFlags = updateFlags;
return instance;
}
}