Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
collapsiblecontainer.c
Go to the documentation of this file.
2 {
3  protected ref CollapsibleHeader m_CollapsibleHeader;
4  protected bool m_Hidden;
5 
6  void CollapsibleContainer( LayoutHolder parent, int sort = -1 )
7  {
8  m_MainWidget.Show( true );
9 
10  if ( sort > -1 )
11  m_MainWidget.SetSort( sort + 2 );
12 
13  m_MainWidget = m_MainWidget.FindAnyWidget( "header" );
14 
15  m_Body = new array<ref LayoutHolder>;
16  m_CollapsibleHeader = new CollapsibleHeader( this, "CollapseButtonOnMouseButtonDown" );
17  }
18 
19  override void SetLayoutName()
20  {
21  m_LayoutName = WidgetLayoutName.CollapsibleContainer;
22  }
23 
24  EntityAI GetEntity()
25  {
26  return m_Entity;
27  }
28 
29  override void OnDropReceivedFromHeader( Widget w, int x, int y, Widget receiver ) { }
30 
31  override void Refresh()
32  {
33  super.Refresh();
34  }
35 
36  override void OnShow()
37  {
38  super.OnShow();
39  m_Hidden = false;
40  for (int i = 0; i < m_Body.Count(); i++)
41  {
42  m_Body.Get( i ).OnShow();
43  Container c = Container.Cast(m_Body.Get(i));
44  if (c)
45  {
46  c.Open();
47  }
48  }
49  SetCollapsibleHeaderArrowState(m_Hidden);
50  }
51 
52  override void OnHide()
53  {
54  m_Hidden = true;
55  if (m_CollapsibleHeader)
56  {
57  SetCollapsibleHeaderArrowState(m_Hidden);
58  }
59  else
60  {
61  super.OnHide();
62  }
63 
64  }
65 
66  override void Insert( LayoutHolder container, int pos = -1, bool immedUpdate = true )
67  {
68  super.Insert( container, pos, immedUpdate );
69 
70  //if ( immedUpdate )
71  //{
72  RecomputeOpenedContainers();
73  UpdateCollapseButtons();
74  //}
75 
76  SetCollapsibleHeaderArrowState(m_Hidden);
77  }
78 
79  override void Remove( LayoutHolder container )
80  {
81  super.Remove( container );
82  RecomputeOpenedContainers();
83  UpdateCollapseButtons();
84  }
85 
86  bool CanDisplayAnyCategory()
87  {
88  return false;
89  }
90 
91  void UpdateCollapseButtons()
92  {
93  #ifndef PLATFORM_CONSOLE
94  if (m_Body.Count() < 2)
95  {
96  if (m_CollapsibleHeader)
97  {
98  m_CollapsibleHeader.ShowCollapseButton(false);
99  }
100  }
101  else
102  {
103  if (m_CollapsibleHeader)
104  {
105  m_CollapsibleHeader.ShowCollapseButton(true);
106  }
107  }
108  #endif
109  }
110 
111  void LoadDefaultState()
112  {
113  m_Hidden = !ItemManager.GetInstance().GetDefaultHeaderOpenState( "VICINITY" );
114  //m_Closed = m_Hidden;
115 
116  if ( m_Hidden )
117  {
118  OnHide();
119  }
120  else
121  {
122  OnShow();
123  }
124  }
125 
126  bool IsHidden()
127  {
128  return m_Hidden;
129  }
130 
131  void CollapseButtonOnMouseButtonDown( Widget w )
132  {
133  Toggle();
134  }
135 
136  override void Toggle()
137  {
138  if (!m_Hidden)
139  {
140  for (int i = 1; i < m_Body.Count(); i++)
141  {
142  m_Body.Get( i ).OnHide();
143  Container c = Container.Cast(m_Body.Get(i));
144  if (c)
145  {
146  c.Close();
147  }
148  }
149  OnHide();
150  }
151  else
152  {
153  OnShow();
154  }
155  m_Closed = m_Hidden;
156 
157  SetCollapsibleHeaderArrowState(m_Hidden);
158 
159  UpdateCollapseButtons();
160  }
161 
162  override bool OnChildRemove( Widget w, Widget child )
163  {
164  if( w == GetMainWidget() )
165  GetMainWidget().Update();
166  return true;
167  }
168 
169  override bool OnChildAdd( Widget w, Widget child )
170  {
171  if( w == GetMainWidget() )
172  GetMainWidget().Update();
173  return true;
174  }
175 
176  override Header GetHeader()
177  {
178  return m_CollapsibleHeader;
179  }
180 
181  override void SetHeader(Header header)
182  {
183  m_CollapsibleHeader = CollapsibleHeader.Cast(header);
184  }
185 
186  void SetCollapsibleHeaderArrowState(bool open)
187  {
188  if (m_CollapsibleHeader)
189  {
190  m_CollapsibleHeader.SetArrowButtonOpened(open);
191  }
192  }
193 }
LayoutHolder
Definition: container.c:1
CollapsibleHeader
Definition: collapsibleheader.c:1
y
Icon y
WidgetLayoutName
Definition: widgetlayoutname.c:1
Header
Definition: header.c:1
Container
Definition: cargocontainer.c:2
ItemManager
Definition: itemmanager.c:1
array< ref LayoutHolder >
x
Icon x
CollapsibleContainer
Definition: collapsiblecontainer.c:1
Widget
Definition: enwidgets.c:189
EntityAI
Definition: building.c:5
m_Entity
EntityAI m_Entity
Definition: actiondebug.c:11