88 lines
2.0 KiB
C
88 lines
2.0 KiB
C
|
//
|
||
|
// Model.hpp
|
||
|
// Lazarus
|
||
|
//
|
||
|
// Created by Alex Birch on 01/09/2017.
|
||
|
//
|
||
|
//
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "../JuceLibraryCode/JuceHeader.h"
|
||
|
#include "PresetsToBanks.h"
|
||
|
#include <memory>
|
||
|
#include <string>
|
||
|
|
||
|
using namespace std;
|
||
|
|
||
|
class TableComponent : public Component,
|
||
|
public TableListBoxModel {
|
||
|
public:
|
||
|
TableComponent(
|
||
|
const vector<string> &columns,
|
||
|
const vector<vector<string>> &rows,
|
||
|
const function<void (int)> &onRowSelected,
|
||
|
const function<int (const vector<string>&)> &rowToIDMapper,
|
||
|
int initiallySelectedRow
|
||
|
);
|
||
|
|
||
|
int getNumRows() override;
|
||
|
|
||
|
void paintRowBackground (
|
||
|
Graphics& g,
|
||
|
int rowNumber,
|
||
|
int width,
|
||
|
int height,
|
||
|
bool rowIsSelected
|
||
|
) override;
|
||
|
void paintCell (
|
||
|
Graphics& g,
|
||
|
int rowNumber,
|
||
|
int columnId,
|
||
|
int width,
|
||
|
int height,
|
||
|
bool rowIsSelected
|
||
|
) override;
|
||
|
|
||
|
void sortOrderChanged (int newSortColumnId, bool isForwards) override;
|
||
|
|
||
|
int getColumnAutoSizeWidth (int columnId) override;
|
||
|
|
||
|
void selectedRowsChanged (int row) override;
|
||
|
|
||
|
void resized() override;
|
||
|
|
||
|
void setRows(const vector<vector<string>>& rows, int initiallySelectedRow);
|
||
|
|
||
|
bool keyPressed(const KeyPress &key) override;
|
||
|
|
||
|
private:
|
||
|
TableListBox table; // the table component itself
|
||
|
Font font;
|
||
|
|
||
|
vector<string> columns;
|
||
|
vector<vector<string>> rows;
|
||
|
|
||
|
function<void (int)> onRowSelected;
|
||
|
function<int (const vector<string>&)> rowToIDMapper;
|
||
|
|
||
|
// A comparator used to sort our data when the user clicks a column header
|
||
|
class DataSorter {
|
||
|
public:
|
||
|
DataSorter (
|
||
|
int columnByWhichToSort,
|
||
|
bool forwards
|
||
|
);
|
||
|
|
||
|
bool operator ()(
|
||
|
vector<string> first,
|
||
|
vector<string> second
|
||
|
);
|
||
|
|
||
|
private:
|
||
|
int columnByWhichToSort;
|
||
|
int direction;
|
||
|
};
|
||
|
|
||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (TableComponent)
|
||
|
};
|