00001
00032 #ifndef LL_LLCOLORSWATCH_H
00033 #define LL_LLCOLORSWATCH_H
00034
00035 #include "lluictrl.h"
00036 #include "v4color.h"
00037 #include "llfloater.h"
00038 #include "llviewerimage.h"
00039
00040
00041
00042
00043 class LLColor4;
00044 class LLTextBox;
00045 class LLFloaterColorPicker;
00046 class LLViewerImage;
00047
00048 class LLColorSwatchCtrl
00049 : public LLUICtrl
00050 {
00051 public:
00052 typedef enum e_color_pick_op
00053 {
00054 COLOR_CHANGE,
00055 COLOR_SELECT,
00056 COLOR_CANCEL
00057 } EColorPickOp;
00058
00059 LLColorSwatchCtrl(const std::string& name, const LLRect& rect, const LLColor4& color,
00060 void (*on_commit_callback)(LLUICtrl* ctrl, void* userdata),
00061 void* callback_userdata);
00062 LLColorSwatchCtrl(const std::string& name, const LLRect& rect, const std::string& label, const LLColor4& color,
00063 void (*on_commit_callback)(LLUICtrl* ctrl, void* userdata),
00064 void* callback_userdata);
00065
00066 ~LLColorSwatchCtrl ();
00067
00068 virtual void setValue(const LLSD& value);
00069 virtual EWidgetType getWidgetType() const { return WIDGET_TYPE_COLOR_SWATCH; }
00070 virtual LLString getWidgetTag() const { return LL_COLOR_SWATCH_CTRL_TAG; }
00071 virtual LLSD getValue() const { return mColor.getValue(); }
00072 const LLColor4& get() { return mColor; }
00073
00074 void set(const LLColor4& color, BOOL update_picker = FALSE, BOOL from_event = FALSE);
00075 void setOriginal(const LLColor4& color);
00076 void setValid(BOOL valid);
00077 void setLabel(const std::string& label);
00078 void setCanApplyImmediately(BOOL apply) { mCanApplyImmediately = apply; }
00079 void setOnCancelCallback(LLUICtrlCallback cb) { mOnCancelCallback = cb; }
00080 void setOnSelectCallback(LLUICtrlCallback cb) { mOnSelectCallback = cb; }
00081
00082 void showPicker(BOOL take_focus);
00083
00084 virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
00085 virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
00086 virtual BOOL handleDoubleClick(S32 x,S32 y,MASK mask);
00087 virtual BOOL handleHover(S32 x, S32 y, MASK mask);
00088 virtual BOOL handleUnicodeCharHere(llwchar uni_char, BOOL called_from_parent);
00089 virtual void draw();
00090 virtual void setEnabled( BOOL enabled );
00091 virtual LLXMLNodePtr getXML(bool save_children = true) const;
00092 static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
00093
00094 static void onColorChanged ( void* data, EColorPickOp pick_op = COLOR_CHANGE );
00095
00096 protected:
00097 BOOL mValid;
00098 LLColor4 mColor;
00099 LLColor4 mBorderColor;
00100 LLTextBox* mCaption;
00101 LLViewHandle mPickerHandle;
00102 LLViewBorder* mBorder;
00103 BOOL mCanApplyImmediately;
00104 LLUICtrlCallback mOnCancelCallback;
00105 LLUICtrlCallback mOnSelectCallback;
00106
00107 LLPointer<LLViewerImage> mAlphaGradientImage;
00108 };
00109
00110 #endif // LL_LLBUTTON_H