/**
* @author mrdoob / http://mrdoob.com/
*/
Sidebar.History = function ( editor ) {
var signals = editor.signals;
var history = editor.history;
var container = new UI.CollapsiblePanel();
container.setCollapsed( editor.config.getKey( 'ui/sidebar/history/collapsed' ) );
container.onCollapsedChange( function ( boolean ) {
editor.config.setKey( 'ui/sidebar/history/collapsed', boolean );
} );
container.addStatic( new UI.Text( 'HISTORY' ) );
container.add( new UI.Break() );
var ignoreObjectSelectedSignal = false;
var outliner = new UI.Outliner( editor );
outliner.onChange( function () {
ignoreObjectSelectedSignal = true;
editor.history.goToState( parseInt( outliner.getValue() ) );
ignoreObjectSelectedSignal = false;
} );
outliner.onDblClick( function () {
//editor.focusById( parseInt( outliner.getValue() ) );
} );
container.add( outliner );
//
var refreshUI = function () {
var options = [];
var enumerator = 1;
( function addObjects( objects, pad ) {
for ( var i = 0, l = objects.length; i < l; i ++ ) {
var object = objects[ i ];
var html = pad + "" + enumerator++ + ". Undo: " + object.type.substring( 3, object.type.length ).replace(/([a-z])([A-Z])/g, '$1 $2') + "";
options.push( { value: object.id, html: html } );
}
} )( history.undos, ' ' );
( function addObjects( objects, pad ) {
for ( var i = objects.length - 1; i >= 0; i -- ) {
var object = objects[ i ];
var html = pad + "" + enumerator++ + ". Redo: " + object.type.substring( 3, object.type.length ).replace(/([a-z])([A-Z])/g, '$1 $2') + "";
options.push( { value: object.id, html: html } );
}
} )( history.redos, ' ' );
outliner.setOptions( options );
};
refreshUI();
// events
signals.editorCleared.add( refreshUI );
signals.historyChanged.add( refreshUI );
signals.historyChanged.add( function ( cmd ) {
outliner.setValue( cmd !== undefined ? cmd.id : null );
} );
return container;
};