Toolbar.js 1.7 KB

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