forked from mrdoob/three.js
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathToolbar.js
84 lines (55 loc) · 2.01 KB
/
Toolbar.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import { UIPanel, UIButton, UICheckbox } from './libs/ui.js';
function Toolbar( editor ) {
const signals = editor.signals;
const strings = editor.strings;
const container = new UIPanel();
container.setId( 'toolbar' );
// translate / rotate / scale
const translateIcon = document.createElement( 'img' );
translateIcon.title = strings.getKey( 'toolbar/translate' );
translateIcon.src = 'images/translate.svg';
const translate = new UIButton();
translate.dom.className = 'Button selected';
translate.dom.appendChild( translateIcon );
translate.onClick( function () {
signals.transformModeChanged.dispatch( 'translate' );
} );
container.add( translate );
const rotateIcon = document.createElement( 'img' );
rotateIcon.title = strings.getKey( 'toolbar/rotate' );
rotateIcon.src = 'images/rotate.svg';
const rotate = new UIButton();
rotate.dom.appendChild( rotateIcon );
rotate.onClick( function () {
signals.transformModeChanged.dispatch( 'rotate' );
} );
container.add( rotate );
const scaleIcon = document.createElement( 'img' );
scaleIcon.title = strings.getKey( 'toolbar/scale' );
scaleIcon.src = 'images/scale.svg';
const scale = new UIButton();
scale.dom.appendChild( scaleIcon );
scale.onClick( function () {
signals.transformModeChanged.dispatch( 'scale' );
} );
container.add( scale );
const local = new UICheckbox( false );
local.dom.title = strings.getKey( 'toolbar/local' );
local.onChange( function () {
signals.spaceChanged.dispatch( this.getValue() === true ? 'local' : 'world' );
} );
container.add( local );
//
signals.transformModeChanged.add( function ( mode ) {
translate.dom.classList.remove( 'selected' );
rotate.dom.classList.remove( 'selected' );
scale.dom.classList.remove( 'selected' );
switch ( mode ) {
case 'translate': translate.dom.classList.add( 'selected' ); break;
case 'rotate': rotate.dom.classList.add( 'selected' ); break;
case 'scale': scale.dom.classList.add( 'selected' ); break;
}
} );
return container;
}
export { Toolbar };