#include #include #include #include #include #include #include #include #include #include "XDevEditPage.hpp" using xml = KXMLDOMDocument; class export XDevEditXDV : public XDevEditPage { public: XDevEditXDV(void* implPtr, HWND hWnd) :XDevEditPage(implPtr, hWnd) {} public: static XDevEditXDV* CreateInstance(void* implPtr, void* hWnd) { XDevEditXDV* pWin = new XDevEditXDV(implPtr, (HWND)hWnd); return pWin; } private: // xnode m_agentNode; //Agent Condition xstring m_agentCond; //Agent Node public: int SetAgent() { xstring xfNodeAgentArea = L"agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); auto xframeElement = GetElement(); auto agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); if (agent) { xstring s = agent.xml(); m_agentNode = SetAgentNode(anode,s); } return 1; } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(TEvent* evt,LPARAM param) { SetAgent(); //ÖØÖù¤¾ßÌõ return 1; } int LoadData() { if (!GetWinParam()) return 1; xstring content = GetData(); if (content != L"") { xsedit xs = GetControl(L"xcontent"); xs.LoadContent(content,L".xml"); } return 1; } xstring OnGetType() { xwin w = GetFrameWindow(); xtreeview tv_folder = w.GetControl(L"DevExplorer"); HTREEITEM hItem = (HTREEITEM)GetWinParam(); KXMLDOMElement e = tv_folder.GetItemData(hItem); xstring str = e.getAttribute(L"type"); return str; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(xstring comdid) { xstring content; xsedit xs = GetControl(L"xcontent"); xs.GetContent(content); HCURSOR hCursor = xutil::SetCursorWait(); if (comdid == L"xmFileSaveEx") { //save xml content SaveContent(content); xutil::RestoreCursor(hCursor); return 1; } else if (comdid == L"xmValidEx") { xml x; if (!x.loadXML(content)) { KXMLDOMParseError pError = x.parseError(); if (pError) { xstring str = pError.srcText(); xstring sError = L"\r\nXML´íÎó: " + str.trim() + L"\r\n"; int s = pError.errorCode(); sError += L" ´úÂë: " + xstring(s) + L"\r\n"; s = pError.line(); sError += L" λÖÃ: µÚ" + xstring(s) + L"ÐÐ,L"; s = pError.linepos(); sError += L"µÚ" + xstring(s) + L"ÁÐ" + L"\r\n"; str = pError.reason(); sError += L" Ô­Òò: " + str; trace(sError); } else { trace(L"XML ´íÎó"); } xutil::RestoreCursor(hCursor); return -1; } xstring sType = OnGetType(); if (sType == L"xml.xsd") { BSTR sError; x.ValidSchema((const wchar_t*)content.c_str(), sError); trace(sError); } xutil::RestoreCursor(hCursor); return 1; } else if (comdid == L"xmEditFind") { OpenWindow(L"dev:xpage[xcode.finddlg]"); } else if (comdid == L"xmEditReplace") { OpenWindow(L"dev:xpage[xcode.replacedlg]"); } xutil::RestoreCursor(hCursor); return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt,int param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND",(FEvent)&XDevEditXDV::OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent(L"WM_SETFOCUS", (FEvent)&XDevEditXDV::OnSetFocus); return 1; } /* int OnRetrieve() { xstring query=L"[xxx]"; xml x = new xml; xaserverarg arg; arg.AddArg(L"xxx",L"xxx"); if (xaserver::ExecXQuery(GetServerUrl(),query,arg.Getxstring(),x)!=1) { trace(x.text); return -1; }else { dw_list.Retrieve(x); dw_list.Redraw(); } return 1; } */ int OnInitial() { SetAgent(); OnAttachEvent(); return 1; } int onload() { OnInitial(); LoadData(); return 1; } };