00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 #ifndef GCN_DROPDOWN_HPP
00056 #define GCN_DROPDOWN_HPP
00057
00058 #include "guichan/basiccontainer.hpp"
00059 #include "guichan/focushandler.hpp"
00060 #include "guichan/keylistener.hpp"
00061 #include "guichan/listmodel.hpp"
00062 #include "guichan/mouselistener.hpp"
00063 #include "guichan/platform.hpp"
00064 #include "guichan/widgets/listbox.hpp"
00065 #include "guichan/widgets/scrollarea.hpp"
00066
00067 namespace gcn
00068 {
00078 class GCN_CORE_DECLSPEC DropDown :
00079 public BasicContainer,
00080 public MouseListener,
00081 public KeyListener,
00082 public ActionListener
00083 {
00084 public:
00088 DropDown();
00089
00096 DropDown(ListModel *listModel);
00097
00106 DropDown(ListModel *listModel,
00107 ScrollArea *scrollArea,
00108 ListBox *listBox);
00109
00113 virtual ~DropDown();
00114
00120 virtual int getSelected();
00121
00127 virtual void setSelected(int selected);
00128
00134 virtual void setListModel(ListModel *listModel);
00135
00141 virtual ListModel *getListModel();
00142
00148 virtual void setScrollArea(ScrollArea* scrollArea);
00149
00155 virtual ScrollArea *getScrollArea();
00156
00162 virtual void setListBox(ListBox* listBox);
00163
00169 virtual ListBox *getListBox();
00170
00174 virtual void adjustHeight();
00175
00176
00177
00178
00179 virtual void draw(Graphics* graphics);
00180
00181 virtual void drawBorder(Graphics* graphics);
00182
00183 virtual void _keyInputMessage(const KeyInput& keyInput);
00184
00185 virtual void logic();
00186
00187 virtual void _mouseInputMessage(const MouseInput &mouseInput);
00188
00189 virtual void lostFocus();
00190
00191 virtual void setBaseColor(const Color& color);
00192
00193 virtual void setBackgroundColor(const Color& color);
00194
00195 virtual void setForegroundColor(const Color& color);
00196
00197
00198
00199
00200 virtual void moveToTop(Widget* widget);
00201
00202 virtual void moveToBottom(Widget* widget);
00203
00204 virtual void _announceDeath(Widget* widget);
00205
00206 virtual void getDrawSize(int& width, int& height, Widget* widget);
00207
00208
00209
00210
00211 virtual void action(const std::string& eventId);
00212
00213
00214
00215
00216 virtual void keyPress(const Key& key);
00217
00218
00219
00220
00221 virtual void mousePress(int x, int y, int button);
00222
00223 virtual void mouseRelease(int x, int y, int button);
00224
00225
00226 protected:
00232 virtual void drawButton(Graphics *graphics);
00233
00237 virtual void dropDown();
00238
00242 virtual void foldUp();
00243
00244 bool mDroppedDown;
00245 bool mPushed;
00246 int mOldH;
00247 ScrollArea* mScrollArea;
00248 ListBox* mListBox;
00249 ScrollArea* mDefaultScrollArea;
00250 ListBox* mDefaultListBox;
00251 FocusHandler mFocusHandler;
00252 };
00253 }
00254
00255 #endif // end GCN_DROPDOWN_HPP