1 // $Id: priormenus.h,v 1.3 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 PRIORMENUS_H
12 #define PRIORMENUS_H
13 
14 #include <string>
15 #include "forcesmenus.h"
16 #include "newmenuitems.h"
17 #include "setmenuitem.h"
18 #include "togglemenuitem.h"
19 
20 class UIInterface;
21 
22 class PriorMenu : public NewMenu
23 {
24   private:
25     PriorMenu(); //undefined
26   public:
27     PriorMenu(UIInterface& ui);
28     virtual ~PriorMenu();
29 };
30 
31 class PriorMenuCreator : public NewMenuCreator
32 {
33   protected:
34     UIInterface & ui;
35   public:
PriorMenuCreator(UIInterface & myui)36     PriorMenuCreator(UIInterface & myui) : ui(myui) {};
~PriorMenuCreator()37     virtual ~PriorMenuCreator() {};
Create()38     virtual NewMenu_ptr Create() { return NewMenu_ptr(new PriorMenu(ui));};
39 };
40 
41 class PriorByForceMenuItemGroup : public MenuDisplayGroupBaseImplementation
42 {
43   private:
44     PriorByForceMenuItemGroup(); //undefined
45   public:
46     PriorByForceMenuItemGroup(UIInterface& ui);
47     virtual ~PriorByForceMenuItemGroup();
48     virtual MenuInteraction_ptr MakeOneHandler(UIId id);
49     virtual UIIdVec1d           GetVisibleIds();
50     virtual string              GetKey(UIId id);
51 };
52 
53 class PriorMenuForOneForce : public NewMenu
54 {
55   private:
56     PriorMenuForOneForce(); //undefined
57   public:
58     PriorMenuForOneForce(UIInterface& ui, UIId id);
59     virtual ~PriorMenuForOneForce();
60 };
61 
62 //These two classes are used for the individual forces' menus.
63 class SubMenuPriorForOneForce : public ForceSubMenuItem
64 {
65   private:
66     SubMenuPriorForOneForce(); //undefined
67     UIId id;
68   public:
69     SubMenuPriorForOneForce(std::string key, UIInterface& ui, UIId id);
70     virtual ~SubMenuPriorForOneForce();
71     virtual bool IsVisible();
72 };
73 
74 class PriorMenuForOneForceCreator : public NewMenuCreator
75 {
76   private:
77     PriorMenuForOneForceCreator(); //undefined
78     UIInterface& ui;
79     UIId id;
80   public:
PriorMenuForOneForceCreator(UIInterface & myui,UIId myid)81     PriorMenuForOneForceCreator(UIInterface& myui, UIId myid) :
82         ui(myui), id(myid) {};
~PriorMenuForOneForceCreator()83     virtual ~PriorMenuForOneForceCreator() {};
Create()84     virtual NewMenu_ptr Create() { return NewMenu_ptr(new PriorMenuForOneForce(ui, id));};
85 };
86 
87 class PriorByParameterMenuItemGroup : public MenuDisplayGroupBaseImplementation
88 {
89   private:
90     PriorByParameterMenuItemGroup(); //undefined
91     UIId m_id;
92   public:
93     PriorByParameterMenuItemGroup(UIInterface& ui, UIId id);
94     virtual ~PriorByParameterMenuItemGroup();
95     virtual UIIdVec1d  GetVisibleIds();
96     virtual MenuInteraction_ptr MakeOneHandler(UIId id);
97 };
98 
99 class DefaultPriorForForce: public SubMenuItem
100 {
101   private:
102     DefaultPriorForForce();
103     UIId m_id;
104   public:
105     DefaultPriorForForce(string myKey, UIInterface& myUI, UIId myId);
106     virtual ~DefaultPriorForForce();
107     virtual string GetVariableText();
108 };
109 
110 class PriorMenuForOneParameter : public NewMenu
111 {
112   private:
113     PriorMenuForOneParameter();
114     UIId m_id;
115   public:
116     PriorMenuForOneParameter(UIInterface& ui, UIId id);
117     virtual ~PriorMenuForOneParameter();
118     virtual string Title();
119 };
120 
121 class PriorMenuForOneParameterCreator : public NewMenuCreator
122 {
123   protected:
124     UIInterface & ui;
125     UIId id;
126   public:
PriorMenuForOneParameterCreator(UIInterface & myui,UIId myid)127     PriorMenuForOneParameterCreator(UIInterface & myui, UIId myid) :
128         ui(myui), id(myid) {};
~PriorMenuForOneParameterCreator()129     virtual ~PriorMenuForOneParameterCreator() {};
Create()130     virtual NewMenu_ptr Create() { return NewMenu_ptr(new PriorMenuForOneParameter(ui, id));};
131 };
132 
133 #endif  // PRIORMENUS_H
134 
135 //____________________________________________________________________________________
136