OSDN Git Service

It's 2011 now.
[qt-creator-jp/qt-creator-jp.git] / src / plugins / qmljseditor / qmljseditorplugin.h
1 /**************************************************************************
2 **
3 ** This file is part of Qt Creator
4 **
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
6 **
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
8 **
9 ** No Commercial Usage
10 **
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
14 ** this package.
15 **
16 ** GNU Lesser General Public License Usage
17 **
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.
24 **
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.
28 **
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
31 **
32 **************************************************************************/
33
34 #ifndef QMLJSEDITORPLUGIN_H
35 #define QMLJSEDITORPLUGIN_H
36
37 #include <extensionsystem/iplugin.h>
38 #include <coreplugin/icontext.h>
39 #include <QtCore/QPointer>
40
41 QT_FORWARD_DECLARE_CLASS(QAction)
42 QT_FORWARD_DECLARE_CLASS(QTimer)
43
44 namespace TextEditor {
45 class TextEditorActionHandler;
46 } // namespace TextEditor
47
48 namespace Core {
49 class Command;
50 class ActionContainer;
51 class ActionManager;
52 class IEditor;
53 }
54
55 namespace TextEditor {
56 class ITextEditable;
57 }
58
59 namespace QmlJS {
60     class ModelManagerInterface;
61 }
62
63 namespace QmlJSEditor {
64
65 class QmlFileWizard;
66 class QmlJSTextEditor;
67
68 namespace Internal {
69
70 class QmlJSEditorFactory;
71 class QmlJSPreviewRunner;
72 class QmlJSQuickFixCollector;
73 class QmlTaskManager;
74
75 class QmlJSEditorPlugin : public ExtensionSystem::IPlugin
76 {
77     Q_OBJECT
78
79 public:
80     QmlJSEditorPlugin();
81     virtual ~QmlJSEditorPlugin();
82
83     // IPlugin
84     bool initialize(const QStringList &arguments, QString *errorMessage = 0);
85     void extensionsInitialized();
86     ShutdownFlag aboutToShutdown();
87
88     static QmlJSEditorPlugin *instance()
89     { return m_instance; }
90
91     QmlJSQuickFixCollector *quickFixCollector() const;
92
93     void initializeEditor(QmlJSEditor::QmlJSTextEditor *editor);
94
95 public Q_SLOTS:
96     void followSymbolUnderCursor();
97     void findUsages();
98     void showContextPane();
99
100 private Q_SLOTS:
101     void quickFix(TextEditor::ITextEditable *editable);
102     void quickFixNow();
103     void currentEditorChanged(Core::IEditor *editor);
104
105 private:
106     Core::Command *addToolAction(QAction *a, Core::ActionManager *am, Core::Context &context, const QString &name,
107                                  Core::ActionContainer *c1, const QString &keySequence);
108
109     static QmlJSEditorPlugin *m_instance;
110
111     QAction *m_actionPreview;
112     QmlJSPreviewRunner *m_previewRunner;
113
114     QmlJS::ModelManagerInterface *m_modelManager;
115     QmlFileWizard *m_wizard;
116     QmlJSEditorFactory *m_editor;
117     TextEditor::TextEditorActionHandler *m_actionHandler;
118
119     QmlJSQuickFixCollector *m_quickFixCollector;
120
121     QTimer *m_quickFixTimer;
122     QPointer<TextEditor::ITextEditable> m_currentTextEditable;
123     QmlTaskManager *m_qmlTaskManager;
124 };
125
126 } // namespace Internal
127 } // namespace QmlJSEditor
128
129 #endif // QMLJSEDITORPLUGIN_H