Home | History | Annotate | Download | only in wx
      1 
      2 
      3 #include "config.h"
      4 #include "WebEdit.h"
      5 
      6 #include "CompositeEditCommand.h"
      7 #include "Document.h"
      8 #include "Frame.h"
      9 #include "HTMLNames.h"
     10 #include "QualifiedName.h"
     11 #include "StringImpl.h"
     12 
     13 #include "WebFrame.h"
     14 #include "WebDOMElement.h"
     15 #include <wtf/text/AtomicString.h>
     16 
     17 namespace WebCore {
     18 
     19 class WebCoreEditCommand: public CompositeEditCommand
     20 {
     21 public:
     22     WebCoreEditCommand(WebCore::Document* document)
     23         : CompositeEditCommand(document)
     24         { }
     25 
     26     void setElementAttribute(PassRefPtr<Element> element, const QualifiedName& attribute, const AtomicString& value)
     27     {
     28         setNodeAttribute(element, attribute, value);
     29     }
     30     // composite commands are applied as they are added, so we don't
     31     // need doApply to do anything.
     32     virtual void doApply() {}
     33 };
     34 
     35 }
     36 
     37 class WebCoreEditCommandPrivate {
     38 public:
     39     WebCoreEditCommandPrivate()
     40         : m_ptr(0)
     41     { }
     42 
     43     WebCoreEditCommandPrivate(WebCore::WebCoreEditCommand* ptr)
     44         : m_ptr(adoptRef(ptr))
     45     { }
     46 
     47     ~WebCoreEditCommandPrivate() { }
     48 
     49     WebCore::WebCoreEditCommand* command() { return m_ptr.get(); }
     50 
     51     RefPtr<WebCore::WebCoreEditCommand> m_ptr;
     52 };
     53 
     54 wxWebEditCommand::wxWebEditCommand(wxWebFrame* webframe)
     55 {
     56     if (webframe) {
     57         WebCore::Frame* frame = webframe->GetFrame();
     58         if (frame && frame->document())
     59             m_impl = new WebCoreEditCommandPrivate(new WebCore::WebCoreEditCommand(frame->document()));
     60     }
     61 }
     62 
     63 wxWebEditCommand::~wxWebEditCommand()
     64 {
     65     // the impl. is ref-counted, so don't delete it as it may be in an undo/redo stack
     66     delete m_impl;
     67     m_impl = 0;
     68 }
     69 
     70 void wxWebEditCommand::SetNodeAttribute(WebDOMElement* element, const wxString& name, const wxString& value)
     71 {
     72     if (m_impl && m_impl->command())
     73         m_impl->command()->setElementAttribute(element->impl(), WebCore::QualifiedName(WTF::nullAtom, WTF::String(name), WTF::nullAtom), WTF::String(value));
     74 }
     75 
     76 void wxWebEditCommand::Apply()
     77 {
     78     if (m_impl && m_impl->command())
     79         m_impl->command()->apply();
     80 }
     81