Toolbar.js 2.0 KB

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