Toggle control between two states, also displays a label

Introduced properties

init defaultinit(parent: nullable CompositeControl, enabled: nullable Bool, text: nullable Text, size: nullable Float, align: nullable Float)

app :: CheckBox :: defaultinit

fun is_checked: Bool

app :: CheckBox :: is_checked

Is this control in the checked/on state?
fun is_checked=(is_checked: Bool)

app :: CheckBox :: is_checked=

Is this control in the checked/on state?
fun layout: HorizontalLayout

app :: CheckBox :: layout

Root layout implementing this check box
protected fun layout=(layout: HorizontalLayout)

app :: CheckBox :: layout=

Root layout implementing this check box
fun lbl: Label

app :: CheckBox :: lbl

Label with the text
protected fun lbl=(lbl: Label)

app :: CheckBox :: lbl=

Label with the text
protected fun native=(native: NATIVE)

app :: CheckBox :: native=

protected fun native=(native: NATIVE)

app :: CheckBox :: native=

fun ui_switch: UISwitch

app :: CheckBox :: ui_switch

UISwitch acting as the real check box
protected fun ui_switch=(ui_switch: UISwitch)

app :: CheckBox :: ui_switch=

UISwitch acting as the real check box

Redefined properties

redef type NATIVE: GtkCheckButton

linux :: ui $ CheckBox :: NATIVE

Type of native
redef type NATIVE: UIStackView

ios :: ui $ CheckBox :: NATIVE

Type of the native implementation of this control
redef type NATIVE: Android_widget_CompoundButton

android :: ui $ CheckBox :: NATIVE

Type of native
redef type SELF: CheckBox

app $ CheckBox :: SELF

Type of this instance, automatically specialized in every class
redef init init

linux :: ui $ CheckBox :: init

redef init init

ios :: ui $ CheckBox :: init

redef init init

android :: ui $ CheckBox :: init

redef fun is_checked: Bool

android :: ui $ CheckBox :: is_checked

Is this control in the checked/on state?
redef fun is_checked: Bool

ios :: ui $ CheckBox :: is_checked

Is this control in the checked/on state?
redef fun is_checked: Bool

linux :: ui $ CheckBox :: is_checked

Is this control in the checked/on state?
redef fun is_checked=(value: Bool)

ios :: ui $ CheckBox :: is_checked=

Is this control in the checked/on state?
redef fun is_checked=(value: Bool)

android :: ui $ CheckBox :: is_checked=

Is this control in the checked/on state?
redef fun is_checked=(value: Bool)

linux :: ui $ CheckBox :: is_checked=

Is this control in the checked/on state?
redef fun native: NATIVE

ios :: ui $ CheckBox :: native

Native implementation of this control
redef fun native: NATIVE

android :: ui $ CheckBox :: native

The Android element used to implement self
redef fun native: NATIVE

linux :: ui $ CheckBox :: native

The GTK element used to implement self
redef fun signal(sender: GtkWidget, data: nullable Object)

linux :: ui $ CheckBox :: signal

return true to stop event processing, false to let it propagate
redef fun text: nullable Text

linux :: ui $ CheckBox :: text

Main Text of this control
redef fun text: nullable Text

ios :: ui $ CheckBox :: text

Main Text of this control
redef fun text=(value: nullable Text)

linux :: ui $ CheckBox :: text=

Main Text of this control
redef fun text=(text: nullable Text)

ios :: ui $ CheckBox :: text=

Main Text of this control

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type NATIVE: NSObject

app :: Control :: NATIVE

Type of the native implementation of this control
type NATIVE: JavaObject

app :: Control :: NATIVE

Type of native
type NATIVE: GtkWidget

app :: Control :: NATIVE

Type of native
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
fun align=(align: nullable Float)

app :: TextView :: align=

Align the text horizontally
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
init defaultinit(parent: nullable CompositeControl, enabled: nullable Bool, text: nullable Text, size: nullable Float, align: nullable Float)

app :: CheckBox :: defaultinit

init defaultinit(parent: nullable CompositeControl, enabled: nullable Bool)

app :: View :: defaultinit

init defaultinit(parent: nullable CompositeControl, enabled: nullable Bool, text: nullable Text, size: nullable Float, align: nullable Float)

app :: TextView :: defaultinit

init defaultinit(parent: nullable CompositeControl)

app :: Control :: defaultinit

abstract fun enabled: nullable Bool

app :: View :: enabled

Is this control enabled so the user can interact with it?
abstract fun enabled=(enabled: nullable Bool)

app :: View :: enabled=

Is this control enabled so the user can interact with it?
fun finalize

core :: Finalizable :: finalize

Liberate any resources held by self before the memory holding self is freed
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
fun is_checked: Bool

app :: CheckBox :: is_checked

Is this control in the checked/on state?
fun is_checked=(is_checked: Bool)

app :: CheckBox :: is_checked=

Is this control in the checked/on state?
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun layout: HorizontalLayout

app :: CheckBox :: layout

Root layout implementing this check box
protected fun layout=(layout: HorizontalLayout)

app :: CheckBox :: layout=

Root layout implementing this check box
fun lbl: Label

app :: CheckBox :: lbl

Label with the text
protected fun lbl=(lbl: Label)

app :: CheckBox :: lbl=

Label with the text
abstract fun native: NATIVE

app :: Control :: native

The GTK element used to implement self
abstract fun native: NATIVE

app :: Control :: native

Native implementation of this control
abstract fun native: NATIVE

app :: Control :: native

The Android element used to implement self
protected fun native=(native: NATIVE)

app :: CheckBox :: native=

protected fun native=(native: NATIVE)

app :: CheckBox :: native=

fun notify_observers(event: AppEvent)

app :: AppComponent :: notify_observers

Propagate event to all observers by calling AppObserver::on_event
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun observers: HashSet[AppObserver]

app :: AppComponent :: observers

All AppObserver notified of events raised by self
protected fun observers=(observers: HashSet[AppObserver])

app :: AppComponent :: observers=

All AppObserver notified of events raised by self
fun on_create

app :: AppComponent :: on_create

The application is being created
fun on_destroy

app :: AppComponent :: on_destroy

The application is being destroyed
fun on_event(event: AppEvent)

app :: AppObserver :: on_event

Notification of event raised by sender
fun on_pause

app :: AppComponent :: on_pause

The application leaves the active state but is still partially visible
fun on_restart

app :: AppComponent :: on_restart

The application returns to a visible state from a previous on_stop
fun on_restore_state

app :: AppComponent :: on_restore_state

The application is launching, restore its state from a previous on_save_state
fun on_resume

app :: AppComponent :: on_resume

The application enters the active state, it is in the foreground and interactive
fun on_save_state

app :: AppComponent :: on_save_state

The application may be destroyed soon, save its state for a future on_restore_state
fun on_start

app :: AppComponent :: on_start

The application is starting or restarting, it is visible to the user
fun on_stop

app :: AppComponent :: on_stop

The application is completely hidden from the user
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun parent: nullable CompositeControl

app :: Control :: parent

Direct parent Control in the control tree
fun parent=(parent: nullable CompositeControl)

app :: Control :: parent=

Direct parent Control in the control tree
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
abstract fun signal(sender: GtkWidget, user_data: nullable Object)

gtk :: GtkCallable :: signal

return true to stop event processing, false to let it propagate
fun size=(size: nullable Float)

app :: TextView :: size=

Set the relative size of the text
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun text: nullable Text

app :: TextView :: text

Main Text of this control
abstract fun text=(text: nullable Text)

app :: TextView :: text=

Main Text of this control
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
fun ui_switch: UISwitch

app :: CheckBox :: ui_switch

UISwitch acting as the real check box
protected fun ui_switch=(ui_switch: UISwitch)

app :: CheckBox :: ui_switch=

UISwitch acting as the real check box
package_diagram app::CheckBox CheckBox app::TextView TextView app::CheckBox->app::TextView app::View View app::TextView->app::View ...app::View ... ...app::View->app::View

Ancestors

abstract class AppComponent

app :: AppComponent

An element of an application that is notified of the application life cycle
interface AppObserver

app :: AppObserver

Observer of AppEvents raised by AppComponents
class Control

app :: Control

A control implementing the UI
class Finalizable

core :: Finalizable

An object needing finalization
interface GtkCallable

gtk :: GtkCallable

interface Object

core :: Object

The root of the class hierarchy.
abstract class View

app :: View

A visible Control

Parents

abstract class TextView

app :: TextView

A control displaying some text

Class definitions

app $ CheckBox
# Toggle control between two states, also displays a label
class CheckBox
	super TextView

	# Is this control in the checked/on state?
	var is_checked = false is writable
end
lib/app/ui.nit:278,1--284,3

ios :: ui $ CheckBox
# On iOS, check boxes are a layout composed of a label and an `UISwitch`
redef class CheckBox

	redef type NATIVE: UIStackView
	redef fun native do return layout.native

	# Root layout implementing this check box
	var layout = new HorizontalLayout(parent=self.parent)

	# Label with the text
	var lbl = new Label(parent=layout)

	# `UISwitch` acting as the real check box
	var ui_switch: UISwitch is noautoinit

	redef fun on_ios_event do notify_observers new ToggleEvent(self)

	init
	do
		# Tweak the layout so it is centered
		layout.native.distribution = new UIStackViewDistribution.equal_spacing
		layout.native.alignment = new UIStackViewAlignment.fill
		layout.native.layout_margins_relative_arrangement = true

		var s = new UISwitch
		native.add_arranged_subview s
		ui_switch = s

		ui_switch.set_callback self
	end

	redef fun text=(text) do lbl.text = text
	redef fun text do return lbl.text

	redef fun is_checked do return ui_switch.on
	redef fun is_checked=(value) do ui_switch.set_on_animated(value, true)
end
lib/ios/ui/ui.nit:306,1--342,3

linux :: ui $ CheckBox
redef class CheckBox
	redef type NATIVE: GtkCheckButton
	redef var native = new GtkCheckButton

	redef fun signal(sender, data) do notify_observers new ToggleEvent(self)
	init do native.signal_connect("toggled", self, null)

	redef fun text do return native.text
	redef fun text=(value) do native.text = (value or else "").to_s

	redef fun is_checked do return native.active
	redef fun is_checked=(value) do native.active = value
end
lib/linux/ui.nit:314,1--326,3

android :: ui $ CheckBox
redef class CheckBox
	redef type NATIVE: Android_widget_CompoundButton
	redef var native do return (new Android_widget_CheckBox(app.native_activity)).new_global_ref
	init do set_callback_on_toggle(native)

	redef fun is_checked do return native.is_checked
	redef fun is_checked=(value) do native.set_checked(value)

	private fun on_toggle do notify_observers new ToggleEvent(self)

	private fun set_callback_on_toggle(view: NATIVE)
	import on_toggle in "Java" `{
		final nit.app.NitObject final_sender_object = self;
		CheckBox_incr_ref(final_sender_object);

		view.setOnCheckedChangeListener(
			new android.widget.CompoundButton.OnCheckedChangeListener() {
				@Override
				public void onCheckedChanged(android.widget.CompoundButton buttonView, boolean isChecked) {
					CheckBox_on_toggle(final_sender_object);
				}
			});
	`}
end
lib/android/ui/ui.nit:267,1--290,3