1 // $Id: overviewmenus.h,v 1.16 2011/03/07 06:08:50 bobgian Exp $
2 
3 /*
4   Copyright 2002  Peter Beerli, Mary Kuhner, Jon Yamato and Joseph Felsenstein
5 
6   This software is distributed free of charge for non-commercial use
7   and is copyrighted.  Of course, we do not guarantee that the software
8   works, and are not responsible for any damage you may cause or have.
9 */
10 
11 #ifndef OVERVIEWMENUS_H
12 #define OVERVIEWMENUS_H
13 
14 #include <string>
15 #include "menudefs.h"
16 #include "newmenu.h"
17 #include "newmenuitems.h"
18 #include "setmenuitem.h"
19 #include "twodtable.h"
20 
21 class Display;
22 class UIInterface;
23 
24 class ChainTable : public TwoDTable
25 {
26   protected:
27     virtual long ColCount(UIInterface & ui);
28     virtual long RowCount(UIInterface & ui);
29     virtual std::string Title(UIInterface & ui);
30     virtual std::string ColLabel(UIInterface & ui, long index);
31     virtual std::string RowLabel(UIInterface & ui, long index);
32     virtual std::string Cell(UIInterface & ui, long rowIndex, long colIndex);
33   public:
34     ChainTable(UIInterface &);
35     virtual ~ChainTable();
36 };
37 
38 class ForceEventTable : public TwoDTable
39 {
40   protected:
41     virtual const std::string forceName(long);
42     virtual const std::string forceMaxEvents(long);
43     virtual long getForceIndex(UIInterface & ui, long index);
44     virtual long ColCount(UIInterface & ui);
45     virtual long RowCount(UIInterface & ui);
46     virtual std::string Title(UIInterface & ui);
47     virtual std::string ColLabel(UIInterface & ui, long index);
48     virtual std::string RowLabel(UIInterface & ui, long index);
49     virtual std::string Cell(UIInterface & ui, long rowIndex, long colIndex);
50   public:
51     ForceEventTable(UIInterface &);
52     virtual ~ForceEventTable();
53 };
54 
55 class StartParamTable : public TwoDTable
56 {
57   protected:
58     virtual long ColCount(UIInterface & ui);
59     virtual long RowCount(UIInterface & ui);
60     virtual std::string Title(UIInterface & ui);
61     virtual std::string RowHeader(UIInterface & ui);
62     virtual std::string ColLabel(UIInterface & ui, long index);
63     virtual std::string RowLabel(UIInterface & ui, long index);
64     virtual std::string Cell(UIInterface & ui, long rowIndex, long colIndex);
65   public:
66     StartParamTable(UIInterface &);
67     virtual ~StartParamTable();
68 };
69 
70 class TemperatureTable : public TwoDTable
71 {
72   protected:
73     virtual long ColCount(UIInterface & ui);
74     virtual long RowCount(UIInterface & ui);
75     virtual std::string Title(UIInterface & ui);
76     virtual std::string ColLabel(UIInterface & ui, long index);
77     virtual std::string RowLabel(UIInterface & ui, long index);
78     virtual std::string Cell(UIInterface & ui, long rowIndex, long colIndex);
79   public:
80     TemperatureTable(UIInterface &);
81     virtual ~TemperatureTable();
82     virtual bool IsVisible();
83 };
84 
85 class DisplayOnlyMenuItem : public OutputOnlyMenuItem
86 {
87   protected:
88     UIInterface & ui;
89     UIId keyId;
90   public:
91     DisplayOnlyMenuItem(const std::string &,UIInterface&);
92     DisplayOnlyMenuItem(const std::string &,UIInterface&,UIId);
93     virtual ~DisplayOnlyMenuItem();
94     virtual UIId GetKeyid();
95     virtual std::string GetText();
96     virtual std::string GetVariableText();
97 };
98 
99 class DisplayOnlyMenuItemIfTrue : public DisplayOnlyMenuItem
100 {
101   protected:
102     std::string guard;
103   public:
104     DisplayOnlyMenuItemIfTrue(
105         const std::string &,
106         const std::string &,
107         UIInterface &);
108     DisplayOnlyMenuItemIfTrue(
109         const std::string &,
110         const std::string &,
111         UIInterface &,
112         UIId);
113     virtual bool IsVisible();
114     virtual ~DisplayOnlyMenuItemIfTrue();
115 };
116 
117 class DisplayOnlyMenuItemIfNonZero : public DisplayOnlyMenuItem
118 {
119   public:
120     DisplayOnlyMenuItemIfNonZero(
121         const std::string &,
122         UIInterface &);
123     virtual ~DisplayOnlyMenuItemIfNonZero();
124     virtual bool IsVisible();
125 };
126 
127 class DisplayOnlyMenu : public NewMenu
128 {
129   public:
130     DisplayOnlyMenu(UIInterface & myui, const std::string &,const std::string &);
131     virtual ~DisplayOnlyMenu();
132 };
133 
134 class FileOverviewMenu : public DisplayOnlyMenu
135 {
136   public:
137     FileOverviewMenu(UIInterface & myui);
138     virtual ~FileOverviewMenu();
139 };
140 
141 class FileOverviewMenuCreator : public NewMenuCreator
142 {
143   protected:
144     UIInterface & ui;
145   public:
FileOverviewMenuCreator(UIInterface & myui)146     FileOverviewMenuCreator(UIInterface & myui) : ui(myui) {};
~FileOverviewMenuCreator()147     virtual ~FileOverviewMenuCreator() {};
Create()148     NewMenu_ptr Create() { return NewMenu_ptr(new FileOverviewMenu(ui));};
149 };
150 
151 class DataOverviewMenuItem : public OutputOnlyMenuItem
152 {
153   protected:
154     UIInterface & ui;
155     UIId            m_id;
156   public:
157     DataOverviewMenuItem(UIInterface & myui,UIId id);
158     virtual ~DataOverviewMenuItem();
159     virtual std::string GetText();
160 };
161 
162 class RegionDataOverviewMenu : public DisplayOnlyMenu
163 {
164   protected:
165     UIId    m_id;
166   public:
167     RegionDataOverviewMenu(UIInterface & ui,UIId id);
168     virtual ~RegionDataOverviewMenu();
169 };
170 
171 class DataOverviewMenuItemGroup :   public MenuDisplayGroupBaseImplementation
172 {
173   protected:
174     MenuInteraction_ptr MakeOneHandler(UIId id);
175   public:
176     DataOverviewMenuItemGroup(UIInterface & ui);
177     ~DataOverviewMenuItemGroup();
178     vector<UIId> GetVisibleIds();
179     std::string GetText(UIId id);
180     std::string GetVariableText(UIId id);
181 };
182 
183 class DataOverviewMenu : public DisplayOnlyMenu
184 {
185   public:
186     DataOverviewMenu(UIInterface & ui);
187     virtual ~DataOverviewMenu();
188 };
189 
190 class DataOverviewMenuCreator : public NewMenuCreator
191 {
192   protected:
193     UIInterface & ui;
194   public:
DataOverviewMenuCreator(UIInterface & myui)195     DataOverviewMenuCreator(UIInterface & myui) : ui(myui) {};
~DataOverviewMenuCreator()196     virtual ~DataOverviewMenuCreator() {};
Create()197     NewMenu_ptr Create() { return NewMenu_ptr(new DataOverviewMenu(ui));};
198 };
199 
200 class ForceOverviewMenu : public DisplayOnlyMenu
201 {
202   public:
203     ForceOverviewMenu(UIInterface & myui);
204     virtual ~ForceOverviewMenu();
205 };
206 
207 class ForceOverviewMenuCreator : public NewMenuCreator
208 {
209   protected:
210     UIInterface & ui;
211   public:
ForceOverviewMenuCreator(UIInterface & myui)212     ForceOverviewMenuCreator(UIInterface & myui) : ui(myui) {};
~ForceOverviewMenuCreator()213     virtual ~ForceOverviewMenuCreator() {};
Create()214     NewMenu_ptr Create() { return NewMenu_ptr(new ForceOverviewMenu(ui));};
215 };
216 
217 class ReplicatesMenuItemIfMoreThanOne : public DisplayOnlyMenuItem
218 {
219   public:
220     ReplicatesMenuItemIfMoreThanOne(UIInterface&);
221     virtual ~ReplicatesMenuItemIfMoreThanOne();
222     virtual bool IsVisible();
223 };
224 
225 class SearchOverviewMenu : public DisplayOnlyMenu
226 {
227   public:
228     SearchOverviewMenu(UIInterface & myui);
229     virtual ~SearchOverviewMenu();
230 };
231 
232 class SearchOverviewMenuCreator : public NewMenuCreator {
233   protected:
234     UIInterface & ui;
235   public:
SearchOverviewMenuCreator(UIInterface & myui)236     SearchOverviewMenuCreator(UIInterface & myui) : ui(myui) {};
~SearchOverviewMenuCreator()237     virtual ~SearchOverviewMenuCreator() {};
Create()238     NewMenu_ptr Create() { return NewMenu_ptr(new SearchOverviewMenu(ui));};
239 };
240 
241 class ResultsOverviewMenu : public DisplayOnlyMenu
242 {
243   public:
244     ResultsOverviewMenu(UIInterface & myui);
245     virtual ~ResultsOverviewMenu();
246 };
247 
248 class ResultsOverviewMenuCreator : public NewMenuCreator
249 {
250   protected:
251     UIInterface & ui;
252   public:
ResultsOverviewMenuCreator(UIInterface & myui)253     ResultsOverviewMenuCreator(UIInterface & myui) : ui(myui) {};
~ResultsOverviewMenuCreator()254     virtual ~ResultsOverviewMenuCreator() {};
Create()255     NewMenu_ptr Create() { return NewMenu_ptr(new ResultsOverviewMenu(ui));};
256 };
257 
258 class BayesianPriorsOverviewMenu : public DisplayOnlyMenu
259 {
260   public:
261     BayesianPriorsOverviewMenu(UIInterface & myui);
262     ~BayesianPriorsOverviewMenu();
263 };
264 
265 class BayesianPriorsOverviewMenuCreator : public NewMenuCreator
266 {
267   protected:
268     UIInterface & ui;
269   public:
BayesianPriorsOverviewMenuCreator(UIInterface & myui)270     BayesianPriorsOverviewMenuCreator(UIInterface & myui) : ui(myui) {};
~BayesianPriorsOverviewMenuCreator()271     virtual ~BayesianPriorsOverviewMenuCreator() {};
Create()272     NewMenu_ptr Create() { return NewMenu_ptr(new BayesianPriorsOverviewMenu(ui));};
273 };
274 
275 //------------------------------------------------------------------------------------
276 
277 class BayesianPriorsOverviewMenuItemGroup : public MenuDisplayGroupBaseImplementation
278 {
279   public:
280     BayesianPriorsOverviewMenuItemGroup(UIInterface& ui);
281     virtual ~BayesianPriorsOverviewMenuItemGroup();
282     virtual vector<UIId> GetVisibleIds();
283     virtual string GetText(UIId id);
284     virtual string GetVariableText(UIId id);
285     virtual MenuInteraction_ptr MakeOneHandler(UIId id);
286 };
287 
288 //------------------------------------------------------------------------------------
289 
290 class TraitMappingOverviewMenu : public DisplayOnlyMenu
291 {
292   public:
293     TraitMappingOverviewMenu(UIInterface & myui);
294     ~TraitMappingOverviewMenu();
295 };
296 
297 class TraitMappingOverviewMenuCreator : public NewMenuCreator
298 {
299   protected:
300     UIInterface & ui;
301   public:
TraitMappingOverviewMenuCreator(UIInterface & myui)302     TraitMappingOverviewMenuCreator(UIInterface & myui) : ui(myui) {};
~TraitMappingOverviewMenuCreator()303     virtual ~TraitMappingOverviewMenuCreator() {};
Create()304     NewMenu_ptr Create() { return NewMenu_ptr(new TraitMappingOverviewMenu(ui));};
305 };
306 
307 //------------------------------------------------------------------------------------
308 
309 class TraitMappingOverviewMenuItemGroup : public MenuDisplayGroupBaseImplementation
310 {
311   public:
312     TraitMappingOverviewMenuItemGroup(UIInterface& ui);
313     virtual ~TraitMappingOverviewMenuItemGroup();
314     virtual vector<UIId> GetVisibleIds();
315     virtual string GetText(UIId id);
316     virtual string GetVariableText(UIId id);
317     virtual MenuInteraction_ptr MakeOneHandler(UIId id);
318 };
319 
320 #endif  // OVERVIEWMENUS_H
321 
322 //____________________________________________________________________________________
323