00001
00002
00003
00004 #ifndef OglGui_TextEditLineScroller_h
00005 #define OglGui_TextEditLineScroller_h
00006
00007 #ifndef OglGui_TextEdit_h
00008 #include "OglGui/TextEdit.h"
00009 #endif
00010
00011 namespace OglGui
00012 {
00013
00014 class TextEditLineScroller : public ScrollBar, ScrollBarListener
00015 {
00016 public:
00017 TextEditLineScroller(Window* parent, int w, int h, strconst text=""):
00018 ScrollBar(parent, w, h, true)
00019 {
00020 Init(text, w, h);
00021 }
00022
00023 TextEditLineScroller(Window* parent, int x, int y, int w, int h,
00024 strconst text=""):
00025 ScrollBar(parent, x, y, w, h, true)
00026 {
00027 Init(text, w, h);
00028 }
00029
00030 TextEdit* TextEditor()
00031 {
00032 return mTextEdit;
00033 }
00034
00035 virtual void OnScroll(ScrollBar *src, int position, void* userData)
00036 {
00037 mTextEdit->DocX(-position);
00038 }
00039
00040 virtual void DisplayFunc()
00041 {
00042 int totalRange = mTextEdit->ComputeMaxWidth() + 16;
00043 if (totalRange < mTextEdit->W() + 16)
00044 totalRange = mTextEdit->W() + 16;
00045 SetNewPos(-mTextEdit->DocX());
00046 SetRange(totalRange - mTextEdit->W() + 16, 16);
00047 mButThumb->SetVisible(false);
00048 ScrollBar::DisplayFunc();
00049 }
00050
00051 private:
00052 void Init(strconst txt, int w, int h)
00053 {
00054 mTextEdit = new TextEdit(this, 16, 0, w-32, h, txt, 0);
00055 mTextEdit->SetBorderType(BEV_NONE);
00056 mTextEdit->SingleLine(true);
00057 mTextEdit->ConnectTo(this);
00058 mTextEdit->DocX(0);
00059 SetLineIncrement(16);
00060 SetScrollBarListener(this);
00061 MapKeysTo(mTextEdit);
00062 SetAllowChildScaling(false);
00063 }
00064
00065 TextEdit* mTextEdit;
00066 };
00067
00068 }
00069
00070 #endif