| 
									
										
										
										
											2012-10-02 09:12:39 +02:00
										 |  |  | /****************************************************************************
 | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2013-01-28 17:12:19 +01:00
										 |  |  | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). | 
					
						
							| 
									
										
										
										
											2012-10-02 09:12:39 +02:00
										 |  |  | ** Contact: http://www.qt-project.org/legal
 | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2012-10-02 09:12:39 +02:00
										 |  |  | ** This file is part of Qt Creator. | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2012-10-02 09:12:39 +02:00
										 |  |  | ** Commercial License Usage | 
					
						
							|  |  |  | ** Licensees holding valid commercial Qt licenses may use this file in | 
					
						
							|  |  |  | ** accordance with the commercial license agreement provided with the | 
					
						
							|  |  |  | ** Software or, alternatively, in accordance with the terms contained in | 
					
						
							|  |  |  | ** a written agreement between you and Digia.  For licensing terms and | 
					
						
							|  |  |  | ** conditions see http://qt.digia.com/licensing.  For further information
 | 
					
						
							|  |  |  | ** use the contact form at http://qt.digia.com/contact-us.
 | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  | ** | 
					
						
							|  |  |  | ** GNU Lesser General Public License Usage | 
					
						
							| 
									
										
										
										
											2012-10-02 09:12:39 +02:00
										 |  |  | ** 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.
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** In addition, as a special exception, Digia gives you certain additional | 
					
						
							|  |  |  | ** rights.  These rights are described in the Digia Qt LGPL Exception | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2012-10-02 09:12:39 +02:00
										 |  |  | ****************************************************************************/ | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifndef QMLJSCOMPLETIONASSIST_H
 | 
					
						
							|  |  |  | #define QMLJSCOMPLETIONASSIST_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "qmljseditor.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <texteditor/codeassist/basicproposalitem.h>
 | 
					
						
							|  |  |  | #include <texteditor/codeassist/basicproposalitemlistmodel.h>
 | 
					
						
							|  |  |  | #include <texteditor/codeassist/completionassistprovider.h>
 | 
					
						
							|  |  |  | #include <texteditor/codeassist/iassistprocessor.h>
 | 
					
						
							|  |  |  | #include <texteditor/snippets/snippetassistcollector.h>
 | 
					
						
							|  |  |  | #include <texteditor/codeassist/defaultassistinterface.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-15 10:42:41 +01:00
										 |  |  | #include <QStringList>
 | 
					
						
							|  |  |  | #include <QScopedPointer>
 | 
					
						
							|  |  |  | #include <QVariant>
 | 
					
						
							|  |  |  | #include <QIcon>
 | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace QmlJS { | 
					
						
							|  |  |  | class Value; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace QmlJSEditor { | 
					
						
							|  |  |  | namespace Internal { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class QmlJSCompletionAssistInterface; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class QmlJSAssistProposalItem : public TextEditor::BasicProposalItem | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     virtual bool prematurelyApplies(const QChar &c) const; | 
					
						
							|  |  |  |     virtual void applyContextualContent(TextEditor::BaseTextEditor *editor, | 
					
						
							|  |  |  |                                         int basePosition) const; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class QmlJSAssistProposalModel : public TextEditor::BasicProposalItemListModel | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     QmlJSAssistProposalModel(const QList<TextEditor::BasicProposalItem *> &items) | 
					
						
							|  |  |  |         : TextEditor::BasicProposalItemListModel(items) | 
					
						
							|  |  |  |     {} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-11 13:27:59 +01:00
										 |  |  |     virtual void filter(const QString &prefix); | 
					
						
							| 
									
										
										
										
											2013-08-28 01:02:26 +04:00
										 |  |  |     virtual void sort(const QString &prefix); | 
					
						
							| 
									
										
										
										
											2011-06-21 15:11:16 +02:00
										 |  |  |     virtual bool keepPerfectMatch(TextEditor::AssistReason reason) const; | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class QmlJSCompletionAssistProvider : public TextEditor::CompletionAssistProvider | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2013-08-30 12:55:06 +02:00
										 |  |  |     Q_OBJECT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2011-11-10 11:36:51 +01:00
										 |  |  |     virtual bool supportsEditor(const Core::Id &editorId) const; | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  |     virtual TextEditor::IAssistProcessor *createProcessor() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual int activationCharSequenceLength() const; | 
					
						
							|  |  |  |     virtual bool isActivationCharSequence(const QString &sequence) const; | 
					
						
							|  |  |  |     virtual bool isContinuationChar(const QChar &c) const; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class QmlJSCompletionAssistProcessor : public TextEditor::IAssistProcessor | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     QmlJSCompletionAssistProcessor(); | 
					
						
							|  |  |  |     virtual ~QmlJSCompletionAssistProcessor(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual TextEditor::IAssistProposal *perform(const TextEditor::IAssistInterface *interface); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     TextEditor::IAssistProposal *createContentProposal() const; | 
					
						
							| 
									
										
										
										
											2011-11-16 09:56:53 +01:00
										 |  |  |     TextEditor::IAssistProposal *createHintProposal( | 
					
						
							|  |  |  |             const QString &functionName, const QStringList &namedArguments, | 
					
						
							|  |  |  |             int optionalNamedArguments, bool isVariadic) const; | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     bool acceptsIdleEditor() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool completeUrl(const QString &relativeBasePath, const QString &urlString); | 
					
						
							|  |  |  |     bool completeFileName(const QString &relativeBasePath, | 
					
						
							|  |  |  |                           const QString &fileName, | 
					
						
							|  |  |  |                           const QStringList &patterns = QStringList()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int m_startPosition; | 
					
						
							|  |  |  |     QScopedPointer<const QmlJSCompletionAssistInterface> m_interface; | 
					
						
							|  |  |  |     QList<TextEditor::BasicProposalItem *> m_completions; | 
					
						
							|  |  |  |     TextEditor::SnippetAssistCollector m_snippetCollector; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class QmlJSCompletionAssistInterface : public TextEditor::DefaultAssistInterface | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2012-02-14 16:43:51 +01:00
										 |  |  |     QmlJSCompletionAssistInterface(QTextDocument *textDocument, | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  |                                    int position, | 
					
						
							| 
									
										
										
										
											2013-03-18 14:58:46 +01:00
										 |  |  |                                    const QString &fileName, | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  |                                    TextEditor::AssistReason reason, | 
					
						
							| 
									
										
										
										
											2012-04-12 15:51:56 +02:00
										 |  |  |                                    const QmlJSTools::SemanticInfo &info); | 
					
						
							|  |  |  |     const QmlJSTools::SemanticInfo &semanticInfo() const; | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  |     const QIcon &fileNameIcon() const { return m_darkBlueIcon; } | 
					
						
							|  |  |  |     const QIcon &keywordIcon() const { return m_darkYellowIcon; } | 
					
						
							|  |  |  |     const QIcon &symbolIcon() const { return m_darkCyanIcon; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2012-04-12 15:51:56 +02:00
										 |  |  |     QmlJSTools::SemanticInfo m_semanticInfo; | 
					
						
							| 
									
										
										
										
											2011-04-15 16:19:23 +02:00
										 |  |  |     QIcon m_darkBlueIcon; | 
					
						
							|  |  |  |     QIcon m_darkYellowIcon; | 
					
						
							|  |  |  |     QIcon m_darkCyanIcon; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } // Internal
 | 
					
						
							|  |  |  | } // QmlJSEditor
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif // QMLJSCOMPLETIONASSIST_H
 |