forked from qt-creator/qt-creator
CppEditor: simplify CppQuickFixOperation interface
Change-Id: Ib3ed82c7f07f80027b18471ffb7b3055fa74eb52 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
@@ -122,8 +122,7 @@ public:
|
||||
}
|
||||
QString replacement = componentName + QLatin1String(" {\n");
|
||||
if (!m_idName.isEmpty())
|
||||
replacement += QLatin1String("id: ") + m_idName
|
||||
+ QLatin1Char('\n');
|
||||
replacement += QLatin1String("id: ") + m_idName + QLatin1Char('\n');
|
||||
|
||||
Utils::ChangeSet changes;
|
||||
changes.replace(start, end, replacement);
|
||||
@@ -136,8 +135,7 @@ public:
|
||||
} // end of anonymous namespace
|
||||
|
||||
|
||||
QList<QmlJSQuickFixOperation::Ptr> ComponentFromObjectDef::match(
|
||||
const QSharedPointer<const QmlJSQuickFixAssistInterface> &interface)
|
||||
void ComponentFromObjectDef::match(const QmlJSQuickFixInterface &interface, QuickFixOperations &result)
|
||||
{
|
||||
const int pos = interface->currentFile()->cursor().position();
|
||||
|
||||
@@ -146,13 +144,12 @@ QList<QmlJSQuickFixOperation::Ptr> ComponentFromObjectDef::match(
|
||||
Node *node = path.at(i);
|
||||
if (UiObjectDefinition *objDef = cast<UiObjectDefinition *>(node)) {
|
||||
if (!interface->currentFile()->isCursorOn(objDef->qualifiedTypeNameId))
|
||||
return noResult();
|
||||
return;
|
||||
// check that the node is not the root node
|
||||
if (i > 0 && !cast<UiProgram*>(path.at(i - 1))) {
|
||||
return singleResult(new Operation(interface, objDef));
|
||||
result.append(QuickFixOperation::Ptr(new Operation(interface, objDef)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return noResult();
|
||||
}
|
||||
|
||||
@@ -38,8 +38,7 @@ namespace Internal {
|
||||
class ComponentFromObjectDef: public QmlJSQuickFixFactory
|
||||
{
|
||||
public:
|
||||
virtual QList<QmlJSQuickFixOperation::Ptr> match(
|
||||
const QSharedPointer<const QmlJSQuickFixAssistInterface> &interface);
|
||||
void match(const QmlJSQuickFixInterface &interface, QuickFixOperations &result);
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -48,18 +48,13 @@ using namespace QmlJSTools;
|
||||
using namespace TextEditor;
|
||||
using TextEditor::RefactoringChanges;
|
||||
|
||||
QmlJSQuickFixOperation::QmlJSQuickFixOperation(
|
||||
const QSharedPointer<const QmlJSQuickFixAssistInterface> &interface,
|
||||
int priority)
|
||||
QmlJSQuickFixOperation::QmlJSQuickFixOperation(const QmlJSQuickFixInterface &interface,
|
||||
int priority)
|
||||
: QuickFixOperation(priority)
|
||||
, m_interface(interface)
|
||||
{
|
||||
}
|
||||
|
||||
QmlJSQuickFixOperation::~QmlJSQuickFixOperation()
|
||||
{
|
||||
}
|
||||
|
||||
void QmlJSQuickFixOperation::perform()
|
||||
{
|
||||
QmlJSRefactoringChanges refactoring(QmlJS::ModelManagerInterface::instance(),
|
||||
@@ -79,28 +74,9 @@ QString QmlJSQuickFixOperation::fileName() const
|
||||
return m_interface->semanticInfo().document->fileName();
|
||||
}
|
||||
|
||||
QmlJSQuickFixFactory::QmlJSQuickFixFactory()
|
||||
{
|
||||
}
|
||||
|
||||
QmlJSQuickFixFactory::~QmlJSQuickFixFactory()
|
||||
void QmlJSQuickFixFactory::matchingOperations(const QuickFixInterface &interface,
|
||||
QuickFixOperations &result)
|
||||
{
|
||||
}
|
||||
|
||||
QList<QuickFixOperation::Ptr> QmlJSQuickFixFactory::matchingOperations(
|
||||
const QSharedPointer<const TextEditor::IAssistInterface> &interface)
|
||||
{
|
||||
return match(interface.staticCast<const QmlJSQuickFixAssistInterface>());
|
||||
}
|
||||
|
||||
QList<QmlJSQuickFixOperation::Ptr> QmlJSQuickFixFactory::noResult()
|
||||
{
|
||||
return QList<QmlJSQuickFixOperation::Ptr>();
|
||||
}
|
||||
|
||||
QList<QmlJSQuickFixOperation::Ptr> QmlJSQuickFixFactory::singleResult(QmlJSQuickFixOperation *operation)
|
||||
{
|
||||
QList<QmlJSQuickFixOperation::Ptr> result;
|
||||
result.append(QmlJSQuickFixOperation::Ptr(operation));
|
||||
return result;
|
||||
match(interface.staticCast<const QmlJSQuickFixAssistInterface>(), result);
|
||||
}
|
||||
|
||||
@@ -39,20 +39,16 @@
|
||||
|
||||
#include <QSharedPointer>
|
||||
|
||||
namespace ExtensionSystem {
|
||||
class IPlugin;
|
||||
}
|
||||
|
||||
namespace QmlJS {
|
||||
class ModelManagerInterface;
|
||||
}
|
||||
namespace QmlJS { class ModelManagerInterface; }
|
||||
|
||||
namespace QmlJSEditor {
|
||||
|
||||
namespace Internal {
|
||||
class QmlJSQuickFixAssistInterface;
|
||||
} // namespace Internal
|
||||
namespace Internal { class QmlJSQuickFixAssistInterface; }
|
||||
|
||||
typedef QSharedPointer<const Internal::QmlJSQuickFixAssistInterface> QmlJSQuickFixInterface;
|
||||
typedef TextEditor::QuickFixOperation QuickFixOperation;
|
||||
typedef TextEditor::QuickFixOperations QuickFixOperations;
|
||||
typedef TextEditor::QuickFixInterface QuickFixInterface;
|
||||
|
||||
/*!
|
||||
A quick-fix operation for the QML/JavaScript editor.
|
||||
@@ -66,10 +62,7 @@ public:
|
||||
\param interface The interface on which the operation is performed.
|
||||
\param priority The priority for this operation.
|
||||
*/
|
||||
explicit QmlJSQuickFixOperation(
|
||||
const QSharedPointer<const Internal::QmlJSQuickFixAssistInterface> &interface,
|
||||
int priority = -1);
|
||||
virtual ~QmlJSQuickFixOperation();
|
||||
explicit QmlJSQuickFixOperation(const QmlJSQuickFixInterface &interface, int priority = -1);
|
||||
|
||||
virtual void perform();
|
||||
|
||||
@@ -85,29 +78,23 @@ protected:
|
||||
QString fileName() const;
|
||||
|
||||
private:
|
||||
QSharedPointer<const Internal::QmlJSQuickFixAssistInterface> m_interface;
|
||||
QmlJSQuickFixInterface m_interface;
|
||||
};
|
||||
|
||||
class QmlJSQuickFixFactory: public TextEditor::QuickFixFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QmlJSQuickFixFactory();
|
||||
virtual ~QmlJSQuickFixFactory();
|
||||
protected:
|
||||
QmlJSQuickFixFactory() {}
|
||||
|
||||
virtual QList<TextEditor::QuickFixOperation::Ptr>
|
||||
matchingOperations(const QSharedPointer<const TextEditor::IAssistInterface> &interface);
|
||||
void matchingOperations(const QuickFixInterface &interface, QuickFixOperations &result);
|
||||
|
||||
/*!
|
||||
Implement this method to match and create the appropriate
|
||||
QmlJSQuickFixOperation objects.
|
||||
*/
|
||||
virtual QList<QmlJSQuickFixOperation::Ptr> match(
|
||||
const QSharedPointer<const Internal::QmlJSQuickFixAssistInterface> &interface) = 0;
|
||||
|
||||
static QList<QmlJSQuickFixOperation::Ptr> noResult();
|
||||
static QList<QmlJSQuickFixOperation::Ptr> singleResult(QmlJSQuickFixOperation *operation);
|
||||
virtual void match(const QmlJSQuickFixInterface &interface, QuickFixOperations &result) = 0;
|
||||
};
|
||||
|
||||
} // namespace QmlJSEditor
|
||||
|
||||
@@ -62,9 +62,7 @@ namespace {
|
||||
*/
|
||||
class SplitInitializerOp: public QmlJSQuickFixFactory
|
||||
{
|
||||
public:
|
||||
virtual QList<QmlJSQuickFixOperation::Ptr> match(
|
||||
const QSharedPointer<const QmlJSQuickFixAssistInterface> &interface)
|
||||
void match(const QmlJSQuickFixInterface &interface, QuickFixOperations &result)
|
||||
{
|
||||
UiObjectInitializer *objectInitializer = 0;
|
||||
|
||||
@@ -82,12 +80,9 @@ public:
|
||||
}
|
||||
|
||||
if (objectInitializer)
|
||||
return singleResult(new Operation(interface, objectInitializer));
|
||||
else
|
||||
return noResult();
|
||||
result.append(QuickFixOperation::Ptr(new Operation(interface, objectInitializer)));
|
||||
}
|
||||
|
||||
private:
|
||||
class Operation: public QmlJSQuickFixOperation
|
||||
{
|
||||
UiObjectInitializer *_objectInitializer;
|
||||
@@ -102,7 +97,7 @@ private:
|
||||
"Split Initializer"));
|
||||
}
|
||||
|
||||
virtual void performChanges(QmlJSRefactoringFilePtr currentFile,
|
||||
void performChanges(QmlJSRefactoringFilePtr currentFile,
|
||||
const QmlJSRefactoringChanges &)
|
||||
{
|
||||
Q_ASSERT(_objectInitializer != 0);
|
||||
@@ -137,18 +132,16 @@ class AddAnalysisMessageSuppressionComment: public QmlJSQuickFixFactory
|
||||
{
|
||||
Q_DECLARE_TR_FUNCTIONS(QmlJSEditor::AddAnalysisMessageSuppressionComment)
|
||||
public:
|
||||
virtual QList<QmlJSQuickFixOperation::Ptr> match(
|
||||
const QSharedPointer<const QmlJSQuickFixAssistInterface> &interface)
|
||||
void match(const QmlJSQuickFixInterface &interface, QuickFixOperations &result)
|
||||
{
|
||||
const QList<StaticAnalysis::Message> &messages = interface->semanticInfo().staticAnalysisMessages;
|
||||
|
||||
foreach (const StaticAnalysis::Message &message, messages) {
|
||||
if (interface->currentFile()->isCursorOn(message.location)) {
|
||||
return singleResult(new Operation(interface, message));
|
||||
result.append(QuickFixOperation::Ptr(new Operation(interface, message)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
return noResult();
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -173,8 +173,7 @@ public:
|
||||
} // end of anonymous namespace
|
||||
|
||||
|
||||
QList<QmlJSQuickFixOperation::Ptr> WrapInLoader::match(
|
||||
const QSharedPointer<const QmlJSQuickFixAssistInterface> &interface)
|
||||
void WrapInLoader::match(const QmlJSQuickFixInterface &interface, QuickFixOperations &result)
|
||||
{
|
||||
const int pos = interface->currentFile()->cursor().position();
|
||||
|
||||
@@ -183,13 +182,12 @@ QList<QmlJSQuickFixOperation::Ptr> WrapInLoader::match(
|
||||
Node *node = path.at(i);
|
||||
if (UiObjectDefinition *objDef = cast<UiObjectDefinition *>(node)) {
|
||||
if (!interface->currentFile()->isCursorOn(objDef->qualifiedTypeNameId))
|
||||
return noResult();
|
||||
return;
|
||||
// check that the node is not the root node
|
||||
if (i > 0 && !cast<UiProgram*>(path.at(i - 1))) {
|
||||
return singleResult(new Operation(interface, objDef));
|
||||
result.append(QuickFixOperation::Ptr(new Operation(interface, objDef)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return noResult();
|
||||
}
|
||||
|
||||
@@ -37,9 +37,7 @@ namespace Internal {
|
||||
|
||||
class WrapInLoader: public QmlJSQuickFixFactory
|
||||
{
|
||||
public:
|
||||
virtual QList<QmlJSQuickFixOperation::Ptr> match(
|
||||
const QSharedPointer<const QmlJSQuickFixAssistInterface> &interface);
|
||||
void match(const QmlJSQuickFixInterface &interface, QuickFixOperations &result);
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
Reference in New Issue
Block a user