2022-01-05 18:33:18 +03:00
|
|
|
package rui
|
|
|
|
|
2022-01-15 01:20:04 +03:00
|
|
|
import "strings"
|
|
|
|
|
2022-07-26 18:36:00 +03:00
|
|
|
func (cell *tableCellView) Set(tag string, value any) bool {
|
2022-01-15 01:20:04 +03:00
|
|
|
return cell.set(strings.ToLower(tag), value)
|
|
|
|
}
|
|
|
|
|
2022-07-26 18:36:00 +03:00
|
|
|
func (cell *tableCellView) set(tag string, value any) bool {
|
2022-01-15 01:20:04 +03:00
|
|
|
switch tag {
|
|
|
|
case VerticalAlign:
|
|
|
|
tag = TableVerticalAlign
|
|
|
|
}
|
|
|
|
return cell.viewData.set(tag, value)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (cell *tableCellView) cssStyle(self View, builder cssBuilder) {
|
|
|
|
session := cell.Session()
|
|
|
|
cell.viewData.cssViewStyle(builder, session)
|
|
|
|
|
|
|
|
if value, ok := enumProperty(cell, TableVerticalAlign, session, 0); ok {
|
|
|
|
builder.add("vertical-align", enumProperties[TableVerticalAlign].values[value])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 20:25:45 +03:00
|
|
|
// GetTableContent returns a TableAdapter which defines the TableView content.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableContent(view View, subviewID ...string) TableAdapter {
|
|
|
|
if len(subviewID) > 0 && subviewID[0] != "" {
|
|
|
|
view = ViewByID(view, subviewID[0])
|
2022-01-16 20:25:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if view != nil {
|
|
|
|
if tableView, ok := view.(TableView); ok {
|
|
|
|
return tableView.content()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetTableRowStyle returns a TableRowStyle which defines styles of TableView rows.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableRowStyle(view View, subviewID ...string) TableRowStyle {
|
|
|
|
if len(subviewID) > 0 && subviewID[0] != "" {
|
|
|
|
view = ViewByID(view, subviewID[0])
|
2022-01-16 20:25:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if view != nil {
|
|
|
|
if tableView, ok := view.(TableView); ok {
|
|
|
|
return tableView.getRowStyle()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetTableColumnStyle returns a TableColumnStyle which defines styles of TableView columns.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableColumnStyle(view View, subviewID ...string) TableColumnStyle {
|
|
|
|
if len(subviewID) > 0 && subviewID[0] != "" {
|
|
|
|
view = ViewByID(view, subviewID[0])
|
2022-01-16 20:25:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if view != nil {
|
|
|
|
if tableView, ok := view.(TableView); ok {
|
|
|
|
return tableView.getColumnStyle()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetTableCellStyle returns a TableCellStyle which defines styles of TableView cells.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableCellStyle(view View, subviewID ...string) TableCellStyle {
|
|
|
|
if len(subviewID) > 0 && subviewID[0] != "" {
|
|
|
|
view = ViewByID(view, subviewID[0])
|
2022-01-16 20:25:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if view != nil {
|
|
|
|
if tableView, ok := view.(TableView); ok {
|
|
|
|
return tableView.getCellStyle()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2022-01-17 03:11:23 +03:00
|
|
|
// GetTableSelectionMode returns the mode of the TableView elements selection.
|
2022-01-05 18:33:18 +03:00
|
|
|
// Valid values are NoneSelection (0), CellSelection (1), and RowSelection (2).
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableSelectionMode(view View, subviewID ...string) int {
|
2022-07-28 12:41:50 +03:00
|
|
|
return enumStyledProperty(view, subviewID, SelectionMode, NoneSelection, false)
|
2022-01-05 18:33:18 +03:00
|
|
|
}
|
|
|
|
|
2022-11-23 15:10:29 +03:00
|
|
|
// GetTableVerticalAlign returns a vertical align in a TableView cell. Returns one of next values:
|
2022-01-16 20:25:45 +03:00
|
|
|
// TopAlign (0), BottomAlign (1), CenterAlign (2), and BaselineAlign (3)
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableVerticalAlign(view View, subviewID ...string) int {
|
2022-07-28 12:41:50 +03:00
|
|
|
return enumStyledProperty(view, subviewID, TableVerticalAlign, TopAlign, false)
|
2022-01-15 01:20:04 +03:00
|
|
|
}
|
|
|
|
|
2022-01-16 21:39:59 +03:00
|
|
|
// GetTableHeadHeight returns the number of rows in the table header.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableHeadHeight(view View, subviewID ...string) int {
|
2022-07-28 12:11:27 +03:00
|
|
|
return intStyledProperty(view, subviewID, HeadHeight, 0)
|
2022-01-16 21:39:59 +03:00
|
|
|
}
|
2022-01-16 20:25:45 +03:00
|
|
|
|
2022-01-16 21:39:59 +03:00
|
|
|
// GetTableFootHeight returns the number of rows in the table footer.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableFootHeight(view View, subviewID ...string) int {
|
2022-07-28 12:11:27 +03:00
|
|
|
return intStyledProperty(view, subviewID, FootHeight, 0)
|
2022-01-16 21:39:59 +03:00
|
|
|
}
|
2022-01-16 20:25:45 +03:00
|
|
|
|
|
|
|
// GetTableCurrent returns the row and column index of the TableView selected cell/row.
|
|
|
|
// If there is no selected cell/row or the selection mode is NoneSelection (0),
|
|
|
|
// then a value of the row and column index less than 0 is returned.
|
|
|
|
// If the selection mode is RowSelection (2) then the returned column index is less than 0.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableCurrent(view View, subviewID ...string) CellIndex {
|
|
|
|
if len(subviewID) > 0 && subviewID[0] != "" {
|
|
|
|
view = ViewByID(view, subviewID[0])
|
2022-01-15 01:20:04 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if view != nil {
|
2022-08-31 22:17:46 +03:00
|
|
|
if selectionMode := GetTableSelectionMode(view); selectionMode != NoneSelection {
|
2022-01-15 01:20:04 +03:00
|
|
|
if tableView, ok := view.(TableView); ok {
|
|
|
|
return tableView.getCurrent()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return CellIndex{Row: -1, Column: -1}
|
|
|
|
}
|
|
|
|
|
2022-01-05 18:33:18 +03:00
|
|
|
// GetTableCellClickedListeners returns listeners of event which occurs when the user clicks on a table cell.
|
|
|
|
// If there are no listeners then the empty list is returned.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableCellClickedListeners(view View, subviewID ...string) []func(TableView, int, int) {
|
|
|
|
if len(subviewID) > 0 && subviewID[0] != "" {
|
|
|
|
view = ViewByID(view, subviewID[0])
|
2022-01-05 18:33:18 +03:00
|
|
|
}
|
|
|
|
if view != nil {
|
|
|
|
if value := view.Get(TableCellClickedEvent); value != nil {
|
|
|
|
if result, ok := value.([]func(TableView, int, int)); ok {
|
|
|
|
return result
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return []func(TableView, int, int){}
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetTableCellSelectedListeners returns listeners of event which occurs when a table cell becomes selected.
|
|
|
|
// If there are no listeners then the empty list is returned.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableCellSelectedListeners(view View, subviewID ...string) []func(TableView, int, int) {
|
|
|
|
if len(subviewID) > 0 && subviewID[0] != "" {
|
|
|
|
view = ViewByID(view, subviewID[0])
|
2022-01-05 18:33:18 +03:00
|
|
|
}
|
|
|
|
if view != nil {
|
|
|
|
if value := view.Get(TableCellSelectedEvent); value != nil {
|
|
|
|
if result, ok := value.([]func(TableView, int, int)); ok {
|
|
|
|
return result
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return []func(TableView, int, int){}
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetTableRowClickedListeners returns listeners of event which occurs when the user clicks on a table row.
|
|
|
|
// If there are no listeners then the empty list is returned.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableRowClickedListeners(view View, subviewID ...string) []func(TableView, int) {
|
|
|
|
return getEventListeners[TableView, int](view, subviewID, TableRowClickedEvent)
|
2022-01-05 18:33:18 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
// GetTableRowSelectedListeners returns listeners of event which occurs when a table row becomes selected.
|
|
|
|
// If there are no listeners then the empty list is returned.
|
2022-08-31 22:17:46 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
|
|
|
|
func GetTableRowSelectedListeners(view View, subviewID ...string) []func(TableView, int) {
|
|
|
|
return getEventListeners[TableView, int](view, subviewID, TableRowSelectedEvent)
|
2022-01-05 18:33:18 +03:00
|
|
|
}
|
2022-04-14 12:05:45 +03:00
|
|
|
|
|
|
|
// ReloadTableViewData updates TableView
|
2023-05-14 17:53:26 +03:00
|
|
|
// If the second argument (subviewID) is not specified or it is "" then updates the first argument (TableView).
|
2022-08-31 22:17:46 +03:00
|
|
|
func ReloadTableViewData(view View, subviewID ...string) bool {
|
2022-04-14 12:05:45 +03:00
|
|
|
var tableView TableView
|
2022-08-31 22:17:46 +03:00
|
|
|
if len(subviewID) > 0 && subviewID[0] != "" {
|
|
|
|
if tableView = TableViewByID(view, subviewID[0]); tableView == nil {
|
2022-04-14 12:05:45 +03:00
|
|
|
return false
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
var ok bool
|
|
|
|
if tableView, ok = view.(TableView); !ok {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
tableView.ReloadTableData()
|
|
|
|
return true
|
|
|
|
}
|
2023-05-14 17:53:26 +03:00
|
|
|
|
|
|
|
// ReloadTableViewCell updates the given table cell.
|
|
|
|
// If the last argument (subviewID) is not specified or it is "" then updates the cell of the first argument (TableView).
|
|
|
|
func ReloadTableViewCell(row, column int, view View, subviewID ...string) bool {
|
|
|
|
var tableView TableView
|
|
|
|
if len(subviewID) > 0 && subviewID[0] != "" {
|
|
|
|
if tableView = TableViewByID(view, subviewID[0]); tableView == nil {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
var ok bool
|
|
|
|
if tableView, ok = view.(TableView); !ok {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
tableView.ReloadCell(row, column)
|
|
|
|
return true
|
|
|
|
}
|