1 # This file is part of NIT (http://www.nitlanguage.org).
3 # Copyright 2014 Alexis Laferrière <alexis.laf@xymus.net>
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 # Native services from the `android.view` and `android.widget` namespaces
18 module native_ui
is android_api_min
14
23 import android.app.Activity;
25 import android.view.Gravity;
26 import android.view.View;
27 import android.view.ViewGroup;
28 import android.view.ViewGroup.MarginLayoutParams;
30 import android.widget.Button;
31 import android.widget.LinearLayout;
32 import android.widget.GridLayout;
33 import android.widget.PopupWindow;
34 import android.widget.TextView;
40 redef extern class NativeActivity
42 # Set the main layout of this activity
43 fun content_view
=(layout
: NativeViewGroup) in "Java" `{
44 self.setContentView(layout);
48 # A `View` for Android
49 extern class NativeView in "Java" `{ android.view.View `}
52 fun minimum_width=(val: Int) in "Java" `{ self.setMinimumWidth((int)val); `}
53 fun minimum_height
=(val
: Int) in "Java" `{ self.setMinimumHeight((int)val); `}
55 fun enabled: Bool in "Java" `{ return self.isEnabled(); `}
56 fun enabled
=(value
: Bool) in "Java" `{ self.setEnabled(value); `}
59 # A collection of `NativeView`
60 extern class NativeViewGroup in "Java" `{ android.view.ViewGroup `}
63 fun add_view
(view
: NativeView) in "Java" `{ self.addView(view); `}
65 fun add_view_with_weight(view: NativeView, weight: Float)
67 self.addView
(view
, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, (float
)weight
));
71 # A `NativeViewGroup` organized in a line
72 extern class NativeLinearLayout in "Java" `{ android.widget.LinearLayout `}
75 new(context
: NativeActivity) in "Java" `{ return new LinearLayout(context); `}
77 fun set_vertical in "Java" `{ self.setOrientation(LinearLayout.VERTICAL); `}
78 fun set_horizontal
in "Java" `{ self.setOrientation(LinearLayout.HORIZONTAL); `}
80 redef fun add_view(view) in "Java"
82 MarginLayoutParams params
= new MarginLayoutParams(
83 LinearLayout.LayoutParams.MATCH_PARENT,
84 LinearLayout.LayoutParams.WRAP_CONTENT);
85 self.addView
(view
, params
);
88 redef fun new_global_ref import sys, Sys.jni_env `{
89 Sys sys
= NativeLinearLayout_sys(self);
90 JNIEnv *env
= Sys_jni_env(sys
);
91 return (*env
)->NewGlobalRef(env
, self);
95 # A `NativeViewGroup` organized as a grid
96 extern class NativeGridLayout in "Java" `{ android.widget.GridLayout `}
99 new(context
: NativeActivity) in "Java" `{ return new android.widget.GridLayout(context); `}
101 fun row_count=(val: Int) in "Java" `{ self.setRowCount((int)val); `}
103 fun column_count
=(val
: Int) in "Java" `{ self.setColumnCount((int)val); `}
105 redef fun add_view(view) in "Java" `{ self.addView(view); `}
107 redef fun new_global_ref
import sys
, Sys.jni_env
`{
108 Sys sys = NativeGridLayout_sys(self);
109 JNIEnv *env = Sys_jni_env(sys);
110 return (*env)->NewGlobalRef(env, self);
114 extern class NativePopupWindow in "Java" `{ android.widget.PopupWindow `}
117 new (context: NativeActivity) in "Java" `{
118 PopupWindow self = new PopupWindow(context
);
119 self.setWindowLayoutMode
(LinearLayout.LayoutParams.MATCH_PARENT,
120 LinearLayout.LayoutParams.MATCH_PARENT);
121 self.setClippingEnabled
(false);
125 fun content_view=(layout: NativeViewGroup) in "Java" `{ self.setContentView(layout); `}
127 redef fun new_global_ref
import sys
, Sys.jni_env
`{
128 Sys sys = NativePopupWindow_sys(self);
129 JNIEnv *env = Sys_jni_env(sys);
130 return (*env)->NewGlobalRef(env, self);
134 extern class NativeTextView in "Java" `{ android.widget.TextView `}
137 new (context: NativeActivity) in "Java" `{ return new TextView(context); `}
139 fun text
: JavaString in "Java" `{ return self.getText().toString(); `}
141 fun text=(value: JavaString) in "Java" `{ self.setText(value); `}
143 fun gravity_center
in "Java" `{
144 self.setGravity(Gravity.CENTER);
147 fun text_size
: Float in "Java" `{
148 return self.getTextSize();
150 fun text_size
=(dpi
: Float) in "Java" `{
151 self.setTextSize(android.util.TypedValue.COMPLEX_UNIT_DIP, (float)dpi);
154 redef fun new_global_ref
import sys
, Sys.jni_env
`{
155 Sys sys = NativeTextView_sys(self);
156 JNIEnv *env = Sys_jni_env(sys);
157 return (*env)->NewGlobalRef(env, self);
161 extern class NativeEditText in "Java" `{ android.widget.EditText `}
164 redef type SELF: NativeEditText
166 new (context: NativeActivity) in "Java" `{ return new android.widget.EditText(context); `}
168 fun width
=(val
: Int) in "Java" `{ self.setWidth((int)val); `}
170 fun input_type_text in "Java" `{ self.setInputType(android.text.InputType.TYPE_CLASS_TEXT); `}
172 redef fun new_global_ref
import sys
, Sys.jni_env
`{
173 Sys sys = NativeEditText_sys(self);
174 JNIEnv *env = Sys_jni_env(sys);
175 return (*env)->NewGlobalRef(env, self);
179 extern class NativeButton in "Java" `{ android.widget.Button `}
182 redef type SELF: NativeButton
184 redef fun new_global_ref import sys, Sys.jni_env `{
185 Sys sys
= NativeButton_sys(self);
186 JNIEnv *env
= Sys_jni_env(sys
);
187 return (*env
)->NewGlobalRef(env
, self);