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_TEXTBOX_HPP
00056 #define GCN_TEXTBOX_HPP
00057
00058 #include <ctime>
00059 #include <string>
00060 #include <vector>
00061
00062 #include "guichan/platform.h"
00063 #include "guichan/widget.h"
00064
00065 namespace gcn
00066 {
00073 class GCN_CORE_DECLSPEC TextBox:
00074 public Widget,
00075 public MouseListener,
00076 public KeyListener
00077 {
00078 public:
00082 TextBox();
00083
00089 TextBox(const std::string& text);
00090
00096 virtual void setText(const std::string& text);
00097
00102 virtual std::string getText() const;
00103
00109 virtual const std::string& getTextRow(int row) const;
00110
00117 virtual void setTextRow(int row, const std::string& text);
00118
00124 virtual unsigned int getNumberOfRows() const;
00125
00131 virtual unsigned int getCaretPosition() const;
00132
00138 virtual void setCaretPosition(unsigned int position);
00139
00145 virtual unsigned int getCaretRow() const;
00146
00152 virtual void setCaretRow(int row);
00153
00159 virtual unsigned int getCaretColumn() const;
00160
00166 virtual void setCaretColumn(int column);
00167
00174 virtual void setCaretRowColumn(int row, int column);
00175
00179 virtual void scrollToCaret();
00180
00186 virtual bool isEditable() const;
00187
00193 virtual void setEditable(bool editable);
00194
00200 virtual void addRow(const std::string row);
00201
00207 virtual bool isOpaque();
00208
00214 virtual void setOpaque(bool opaque);
00215
00216
00217
00218
00219 virtual void draw(Graphics* graphics);
00220
00221 virtual void drawBorder(Graphics* graphics);
00222
00223 virtual void fontChanged();
00224
00225
00226
00227
00228 virtual bool keyPress(const Key& key);
00229
00230
00231
00232
00233 virtual void mousePress(int x, int y, int button);
00234
00235
00236 protected:
00244 virtual void drawCaret(Graphics* graphics, int x, int y);
00245
00249 virtual void adjustSize();
00250
00251 std::vector<std::string> mTextRows;
00252 int mCaretColumn;
00253 int mCaretRow;
00254 bool mEditable;
00255 bool mOpaque;
00256 };
00257 }
00258
00259 #endif // end GCN_TEXTBOX_HPP