1
+ package com .annimon .ownlang .modules .forms ;
2
+
3
+ import com .annimon .ownlang .lib .Arguments ;
4
+ import static com .annimon .ownlang .lib .Converters .*;
5
+ import com .annimon .ownlang .lib .Function ;
6
+ import com .annimon .ownlang .lib .MapValue ;
7
+ import com .annimon .ownlang .lib .NumberValue ;
8
+ import com .annimon .ownlang .lib .StringValue ;
9
+ import com .annimon .ownlang .lib .Value ;
10
+ import com .annimon .ownlang .lib .ValueUtils ;
11
+ import java .awt .Window ;
12
+ import java .awt .event .WindowEvent ;
13
+ import java .awt .event .WindowListener ;
14
+
15
+ public class WindowValue extends ContainerValue {
16
+
17
+ private final Window window ;
18
+
19
+ public WindowValue (int functionsCount , Window window ) {
20
+ super (functionsCount + 18 , window );
21
+ this .window = window ;
22
+ init ();
23
+ }
24
+
25
+ private void init () {
26
+ set ("addWindowListener" , this ::addWindowListener );
27
+ set ("dispose" , voidToVoid (window ::dispose ));
28
+ set ("isActive" , voidToBoolean (window ::isActive ));
29
+ set ("isAlwaysOnTop" , voidToBoolean (window ::isAlwaysOnTop ));
30
+ set ("isAlwaysOnTopSupported" , voidToBoolean (window ::isAlwaysOnTopSupported ));
31
+ set ("isAutoRequestFocus" , voidToBoolean (window ::isAutoRequestFocus ));
32
+ set ("isFocusableWindow" , voidToBoolean (window ::isFocusableWindow ));
33
+ set ("isFocused" , voidToBoolean (window ::isFocused ));
34
+ set ("isLocationByPlatform" , voidToBoolean (window ::isLocationByPlatform ));
35
+ set ("isShowing" , voidToBoolean (window ::isShowing ));
36
+ set ("getOpacity" , voidToFloat (window ::getOpacity ));
37
+ set ("pack" , voidToVoid (window ::pack ));
38
+ set ("setAlwaysOnTop" , booleanOptToVoid (window ::setAlwaysOnTop ));
39
+ set ("setAutoRequestFocus" , booleanToVoid (window ::setAutoRequestFocus ));
40
+ set ("setFocusableWindowState" , booleanToVoid (window ::setFocusableWindowState ));
41
+ set ("setLocationByPlatform" , booleanOptToVoid (window ::setLocationByPlatform ));
42
+ set ("setOpacity" , floatToVoid (window ::setOpacity ));
43
+ set ("toBack" , voidToVoid (window ::toBack ));
44
+ set ("toFront" , voidToVoid (window ::toFront ));
45
+ }
46
+
47
+
48
+ private Value addWindowListener (Value [] args ) {
49
+ Arguments .check (1 , args .length );
50
+ final Function action = ValueUtils .consumeFunction (args [0 ], 0 );
51
+ window .addWindowListener (new WindowListener () {
52
+ @ Override
53
+ public void windowOpened (WindowEvent e ) {
54
+ handleWindowEvent ("opened" , e );
55
+ }
56
+
57
+ @ Override
58
+ public void windowClosing (WindowEvent e ) {
59
+ handleWindowEvent ("closing" , e );
60
+ }
61
+
62
+ @ Override
63
+ public void windowClosed (WindowEvent e ) {
64
+ handleWindowEvent ("closed" , e );
65
+ }
66
+
67
+ @ Override
68
+ public void windowIconified (WindowEvent e ) {
69
+ handleWindowEvent ("iconified" , e );
70
+ }
71
+
72
+ @ Override
73
+ public void windowDeiconified (WindowEvent e ) {
74
+ handleWindowEvent ("deiconified" , e );
75
+ }
76
+
77
+ @ Override
78
+ public void windowActivated (WindowEvent e ) {
79
+ handleWindowEvent ("activated" , e );
80
+ }
81
+
82
+ @ Override
83
+ public void windowDeactivated (WindowEvent e ) {
84
+ handleWindowEvent ("deactivated" , e );
85
+ }
86
+
87
+ private void handleWindowEvent (String type , final WindowEvent e ) {
88
+ final MapValue map = new MapValue (4 );
89
+ map .set ("id" , NumberValue .of (e .getID ()));
90
+ map .set ("newState" , NumberValue .of (e .getNewState ()));
91
+ map .set ("oldState" , NumberValue .of (e .getOldState ()));
92
+ map .set ("paramString" , new StringValue (e .paramString ()));
93
+ action .execute (new StringValue (type ), map );
94
+ }
95
+ });
96
+ return NumberValue .ZERO ;
97
+ }
98
+ }
0 commit comments