erm/vendor/github.com/lxn/walk/tableviewcolumnlist.go
2021-07-30 23:29:20 +01:00

118 lines
2.5 KiB
Go

// Copyright 2013 The Walk Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build windows
package walk
type TableViewColumnList struct {
tv *TableView
items []*TableViewColumn
}
func newTableViewColumnList(tv *TableView) *TableViewColumnList {
return &TableViewColumnList{tv: tv}
}
// Add adds a TableViewColumn to the end of the list.
func (l *TableViewColumnList) Add(item *TableViewColumn) error {
return l.Insert(len(l.items), item)
}
// At returns the TableViewColumn as the specified index.
//
// Bounds are not checked.
func (l *TableViewColumnList) At(index int) *TableViewColumn {
return l.items[index]
}
// Clear removes all TableViewColumns from the list.
func (l *TableViewColumnList) Clear() error {
for _ = range l.items {
if err := l.RemoveAt(0); err != nil {
return err
}
}
return nil
}
// Index returns the index of the specified TableViewColumn or -1 if it is not
// found.
func (l *TableViewColumnList) Index(item *TableViewColumn) int {
for i, lvi := range l.items {
if lvi == item {
return i
}
}
return -1
}
// Contains returns whether the specified TableViewColumn is found in the list.
func (l *TableViewColumnList) Contains(item *TableViewColumn) bool {
return l.Index(item) > -1
}
// Insert inserts TableViewColumn item at position index.
//
// A TableViewColumn cannot be contained in multiple TableViewColumnLists at the
// same time.
func (l *TableViewColumnList) Insert(index int, item *TableViewColumn) error {
if item.tv != nil {
return newError("duplicate insert")
}
item.tv = l.tv
if item.visible {
if err := item.create(); err != nil {
item.tv = nil
return err
}
}
l.items = append(l.items, nil)
copy(l.items[index+1:], l.items[index:])
l.items[index] = item
return nil
}
// Len returns the number of TableViewColumns in the list.
func (l *TableViewColumnList) Len() int {
return len(l.items)
}
// Remove removes the specified TableViewColumn from the list.
func (l *TableViewColumnList) Remove(item *TableViewColumn) error {
index := l.Index(item)
if index == -1 {
return nil
}
return l.RemoveAt(index)
}
// RemoveAt removes the TableViewColumn at position index.
func (l *TableViewColumnList) RemoveAt(index int) error {
tvc := l.items[index]
if err := tvc.destroy(); err != nil {
return err
}
tvc.tv = nil
l.items = append(l.items[:index], l.items[index+1:]...)
return nil
}
func (l *TableViewColumnList) unsetColumnsTV() {
for _, tvc := range l.items {
tvc.tv = nil
}
}