1/**************************************************************************** 2* 3* wxWindows HTML Applet Package 4* 5* Copyright (C) 1991-2001 SciTech Software, Inc. 6* All rights reserved. 7* 8* ======================================================================== 9* 10* The contents of this file are subject to the wxWindows License 11* Version 3.0 (the "License"); you may not use this file except in 12* compliance with the License. You may obtain a copy of the License at 13* http://www.wxwindows.org/licence3.txt 14* 15* Software distributed under the License is distributed on an 16* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 17* implied. See the License for the specific language governing 18* rights and limitations under the License. 19* 20* ======================================================================== 21* 22* Language: ANSI C++ 23* Environment: Any 24* 25* Description: Header file for the wxHtmlAppletWindow class 26* 27****************************************************************************/ 28 29#ifndef __WX_APPLET_WINDOW_H 30#define __WX_APPLET_WINDOW_H 31 32#include "wx/html/htmlwin.h" 33#include "wx/hash.h" 34#include "wx/process.h" 35#include "wx/toolbar.h" 36 37// Forward declare 38class wxApplet; 39class wxQlet; 40class wxLoadPageEvent; 41class wxPageLoadedEvent; 42class wxIncludePrep; 43class wxToolBarBase; 44 45// Declare a linked list of wxApplet pointers 46WX_DECLARE_LIST(wxApplet, wxAppletList); 47 48/*--------------------------- Class Definitions ---------------------------*/ 49class wxAppletEvent { 50protected: 51 int m_id; 52 wxObject *m_eventObject; 53public: 54 wxAppletEvent(int id) { m_eventObject=NULL; m_id = id; } 55 56 int GetId() const { return m_id; } 57 void SetId(int Id) { m_id = Id; } 58 59 wxObject *GetEventObject() const { return m_eventObject; } 60 void SetEventObject(wxObject *obj) { m_eventObject = obj; } 61 62}; 63 64 65/**************************************************************************** 66REMARKS: 67Defines the class for virtual-link data types 68****************************************************************************/ 69class VirtualData : public wxObject { 70private: 71 DECLARE_DYNAMIC_CLASS(VirtualData); 72 73protected: 74 wxString m_name; 75 wxString m_group; 76 wxString m_href; 77 wxString m_plugIn; 78 79public: 80 // Ctors 81 VirtualData( 82 wxString& name, 83 wxString& group, 84 wxString& href, 85 wxString& plugin ); 86 87 VirtualData(); 88 89 // Gets 90 wxString GetName(){ return m_name;}; 91 wxString GetGroup(){ return m_group;}; 92 wxString GetHref(){ return m_href;}; 93 wxString GetPlugIn(){ return m_plugIn;}; 94 95 // Sets 96 void SetName (wxString& s){ m_name = s; }; 97 void SetGroup(wxString& s){ m_group = s; }; 98 void SetHref (wxString& s){ m_href = s; }; 99 void SetPlugIn (wxString& s){ m_plugIn = s;}; 100 void EmptyPlugIn () { m_plugIn = "";}; 101 }; 102 103/**************************************************************************** 104REMARKS: 105Defines the class for wxAppletWindow. This class is derived from the 106wxHtmlWindow class and extends it with functionality to handle embedded 107wxApplet's on the HTML pages. 108****************************************************************************/ 109class wxHtmlAppletWindow : public wxHtmlWindow { 110private: 111 DECLARE_CLASS(wxHtmlAppletWindow); 112 DECLARE_EVENT_TABLE(); 113 114 bool m_mutexLock; 115 wxIncludePrep *incPreprocessor; // deleted by list it is added too in constructor 116 117protected: 118 wxAppletList m_AppletList; 119 static wxHashTable m_Cookies; 120 bool m_NavBarEnabled; 121 wxToolBarBase *m_NavBar; 122 int m_NavBackId; 123 int m_NavForwardId; 124 wxString m_openedlast; 125 126 // Override this so we can do proper palette management!! 127 virtual void OnDraw(wxDC& dc); 128 129public: 130 // Constructor 131 wxHtmlAppletWindow( 132 wxWindow *parent, 133 wxWindowID id = -1, 134 wxToolBarBase *navBar = NULL, 135 int navBackId = -1, 136 int navForwardId = -1, 137 const wxPoint& pos = wxDefaultPosition, 138 const wxSize& size = wxDefaultSize, 139 long style = wxHW_SCROLLBAR_AUTO, 140 const wxString& name = "htmlAppletWindow"); 141 142 // Destructor 143 virtual ~wxHtmlAppletWindow(); 144 145 // Create an instance of an applet based on it's class name 146 wxApplet *CreateApplet( 147 const wxString& classId, 148 const wxString& iName, 149 const wxHtmlTag ¶ms, 150 const wxSize& size); 151 152 // Create an instance of an Qlet based on it's class name 153 bool CreatePlugIn(const wxString& classId,const wxString& cmdLine = ""); 154 155 // Find an instance of an applet based on it's class name 156 wxApplet *FindApplet(const wxString& className); 157 158 // Remove an applet from the window. Called during applet destruction 159 bool RemoveApplet(const wxApplet *applet); 160 161 // Load a new URL page 162 virtual bool LoadPage(const wxString& location); 163 164 // Called when users clicked on hypertext link. 165 virtual void OnLinkClicked(const wxHtmlLinkInfo& link); 166 167 // Handles forward navigation within the HTML stack 168 bool HistoryForward(); 169 170 // Handles backwards navigation within the HTML stack 171 bool HistoryBack(); 172 173 // Disables Nav bars 174 void DisableNavBar(); 175 176 // Enables Nav bars 177 void EnableNavBar(); 178 179 void SetNavBar(wxToolBarBase *navBar); 180 181 // Broadcast a message to all applets on the page 182 void SendAppletMessage(wxAppletEvent& msg); 183 184 // Register a cookie of data in the applet manager 185 static bool RegisterCookie(const wxString& name,wxObject *cookie); 186 187 // UnRegister a cookie of data in the applet manager 188 static bool UnRegisterCookie(const wxString& name); 189 190 // Find a cookie of data given it's public name 191 static wxObject *FindCookie(const wxString& name); 192 193 // Event handlers to load a new page 194 void OnLoadPage(wxLoadPageEvent &event); 195 196 // Event handlers to load a new page 197 void OnPageLoaded(wxPageLoadedEvent &event); 198 199 // LoadPage mutex locks 200 void Lock(){ m_mutexLock = true;}; 201 void UnLock(){ m_mutexLock = false;}; 202 203 // Returns TRUE if the mutex is locked, FALSE otherwise. 204 bool IsLocked(){ return m_mutexLock;}; 205 206 // Tries to lock the mutex. If it can't, returns immediately with false. 207 bool TryLock(); 208 209 wxString GetLastOpened() { return m_openedlast; } 210 }; 211 212/**************************************************************************** 213REMARKS: 214Defines the class for wxHtmlAppletCell 215***************************************************************************/ 216class wxHtmlAppletCell : public wxHtmlCell 217{ 218public: 219 wxHtmlAppletCell(wxWindow *wnd, int w = 0); 220 virtual ~wxHtmlAppletCell(); 221 virtual void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2); 222 virtual void DrawInvisible(wxDC& dc, int x, int y); 223 virtual void Layout(int w); 224 225protected: 226 wxWindow* m_Wnd; 227 // width float is used in adjustWidth (it is in percents) 228}; 229 230#endif // __WX_APPLET_WINDOW_H 231 232