226 {
227 super.onCreate(savedInstanceState);
228
229 hideSystemBars();
230
231 this.setContentView(R.layout.session);
232
233 Log.v(TAG, "Session.onCreate");
234
235
236
237
238
239
240
241
242 final View activityRootView = findViewById(R.id.session_root_view);
243 activityRootView.setFitsSystemWindows(false);
244 ViewCompat.setOnApplyWindowInsetsListener(activityRootView,
245 (v, insets) -> onWindowInsetsChanged(v, insets));
246 activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(
247 new OnGlobalLayoutListener() {
248 @Override public void onGlobalLayout()
249 {
250 screen_width = scrollView.getWidth() - scrollView.getPaddingLeft() -
251 scrollView.getPaddingRight();
252 screen_height = scrollView.getHeight() - scrollView.getPaddingTop() -
253 scrollView.getPaddingBottom();
254
255
256 if (!sessionRunning && getIntent() != null)
257 {
258 processIntent(getIntent());
259 sessionRunning = true;
260 }
261 }
262 });
263
264 sessionView = findViewById(R.id.sessionView);
265 sessionView.requestFocus();
266
267 touchPointerView = findViewById(R.id.touchPointerView);
268
269 floatingToolbar = new FloatingToolbar(this, new FloatingToolbar.Listener() {
270 @Override public void onToggleTouchPointer()
271 {
272 if (inputManager != null)
273 inputManager.toggleTouchPointer();
274 }
275 @Override public void onToggleKeyboard()
276 {
277 if (inputManager != null)
278 inputManager.toggleKeyboard();
279 }
280 });
281
282 ExtendedKeyboardView keyboard = findViewById(R.id.extended_keyboard);
283
284 scrollView = findViewById(R.id.sessionScrollView);
285 scrollView.setScrollViewListener(null);
286 railManager = new RailWindowManager(this, findViewById(R.id.railContainer), sessionView);
287 sessionViewModel = new ViewModelProvider(this).get(SessionViewModel.class);
288 sessionViewModel.getState().observe(this, this::onConnectionStateChanged);
289
290 dialogs = new SessionDialogs(this, new SessionDialogs.OnUserCancelListener() {
291 @Override public void onUserCancel()
292 {
293 connectCancelledByUser = true;
294 }
295 });
296
297
298 inputManager =
299 new SessionInputManager(this, scrollView, sessionView, touchPointerView, keyboard);
300 sessionView.setSessionViewListener(inputManager);
301 touchPointerView.setTouchPointerListener(inputManager);
302 sessionView.setScaleGestureDetector(
303 new ScaleGestureDetector(this, inputManager.getPinchZoomListener()));
304
305 mClipboardManager = ClipboardManagerProxy.getClipboardManager(this);
306 mClipboardManager.addClipboardChangedListener(this);
307
308 getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
309 @Override public void handleOnBackPressed()
310 {
311 handleBackPressed();
312 }
313 });
314
315 hideSystemBars();
316 }