@@ -10,6 +10,9 @@ import vtkMapper from '@kitware/vtk.js/Rendering/Core/Mapper';
1010import vtkWidgetManager from '@kitware/vtk.js/Widgets/Core/WidgetManager' ;
1111
1212import vtkTransformControlsWidget from '@kitware/vtk.js/Widgets/Widgets3D/TransformControlsWidget' ;
13+
14+ import controlPanel from './controller.html' ;
15+
1316const { TransformMode } = vtkTransformControlsWidget ;
1417
1518// ----------------------------------------------------------------------------
@@ -82,19 +85,30 @@ global.r = renderer;
8285global . rw = renderWindow ;
8386global . vw = viewWidget ;
8487
88+ function setTransformMode ( mode ) {
89+ widget . setMode ( mode ) ;
90+ renderWindow . render ( ) ;
91+ }
92+
93+ fullScreenRenderer . addController ( controlPanel ) ;
94+
95+ const transformModeSelector = document . querySelector ( '.mode' ) ;
96+ transformModeSelector . addEventListener ( 'change' , ( e ) => {
97+ const idx = Number ( e . target . value ) ;
98+ const mode = e . target [ idx ] . dataset . mode ; // Retrieve mode from HTML
99+ setTransformMode ( mode ) ;
100+ } ) ;
101+
102+ const keyMap = {
103+ t : TransformMode . TRANSLATE ,
104+ q : TransformMode . ROTATE ,
105+ x : TransformMode . SCALE ,
106+ } ;
107+
85108window . onkeydown = ( ev ) => {
86- switch ( ev . key ) {
87- case 'q' :
88- widget . setMode ( TransformMode . ROTATE ) ;
89- renderWindow . render ( ) ;
90- break ;
91- case 't' :
92- widget . setMode ( TransformMode . TRANSLATE ) ;
93- renderWindow . render ( ) ;
94- break ;
95- case 'x' :
96- widget . setMode ( TransformMode . SCALE ) ;
97- renderWindow . render ( ) ;
98- break ;
109+ const mode = keyMap [ ev . key ] ;
110+ if ( mode !== undefined ) {
111+ transformModeSelector . value = Object . values ( keyMap ) . indexOf ( mode ) ;
112+ setTransformMode ( keyMap [ ev . key ] ) ;
99113 }
100114} ;
0 commit comments