LMMS
Loading...
Searching...
No Matches
juce_TableHeaderComponent.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29//==============================================================================
46 private AsyncUpdater
47{
48public:
49 //==============================================================================
53
55 ~TableHeaderComponent() override;
56
57 //==============================================================================
83
104 void addColumn (const String& columnName,
105 int columnId,
106 int width,
107 int minimumWidth = 30,
108 int maximumWidth = -1,
109 int propertyFlags = defaultFlags,
110 int insertIndex = -1);
111
117 void removeColumn (int columnIdToRemove);
118
124 void removeAllColumns();
125
133 int getNumColumns (bool onlyCountVisibleColumns) const;
134
138 String getColumnName (int columnId) const;
139
141 void setColumnName (int columnId, const String& newName);
142
148 void moveColumn (int columnId, int newVisibleIndex);
149
152 int getColumnWidth (int columnId) const;
153
158 void setColumnWidth (int columnId, int newWidth);
159
165 void setColumnVisible (int columnId, bool shouldBeVisible);
166
170 bool isColumnVisible (int columnId) const;
171
181 void setSortColumnId (int columnId, bool sortForwards);
182
187 int getSortColumnId() const;
188
192 bool isSortedForwards() const;
193
202 void reSortTable();
203
204 //==============================================================================
207 int getTotalWidth() const;
208
216 int getIndexOfColumnId (int columnId, bool onlyCountVisibleColumns) const;
217
225 int getColumnIdOfIndex (int index, bool onlyCountVisibleColumns) const;
226
233 Rectangle<int> getColumnPosition (int index) const;
234
238 int getColumnIdAtX (int xToFind) const;
239
246 void setStretchToFitActive (bool shouldStretchToFit);
247
251 bool isStretchToFitActive() const;
252
259 void resizeAllColumnsToFit (int targetTotalWidth);
260
261 //==============================================================================
271 void setPopupMenuActive (bool hasMenu);
272
276 bool isPopupMenuActive() const;
277
278 //==============================================================================
286 String toString() const;
287
293 void restoreFromString (const String& storedVersion);
294
295 //==============================================================================
305 {
306 public:
307 //==============================================================================
308 Listener() = default;
309
311 virtual ~Listener() = default;
312
313 //==============================================================================
317 virtual void tableColumnsChanged (TableHeaderComponent* tableHeader) = 0;
318
320 virtual void tableColumnsResized (TableHeaderComponent* tableHeader) = 0;
321
323 virtual void tableSortOrderChanged (TableHeaderComponent* tableHeader) = 0;
324
330 virtual void tableColumnDraggingChanged (TableHeaderComponent* tableHeader,
331 int columnIdNowBeingDragged);
332 };
333
335 void addListener (Listener* newListener);
336
338 void removeListener (Listener* listenerToRemove);
339
340 //==============================================================================
346 virtual void columnClicked (int columnId, const ModifierKeys& mods);
347
357 virtual void addMenuItems (PopupMenu& menu, int columnIdClicked);
358
368 virtual void reactToMenuItem (int menuReturnId, int columnIdClicked);
369
370 //==============================================================================
376 {
377 textColourId = 0x1003800,
378 backgroundColourId = 0x1003810,
380 outlineColourId = 0x1003820,
381 highlightColourId = 0x1003830,
386 };
387
388 //==============================================================================
391 {
392 virtual ~LookAndFeelMethods() = default;
393
395
397 const String& columnName, int columnId,
398 int width, int height,
399 bool isMouseOver, bool isMouseDown, int columnFlags) = 0;
400 };
401
402 //==============================================================================
404 void paint (Graphics&) override;
406 void mouseMove (const MouseEvent&) override;
408 void mouseEnter (const MouseEvent&) override;
410 void mouseExit (const MouseEvent&) override;
412 void mouseDown (const MouseEvent&) override;
414 void mouseDrag (const MouseEvent&) override;
416 void mouseUp (const MouseEvent&) override;
418 MouseCursor getMouseCursor() override;
419
421 virtual void showColumnChooserMenu (int columnIdClicked);
422
423private:
432
435 std::unique_ptr<Component> dragOverlayComp;
436 class DragOverlayComp;
437
438 bool columnsChanged = false, columnsResized = false, sortChanged = false;
439 bool menuActive = true, stretchToFit = false;
442
443 std::unique_ptr<AccessibilityHandler> createAccessibilityHandler() override;
444 ColumnInfo* getInfoForId (int columnId) const;
445 int visibleIndexToTotalIndex (int visibleIndex) const;
446 void sendColumnsChanged();
447 void handleAsyncUpdate() override;
448 void beginDrag (const MouseEvent&);
449 void endDrag (int finalIndex);
450 int getResizeDraggerAt (int mouseX) const;
452 void setColumnUnderMouse (int columnId);
453 void resizeColumnsToFit (int firstColumnIndex, int targetTotalWidth);
454
456};
457
458
459} // namespace juce
Definition juce_Array.h:56
AsyncUpdater()
Definition juce_AsyncUpdater.cpp:44
Component() noexcept
Definition juce_Component.cpp:517
bool isMouseOver(bool includeChildren=false) const
Definition juce_Component.cpp:3159
Definition juce_GraphicsContext.h:45
Definition juce_ModifierKeys.h:41
Definition juce_MouseCursor.h:39
Definition juce_MouseEvent.h:39
Definition juce_OwnedArray.h:51
Definition juce_PopupMenu.h:80
Definition juce_Rectangle.h:67
Definition juce_String.h:53
Definition juce_TableHeaderComponent.cpp:30
Definition juce_TableHeaderComponent.h:305
virtual void tableSortOrderChanged(TableHeaderComponent *tableHeader)=0
virtual void tableColumnsChanged(TableHeaderComponent *tableHeader)=0
virtual void tableColumnDraggingChanged(TableHeaderComponent *tableHeader, int columnIdNowBeingDragged)
Definition juce_TableHeaderComponent.cpp:896
virtual void tableColumnsResized(TableHeaderComponent *tableHeader)=0
bool columnsResized
Definition juce_TableHeaderComponent.h:438
void removeListener(Listener *listenerToRemove)
Definition juce_TableHeaderComponent.cpp:471
int columnIdUnderMouse
Definition juce_TableHeaderComponent.h:441
std::unique_ptr< AccessibilityHandler > createAccessibilityHandler() override
Definition juce_TableHeaderComponent.cpp:901
int columnIdBeingResized
Definition juce_TableHeaderComponent.h:440
int draggingColumnOffset
Definition juce_TableHeaderComponent.h:441
void setColumnUnderMouse(int columnId)
Definition juce_TableHeaderComponent.cpp:861
void mouseExit(const MouseEvent &) override
Definition juce_TableHeaderComponent.cpp:539
virtual void addMenuItems(PopupMenu &menu, int columnIdClicked)
Definition juce_TableHeaderComponent.cpp:484
int getResizeDraggerAt(int mouseX) const
Definition juce_TableHeaderComponent.cpp:838
bool sortChanged
Definition juce_TableHeaderComponent.h:438
int visibleIndexToTotalIndex(int visibleIndex) const
Definition juce_TableHeaderComponent.cpp:773
OwnedArray< ColumnInfo > columns
Definition juce_TableHeaderComponent.h:433
void paint(Graphics &) override
Definition juce_TableHeaderComponent.cpp:499
void mouseDrag(const MouseEvent &) override
Definition juce_TableHeaderComponent.cpp:559
virtual void showColumnChooserMenu(int columnIdClicked)
Definition juce_TableHeaderComponent.cpp:882
void mouseEnter(const MouseEvent &) override
Definition juce_TableHeaderComponent.cpp:538
virtual void columnClicked(int columnId, const ModifierKeys &mods)
Definition juce_TableHeaderComponent.cpp:477
int columnIdBeingDragged
Definition juce_TableHeaderComponent.h:440
bool stretchToFit
Definition juce_TableHeaderComponent.h:439
void sendColumnsChanged()
Definition juce_TableHeaderComponent.cpp:791
virtual void reactToMenuItem(int menuReturnId, int columnIdClicked)
Definition juce_TableHeaderComponent.cpp:493
bool columnsChanged
Definition juce_TableHeaderComponent.h:438
int draggingColumnOriginalIndex
Definition juce_TableHeaderComponent.h:441
ColourIds
Definition juce_TableHeaderComponent.h:376
@ backgroundColourId
Definition juce_TableHeaderComponent.h:378
@ highlightColourId
Definition juce_TableHeaderComponent.h:381
@ textColourId
Definition juce_TableHeaderComponent.h:377
@ outlineColourId
Definition juce_TableHeaderComponent.h:380
TableHeaderComponent()
Definition juce_TableHeaderComponent.cpp:51
void mouseUp(const MouseEvent &) override
Definition juce_TableHeaderComponent.cpp:729
Array< Listener * > listeners
Definition juce_TableHeaderComponent.h:434
bool menuActive
Definition juce_TableHeaderComponent.h:439
MouseCursor getMouseCursor() override
Definition juce_TableHeaderComponent.cpp:750
void mouseMove(const MouseEvent &) override
Definition juce_TableHeaderComponent.cpp:537
ColumnPropertyFlags
Definition juce_TableHeaderComponent.h:62
@ defaultFlags
Definition juce_TableHeaderComponent.h:72
@ sortable
Definition juce_TableHeaderComponent.h:67
@ notSortable
Definition juce_TableHeaderComponent.h:81
@ notResizableOrSortable
Definition juce_TableHeaderComponent.h:78
@ visible
Definition juce_TableHeaderComponent.h:63
@ draggable
Definition juce_TableHeaderComponent.h:65
@ sortedForwards
Definition juce_TableHeaderComponent.h:68
@ appearsOnColumnMenu
Definition juce_TableHeaderComponent.h:66
@ sortedBackwards
Definition juce_TableHeaderComponent.h:69
@ notResizable
Definition juce_TableHeaderComponent.h:75
@ resizable
Definition juce_TableHeaderComponent.h:64
std::unique_ptr< Component > dragOverlayComp
Definition juce_TableHeaderComponent.h:435
int initialColumnWidth
Definition juce_TableHeaderComponent.h:440
void endDrag(int finalIndex)
Definition juce_TableHeaderComponent.cpp:712
int lastDeliberateWidth
Definition juce_TableHeaderComponent.h:441
void beginDrag(const MouseEvent &)
Definition juce_TableHeaderComponent.cpp:677
void addListener(Listener *newListener)
Definition juce_TableHeaderComponent.cpp:466
void handleAsyncUpdate() override
Definition juce_TableHeaderComponent.cpp:801
void resizeColumnsToFit(int firstColumnIndex, int targetTotalWidth)
Definition juce_TableHeaderComponent.cpp:315
void mouseDown(const MouseEvent &) override
Definition juce_TableHeaderComponent.cpp:541
void updateColumnUnderMouse(const MouseEvent &)
Definition juce_TableHeaderComponent.cpp:870
ColumnInfo * getInfoForId(int columnId) const
Definition juce_TableHeaderComponent.cpp:764
static int int height
Definition pugl.h:1594
static int width
Definition pugl.h:1593
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
juce::String toString(const Steinberg::char8 *string) noexcept
Definition juce_VST3Common.h:159
Definition juce_TableHeaderComponent.h:425
int maximumWidth
Definition juce_TableHeaderComponent.h:427
double lastDeliberateWidth
Definition juce_TableHeaderComponent.h:428
int width
Definition juce_TableHeaderComponent.h:427
String name
Definition juce_TableHeaderComponent.h:426
int propertyFlags
Definition juce_TableHeaderComponent.h:427
int minimumWidth
Definition juce_TableHeaderComponent.h:427
int id
Definition juce_TableHeaderComponent.h:427
bool isVisible() const
Definition juce_TableHeaderComponent.cpp:759
Definition juce_TableHeaderComponent.h:391
virtual void drawTableHeaderColumn(Graphics &, TableHeaderComponent &, const String &columnName, int columnId, int width, int height, bool isMouseOver, bool isMouseDown, int columnFlags)=0
virtual void drawTableHeaderBackground(Graphics &, TableHeaderComponent &)=0