Toolbar.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. var buttons = new UI.Panel();
  9. container.add( buttons );
  10. // translate / rotate / scale
  11. var translate = new UI.Button( 'translate' );
  12. translate.dom.title = 'W';
  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.dom.title = 'E';
  20. rotate.onClick( function () {
  21. signals.transformModeChanged.dispatch( 'rotate' );
  22. } );
  23. buttons.add( rotate );
  24. var scale = new UI.Button( 'scale' );
  25. scale.dom.title = 'R';
  26. scale.onClick( function () {
  27. signals.transformModeChanged.dispatch( 'scale' );
  28. } );
  29. buttons.add( scale );
  30. signals.transformModeChanged.add( function ( mode ) {
  31. translate.dom.classList.remove( 'selected' );
  32. rotate.dom.classList.remove( 'selected' );
  33. scale.dom.classList.remove( 'selected' );
  34. switch ( mode ) {
  35. case 'translate': translate.dom.classList.add( 'selected' ); break;
  36. case 'rotate': rotate.dom.classList.add( 'selected' ); break;
  37. case 'scale': scale.dom.classList.add( 'selected' ); break;
  38. }
  39. } );
  40. // grid
  41. var grid = new UI.Number( 25 ).setWidth( '40px' ).onChange( update );
  42. buttons.add( new UI.Text( 'grid: ' ) );
  43. buttons.add( grid );
  44. var snap = new UI.THREE.Boolean( false, 'snap' ).onChange( update );
  45. buttons.add( snap );
  46. var local = new UI.THREE.Boolean( false, 'local' ).onChange( update );
  47. buttons.add( local );
  48. var showGrid = new UI.THREE.Boolean( true, 'show' ).onChange( update );
  49. buttons.add( showGrid );
  50. function update() {
  51. signals.snapChanged.dispatch( snap.getValue() === true ? grid.getValue() : null );
  52. signals.spaceChanged.dispatch( local.getValue() === true ? "local" : "world" );
  53. signals.showGridChanged.dispatch( showGrid.getValue() );
  54. }
  55. return container;
  56. };