#include "config.h" #include "WebEdit.h" #include "CompositeEditCommand.h" #include "Document.h" #include "Frame.h" #include "HTMLNames.h" #include "QualifiedName.h" #include "StringImpl.h" #include "WebFrame.h" #include "WebDOMElement.h" #include <wtf/text/AtomicString.h> namespace WebCore { class WebCoreEditCommand: public CompositeEditCommand { public: WebCoreEditCommand(WebCore::Document* document) : CompositeEditCommand(document) { } void setElementAttribute(PassRefPtr<Element> element, const QualifiedName& attribute, const AtomicString& value) { setNodeAttribute(element, attribute, value); } // composite commands are applied as they are added, so we don't // need doApply to do anything. virtual void doApply() {} }; } class WebCoreEditCommandPrivate { public: WebCoreEditCommandPrivate() : m_ptr(0) { } WebCoreEditCommandPrivate(WebCore::WebCoreEditCommand* ptr) : m_ptr(adoptRef(ptr)) { } ~WebCoreEditCommandPrivate() { } WebCore::WebCoreEditCommand* command() { return m_ptr.get(); } RefPtr<WebCore::WebCoreEditCommand> m_ptr; }; wxWebEditCommand::wxWebEditCommand(wxWebFrame* webframe) { if (webframe) { WebCore::Frame* frame = webframe->GetFrame(); if (frame && frame->document()) m_impl = new WebCoreEditCommandPrivate(new WebCore::WebCoreEditCommand(frame->document())); } } wxWebEditCommand::~wxWebEditCommand() { // the impl. is ref-counted, so don't delete it as it may be in an undo/redo stack delete m_impl; m_impl = 0; } void wxWebEditCommand::SetNodeAttribute(WebDOMElement* element, const wxString& name, const wxString& value) { if (m_impl && m_impl->command()) m_impl->command()->setElementAttribute(element->impl(), WebCore::QualifiedName(WTF::nullAtom, WTF::String(name), WTF::nullAtom), WTF::String(value)); } void wxWebEditCommand::Apply() { if (m_impl && m_impl->command()) m_impl->command()->apply(); }