Packagecom.soma.core
Classpublic class Soma
InheritanceSoma Inheritance flash.events.EventDispatcher
Implements ISoma, flash.events.IEventDispatcher

Author: Romuald Quantin - www.soundstep.com

Resources: http://www.soundstep.com/downloads/somacore

Actionscript version: 3.0

Copyright: Mozilla Public License 1.1 (MPL 1.1) http://www.opensource.org/licenses/mozilla1.1.php

SomaCore is a lightweight event-based MVC framework written in AS3 that provides a structure, models, views management and commands. Somacore can be used for Flash, Flex and AIR projects. SomaCore is completely event-based and use a concept of wires to code in a efficient decoupled way. SomaCore can be used with or without dependency injection, and provide an injector adapter for the included DI library: SwiftSuspenders. You can use SomaCore in anything, except to include/distribute it in another framework, application, template, component or structure that is meant to build, scaffold or generate source files.

Few things to know:

View the examples



Public Properties
 PropertyDefined By
  controller : SomaController
[read-only] Gets the commands manager instance.
Soma
  injector : ISomaInjector
[read-only] Retrieves the injector instance that has been created by the framework from the injector Class registered.
Soma
  injectorClass : Class
[read-only] Retrieves the injector Class registered to the framework.
Soma
  mediators : SomaMediators
[read-only] Gets the mediator manager instance that has been created by the framework from the injector Class registered.
Soma
  models : SomaModels
[read-only] Gets the model manager instance.
Soma
  reflector : ISomaReflector
[read-only] Retrieves the refletor instance.
Soma
  stage : Stage
[read-only] Get the stage that has been registered to the framework.
Soma
  views : SomaViews
[read-only] Gets the view manager class.
Soma
  wires : SomaWires
[read-only] Gets the wires manager instance.
Soma
Public Methods
 MethodDefined By
  
Soma(stage:Stage = null, injectorClass:Class = null)
Create an instance of the SomaCore class.
Soma
  
addCommand(commandName:String, command:Class):void
Registers a command to the framework.
Soma
  
addModel(modelName:String, model:IModel):IModel
Registers a model to the framework.
Soma
  
addView(viewName:String, view:Object):Object
Registers a view to the framework.
Soma
  
addWire(wireName:String, wire:IWire):IWire
Registers a wire to the framework.
Soma
  
createPlugin(plugin:Class, pluginVO:ISomaPluginVO):ISomaPlugin
Creates a plugin instance.
Soma
  
createPluginFromClassName(pluginClassName:String, pluginVO:ISomaPluginVO):ISomaPlugin
Creates a plugin instance using the class name and the getDefinitionByName method.
Soma
  
dispose():void
Destroys the SomaCore core classes and elements registered to the framework.
Soma
  
getCommand(commandName:String):Class
Retrieves the command class that has been registered with a command name.
Soma
  
getCommands():Array
Retrieves all the command names (event type) that have been registered to the framework.
Soma
  
Retrieves the last sequence command that has been instantiated in the framework.
Soma
  
getModel(modelName:String):IModel
Retrieves the model instance that has been registered using its name.
Soma
  
getModels():Dictionary
Retrieves all the model instances that have been registered to the framework.
Soma
  
Retrieves all the sequence command instances that are running.
Soma
  
Retrieves the sequence command instance using an event instance that has been created from this sequence command.
Soma
  
getView(viewName:String):Object
Retrieves the view instance that has been registered using its name.
Soma
  
getViews():Dictionary
Retrieves all the view instances that have been registered to the framework.
Soma
  
getWire(wireName:String):IWire
Retrieves the wire instance that has been registered using its name.
Soma
  
getWires():Dictionary
Retrieves all the wire instances that have been registered to the framework.
Soma
  
hasCommand(commandName:String):Boolean
Indicates wether a command has been registered to the framework.
Soma
  
hasModel(modelName:String):Boolean
Indicates wether a model has been registered to the framework.
Soma
  
hasView(viewName:String):Boolean
Indicates wether a view has been registered to the framework.
Soma
  
hasWire(wireName:String):Boolean
Indicates wether a wire has been registered to the framework.
Soma
  
isPartOfASequence(event:Event):Boolean
Indicates wether an event has been instantiated from a ISequenceCommand class.
Soma
  
removeCommand(commandName:String):void
Removes a command from the framework.
Soma
  
removeModel(modelName:String):void
Removes a model from the framework and call the dispose method of this model.
Soma
  
removeView(viewName:String):void
Removes a view from the framework and call the (optional) dispose method of this view.
Soma
  
removeWire(wireName:String):void
Removes a wire from the framework and call the dispose method of this wire.
Soma
  
setup(stage:Stage = null, injectorClass:Class = null):void
Register elements that the frameworks needs to be ready, such as the stage and the optional injector class (default is SomaInjector).
Soma
  
Stops all the sequence command instances that are running.
Soma
  
stopSequencer(sequencer:ISequenceCommand):Boolean
Stops a sequence command using the sequence command instance itself.
Soma
  
stopSequencerWithEvent(event:Event):Boolean
Stops a sequence command using an event instance that has been created from this sequence command.
Soma
Protected Methods
 MethodDefined By
  
initialize():void
Method that you can optionally overwrite to initialize elements before anything else.
Soma
  
Method that you can optionally overwrite to register commands (mapping events to command classes) to the framework.
Soma
  
Method that you can optionally overwrite to register models to the framework.
Soma
  
Method that you can optionally overwrite to register plugins to the framework.
Soma
  
Method that you can optionally overwrite to register views to the framework.
Soma
  
Method that you can optionally overwrite to register wires to the framework.
Soma
  
start():void
Method that you can optionally overwrite to start your own after that the framework has registered all the elements (models, views, commands, wires, plugins).
Soma
Property Detail
controllerproperty
controller:SomaController  [read-only]

Gets the commands manager instance.


Implementation
    public function get controller():SomaController
injectorproperty 
injector:ISomaInjector  [read-only]

Retrieves the injector instance that has been created by the framework from the injector Class registered.


Implementation
    public function get injector():ISomaInjector
injectorClassproperty 
injectorClass:Class  [read-only]

Retrieves the injector Class registered to the framework.


Implementation
    public function get injectorClass():Class
mediatorsproperty 
mediators:SomaMediators  [read-only]

Gets the mediator manager instance that has been created by the framework from the injector Class registered.


Implementation
    public function get mediators():SomaMediators
modelsproperty 
models:SomaModels  [read-only]

Gets the model manager instance.


Implementation
    public function get models():SomaModels
reflectorproperty 
reflector:ISomaReflector  [read-only]

Retrieves the refletor instance.


Implementation
    public function get reflector():ISomaReflector
stageproperty 
stage:Stage  [read-only]

Get the stage that has been registered to the framework.


Implementation
    public function get stage():Stage
viewsproperty 
views:SomaViews  [read-only]

Gets the view manager class.


Implementation
    public function get views():SomaViews
wiresproperty 
wires:SomaWires  [read-only]

Gets the wires manager instance.


Implementation
    public function get wires():SomaWires
Constructor Detail
Soma()Constructor
public function Soma(stage:Stage = null, injectorClass:Class = null)

Create an instance of the SomaCore class.

Parameters
stage:Stage (default = null) — The stage is used as a global EventDispatcher (as well as the Soma class), and is required to instantiate the framework.
 
injectorClass:Class (default = null) — Class that must extend ISomaInjector.
Method Detail
addCommand()method
public final function addCommand(commandName:String, command:Class):void

Registers a command to the framework.

Parameters

commandName:String — Event type that is used as a command name.
 
command:Class — Class that will be executed when a command has been dispatched.

See also


Example
addCommand(MyEvent.DOSOMETHING, MyCommand);
addModel()method 
public final function addModel(modelName:String, model:IModel):IModel

Registers a model to the framework.

Parameters

modelName:String — Name of the model.
 
model:IModel — Instance of the model.

Returns
IModel — The model instance.

See also


Example
addModel(MyModel.NAME, new MyModel());
addView()method 
public final function addView(viewName:String, view:Object):Object

Registers a view to the framework.

Parameters

viewName:String — Name of the view.
 
view:Object — Instance of the view.

Returns
Object — The view instance.

See also


Example
addView(MySprite.NAME, new MySprite());
addWire()method 
public final function addWire(wireName:String, wire:IWire):IWire

Registers a wire to the framework.

Parameters

wireName:String — Name of the wire.
 
wire:IWire — Instance of the wire.

Returns
IWire — The wire instance.

See also


Example
addWire(MyWire.NAME, new MyWire());
createPlugin()method 
public final function createPlugin(plugin:Class, pluginVO:ISomaPluginVO):ISomaPlugin

Creates a plugin instance.

Parameters

plugin:Class — Class of the plugin that will be instantiated.
 
pluginVO:ISomaPluginVO — Value Object class of the plugin.

Returns
ISomaPlugin — An instance of the plugin.

Example
var pluginVO:SomaDebuggerVO = new SomaDebuggerVO(this, SomaDebugger.NAME_DEFAULT, getCommands(), true, false);
var debugger:SomaDebugger = createPlugin(SomaDebugger, pluginVO) as SomaDebugger;
         
createPluginFromClassName()method 
public final function createPluginFromClassName(pluginClassName:String, pluginVO:ISomaPluginVO):ISomaPlugin

Creates a plugin instance using the class name and the getDefinitionByName method.

Parameters

pluginClassName:String — Class name of the plugin that will be instantiated.
 
pluginVO:ISomaPluginVO — Value Object class of the plugin.

Returns
ISomaPlugin — An instance of the plugin.

Example
var pluginVO:SomaDebuggerVO = new SomaDebuggerVO(this, SomaDebugger.NAME_DEFAULT, getCommands(), true, false);
var debugger:SomaDebugger = createPluginFromClassName("com.soma.core.debugger.SomaDebugger", pluginVO) as SomaDebugger;
         
dispose()method 
public function dispose():void

Destroys the SomaCore core classes and elements registered to the framework.

getCommand()method 
public final function getCommand(commandName:String):Class

Retrieves the command class that has been registered with a command name.

Parameters

commandName:String — Event type that is used as a command name.

Returns
Class — A class.

See also


Example
var commandClass:ICommand = getCommand(MyEvent.DOSOMETHING) as ICommand;
getCommands()method 
public final function getCommands():Array

Retrieves all the command names (event type) that have been registered to the framework.

Returns
Array — An Array of String (command name).

See also


Example
var commands:Array = getCommands();
getLastSequencer()method 
public final function getLastSequencer():ISequenceCommand

Retrieves the last sequence command that has been instantiated in the framework.

Returns
ISequenceCommand — An ISequenceCommand instance.

See also


Example
var lastSequencer:ISequenceCommand = getLastSequencer();
getModel()method 
public final function getModel(modelName:String):IModel

Retrieves the model instance that has been registered using its name.

Parameters

modelName:String — Name of the model.

Returns
IModel — A IModel instance.

See also


Example
var myModel:MyModel = getModel(MyModel.NAME) as MyModel;
getModels()method 
public final function getModels():Dictionary

Retrieves all the model instances that have been registered to the framework.

Returns
Dictionary — A Dictionary (the key of the Dictionary is the name used for the registration).

See also


Example
var models:Dictionary = getModels();
getRunningSequencers()method 
public final function getRunningSequencers():Array

Retrieves all the sequence command instances that are running.

Returns
Array — An Array of ISequenceCommand instances.

See also


Example
var sequencers:Array = getRunningSequencers();
getSequencer()method 
public final function getSequencer(event:Event):ISequenceCommand

Retrieves the sequence command instance using an event instance that has been created from this sequence command.

Parameters

event:Event — Event instance.

Returns
ISequenceCommand — A sequencer (ISequenceCommand).

See also


Example
var sequencer:ISequenceCommand = getSequencer(myEvent);
getView()method 
public final function getView(viewName:String):Object

Retrieves the view instance that has been registered using its name.

Parameters

viewName:String — Name of the view.

Returns
Object — An Object instance.

See also


Example
var mySprite:MySprite = getView(MySprite.NAME) as MySprite;
getViews()method 
public final function getViews():Dictionary

Retrieves all the view instances that have been registered to the framework.

Returns
Dictionary — A Dictionary (the key of the Dictionary is the name used for the registration).

See also


Example
var sprites:Dictionary = getViews();
getWire()method 
public final function getWire(wireName:String):IWire

Retrieves the wire instance that has been registered using its name.

Parameters

wireName:String — Name of the wire.

Returns
IWire — A wire instance.

See also


Example
var myWire:MyWire = getWire(MyWire.NAME) as MyWire;
getWires()method 
public final function getWires():Dictionary

Retrieves all the wire instances that have been registered to the framework.

Returns
Dictionary — A Dictionary (the key of the Dictionary is the name used for the registration).

See also


Example
var wires:Dictionary = getWires();
hasCommand()method 
public final function hasCommand(commandName:String):Boolean

Indicates wether a command has been registered to the framework.

Parameters

commandName:String — Event type that is used as a command name.

Returns
Boolean — A Boolean.

See also


Example
hasCommand(MyEvent.DOSOMETHING);
hasModel()method 
public final function hasModel(modelName:String):Boolean

Indicates wether a model has been registered to the framework.

Parameters

modelName:String — Name of the model.

Returns
Boolean — A Boolean.

See also


Example
hasModel(MyModel.NAME);
hasView()method 
public final function hasView(viewName:String):Boolean

Indicates wether a view has been registered to the framework.

Parameters

viewName:String — Name of the view.

Returns
Boolean — A Boolean.

See also


Example
hasView(MySprite.NAME);
hasWire()method 
public final function hasWire(wireName:String):Boolean

Indicates wether a wire has been registered to the framework.

Parameters

wireName:String — Name of the wire.

Returns
Boolean — A Boolean.

See also


Example
hasWire(MyWire.NAME);
initialize()method 
protected function initialize():void

Method that you can optionally overwrite to initialize elements before anything else.

See also


Example
addModel(MyModel.NAME, new MyModel());
isPartOfASequence()method 
public final function isPartOfASequence(event:Event):Boolean

Indicates wether an event has been instantiated from a ISequenceCommand class.

Parameters

event:Event

Returns
Boolean — A Boolean.

See also


Example
var inSequence:Boolean = isPartOfASequence(myEvent);
registerCommands()method 
protected function registerCommands():void

Method that you can optionally overwrite to register commands (mapping events to command classes) to the framework.

See also


Example
addCommand(MyEvent.DOSOMETING, MyCommandClass);
registerModels()method 
protected function registerModels():void

Method that you can optionally overwrite to register models to the framework.

See also


Example
addModel(MyModel.NAME, new MyModel());
registerPlugins()method 
protected function registerPlugins():void

Method that you can optionally overwrite to register plugins to the framework.


Example
var pluginVO:SomaDebuggerVO = new SomaDebuggerVO(this, SomaDebugger.NAME_DEFAULT, getCommands(), true, false);
var debugger:SomaDebugger = createPlugin(SomaDebugger, pluginVO) as SomaDebugger;
         
registerViews()method 
protected function registerViews():void

Method that you can optionally overwrite to register views to the framework.

See also


Example
addView(MySprite.NAME, new MySprite());
registerWires()method 
protected function registerWires():void

Method that you can optionally overwrite to register wires to the framework.

See also


Example
addWire(MyWire.NAME, new MyWire());
removeCommand()method 
public final function removeCommand(commandName:String):void

Removes a command from the framework.

Parameters

commandName:String — Event type that is used as a command name.

See also


Example
removeCommand(MyEvent.DOSOMETHING);
removeModel()method 
public final function removeModel(modelName:String):void

Removes a model from the framework and call the dispose method of this model.

Parameters

modelName:String — Name of the model.

See also


Example
removeModel(MyModel.NAME);
removeView()method 
public final function removeView(viewName:String):void

Removes a view from the framework and call the (optional) dispose method of this view.

Parameters

viewName:String — Name of the view.

See also


Example
removeView(MySprite.NAME);
removeWire()method 
public final function removeWire(wireName:String):void

Removes a wire from the framework and call the dispose method of this wire.

Parameters

wireName:String — Name of the wire.

See also


Example
removeWire(MyWire.NAME);
setup()method 
public function setup(stage:Stage = null, injectorClass:Class = null):void

Register elements that the frameworks needs to be ready, such as the stage and the optional injector class (default is SomaInjector).

Parameters

stage:Stage (default = null) — The stage is used as a global EventDispatcher (as well as the Soma class), and is required to instantiate the framework.
 
injectorClass:Class (default = null) — Class that must extend ISomaInjector.

start()method 
protected function start():void

Method that you can optionally overwrite to start your own after that the framework has registered all the elements (models, views, commands, wires, plugins).

See also


Example
addWire(MyWire.NAME, new MyWire());
stopAllSequencers()method 
public final function stopAllSequencers():void

Stops all the sequence command instances that are running.

See also


Example
stopAllSequencers();
stopSequencer()method 
public final function stopSequencer(sequencer:ISequenceCommand):Boolean

Stops a sequence command using the sequence command instance itself.

Parameters

sequencer:ISequenceCommand — The sequence command instance.

Returns
Boolean — A Boolean (true if the sequence command has been stopped).

See also


Example
var success:Boolean = stopSequencer(mySequenceCommand);
stopSequencerWithEvent()method 
public final function stopSequencerWithEvent(event:Event):Boolean

Stops a sequence command using an event instance that has been created from this sequence command.

Parameters

event:Event — Event instance.

Returns
Boolean — A Boolean (true if a sequence command has been stopped).

See also


Example
var success:Boolean = stopSequencerWithEvent(myEvent);
Examples
To get started, create a instance of a class that extends the Soma class and implements the ISoma interface.
package  {
    import com.soma.core.interfaces.ISoma;
    import com.soma.core.di.SomaInjector;
    import flash.display.Sprite;
    
    public class Main extends Sprite {
        
        private var _app:ISoma;
        
        public function Main() {
            // injection disabled
            _app = new SomaApplication(stage);
            // injection enabled
            _app = new SomaApplication(stage, SomaInjector);
        }
        
    }
}
     
package  {
    import com.soma.core.Soma;
    import com.soma.core.interfaces.ISoma;
    import flash.display.Stage;
    
    public class SomaApplication extends Soma implements ISoma {
        public function SomaApplication(stage:Stage, injectorClass:Class) {
            super(stage, injector);
        }
        
        override protected function initialize():void {
            
        }
        override protected function registerCommands():void {
            
        }
        override protected function registerModels():void {
            
        }
        override protected function registerPlugins():void {
            
        }
        override protected function registerViews():void {
            
        }
        override protected function registerWires():void {
            
        }
        
        override protected function start():void {
            
        }
    }
}