﻿B4J=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=8.5
@EndOfDesignText@
'Custom View class
#DesignerProperty: Key: Columns, DisplayName: Columns, FieldType: Int, DefaultValue: 3, MinRange: 0
#DesignerProperty: Key: Rows, DisplayName: Rows, FieldType: Int, DefaultValue: 3, MinRange: 0

Sub Class_Globals
	Private mEventName As String 'ignore
	Private mCallBack As Object 'ignore
	Private mBase As B4XView
	Private panes(0,0) As B4XView
	Private columns, rows As Int
	Private xui As XUI
End Sub


Public Sub Initialize (Callback As Object, EventName As String)
   mEventName = EventName
   mCallBack = Callback
End Sub

'Base type must be Object
Public Sub DesignerCreateView (Base As Object, Lbl As Label, Props As Map)
	mBase = Base
	columns = Props.Get("Columns")
	rows = Props.Get("Rows")
	Dim panes(columns, rows) As B4XView
	Dim w As Int = Ceil(mBase.Width / columns)
	Dim h As Int = Ceil(mBase.Height / rows)
	For c = 0 To columns - 1
		For r = 0 To rows - 1
			Dim p As B4XView  = xui.CreatePanel("")
			p.SetLayoutAnimated(0, w * c, h * r, w, h)
			panes(c, r) = p
			mBase.AddView(p, w * c, h * r, w, h)
		Next
	Next
End Sub

#IF B4J or B4I
Private Sub Base_Resize (Width As Double, Height As Double)
	Dim w As Int = Round(Width / columns)
	Dim h As Int = Round(Height / rows)
	For c = 0 To columns - 1
		For r = 0 To rows - 1
			panes(c, r).SetLayoutAnimated(0, w * c, h * r, w, h)
		Next
	Next
End Sub
#End If

Public Sub GetRows As Int
	Return rows -1
End Sub

public Sub GetColumns As Int
	Return columns -1
End Sub

Public Sub GetPane(Column As Int, Row As Int) As B4XView
	Return panes(Column, Row)
End Sub