diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-07-27 09:29:22 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-07-27 09:29:22 +0200 |
commit | c8016e8502d9512b681a4a3b253778e15f8f9570 (patch) | |
tree | 7033388330e19c71b34628940ea684d1b545a732 | |
parent | 1162b09af7046f11c6e0b85c9c2ae5e64285cf8b (diff) | |
download | qt-creator-c8016e8502d9512b681a4a3b253778e15f8f9570.tar.gz |
Put the quickfix implementations into a separate file.
-rw-r--r-- | src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp | 6 | ||||
-rw-r--r-- | src/plugins/qmljseditor/qmljseditor.pro | 3 | ||||
-rw-r--r-- | src/plugins/qmljseditor/qmljsquickfix.cpp | 82 | ||||
-rw-r--r-- | src/plugins/qmljseditor/qmljsquickfixes.cpp | 125 |
4 files changed, 130 insertions, 86 deletions
diff --git a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp index 75da806ae7..44134f5837 100644 --- a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp +++ b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp @@ -45,7 +45,7 @@ using namespace QmlJSEditor::Internal; namespace { -static QString getId(UiObjectDefinition *def) +static QString getIdProperty(UiObjectDefinition *def) { if (def && def->initializer) { for (UiObjectMemberList *iter = def->initializer->members; iter; iter = iter->next) { @@ -90,7 +90,7 @@ public: { Q_ASSERT(_objDef != 0); - QString componentName = getId(_objDef); + QString componentName = getIdProperty(_objDef); componentName[0] = componentName.at(0).toUpper(); const QString path = fileName(); @@ -131,7 +131,7 @@ QList<QmlJSQuickFixOperation::Ptr> ComponentFromObjectDef::match(const QmlJSQuic Node *node = path.at(i); if (UiObjectDefinition *objDef = cast<UiObjectDefinition *>(node)) { if (i > 0 && !cast<UiProgram*>(path.at(i - 1))) { // node is not the root node - if (!getId(objDef).isEmpty()) { + if (!getIdProperty(objDef).isEmpty()) { result.append(QmlJSQuickFixOperation::Ptr(new Operation(state, objDef))); return result; } diff --git a/src/plugins/qmljseditor/qmljseditor.pro b/src/plugins/qmljseditor/qmljseditor.pro index e2de54e54c..6bcd71a22b 100644 --- a/src/plugins/qmljseditor/qmljseditor.pro +++ b/src/plugins/qmljseditor/qmljseditor.pro @@ -45,7 +45,8 @@ SOURCES += \ qmljscomponentfromobjectdef.cpp \ qmljsoutline.cpp \ qmloutlinemodel.cpp \ - qmltaskmanager.cpp + qmltaskmanager.cpp \ + qmljsquickfixes.cpp RESOURCES += qmljseditor.qrc OTHER_FILES += QmlJSEditor.pluginspec QmlJSEditor.mimetypes.xml diff --git a/src/plugins/qmljseditor/qmljsquickfix.cpp b/src/plugins/qmljseditor/qmljsquickfix.cpp index b7be83002c..8e536fe195 100644 --- a/src/plugins/qmljseditor/qmljsquickfix.cpp +++ b/src/plugins/qmljseditor/qmljsquickfix.cpp @@ -38,7 +38,6 @@ #include <qmljs/qmljsmodelmanagerinterface.h> -#include <QtGui/QApplication> #include <QtCore/QDebug> using namespace QmlJS; @@ -48,81 +47,6 @@ using namespace QmlJSEditor::Internal; using namespace TextEditor; using TextEditor::RefactoringChanges; -namespace { - -class SplitInitializerOp: public QmlJSQuickFixFactory -{ -public: - virtual QList<QmlJSQuickFixOperation::Ptr> match(const QmlJSQuickFixState &state) - { - QList<QmlJSQuickFixOperation::Ptr> result; - - UiObjectInitializer *objectInitializer = 0; - - const int pos = state.textCursor().position(); - - if (QmlJS::AST::Node *member = state.semanticInfo().declaringMember(pos)) { - if (QmlJS::AST::UiObjectBinding *b = QmlJS::AST::cast<QmlJS::AST::UiObjectBinding *>(member)) { - if (b->initializer->lbraceToken.startLine == b->initializer->rbraceToken.startLine) - objectInitializer = b->initializer; - - } else if (QmlJS::AST::UiObjectDefinition *b = QmlJS::AST::cast<QmlJS::AST::UiObjectDefinition *>(member)) { - if (b->initializer->lbraceToken.startLine == b->initializer->rbraceToken.startLine) - objectInitializer = b->initializer; - } - } - - if (objectInitializer) - result.append(QSharedPointer<QmlJSQuickFixOperation>(new Operation(state, objectInitializer))); - return result; - } - - virtual QString description() const - { - return QApplication::translate("QmlJSEditor::QuickFix", "Split initializer"); - } - -private: - class Operation: public QmlJSQuickFixOperation - { - UiObjectInitializer *_objectInitializer; - - public: - Operation(const QmlJSQuickFixState &state, UiObjectInitializer *objectInitializer) - : QmlJSQuickFixOperation(state, 0) - , _objectInitializer(objectInitializer) - {} - - virtual void createChanges() - { - Q_ASSERT(_objectInitializer != 0); - - Utils::ChangeSet changes; - - for (QmlJS::AST::UiObjectMemberList *it = _objectInitializer->members; it; it = it->next) { - if (QmlJS::AST::UiObjectMember *member = it->member) { - const QmlJS::AST::SourceLocation loc = member->firstSourceLocation(); - - // insert a newline at the beginning of this binding - changes.insert(startPosition(loc), QLatin1String("\n")); - } - } - - // insert a newline before the closing brace - changes.insert(startPosition(_objectInitializer->rbraceToken), - QLatin1String("\n")); - - refactoringChanges()->changeFile(fileName(), changes); - refactoringChanges()->reindent(fileName(), - range(startPosition(_objectInitializer->lbraceToken), - startPosition(_objectInitializer->rbraceToken))); - - } - }; -}; - -} // end of anonymous namespace - QmlJSQuickFixState::QmlJSQuickFixState(TextEditor::BaseTextEditor *editor) : QuickFixState(editor) { @@ -232,9 +156,3 @@ QList<TextEditor::QuickFixFactory *> QmlJSQuickFixCollector::quickFixFactories() results.append(f); return results; } - -void QmlJSQuickFixCollector::registerQuickFixes(ExtensionSystem::IPlugin *plugIn) -{ - plugIn->addAutoReleasedObject(new SplitInitializerOp); - plugIn->addAutoReleasedObject(new ComponentFromObjectDef); -} diff --git a/src/plugins/qmljseditor/qmljsquickfixes.cpp b/src/plugins/qmljseditor/qmljsquickfixes.cpp new file mode 100644 index 0000000000..d5d2f32b2c --- /dev/null +++ b/src/plugins/qmljseditor/qmljsquickfixes.cpp @@ -0,0 +1,125 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "qmljsquickfix.h" +#include "qmljscomponentfromobjectdef.h" +#include "qmljseditor.h" +#include "qmljsrefactoringchanges.h" + +#include <extensionsystem/iplugin.h> +#include <extensionsystem/pluginmanager.h> +#include <qmljs/parser/qmljsast_p.h> + +#include <QtGui/QApplication> + +using namespace QmlJS; +using namespace QmlJS::AST; +using namespace QmlJSEditor; +using namespace QmlJSEditor::Internal; +using namespace TextEditor; +using TextEditor::RefactoringChanges; + +namespace { + +class SplitInitializerOp: public QmlJSQuickFixFactory +{ +public: + virtual QList<QmlJSQuickFixOperation::Ptr> match(const QmlJSQuickFixState &state) + { + QList<QmlJSQuickFixOperation::Ptr> result; + + UiObjectInitializer *objectInitializer = 0; + + const int pos = state.textCursor().position(); + + if (QmlJS::AST::Node *member = state.semanticInfo().declaringMember(pos)) { + if (QmlJS::AST::UiObjectBinding *b = QmlJS::AST::cast<QmlJS::AST::UiObjectBinding *>(member)) { + if (b->initializer->lbraceToken.startLine == b->initializer->rbraceToken.startLine) + objectInitializer = b->initializer; + + } else if (QmlJS::AST::UiObjectDefinition *b = QmlJS::AST::cast<QmlJS::AST::UiObjectDefinition *>(member)) { + if (b->initializer->lbraceToken.startLine == b->initializer->rbraceToken.startLine) + objectInitializer = b->initializer; + } + } + + if (objectInitializer) + result.append(QSharedPointer<QmlJSQuickFixOperation>(new Operation(state, objectInitializer))); + return result; + } + +private: + class Operation: public QmlJSQuickFixOperation + { + UiObjectInitializer *_objectInitializer; + + public: + Operation(const QmlJSQuickFixState &state, UiObjectInitializer *objectInitializer) + : QmlJSQuickFixOperation(state, 0) + , _objectInitializer(objectInitializer) + { + setDescription(QApplication::translate("QmlJSEditor::QuickFix", + "Split initializer")); + } + + virtual void createChanges() + { + Q_ASSERT(_objectInitializer != 0); + + Utils::ChangeSet changes; + + for (QmlJS::AST::UiObjectMemberList *it = _objectInitializer->members; it; it = it->next) { + if (QmlJS::AST::UiObjectMember *member = it->member) { + const QmlJS::AST::SourceLocation loc = member->firstSourceLocation(); + + // insert a newline at the beginning of this binding + changes.insert(startPosition(loc), QLatin1String("\n")); + } + } + + // insert a newline before the closing brace + changes.insert(startPosition(_objectInitializer->rbraceToken), + QLatin1String("\n")); + + refactoringChanges()->changeFile(fileName(), changes); + refactoringChanges()->reindent(fileName(), + range(startPosition(_objectInitializer->lbraceToken), + startPosition(_objectInitializer->rbraceToken))); + + } + }; +}; + +} // end of anonymous namespace + +void QmlJSQuickFixCollector::registerQuickFixes(ExtensionSystem::IPlugin *plugIn) +{ + plugIn->addAutoReleasedObject(new SplitInitializerOp); + plugIn->addAutoReleasedObject(new ComponentFromObjectDef); +} |