/******************************************************************************* * Copyright (c) 2004, 2005 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 *******************************************************************************/ package org.eclipse.gef.commands; import java.util.EventObject; /** * Instances of this class are sent whenever stack events occur. The type of event can be * determined by calling {@link #getDetail()}, and comparing the return value to constants * defined by {@link CommandStack}. * <P>Warning: this class is not intended to be subclassed. * @since 3.1 */ public class CommandStackEvent extends EventObject { private final Command command; private final int detail; /** * Constructs a new event instance. The stack specifies the source of the event. If a * command is relevant to the event context, one should be specified. The detail * indicates the type of event occurring. * @since 3.1 * @param stack the command stack * @param c a command or <code>null</code> * @param detail an integer identifier */ public CommandStackEvent(CommandStack stack, Command c, int detail) { super(stack); this.command = c; this.detail = detail; } /** * Returns <code>null</code> or a Command if a command is relevant to the current event. * @since 3.1 * @return <code>null</code> or a command */ public Command getCommand() { return command; } /** * Returns <code>true</code> if this event is fired prior to the stack changing. * @return <code>true</code> if pre-change event * @since 3.2 */ public final boolean isPreChangeEvent() { return 0 != (getDetail() & CommandStack.PRE_MASK); } /** * Returns <code>true</code> if this event is fired after the stack having changed. * @return <code>true</code> if post-change event * @since 3.2 */ public final boolean isPostChangeEvent() { return 0 != (getDetail() & CommandStack.POST_MASK); } /** * Returns an integer identifying the type of event which has occurred. * @since 3.1 * @return the detail of the event */ public int getDetail() { return detail; } }