You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/languages/java/javasupportpart.h

166 lines
4.9 KiB

/***************************************************************************
* Copyright (C) 1999 by Jonas Nordin *
* jonas.nordin@syncom.se *
* Copyright (C) 2000-2001 by Bernd Gehrmann *
* bernd@kdevelop.org *
* Copyright (C) 2002-2003 by Roberto Raggi *
* roberto@kdevelop.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef _JAVASUPPORTPART_H_
#define _JAVASUPPORTPART_H_
#include <kdevcore.h>
#include <kdevlanguagesupport.h>
#include <kdialogbase.h>
#include <qguardedptr.h>
#include <qstring.h>
#include <qwaitcondition.h>
#include <qdatetime.h>
class Context;
class ProblemReporter;
class BackgroundParser;
class Catalog;
class QLabel;
class QProgressBar;
class QStringList;
class QListViewItem;
class KListView;
class Driver;
namespace KParts { class Part; }
namespace KTextEditor
{
class Document;
class View;
class EditInterface;
class SelectionInterface;
class ViewCursorInterface;
}
class JavaSupportPart : public KDevLanguageSupport
{
Q_OBJECT
public:
JavaSupportPart( QObject *parent, const char *name, const QStringList &args );
virtual ~JavaSupportPart();
bool isValid() const { return m_valid; }
ProblemReporter* problemReporter() { return m_problemReporter; }
BackgroundParser* backgroundParser() { return m_backgroundParser; }
const QPtrList<Catalog>& catalogList() { return m_catalogList; }
bool isValidSource( const QString& fileName ) const;
QStringList fileExtensions( ) const;
virtual void customEvent( QCustomEvent* ev );
virtual QStringList subclassWidget(const QString& formName);
virtual QStringList updateWidget(const QString& formName, const QString& fileName);
KTextEditor::Document* findDocument( const KURL& url );
static KConfig *config();
virtual QString formatTag( const Tag& tag );
virtual QString formatModelItem( const CodeModelItem *item, bool shortDescription=false );
virtual void addClass();
signals:
void fileParsed( const QString& fileName );
protected:
virtual KDevLanguageSupport::Features features();
virtual KMimeType::List mimeTypes();
virtual QString formatClassName(const QString &name);
virtual QString unformatClassName(const QString &name);
virtual void addMethod( ClassDom klass );
virtual void addAttribute( ClassDom klass );
private slots:
void activePartChanged(KParts::Part *part);
void partRemoved( KParts::Part* part );
void projectOpened();
void projectClosed();
void savedFile(const KURL &fileName);
void configWidget(KDialogBase *dlg);
void projectConfigWidget(KDialogBase *dlg);
void contextMenu(QPopupMenu *popup, const Context *context);
void addedFilesToProject(const QStringList &fileList);
void removedFilesFromProject(const QStringList &fileList);
void changedFilesInProject( const QStringList & fileList );
void slotProjectCompiled();
void setupCatalog();
void slotNewClass();
void slotNeedTextHint( int, int, QString& );
/**
* loads, parses and creates both classstores needed
*/
void initialParse( );
/**
* only parses the current project
*/
bool parseProject( );
private:
/**
* checks if a file has to be parsed
*/
void maybeParse( const QString& fileName );
void removeWithReferences( const QString& fileName );
QStringList modifiedFileList();
QString findSourceFile();
int pcsVersion();
void setPcsVersion( int version );
void saveProjectSourceInfo();
QString m_contextFileName;
QGuardedPtr< ProblemReporter > m_problemReporter;
BackgroundParser* m_backgroundParser;
KTextEditor::Document* m_activeDocument;
KTextEditor::View* m_activeView;
KTextEditor::SelectionInterface* m_activeSelection;
KTextEditor::EditInterface* m_activeEditor;
KTextEditor::ViewCursorInterface* m_activeViewCursor;
QString m_activeFileName;
QWaitCondition m_eventConsumed;
bool m_projectClosed;
QMap<QString, QDateTime> m_timestamp;
bool m_valid;
QPtrList<Catalog> m_catalogList;
Driver* m_driver;
QString m_projectDirectory;
ClassDom m_activeClass;
FunctionDom m_activeFunction;
VariableDom m_activeVariable;
friend class KDevJavaSupportIface;
friend class JavaDriver;
};
#endif