00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(__INCLUDE_GLWSelectorh_INCLUDE__)
00022 #define __INCLUDE_GLWSelectorh_INCLUDE__
00023
00024 #include <GLW/GLWWindow.h>
00025 #include <GLW/GLWToolTip.h>
00026 #include <GLEXT/GLTexture.h>
00027 #include <lang/LangString.h>
00028 #include <string>
00029 #include <list>
00030 #include <map>
00031
00032
00033
00034
00035 class GLWSelectorEntry
00036 {
00037 public:
00038 GLWSelectorEntry(const LangString &text = LangString(),
00039 ToolTip *tooltip = 0,
00040 bool selected = false,
00041 GLTexture *icon = 0,
00042 void *userData = 0,
00043 const std::string &dataText = "");
00044
00045 LangString &getText() { return text_; }
00046 const char *getDataText() { return dataText_.c_str(); }
00047 ToolTip *getToolTip() { return tip_; }
00048 GLTexture *getIcon() { return icon_; }
00049 bool getSelected() { return selected_; }
00050 bool getSeperator() { return seperator_; }
00051 void setSeperator() { seperator_ = true; }
00052 void *getUserData() { return userData_; }
00053 Vector &getColor() { return color_; }
00054 int &getTextureWidth() { return textureWidth_; }
00055
00056 std::list<GLWSelectorEntry> &getPopups() { return popups_; }
00057
00058 protected:
00059 LangString text_;
00060 std::string dataText_;
00061 GLTexture *icon_;
00062 int textureWidth_;
00063 ToolTip *tip_;
00064 Vector color_;
00065 bool selected_, seperator_;
00066 void *userData_;
00067 std::list<GLWSelectorEntry> popups_;
00068 };
00069
00070
00071
00072
00073 class GLWSelectorI
00074 {
00075 public:
00076 virtual void itemSelected(GLWSelectorEntry *entry, int position) = 0;
00077 virtual void noItemSelected() { };
00078 };
00079
00080
00081
00082
00083
00084
00085
00086 class GLWSelectorPart;
00087 class GLWSelector : public GLWWindow
00088 {
00089 public:
00090 static GLWSelector *instance();
00091
00092
00093 void showSelector(
00094 GLWSelectorI *user,
00095 float x, float y,
00096 std::list<GLWSelectorEntry> &entries,
00097 unsigned int showState = 0,
00098 bool transparent = true);
00099
00100 void hideSelector();
00101
00102
00103 GLWSelectorI *getUser() { return user_; }
00104 void addPart(GLWSelectorPart *part);
00105 void rmPart(GLWSelectorPart *part);
00106
00107
00108 virtual void draw();
00109 virtual void mouseDown(int button, float x, float y, bool &skipRest);
00110 virtual void mouseUp(int button, float x, float y, bool &skipRest);
00111 virtual void mouseDrag(int button, float mx, float my, float x, float y, bool &skipRest);
00112 virtual void keyDown(char *buffer, unsigned int keyState,
00113 KeyboardHistory::HistoryElement *history, int hisCount,
00114 bool &skipRest);
00115
00116 protected:
00117 static GLWSelector *instance_;
00118 std::list<GLWSelectorPart *> parts_;
00119 unsigned int showState_;
00120 GLWSelectorI *user_;
00121
00122 private:
00123 GLWSelector();
00124 virtual ~GLWSelector();
00125
00126 };
00127
00128 #endif