001/*
002 * JGrapes Event Driven Framework
003 * Copyright (C) 2016-2018 Michael N. Lipp
004 * 
005 * This program is free software; you can redistribute it and/or modify it 
006 * under the terms of the GNU Affero General Public License as published by 
007 * the Free Software Foundation; either version 3 of the License, or 
008 * (at your option) any later version.
009 * 
010 * This program is distributed in the hope that it will be useful, but 
011 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
012 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License 
013 * for more details.
014 * 
015 * You should have received a copy of the GNU Affero General Public License along 
016 * with this program; if not, see <http://www.gnu.org/licenses/>.
017 */
018
019package org.jgrapes.core.events;
020
021import org.jgrapes.core.Channel;
022import org.jgrapes.core.Event;
023import org.jgrapes.core.Manager;
024
025/**
026 * An event that signals the start of the application.
027 * This event must be fired in order to start the dispatching of
028 * events to components. Components that allocate resources usually
029 * do this in a handler for this event.
030 * 
031 * See {@link Manager#attach(org.jgrapes.core.ComponentType)}
032 * for details about this event and attaching a subtree to an
033 * already started tree.
034 */
035public class Start extends Event<Void> {
036
037    /**
038     * Create a new start event and set its completion event to {@link Started}.
039     * The completion event may not be changed. The event's channels
040     * are set to {@link Channel#BROADCAST}.
041     */
042    public Start() {
043        super(Channel.BROADCAST);
044        new Started(this);
045    }
046
047}