Toolbar.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. var Toolbar = function ( editor ) {
  5. var signals = editor.signals;
  6. var container = new UI.Panel();
  7. container.setId( 'toolbar' );
  8. container.setDisplay( 'none' );
  9. var buttons = new UI.Panel();
  10. container.add( buttons );
  11. // translate / rotate / scale
  12. var translate = new UI.Button( 'translate' );
  13. translate.dom.className = 'Button selected';
  14. translate.onClick( function () {
  15. signals.transformModeChanged.dispatch( 'translate' );
  16. } );
  17. buttons.add( translate );
  18. var rotate = new UI.Button( 'rotate' );
  19. rotate.onClick( function () {
  20. signals.transformModeChanged.dispatch( 'rotate' );
  21. } );
  22. buttons.add( rotate );
  23. var scale = new UI.Button( 'scale' );
  24. scale.onClick( function () {
  25. signals.transformModeChanged.dispatch( 'scale' );
  26. } );
  27. buttons.add( scale );
  28. var local = new UI.THREE.Boolean( false, 'local' )
  29. local.onChange( function () {
  30. signals.spaceChanged.dispatch( this.getValue() === true ? 'local' : 'world' );
  31. } );
  32. buttons.add( local );
  33. //
  34. signals.objectSelected.add( function ( object ) {
  35. container.setDisplay( object === null ? 'none' : '' );
  36. } );
  37. signals.transformModeChanged.add( function ( mode ) {
  38. translate.dom.classList.remove( 'selected' );
  39. rotate.dom.classList.remove( 'selected' );
  40. scale.dom.classList.remove( 'selected' );
  41. switch ( mode ) {
  42. case 'translate': translate.dom.classList.add( 'selected' ); break;
  43. case 'rotate': rotate.dom.classList.add( 'selected' ); break;
  44. case 'scale': scale.dom.classList.add( 'selected' ); break;
  45. }
  46. } );
  47. return container;
  48. };