Skip to content

Commit

Permalink
Re-importing MooTools sample docs.
Browse files Browse the repository at this point in the history
  • Loading branch information
jaywilliams committed Mar 17, 2009
1 parent 948733e commit accb3a2
Show file tree
Hide file tree
Showing 27 changed files with 7,530 additions and 0 deletions.
398 changes: 398 additions & 0 deletions docs/Class/Class.Extras.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,398 @@
Class: Chain {#Chain}
=====================

A Utility Class which executes functions one after another, with each function firing after completion of the previous.
Its methods can be implemented with [Class:implement][] into any [Class][], and it is currently implemented in [Fx][] and [Request][].
In [Fx][], for example, it is used to create custom, complex animations.



Chain Method: constructor {#Chain:constructor}
----------------------------------------------


### Syntax:

#### For new classes:

var MyClass = new Class({ Implements: Chain });

#### For existing classes:

MyClass.implement(Chain);

#### Stand alone

var myChain = new Chain;

### Example:

var Todo = new Class({
Implements: Chain,
initialize: function(){
this.chain.apply(this, arguments);
}
});

var myTodoList = new Todo(
function(){ alert('get groceries'); },
function(){ alert('go workout'); },
function(){ alert('code mootools documentation until eyes close involuntarily'); },
function(){ alert('sleep'); }
);

### See Also:

- [Class][]



Chain Method: chain {#Chain:chain}
----------------------------------

Adds functions to the end of the call stack of the Chain instance.

### Syntax:

myClass.chain(fn[, fn2[, fn3[, ...]]]);

### Arguments:

1. fn - (*function* or *array*) The function (or array of functions) to add to the chain call stack. Will accept and number of functions or arrays of functions.

### Returns:

* (*object*) The current Class instance. Calls to chain can also be chained.

### Example:
//Fx.Tween has already implemented the Chain class because of inheritance of the Fx class.
var myFx = new Fx.Tween('myElement', {property: 'opacity'});
myFx.start(1,0).chain(
//Notice that "this" refers to the calling object (in this case, the myFx object).
function(){ this.start(0,1); },
function(){ this.start(1,0); },
function(){ this.start(0,1); }
); //Will fade the Element out and in twice.


### See Also:

- [Fx][], [Fx.Tween][]



Chain Method: callChain {#Chain:callChain}
------------------------------------------

Removes the first function of the Chain instance stack and executes it. The next function will then become first in the array.

### Syntax:

myClass.callChain([any arguments]);

### Arguments:

1. Any arguments passed in will be passed to the "next" function.

### Returns:

* (*mixed*) The return value of the "next" function or false when the chain was empty.

### Example:

var myChain = new Chain();
myChain.chain(
function(){ alert('do dishes'); },
function(){ alert('put away clean dishes'); }
);
myChain.callChain(); //Will alert 'do dishes'.
myChain.callChain(); //Will alert 'put away clean dishes'.



Chain Method: clearChain {#Chain:clearChain}
--------------------------------------------

Clears the stack of a Chain instance.

### Syntax:

myClass.clearChain();

### Returns:

* (*object*) The current Class instance.

### Example:

var myFx = Fx.Tween('myElement', 'color'); //Fx.Tween inherited Fx's implementation of Chain.
myFx.chain(function(){ while(true) alert("D'oh!"); }); //Chains an infinite loop of alerts.
myFx.clearChain(); //Cancels the infinite loop of alerts before allowing it to begin.

### See Also:

- [Fx][], [Fx.Tween][]



Class: Events {#Events}
=======================

A Utility Class. Its methods can be implemented with [Class:implement][] into any [Class][].
In [Fx][], for example, this Class is used to allow any number of functions to be added to the Fx events, like 'complete', 'start', and 'cancel'.
Events in a Class that implements [Events](#Events) must be either added as an option or with addEvent, not directly through .options.onEventName.

### Syntax:

#### For new classes:

var MyClass = new Class({ Implements: Events });

#### For existing classes:

MyClass.implement(Events);

### Implementing:

- This class can be implemented into other classes to add its functionality to them.
- Events has been designed to work well with the [Options](#Options) class. When the option property begins with 'on' and is followed by a capital letter it will be added as an event (e.g. 'onComplete' will add as 'complete' event).

### Example:

var Widget = new Class({
Implements: Events,
initialize: function(element){
// ...
},
complete: function(){
this.fireEvent('complete');
}
});

var myWidget = new Widget();
myWidget.addEvent('complete', myFunction);

### Notes:

- Events starting with 'on' are still supported in all methods and are converted to their representation without 'on' (e.g. 'onComplete' becomes 'complete').


### See Also:

- [Class][], [Options](#Options)



Events Method: addEvent {#Events:addEvent}
------------------------------------------

Adds an event to the Class instance's event stack.

### Syntax:

myClass.addEvent(type, fn[, internal]);

### Arguments:

1. type - (*string*) The type of event (e.g. 'complete').
2. fn - (*function*) The function to execute.
3. internal - (*boolean*, optional) Sets the function property: internal to true. Internal property is used to prevent removal.

### Returns:

* (*object*) This Class instance.

### Example:

var myFx = new Fx.Tween('element', 'opacity');
myFx.addEvent('start', myStartFunction);


Events Method: addEvents {#Events:addEvents}
------------------------------------------

The same as [addEvent](#Events:addEvent), but accepts an object to add multiple events at once.

### Syntax:

myClass.addEvents(events);

### Arguments:

1. events - (*object*) An object with key/value representing: key the event name (e.g. 'start'), and value the function that is called when the Event occurs.

### Returns:

* (*object*) This Class instance.

### Example:

var myFx = new Fx.Tween('element', 'opacity');
myFx.addEvents({
'start': myStartFunction,
'complete': function() {
alert('Done.');
}
});



Events Method: fireEvent {#Events:fireEvent}
--------------------------------------------

Fires all events of the specified type in the Class instance.

### Syntax:

myClass.fireEvent(type[, args[, delay]]);

### Arguments:

1. type - (*string*) The type of event (e.g. 'complete').
2. args - (*mixed*, optional) The argument(s) to pass to the function. To pass more than one argument, the arguments must be in an array.
3. delay - (*number*, optional) Delay in miliseconds to wait before executing the event (defaults to 0).

### Returns:

* (*object*) This Class instance.

### Example:

var Widget = new Class({
Implements: Events,
initialize: function(arg1, arg2){
//...
this.fireEvent("initialize", [arg1, arg2], 50);
}
});



Events Method: removeEvent {#Events:removeEvent}
------------------------------------------------

Removes an event from the stack of events of the Class instance.

### Syntax:

myClass.removeEvent(type, fn);

### Arguments:

1. type - (*string*) The type of event (e.g. 'complete').
2. fn - (*function*) The function to remove.

### Returns:

* (*object*) This Class instance.

### Notes:

- If the function has the property internal and is set to true, then the event will not be removed.


Events Method: removeEvents {#Events:removeEvents}
--------------------------------------------------

Removes all events of the given type from the stack of events of a Class instance. If no type is specified, removes all events of all types.

### Syntax:

myClass.removeEvents([events]);

### Arguments:

1. events - (optional) If not passed removes all events of all types.
- (*string*) The event name (e.g. 'success'). Removes all events of that type.
- (*object*) An object of type function pairs. Like the one passed to [addEvents](#Events:addEvents).

### Returns:

* (*object*) The current Class instance.

### Example:

var myFx = new Fx.Tween('myElement', 'opacity');
myFx.removeEvents('complete');


### Notes:

- removeEvents will not remove internal events. See [Events:removeEvent][].



Class: Options {#Options}
=========================

A Utility Class. Its methods can be implemented with [Class:implement][] into any [Class][].
Used to automate the setting of a Class instance's options.
Will also add Class [Events](#Events) when the option property begins with 'on' and is followed by a capital letter (e.g. 'onComplete' adds a 'complete' event).

### Syntax:

#### For new classes:

var MyClass = new Class({Implements: Options});

#### For existing classes:

MyClass.implement(Options);



Options Method: setOptions {#Options:setOptions}
------------------------------------------------

Merges the default options of the Class with the options passed in.

### Syntax:

myClass.setOptions([options]);

### Arguments:

1. options - (*object*, optional) The user defined options to merge with the defaults.

### Returns:

* (*object*) The current Class instance.

### Example:

var Widget = new Class({
Implements: Options,
options: {
color: '#fff',
size: {
width: 100,
height: 100
}
},
initialize: function(options){
this.setOptions(options);
}
});

var myWidget = new Widget({
color: '#f00',
size: {
width: 200
}
});

//myWidget.options is now: {color: #f00, size: {width: 200, height: 100}}

### Notes:

- Relies on the default options of a Class defined in its options property.
- If a Class has [Events](#Events) implemented, every option beginning with 'on' and followed by a capital letter (e.g. 'onComplete') becomes a Class instance event, assuming the value of the option is a function.


[Class]: /core/Class/Class
[Class:implement]: /core/Class/Class/#Class:implement
[Fx]: /core/Fx/Fx
[Fx.Tween]: /core/Fx/Fx.Tween
[Request]: /core/Request/Request
[Request.HTML]: /core/Request/Request.HTML
[Events:removeEvent]: /core/Element/Element.Event/#Element:removeEvent
Loading

0 comments on commit accb3a2

Please sign in to comment.