1 /**************************************************************************
3 ** This file is part of Qt Creator
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
16 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 ** In addition, as a special exception, Nokia gives you certain additional
26 ** rights. These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
32 **************************************************************************/
34 #ifndef REWRITEACTION_H
35 #define REWRITEACTION_H
37 #include "abstractproperty.h"
38 #include "modelnodepositionstorage.h"
40 #include <filemanager/qmlrefactoring.h>
42 namespace QmlDesigner {
45 class AddImportRewriteAction;
46 class AddPropertyRewriteAction;
47 class ChangeIdRewriteAction;
48 class ChangePropertyRewriteAction;
49 class ChangeTypeRewriteAction;
50 class RemoveImportRewriteAction;
51 class RemoveNodeRewriteAction;
52 class RemovePropertyRewriteAction;
53 class ReparentNodeRewriteAction;
54 class MoveNodeRewriteAction;
59 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore) = 0;
60 virtual QString info() const = 0;
62 virtual AddImportRewriteAction *asAddImportRewriteAction() { return 0; }
63 virtual AddPropertyRewriteAction *asAddPropertyRewriteAction() { return 0; }
64 virtual ChangeIdRewriteAction *asChangeIdRewriteAction() { return 0; }
65 virtual ChangePropertyRewriteAction *asChangePropertyRewriteAction() { return 0; }
66 virtual ChangeTypeRewriteAction *asChangeTypeRewriteAction() { return 0; }
67 virtual RemoveImportRewriteAction * asRemoveImportRewriteAction() { return 0; }
68 virtual RemoveNodeRewriteAction *asRemoveNodeRewriteAction() { return 0; }
69 virtual RemovePropertyRewriteAction *asRemovePropertyRewriteAction() { return 0; }
70 virtual ReparentNodeRewriteAction *asReparentNodeRewriteAction() { return 0; }
71 virtual MoveNodeRewriteAction *asMoveNodeRewriteAction() { return 0; }
72 virtual ~RewriteAction() {}
79 RewriteAction(const RewriteAction &);
80 RewriteAction &operator=(const RewriteAction&);
83 class AddPropertyRewriteAction: public RewriteAction
86 AddPropertyRewriteAction(const AbstractProperty &property, const QString &valueText, QmlDesigner::QmlRefactoring::PropertyType propertyType, const ModelNode &containedModelNode/* = ModelNode()*/):
87 m_property(property), m_valueText(valueText), m_propertyType(propertyType), m_containedModelNode(containedModelNode)
90 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
91 virtual QString info() const;
93 virtual AddPropertyRewriteAction *asAddPropertyRewriteAction() { return this; }
95 AbstractProperty property() const
96 { return m_property; }
98 QString valueText() const
99 { return m_valueText; }
101 QmlDesigner::QmlRefactoring::PropertyType propertyType() const
102 { return m_propertyType; }
104 ModelNode containedModelNode() const
105 { return m_containedModelNode; }
108 AbstractProperty m_property;
110 QmlDesigner::QmlRefactoring::PropertyType m_propertyType;
111 ModelNode m_containedModelNode;
114 class ChangeIdRewriteAction: public RewriteAction
117 ChangeIdRewriteAction(const ModelNode &node, const QString &oldId, const QString &newId):
118 m_node(node), m_oldId(oldId), m_newId(newId)
121 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
122 virtual QString info() const;
124 virtual ChangeIdRewriteAction *asChangeIdRewriteAction() { return this; }
126 ModelNode node() const
135 class ChangePropertyRewriteAction: public RewriteAction
138 ChangePropertyRewriteAction(const AbstractProperty &property, const QString &valueText, QmlDesigner::QmlRefactoring::PropertyType propertyType, const ModelNode &containedModelNode/* = ModelNode()*/):
139 m_property(property), m_valueText(valueText), m_propertyType(propertyType), m_containedModelNode(containedModelNode)
142 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
143 virtual QString info() const;
145 virtual ChangePropertyRewriteAction *asChangePropertyRewriteAction() { return this; }
147 AbstractProperty property() const
148 { return m_property; }
150 QString valueText() const
151 { return m_valueText; }
153 QmlDesigner::QmlRefactoring::PropertyType propertyType() const
154 { return m_propertyType; }
156 ModelNode containedModelNode() const
157 { return m_containedModelNode; }
160 AbstractProperty m_property;
162 QmlDesigner::QmlRefactoring::PropertyType m_propertyType;
163 ModelNode m_containedModelNode;
166 class ChangeTypeRewriteAction:public RewriteAction
169 ChangeTypeRewriteAction(const ModelNode &node):
173 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
174 virtual QString info() const;
176 virtual ChangeTypeRewriteAction *asChangeTypeRewriteAction() { return this; }
178 ModelNode node() const
185 class RemoveNodeRewriteAction: public RewriteAction
188 RemoveNodeRewriteAction(const ModelNode &node):
192 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
193 virtual QString info() const;
195 virtual RemoveNodeRewriteAction *asRemoveNodeRewriteAction() { return this; }
197 ModelNode node() const
204 class RemovePropertyRewriteAction: public RewriteAction
207 RemovePropertyRewriteAction(const AbstractProperty &property):
211 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
212 virtual QString info() const;
214 virtual RemovePropertyRewriteAction *asRemovePropertyRewriteAction() { return this; }
216 AbstractProperty property() const
217 { return m_property; }
220 AbstractProperty m_property;
223 class ReparentNodeRewriteAction: public RewriteAction
226 ReparentNodeRewriteAction(const ModelNode &node, const AbstractProperty &oldParentProperty, const AbstractProperty &targetProperty, QmlDesigner::QmlRefactoring::PropertyType propertyType):
227 m_node(node), m_oldParentProperty(oldParentProperty), m_targetProperty(targetProperty), m_propertyType(propertyType)
230 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
231 virtual QString info() const;
233 virtual ReparentNodeRewriteAction *asReparentNodeRewriteAction() { return this; }
235 ModelNode reparentedNode() const
238 void setOldParentProperty(const AbstractProperty &oldParentProperty)
239 { m_oldParentProperty = oldParentProperty; }
241 AbstractProperty oldParentProperty() const
242 { return m_oldParentProperty; }
244 AbstractProperty targetProperty() const
245 { return m_targetProperty; }
247 QmlDesigner::QmlRefactoring::PropertyType propertyType() const
248 { return m_propertyType; }
252 AbstractProperty m_oldParentProperty;
253 AbstractProperty m_targetProperty;
254 QmlDesigner::QmlRefactoring::PropertyType m_propertyType;
257 class MoveNodeRewriteAction: public RewriteAction
260 MoveNodeRewriteAction(const ModelNode &movingNode, const ModelNode &newTrailingNode):
261 m_movingNode(movingNode), m_newTrailingNode(newTrailingNode)
264 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
265 virtual QString info() const;
267 virtual MoveNodeRewriteAction *asMoveNodeRewriteAction() { return this; }
270 ModelNode m_movingNode;
271 ModelNode m_newTrailingNode;
274 class AddImportRewriteAction: public RewriteAction
277 AddImportRewriteAction(const Import &import):
281 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
282 virtual QString info() const;
284 virtual AddImportRewriteAction *asAddImportRewriteAction() { return this; }
286 Import import() const { return m_import; }
292 class RemoveImportRewriteAction: public RewriteAction
295 RemoveImportRewriteAction(const Import &import):
299 virtual bool execute(QmlDesigner::QmlRefactoring &refactoring, ModelNodePositionStorage &positionStore);
300 virtual QString info() const;
302 virtual RemoveImportRewriteAction *asRemoveImportRewriteAction() { return this; }
304 Import import() const { return m_import; }
310 } // namespace Internal
311 } // namespace QmlDesigner
313 #endif // REWRITEACTION_H