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_SCROLLAREA_HPP
00056 #define GCN_SCROLLAREA_HPP
00057
00058 #include <string>
00059
00060 #include "guichan/basiccontainer.hpp"
00061 #include "guichan/mouselistener.hpp"
00062 #include "guichan/platform.hpp"
00063
00064 namespace gcn
00065 {
00075 class GCN_CORE_DECLSPEC ScrollArea:
00076 public BasicContainer,
00077 public MouseListener
00078 {
00079 public:
00080
00084 ScrollArea();
00085
00091 ScrollArea(Widget *content);
00092
00102 ScrollArea(Widget *content, unsigned int hPolicy, unsigned int vPolicy);
00103
00107 virtual ~ScrollArea();
00108
00114 virtual void setContent(Widget* widget);
00115
00121 virtual Widget* getContent();
00122
00129 virtual void setHorizontalScrollPolicy(unsigned int hPolicy);
00130
00137 virtual unsigned int getHorizontalScrollPolicy();
00138
00145 virtual void setVerticalScrollPolicy(unsigned int vPolicy);
00146
00153 virtual unsigned int getVerticalScrollPolicy();
00154
00163 virtual void setScrollPolicy(unsigned int hPolicy, unsigned int vPolicy);
00164
00170 virtual void setVerticalScrollAmount(int vScroll);
00171
00176 virtual int getVerticalScrollAmount();
00177
00183 virtual void setHorizontalScrollAmount(int hScroll);
00184
00190 virtual int getHorizontalScrollAmount();
00191
00198 virtual void setScrollAmount(int hScroll, int vScroll);
00199
00205 virtual int getHorizontalMaxScroll();
00206
00212 virtual int getVerticalMaxScroll();
00213
00219 virtual void setScrollbarWidth(int width);
00220
00226 virtual int getScrollbarWidth();
00227
00235 virtual void scrollToRectangle(const Rectangle& rectangle);
00236
00237
00238
00239
00240 virtual void draw(Graphics *graphics);
00241
00242 virtual void drawBorder(Graphics* graphics);
00243
00244 virtual void logic();
00245
00246 virtual void _mouseInputMessage(const MouseInput &mouseInput);
00247
00248 virtual void _mouseOutMessage();
00249
00250 virtual void _setFocusHandler(FocusHandler* focusHandler);
00251
00252
00253
00254
00255 virtual void _announceDeath(Widget *widget);
00256
00257 virtual void getDrawSize(int& width, int& height, Widget* widget);
00258
00259 virtual void moveToBottom(Widget* widget);
00260
00261 virtual void moveToTop(Widget* widget);
00262
00263
00264
00265
00266 virtual void mousePress(int x, int y, int button);
00267
00268 virtual void mouseRelease(int x, int y, int button);
00269
00270 virtual void mouseMotion(int x, int y);
00271
00272 virtual void mouseWheelUp(int x, int y);
00273
00274 virtual void mouseWheelDown(int x, int y);
00275
00276
00286 enum
00287 {
00288 SHOW_ALWAYS,
00289 SHOW_NEVER,
00290 SHOW_AUTO
00291 };
00292
00293 protected:
00299 virtual void drawUpButton(Graphics *graphics);
00300
00306 virtual void drawDownButton(Graphics *graphics);
00307
00313 virtual void drawLeftButton(Graphics *graphics);
00314
00320 virtual void drawRightButton(Graphics *graphics);
00321
00327 virtual void drawContent(Graphics* graphics);
00328
00334 virtual void drawVBar(Graphics* graphics);
00335
00341 virtual void drawHBar(Graphics* graphics);
00342
00348 virtual void drawVMarker(Graphics* graphics);
00349
00355 virtual void drawHMarker(Graphics* graphics);
00356
00360 virtual void checkPolicies();
00361
00367 virtual Rectangle getUpButtonDimension();
00368
00374 virtual Rectangle getDownButtonDimension();
00375
00381 virtual Rectangle getLeftButtonDimension();
00382
00388 virtual Rectangle getRightButtonDimension();
00389
00395 virtual Rectangle getContentDimension();
00396
00402 virtual Rectangle getVerticalBarDimension();
00403
00409 virtual Rectangle getHorizontalBarDimension();
00410
00416 virtual Rectangle getVerticalMarkerDimension();
00417
00423 virtual Rectangle getHorizontalMarkerDimension();
00424
00425 Widget *mContent;
00426 int mVScroll;
00427 int mHScroll;
00428 int mScrollbarWidth;
00429 unsigned int mHPolicy;
00430 unsigned int mVPolicy;
00431 bool mVBarVisible;
00432 bool mHBarVisible;
00433 bool mUpButtonPressed;
00434 bool mDownButtonPressed;
00435 bool mLeftButtonPressed;
00436 bool mRightButtonPressed;
00437 bool mVerticalMarkerPressed;
00438 int mVerticalMarkerMousePosition;
00439 bool mHorizontalMarkerPressed;
00440 int mHorizontalMarkerMousePosition;
00441 };
00442 }
00443
00444 #endif // end GCN_SCROLLAREA_HPP