Toolbar.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. import { UIPanel, UIButton, UICheckbox } from './libs/ui.js';
  5. function Toolbar( editor ) {
  6. var signals = editor.signals;
  7. var strings = editor.strings;
  8. var container = new UIPanel();
  9. container.setId( 'toolbar' );
  10. // translate / rotate / scale
  11. var translateIcon = document.createElement( 'img' );
  12. translateIcon.title = strings.getKey( 'toolbar/translate' );
  13. translateIcon.src = 'images/translate.svg';
  14. var translate = new UIButton();
  15. translate.dom.className = 'Button selected';
  16. translate.dom.appendChild( translateIcon );
  17. translate.onClick( function () {
  18. signals.transformModeChanged.dispatch( 'translate' );
  19. } );
  20. container.add( translate );
  21. var rotateIcon = document.createElement( 'img' );
  22. rotateIcon.title = strings.getKey( 'toolbar/rotate' );
  23. rotateIcon.src = 'images/rotate.svg';
  24. var rotate = new UIButton();
  25. rotate.dom.appendChild( rotateIcon );
  26. rotate.onClick( function () {
  27. signals.transformModeChanged.dispatch( 'rotate' );
  28. } );
  29. container.add( rotate );
  30. var scaleIcon = document.createElement( 'img' );
  31. scaleIcon.title = strings.getKey( 'toolbar/scale' );
  32. scaleIcon.src = 'images/scale.svg';
  33. var scale = new UIButton();
  34. scale.dom.appendChild( scaleIcon );
  35. scale.onClick( function () {
  36. signals.transformModeChanged.dispatch( 'scale' );
  37. } );
  38. container.add( scale );
  39. var local = new UICheckbox( false );
  40. local.dom.title = strings.getKey( 'toolbar/local' );
  41. local.onChange( function () {
  42. signals.spaceChanged.dispatch( this.getValue() === true ? 'local' : 'world' );
  43. } );
  44. container.add( local );
  45. //
  46. signals.transformModeChanged.add( function ( mode ) {
  47. translate.dom.classList.remove( 'selected' );
  48. rotate.dom.classList.remove( 'selected' );
  49. scale.dom.classList.remove( 'selected' );
  50. switch ( mode ) {
  51. case 'translate': translate.dom.classList.add( 'selected' ); break;
  52. case 'rotate': rotate.dom.classList.add( 'selected' ); break;
  53. case 'scale': scale.dom.classList.add( 'selected' ); break;
  54. }
  55. } );
  56. return container;
  57. }
  58. export { Toolbar };