package com.SalmanDev.FocusTools; import android.content.Context; import android.util.Log; import android.view.View; import android.view.View.OnFocusChangeListener; import android.widget.ScrollView; import android.widget.HorizontalScrollView; import com.google.appinventor.components.annotations.*; import com.google.appinventor.components.runtime.*; import com.google.appinventor.components.annotations.DesignerComponent; import com.google.appinventor.components.annotations.DesignerProperty; import com.google.appinventor.components.annotations.PropertyCategory; import com.google.appinventor.components.annotations.SimpleObject; import com.google.appinventor.components.annotations.SimpleFunction; import com.google.appinventor.components.annotations.SimpleEvent; import com.google.appinventor.components.annotations.SimpleProperty; import com.google.appinventor.components.runtime.AndroidNonvisibleComponent; import com.google.appinventor.components.runtime.AndroidViewComponent; import com.google.appinventor.components.runtime.EventDispatcher; import com.google.appinventor.components.common.ComponentCategory; import com.google.appinventor.components.annotations.SimpleProperty; import com.google.appinventor.components.common.PropertyTypeConstants; @DesignerComponent(version = 1, description = "Created by Salman Developer", category = ComponentCategory.EXTENSION, nonVisible = true, iconName = "https://img.icons8.com/fluent/16/000000/source-code.png") @SimpleObject(external = true) public class FocusTools extends AndroidNonvisibleComponent { private ComponentContainer container; public FocusTools(ComponentContainer container) { super(container.$form()); this.container = container; } @SimpleFunction(description = "Method for RequestFocus") public void RequestFocus(final AndroidViewComponent component) { View view = component.getView(); view.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus){ if (hasFocus) { GotFocus (component); } else { LostFocus (component); } } }); view.requestFocus(); } @SimpleFunction(description = "Method for RequestFocus Vertical Scroll Arrangement") public void RequestFocusVScroll(VerticalScrollArrangement arrangement, int focus) { ScrollView sv = (ScrollView) arrangement.getView(); sv.fullScroll(focus); } @SimpleFunction(description = "Method for RequestFocus Horizontal Scroll Arrangement") public void RequestFocusHScroll(HorizontalScrollArrangement arrangement, int focus) { HorizontalScrollView sv = (HorizontalScrollView) arrangement.getView(); sv.fullScroll(focus); } @SimpleEvent(description = "Event raised when the %type% is selected for input, such as by " + "the user touching it.") public void GotFocus(AndroidViewComponent component) { EventDispatcher.dispatchEvent(this, "GotFocus", component); } @SimpleEvent(description = "Event raised when the %type% is no longer selected for input, such " + "as if the user touches a different text box.") public void LostFocus(AndroidViewComponent component) { EventDispatcher.dispatchEvent(this, "LostFocus", component); } }