/******************************************************************************* * Copyright (c) 2000, 2009 IBM Corporation and others. * 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: * 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 PRE_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; } }