Toolbar.js 1.8 KB

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