/
equipment_modifiers_panel.go
65 lines (58 loc) · 1.99 KB
/
equipment_modifiers_panel.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
* Copyright ©1998-2022 by Richard A. Wilkes. All rights reserved.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, version 2.0. If a copy of the MPL was not distributed with
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This Source Code Form is "Incompatible With Secondary Licenses", as
* defined by the Mozilla Public License, version 2.0.
*/
package ux
import (
"github.com/google/uuid"
"github.com/richardwilkes/gcs/v5/model/gurps"
"github.com/richardwilkes/unison"
"github.com/richardwilkes/unison/enums/align"
"github.com/richardwilkes/unison/enums/paintstyle"
)
type equipmentModifiersPanel struct {
unison.Panel
entity *gurps.Entity
modifiers *[]*gurps.EquipmentModifier
provider TableProvider[*gurps.EquipmentModifier]
table *unison.Table[*Node[*gurps.EquipmentModifier]]
}
func newEquipmentModifiersPanel(entity *gurps.Entity, modifiers *[]*gurps.EquipmentModifier) *equipmentModifiersPanel {
p := &equipmentModifiersPanel{
entity: entity,
modifiers: modifiers,
}
p.Self = p
p.SetLayout(&unison.FlexLayout{Columns: 1})
p.SetLayoutData(&unison.FlexLayoutData{
HSpan: 2,
HAlign: align.Fill,
HGrab: true,
})
p.SetBorder(unison.NewLineBorder(gurps.HeaderColor, 0, unison.NewUniformInsets(1), false))
p.DrawCallback = func(gc *unison.Canvas, rect unison.Rect) {
gc.DrawRect(rect, unison.ContentColor.Paint(gc, rect, paintstyle.Fill))
}
p.provider = NewEquipmentModifiersProvider(p, true)
p.table = newEditorTable(p.AsPanel(), p.provider)
p.table.RefKey = "equipment-modifiers-" + uuid.New().String()
return p
}
func (p *equipmentModifiersPanel) Entity() *gurps.Entity {
return p.entity
}
func (p *equipmentModifiersPanel) EquipmentModifierList() []*gurps.EquipmentModifier {
return *p.modifiers
}
func (p *equipmentModifiersPanel) SetEquipmentModifierList(list []*gurps.EquipmentModifier) {
*p.modifiers = list
sel := p.table.CopySelectionMap()
p.table.SyncToModel()
p.table.SetSelectionMap(sel)
}