diff --git a/src/plugins/qnx/bardescriptoreditor.cpp b/src/plugins/qnx/bardescriptoreditor.cpp index 548129ff3b3..159e074a7f9 100644 --- a/src/plugins/qnx/bardescriptoreditor.cpp +++ b/src/plugins/qnx/bardescriptoreditor.cpp @@ -39,6 +39,8 @@ #include #include #include +#include +#include #include #include @@ -80,6 +82,9 @@ BarDescriptorEditor::BarDescriptorEditor(BarDescriptorEditorWidget *editorWidget m_actionGroup->addAction(sourceAction); generalAction->setChecked(true); + + setContext(Core::Context(Constants::QNX_BAR_DESCRIPTOR_EDITOR_CONTEXT, + TextEditor::Constants::C_TEXTEDITOR)); } bool BarDescriptorEditor::open(QString *errorString, const QString &fileName, const QString &realFileName) diff --git a/src/plugins/qnx/bardescriptoreditorfactory.cpp b/src/plugins/qnx/bardescriptoreditorfactory.cpp index 27a97a3482f..5d9a6cdbef4 100644 --- a/src/plugins/qnx/bardescriptoreditorfactory.cpp +++ b/src/plugins/qnx/bardescriptoreditorfactory.cpp @@ -36,20 +36,42 @@ #include #include +#include using namespace Qnx; using namespace Qnx::Internal; +class BarDescriptorActionHandler : public TextEditor::TextEditorActionHandler +{ +public: + BarDescriptorActionHandler() + : TextEditor::TextEditorActionHandler(Constants::QNX_BAR_DESCRIPTOR_EDITOR_CONTEXT) + { + } +protected: + TextEditor::BaseTextEditorWidget *resolveTextEditorWidget(Core::IEditor *editor) const + { + BarDescriptorEditorWidget *w = qobject_cast(editor->widget()); + return w ? w->sourceWidget() : 0; + } +}; + BarDescriptorEditorFactory::BarDescriptorEditorFactory(QObject *parent) : Core::IEditorFactory(parent) + , m_actionHandler(new BarDescriptorActionHandler) { setId(Constants::QNX_BAR_DESCRIPTOR_EDITOR_ID); setDisplayName(tr("Bar descriptor editor")); addMimeType(Constants::QNX_BAR_DESCRIPTOR_MIME_TYPE); } +BarDescriptorEditorFactory::~BarDescriptorEditorFactory() +{ + delete m_actionHandler; +} + Core::IEditor *BarDescriptorEditorFactory::createEditor(QWidget *parent) { - BarDescriptorEditorWidget *editorWidget = new BarDescriptorEditorWidget(parent); + BarDescriptorEditorWidget *editorWidget = new BarDescriptorEditorWidget(parent, m_actionHandler); return editorWidget->editor(); } diff --git a/src/plugins/qnx/bardescriptoreditorfactory.h b/src/plugins/qnx/bardescriptoreditorfactory.h index fac30e79208..ed5a012d6a3 100644 --- a/src/plugins/qnx/bardescriptoreditorfactory.h +++ b/src/plugins/qnx/bardescriptoreditorfactory.h @@ -34,6 +34,10 @@ #include +namespace TextEditor { +class TextEditorActionHandler; +} + namespace Qnx { namespace Internal { @@ -43,8 +47,12 @@ class BarDescriptorEditorFactory : public Core::IEditorFactory public: explicit BarDescriptorEditorFactory(QObject *parent = 0); + ~BarDescriptorEditorFactory(); Core::IEditor *createEditor(QWidget *parent); + +private: + TextEditor::TextEditorActionHandler *m_actionHandler; }; } // namespace Internal diff --git a/src/plugins/qnx/bardescriptoreditorwidget.cpp b/src/plugins/qnx/bardescriptoreditorwidget.cpp index 604523437b8..5d069112a85 100644 --- a/src/plugins/qnx/bardescriptoreditorwidget.cpp +++ b/src/plugins/qnx/bardescriptoreditorwidget.cpp @@ -41,18 +41,29 @@ #include "bardescriptoreditorpackageinformationwidget.h" #include "bardescriptoreditorpermissionswidget.h" +#include #include #include #include +#include +#include +#include using namespace Qnx; using namespace Qnx::Internal; -BarDescriptorEditorWidget::BarDescriptorEditorWidget(QWidget *parent) +BarDescriptorEditorWidget::BarDescriptorEditorWidget( + QWidget *parent, TextEditor::TextEditorActionHandler *handler) : QStackedWidget(parent) , m_editor(0) + , m_handler(handler) , m_dirty(false) { + Core::IContext *myContext = new Core::IContext(this); + myContext->setWidget(this); + myContext->setContext(Core::Context(Constants::QNX_BAR_DESCRIPTOR_EDITOR_CONTEXT, TextEditor::Constants::C_TEXTEDITOR)); + Core::ICore::addContextObject(myContext); + initGeneralPage(); initApplicationPage(); initAssetsPage(); @@ -149,6 +160,8 @@ void BarDescriptorEditorWidget::initSourcePage() m_xmlSourceWidget = new TextEditor::PlainTextEditorWidget(this); addWidget(m_xmlSourceWidget); + TextEditor::TextEditorSettings::initializeEditor(m_xmlSourceWidget); + m_handler->setupActions(m_xmlSourceWidget); m_xmlSourceWidget->configure(QLatin1String(Constants::QNX_BAR_DESCRIPTOR_MIME_TYPE)); connect(m_xmlSourceWidget, SIGNAL(textChanged()), this, SLOT(setDirty())); } @@ -204,6 +217,11 @@ BarDescriptorEditorAssetsWidget *BarDescriptorEditorWidget::assetsWidget() const return m_assetsWidget; } +TextEditor::BaseTextEditorWidget *BarDescriptorEditorWidget::sourceWidget() const +{ + return m_xmlSourceWidget; +} + void BarDescriptorEditorWidget::setFilePath(const QString &filePath) { Core::IDocument *doc = m_xmlSourceWidget->editorDocument(); diff --git a/src/plugins/qnx/bardescriptoreditorwidget.h b/src/plugins/qnx/bardescriptoreditorwidget.h index bb2480cabb9..8e5edc69e60 100644 --- a/src/plugins/qnx/bardescriptoreditorwidget.h +++ b/src/plugins/qnx/bardescriptoreditorwidget.h @@ -46,6 +46,8 @@ class PanelsWidget; namespace TextEditor { class PlainTextEditorWidget; +class TextEditorActionHandler; +class BaseTextEditorWidget; } namespace Qnx { @@ -65,7 +67,7 @@ class BarDescriptorEditorWidget : public QStackedWidget Q_OBJECT public: - explicit BarDescriptorEditorWidget(QWidget *parent = 0); + explicit BarDescriptorEditorWidget(QWidget *parent, TextEditor::TextEditorActionHandler *handler); Core::IEditor *editor() const; @@ -79,6 +81,8 @@ public: BarDescriptorEditorAssetsWidget *assetsWidget() const; + TextEditor::BaseTextEditorWidget *sourceWidget() const; + void setFilePath(const QString &filePath); QString xmlSource() const; void setXmlSource(const QString &xmlSource); @@ -103,6 +107,7 @@ private: mutable Core::IEditor *m_editor; + TextEditor::TextEditorActionHandler *m_handler; bool m_dirty; // New UI diff --git a/src/plugins/qnx/qnxconstants.h b/src/plugins/qnx/qnxconstants.h index 728403dc61f..c0d5d1762d6 100644 --- a/src/plugins/qnx/qnxconstants.h +++ b/src/plugins/qnx/qnxconstants.h @@ -99,6 +99,7 @@ const char QNX_BB_SIGNING_ID[] = "ZZ.BlackBerry Signing Infrastructure Configura const char QNX_BAR_DESCRIPTOR_MIME_TYPE[] = "application/vnd.rim.qnx.bar_descriptor"; const char QNX_BAR_DESCRIPTOR_EDITOR_ID[] = "Qnx.BarDescriptorEditor"; +const char QNX_BAR_DESCRIPTOR_EDITOR_CONTEXT[] = "Qnx.BarDescriptorEditor"; const char QNX_TASK_CATEGORY_BARDESCRIPTOR[] = "Task.Category.BarDescriptor"; diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp index 7c492a44b05..15cd1c82c4d 100644 --- a/src/plugins/texteditor/texteditoractionhandler.cpp +++ b/src/plugins/texteditor/texteditoractionhandler.cpp @@ -560,6 +560,11 @@ FUNCTION(gotoNextWordCamelCase) FUNCTION(gotoNextWordCamelCaseWithSelection) +BaseTextEditorWidget *TextEditorActionHandler::resolveTextEditorWidget(Core::IEditor *editor) const +{ + return qobject_cast(editor->widget()); +} + void TextEditorActionHandler::updateCurrentEditor(Core::IEditor *editor) { m_currentEditor = 0; @@ -567,7 +572,7 @@ void TextEditorActionHandler::updateCurrentEditor(Core::IEditor *editor) if (!editor) return; - BaseTextEditorWidget *baseEditor = qobject_cast(editor->widget()); + BaseTextEditorWidget *baseEditor = resolveTextEditorWidget(editor); if (baseEditor && baseEditor->actionHack() == this) { m_currentEditor = baseEditor; diff --git a/src/plugins/texteditor/texteditoractionhandler.h b/src/plugins/texteditor/texteditoractionhandler.h index 2e768b4b4e4..a09e6a3a84e 100644 --- a/src/plugins/texteditor/texteditoractionhandler.h +++ b/src/plugins/texteditor/texteditoractionhandler.h @@ -79,6 +79,7 @@ public slots: void updateCopyAction(); protected: + virtual BaseTextEditorWidget *resolveTextEditorWidget(Core::IEditor *editor) const; const QPointer ¤tEditor() const; QAction *registerAction(const Core::Id &id,