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
00070 virtual LLSD getValue() const { return mColor.getValue(); }
00071 const LLColor4& get() { return mColor; }
00072
00073 void set(const LLColor4& color, BOOL update_picker = FALSE, BOOL from_event = FALSE);
00074 void setOriginal(const LLColor4& color);
00075 void setValid(BOOL valid);
00076 void setLabel(const std::string& label);
00077 void setCanApplyImmediately(BOOL apply) { mCanApplyImmediately = apply; }
00078 void setOnCancelCallback(LLUICtrlCallback cb) { mOnCancelCallback = cb; }
00079 void setOnSelectCallback(LLUICtrlCallback cb) { mOnSelectCallback = cb; }
00080
00081 void showPicker(BOOL take_focus);
00082
00083 virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
00084 virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
00085 virtual BOOL handleDoubleClick(S32 x,S32 y,MASK mask);
00086 virtual BOOL handleHover(S32 x, S32 y, MASK mask);
00087 virtual BOOL handleUnicodeCharHere(llwchar uni_char);
00088 virtual void draw();
00089 virtual void setEnabled( BOOL enabled );
00090 virtual LLXMLNodePtr getXML(bool save_children = true) const;
00091 static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
00092
00093 static void onColorChanged ( void* data, EColorPickOp pick_op = COLOR_CHANGE );
00094
00095 protected:
00096 BOOL mValid;
00097 LLColor4 mColor;
00098 LLColor4 mBorderColor;
00099 LLTextBox* mCaption;
00100 LLHandle<LLFloater> mPickerHandle;
00101 LLViewBorder* mBorder;
00102 BOOL mCanApplyImmediately;
00103 LLUICtrlCallback mOnCancelCallback;
00104 LLUICtrlCallback mOnSelectCallback;
00105
00106 LLPointer<LLUIImage> mAlphaGradientImage;
00107 };
00108
00109 #endif // LL_LLBUTTON_H