summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-07-27 09:29:22 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-07-27 09:29:22 +0200
commitc8016e8502d9512b681a4a3b253778e15f8f9570 (patch)
tree7033388330e19c71b34628940ea684d1b545a732
parent1162b09af7046f11c6e0b85c9c2ae5e64285cf8b (diff)
downloadqt-creator-c8016e8502d9512b681a4a3b253778e15f8f9570.tar.gz
Put the quickfix implementations into a separate file.
-rw-r--r--src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp6
-rw-r--r--src/plugins/qmljseditor/qmljseditor.pro3
-rw-r--r--src/plugins/qmljseditor/qmljsquickfix.cpp82
-rw-r--r--src/plugins/qmljseditor/qmljsquickfixes.cpp125
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);
+}