blob: 0055143ea8db1b94f19657a6eebe5155fe7f45cc [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
package com.adobe.cairngorm.work
{
import flash.events.Event;
/**
* An event that occurs while processing a work-item.
*/
public class WorkEvent extends Event
{
//------------------------------------------------------------------------
//
// Constants
//
//------------------------------------------------------------------------
//-------------------------------
// Event Types : IWorkItem
//-------------------------------
public static const WORK_START : String = "workStart";
public static const WORK_COMPLETE : String = "workComplete";
public static const WORK_FAULT : String = "workFault";
//-------------------------------
// Event Types : IWorkFlow
//-------------------------------
public static const WORK_PROGRESS : String = "workProgress";
public static const CHILD_START : String = "childStart";
public static const CHILD_COMPLETE : String = "childComplete";
public static const CHILD_FAULT : String = "childFault";
//------------------------------------------------------------------------
//
// Constructor
//
//------------------------------------------------------------------------
public function WorkEvent(
type : String,
workItem : IWorkItem )
{
super( type );
_workItem = workItem;
}
//------------------------------------------------------------------------
//
// Static Factory Methods
//
//------------------------------------------------------------------------
//-------------------------------
// Event Types : IWorkItem
//-------------------------------
public static function createStartEvent(
workItem : IWorkItem ) : WorkEvent
{
return new WorkEvent( WORK_START, workItem );
}
public static function createCompleteEvent(
workItem : IWorkItem ) : WorkEvent
{
return new WorkEvent( WORK_COMPLETE, workItem );
}
public static function createFaultEvent(
workItem : IWorkItem,
message : String = null ) : WorkEvent
{
var event : WorkEvent = new WorkEvent( WORK_FAULT, workItem );
event._message = message;
return event;
}
//-------------------------------
// Event Types : IWorkFlow
//-------------------------------
public static function createProgressEvent(
workItem : IWorkItem,
processed : uint,
size : uint ) : WorkEvent
{
var event : WorkEvent = new WorkEvent( WORK_PROGRESS, workItem );
event._processed = processed;
event._size = size;
return event;
}
public static function createChildStartEvent(
workItem : IWorkItem ) : WorkEvent
{
return new WorkEvent( CHILD_START, workItem );
}
public static function createChildCompleteEvent(
workItem : IWorkItem ) : WorkEvent
{
return new WorkEvent( CHILD_COMPLETE, workItem );
}
public static function createChildFaultEvent(
workItem : IWorkItem,
message : String = null ) : WorkEvent
{
var event : WorkEvent = new WorkEvent( CHILD_FAULT, workItem );
event._message = message;
return event;
}
//------------------------------------------------------------------------
//
// Properties
//
//------------------------------------------------------------------------
//-------------------------------
// workItem
//-------------------------------
private var _workItem : IWorkItem;
/**
* The work-item that the event applies to.
*/
public function get workItem() : IWorkItem
{
return _workItem;
}
//-------------------------------
// processed
//-------------------------------
private var _processed : uint;
public function get processed() : uint
{
return _processed;
}
//-------------------------------
// size
//-------------------------------
private var _size : uint;
public function get size() : uint
{
return _size;
}
//-------------------------------
// message
//-------------------------------
private var _message : String;
/**
* The message desribing the cause of a workFault event.
*/
public function get message() : String
{
return _message;
}
//------------------------------------------------------------------------
//
// Overrides : Event
//
//------------------------------------------------------------------------
override public function clone() : Event
{
var event : WorkEvent = new WorkEvent( type, _workItem );
event._message = _message;
event._processed = _processed;
event._size = _size;
return event;
}
}
}