00001 00032 #ifndef LL_LLPANELDIRFIND_H 00033 #define LL_LLPANELDIRFIND_H 00034 00035 #include "llpaneldirbrowser.h" 00036 #include "llwebbrowserctrl.h" 00037 00038 class LLUICtrl; 00039 class LLLineEditor; 00040 class LLPanelDirFindAll; 00041 class LLFloaterDirectory; 00042 class LLWebBrowserCtrlObserver; 00043 00044 // This class in an abstract base class for all new style search widgets. It contains a pointer to a web browser control 00045 // 00046 class LLPanelDirFind 00047 : public LLPanelDirBrowser, 00048 public LLWebBrowserCtrlObserver 00049 { 00050 public: 00051 LLPanelDirFind(const std::string& name, LLFloaterDirectory* floater, const std::string& browser_name); 00052 /*virtual*/ ~LLPanelDirFind(); 00053 00054 /*virtual*/ void draw(); 00055 /*virtual*/ BOOL postBuild(); 00056 /*virtual*/ void onVisibilityChange(BOOL new_visibility); 00057 00058 // Pure virtual. Must be implemented 00059 virtual void search(const std::string& search_text) = 0; 00060 00061 virtual void navigateToDefaultPage(); 00062 void focus(); 00063 00064 static std::string buildSearchURL(const std::string& search_text, const std::string& collection, bool mature_in); 00065 static std::string getSearchURLSuffix(bool mature_in); 00066 00067 private: 00068 static void onClickBack( void* data ); 00069 static void onClickForward( void* data ); 00070 static void onClickHome( void* data ); 00071 static void onClickSearch( void* data ); 00072 static void onCommitSearch(LLUICtrl*, void* data); 00073 00074 /*virtual*/ void onNavigateBegin( const EventType& eventIn ); 00075 /*virtual*/ void onNavigateComplete( const EventType& eventIn ); 00076 00077 // Used to update progress indicator 00078 /*virtual*/ void onLocationChange( const EventType& eventIn ); 00079 // Debugging info to console 00080 00081 protected: 00082 LLWebBrowserCtrl* mWebBrowser; 00083 std::string mBrowserName; 00084 }; 00085 00086 class LLPanelDirFindAllInterface 00087 { 00088 public: 00089 static LLPanelDirFindAll* create(LLFloaterDirectory* floater); 00090 static void search(LLPanelDirFindAll* panel, const std::string& search_text); 00091 static void focus(LLPanelDirFindAll* panel); 00092 }; 00093 00094 #endif