• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
WebCoreEditCommand(WebCore::Document * document)22     WebCoreEditCommand(WebCore::Document* document)
23         : CompositeEditCommand(document)
24         { }
25 
setElementAttribute(PassRefPtr<Element> element,const QualifiedName & attribute,const AtomicString & value)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.
doApply()32     virtual void doApply() {}
33 };
34 
35 }
36 
37 class WebCoreEditCommandPrivate {
38 public:
WebCoreEditCommandPrivate()39     WebCoreEditCommandPrivate()
40         : m_ptr(0)
41     { }
42 
WebCoreEditCommandPrivate(WebCore::WebCoreEditCommand * ptr)43     WebCoreEditCommandPrivate(WebCore::WebCoreEditCommand* ptr)
44         : m_ptr(adoptRef(ptr))
45     { }
46 
~WebCoreEditCommandPrivate()47     ~WebCoreEditCommandPrivate() { }
48 
command()49     WebCore::WebCoreEditCommand* command() { return m_ptr.get(); }
50 
51     RefPtr<WebCore::WebCoreEditCommand> m_ptr;
52 };
53 
wxWebEditCommand(wxWebFrame * webframe)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 
~wxWebEditCommand()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 
SetNodeAttribute(WebDOMElement * element,const wxString & name,const wxString & value)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 
Apply()76 void wxWebEditCommand::Apply()
77 {
78     if (m_impl && m_impl->command())
79         m_impl->command()->apply();
80 }
81