1 /**************************************************************************
3 ** This file is part of Qt Creator
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
7 ** Contact: Nokia Corporation (info@qt.nokia.com)
10 ** GNU Lesser General Public License Usage
12 ** This file may be used under the terms of the GNU Lesser General Public
13 ** License version 2.1 as published by the Free Software Foundation and
14 ** appearing in the file LICENSE.LGPL included in the packaging of this file.
15 ** Please review the following information to ensure the GNU Lesser General
16 ** Public License version 2.1 requirements will be met:
17 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
19 ** In addition, as a special exception, Nokia gives you certain additional
20 ** rights. These rights are described in the Nokia Qt LGPL Exception
21 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
25 ** Alternatively, this file may be used in accordance with the terms and
26 ** conditions contained in a signed written agreement between you and Nokia.
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
31 **************************************************************************/
33 #ifndef REWRITEACTION_H
34 #define REWRITEACTION_H
36 #include "abstractproperty.h"
37 #include "modelnodepositionstorage.h"
39 #include <filemanager/qmlrefactoring.h>
41 namespace QmlDesigner {
44 class AddImportRewriteAction;
45 class AddPropertyRewriteAction;
46 class ChangeIdRewriteAction;
47 class ChangePropertyRewriteAction;
48 class ChangeTypeRewriteAction;
49 class RemoveImportRewriteAction;
50 class RemoveNodeRewriteAction;
51 class RemovePropertyRewriteAction;
52 class ReparentNodeRewriteAction;
53 class MoveNodeRewriteAction;
58 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore) = 0;
59 virtual QString info() const = 0;
61 virtual AddImportRewriteAction *asAddImportRewriteAction() { return 0; }
62 virtual AddPropertyRewriteAction *asAddPropertyRewriteAction() { return 0; }
63 virtual ChangeIdRewriteAction *asChangeIdRewriteAction() { return 0; }
64 virtual ChangePropertyRewriteAction *asChangePropertyRewriteAction() { return 0; }
65 virtual ChangeTypeRewriteAction *asChangeTypeRewriteAction() { return 0; }
66 virtual RemoveImportRewriteAction * asRemoveImportRewriteAction() { return 0; }
67 virtual RemoveNodeRewriteAction *asRemoveNodeRewriteAction() { return 0; }
68 virtual RemovePropertyRewriteAction *asRemovePropertyRewriteAction() { return 0; }
69 virtual ReparentNodeRewriteAction *asReparentNodeRewriteAction() { return 0; }
70 virtual MoveNodeRewriteAction *asMoveNodeRewriteAction() { return 0; }
71 virtual ~RewriteAction() {}
78 RewriteAction(const RewriteAction &);
79 RewriteAction &operator=(const RewriteAction&);
82 class AddPropertyRewriteAction: public RewriteAction
85 AddPropertyRewriteAction(const AbstractProperty &property, const QString &valueText, QmlDesigner::QmlRefactoring::PropertyType propertyType, const ModelNode &containedModelNode/* = ModelNode()*/):
86 m_property(property), m_valueText(valueText), m_propertyType(propertyType), m_containedModelNode(containedModelNode)
89 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
90 virtual QString info() const;
92 virtual AddPropertyRewriteAction *asAddPropertyRewriteAction() { return this; }
94 AbstractProperty property() const
95 { return m_property; }
97 QString valueText() const
98 { return m_valueText; }
100 QmlDesigner::QmlRefactoring::PropertyType propertyType() const
101 { return m_propertyType; }
103 ModelNode containedModelNode() const
104 { return m_containedModelNode; }
107 AbstractProperty m_property;
109 QmlDesigner::QmlRefactoring::PropertyType m_propertyType;
110 ModelNode m_containedModelNode;
113 class ChangeIdRewriteAction: public RewriteAction
116 ChangeIdRewriteAction(const ModelNode &node, const QString &oldId, const QString &newId):
117 m_node(node), m_oldId(oldId), m_newId(newId)
120 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
121 virtual QString info() const;
123 virtual ChangeIdRewriteAction *asChangeIdRewriteAction() { return this; }
125 ModelNode node() const
134 class ChangePropertyRewriteAction: public RewriteAction
137 ChangePropertyRewriteAction(const AbstractProperty &property, const QString &valueText, QmlDesigner::QmlRefactoring::PropertyType propertyType, const ModelNode &containedModelNode/* = ModelNode()*/):
138 m_property(property), m_valueText(valueText), m_propertyType(propertyType), m_containedModelNode(containedModelNode)
141 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
142 virtual QString info() const;
144 virtual ChangePropertyRewriteAction *asChangePropertyRewriteAction() { return this; }
146 AbstractProperty property() const
147 { return m_property; }
149 QString valueText() const
150 { return m_valueText; }
152 QmlDesigner::QmlRefactoring::PropertyType propertyType() const
153 { return m_propertyType; }
155 ModelNode containedModelNode() const
156 { return m_containedModelNode; }
159 AbstractProperty m_property;
161 QmlDesigner::QmlRefactoring::PropertyType m_propertyType;
162 ModelNode m_containedModelNode;
165 class ChangeTypeRewriteAction:public RewriteAction
168 ChangeTypeRewriteAction(const ModelNode &node):
172 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
173 virtual QString info() const;
175 virtual ChangeTypeRewriteAction *asChangeTypeRewriteAction() { return this; }
177 ModelNode node() const
184 class RemoveNodeRewriteAction: public RewriteAction
187 RemoveNodeRewriteAction(const ModelNode &node):
191 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
192 virtual QString info() const;
194 virtual RemoveNodeRewriteAction *asRemoveNodeRewriteAction() { return this; }
196 ModelNode node() const
203 class RemovePropertyRewriteAction: public RewriteAction
206 RemovePropertyRewriteAction(const AbstractProperty &property):
210 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
211 virtual QString info() const;
213 virtual RemovePropertyRewriteAction *asRemovePropertyRewriteAction() { return this; }
215 AbstractProperty property() const
216 { return m_property; }
219 AbstractProperty m_property;
222 class ReparentNodeRewriteAction: public RewriteAction
225 ReparentNodeRewriteAction(const ModelNode &node, const AbstractProperty &oldParentProperty, const AbstractProperty &targetProperty, QmlDesigner::QmlRefactoring::PropertyType propertyType):
226 m_node(node), m_oldParentProperty(oldParentProperty), m_targetProperty(targetProperty), m_propertyType(propertyType)
229 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
230 virtual QString info() const;
232 virtual ReparentNodeRewriteAction *asReparentNodeRewriteAction() { return this; }
234 ModelNode reparentedNode() const
237 void setOldParentProperty(const AbstractProperty &oldParentProperty)
238 { m_oldParentProperty = oldParentProperty; }
240 AbstractProperty oldParentProperty() const
241 { return m_oldParentProperty; }
243 AbstractProperty targetProperty() const
244 { return m_targetProperty; }
246 QmlDesigner::QmlRefactoring::PropertyType propertyType() const
247 { return m_propertyType; }
251 AbstractProperty m_oldParentProperty;
252 AbstractProperty m_targetProperty;
253 QmlDesigner::QmlRefactoring::PropertyType m_propertyType;
256 class MoveNodeRewriteAction: public RewriteAction
259 MoveNodeRewriteAction(const ModelNode &movingNode, const ModelNode &newTrailingNode):
260 m_movingNode(movingNode), m_newTrailingNode(newTrailingNode)
263 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
264 virtual QString info() const;
266 virtual MoveNodeRewriteAction *asMoveNodeRewriteAction() { return this; }
269 ModelNode m_movingNode;
270 ModelNode m_newTrailingNode;
273 class AddImportRewriteAction: public RewriteAction
276 AddImportRewriteAction(const Import &import):
280 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
281 virtual QString info() const;
283 virtual AddImportRewriteAction *asAddImportRewriteAction() { return this; }
285 Import import() const { return m_import; }
291 class RemoveImportRewriteAction: public RewriteAction
294 RemoveImportRewriteAction(const Import &import):
298 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
299 virtual QString info() const;
301 virtual RemoveImportRewriteAction *asRemoveImportRewriteAction() { return this; }
303 Import import() const { return m_import; }
309 } // namespace Internal
310 } // namespace QmlDesigner
312 #endif // REWRITEACTION_H