
@startuml

skinparam backgroundColor #FEFEFE
skinparam wrapWidth 600
package "DMA_Analyzer" #DDDDDD
{

class "CDLTRegexAnalyzerWorker"
{
}

class "CMTAnalyzer"
{
}

}

package "DMA_Analyzer_API" #DDDDDD
{

abstract class "IDLTMessageAnalyzerController"
{
    + {abstract} virtual int getMaximumNumberOfThreads() const = 0
    + {abstract} virtual tRequestId requestAnalyze( const std::weak_ptr<IDLTMessageAnalyzerControllerConsumer>& pClient, const tDLTFileWrapperPtr& pFile, const int& fromMessage, const int& numberOfMessages, const QRegularExpression& regex, const int& numberOfThreads, const tRegexScriptingMetadata& regexScriptingMetadata, bool isContinuous) = 0
    + {abstract} virtual void cancelRequest( const std::weak_ptr<IDLTMessageAnalyzerControllerConsumer>& pClient, const tRequestId& requestId ) = 0
}

abstract class "IDLTMessageAnalyzerControllerConsumer"
{
    + tRequestId requestAnalyze( const tDLTFileWrapperPtr& pFile, const int& fromMessage, const int& numberOfMessages, const QRegularExpression& regex, const int& numberOfThreads, bool isContinuous )
    + {abstract} virtual void progressNotification( const tRequestId& requestId, const eRequestState& requestState, const int8_t& progress, const tFoundMatchesPack& processedMatches) = 0
}

}

package "DMA_Common" #DDDDDD
{

class "CBGColorAnimation"
{
}

class "CRegexDirectoryMonitor"
{
}

class "CTableMemoryJumper"
{
}

}

package "DMA_DLTWrappers" #DDDDDD
{

class "CDLTFileWrapper"
{
}

}

package "DMA_FiltersView" #DDDDDD
{

class "CFilterItemDelegate"
{
}

class "CFiltersModel"
{
}

class "CFiltersView"
{
}

}

package "DMA_GroupedView" #DDDDDD
{

class "CGroupedViewModel"
{
}

}

package "DMA_GroupedView_API" #DDDDDD
{

class "CGroupedView"
{
}

class "CGroupedViewComponent"
{
}

}

package "DMA_Log" #DDDDDD
{

class "CConsoleCtrl"<< (S,#FF7700) Singleton >>
{
}

class "CConsoleInputProcessor"
{
}

}

package "DMA_Log_API" #DDDDDD
{

class "CConsoleView"
{
}

}

package "DMA_Logo" #DDDDDD
{

class "CLogo"
{
}

}

package "DMA_PatternsView" #DDDDDD
{

class "CPatternsModel"
{
}

class "CPatternsView"
{
}

class "CTreeRepresentationDelegate"
{
}

}

package "DMA_PlantUML" #DDDDDD
{

class "CImageViewer"
{
}

class "CUMLView"
{
}

}

package "DMA_Root" #DDDDDD
{

class "DLTMessageAnalyzerPlugin"
{
}

class "Form"
{
}

}

package "DMA_SearchView" #DDDDDD
{

class "CSearchResultHighlightingDelegate"
{
}

class "CSearchResultModel"
{
}

}

package "DMA_SearchView_API" #DDDDDD
{

class "CSearchResultView"
{
}

class "CSearchViewComponent"
{
}

}

package "DMA_Settings" #DDDDDD
{

class "CSettingsManager"<< (S,#FF7700) Singleton >>
{
}

}

package "Qt" #DDDDDD
{

abstract class "QAbstractItemModel"
{
}

abstract class "QAbstractTableModel"
{
}

class "QCompleter"
{
}

class "QElapsedTimer"
{
}

class "QFileSystemWatcher"
{
}

class "QImage"
{
}

class "QLineEdit"
{
}

class "QObject"
{
}

class "QPlainTextEdit"
{
}

class "QProcess"
{
}

class "QPushButton"
{
}

class "QStyledItemDelegate"
{
}

class "QTabWidget"
{
}

class "QTableView"
{
}

class "QThread"
{
}

class "QTimer"
{
}

class "QTreeView"
{
}

class "QWidget"
{
}

}

'====================Inheritance section====================
QObject <|-- CDLTRegexAnalyzerWorker : extends
QObject <|-- IDLTMessageAnalyzerController : extends
QObject <|-- IDLTMessageAnalyzerControllerConsumer : extends
QObject <|-- CBGColorAnimation : extends
QObject <|-- CRegexDirectoryMonitor : extends
QObject <|-- CDLTFileWrapper : extends
QStyledItemDelegate <|-- CFilterItemDelegate : extends
QAbstractItemModel <|-- CFiltersModel : implements
QTreeView <|-- CFiltersView : implements
QAbstractItemModel <|-- CGroupedViewModel : implements
QTreeView <|-- CGroupedView : extends
QObject <|-- CGroupedViewComponent : extends
QObject <|-- CConsoleCtrl : extends
QObject <|-- CConsoleInputProcessor : extends
QPlainTextEdit <|-- CConsoleView : extends
QPushButton <|-- CLogo : extends
QAbstractItemModel <|-- CPatternsModel : implements
QTreeView <|-- CPatternsView : extends
QStyledItemDelegate <|-- CTreeRepresentationDelegate : extends
QWidget <|-- CImageViewer : extends
QWidget <|-- CUMLView : extends
QObject <|-- DLTMessageAnalyzerPlugin : extends
QWidget <|-- Form : extends
QStyledItemDelegate <|-- CSearchResultHighlightingDelegate : extends
QAbstractTableModel <|-- CSearchResultModel : implements
QTableView <|-- CSearchResultView : extends
QObject <|-- CSearchViewComponent : extends
QObject <|-- CSettingsManager : extends

'====================Dependencies section====================
CMTAnalyzer "1" *-- "*" QThread : contains
CBGColorAnimation "1" o-- "1" QWidget : animation widget
CRegexDirectoryMonitor "1" *-- "1" QFileSystemWatcher : contains
CTableMemoryJumper "1" o-- "1" QTableView : contains
CFilterItemDelegate "1" o-- "1" QCompleter : uses
CFilterItemDelegate "1" o-- "1" QTreeView : parent view
CFiltersView "1" o-- "1" QLineEdit : regex input field
CConsoleCtrl "1" o-- "1" QPlainTextEdit : console text edit
CConsoleCtrl "1" o-- "1" QTabWidget : console view tab widget
CConsoleCtrl "1" o-- "1" QWidget : console tab
CConsoleInputProcessor "1" o-- "1" QLineEdit : console input
CPatternsView "1" o-- "1" QLineEdit : patterns search input
CImageViewer "1" *-- "1" QImage : contains
CUMLView "1" *-- "2" QProcess : contains

@enduml