66 appearsOnColumnMenu = 8,
72 defaultFlags = (visible | resizable | draggable | appearsOnColumnMenu | sortable),
75 notResizable = (visible | draggable | appearsOnColumnMenu | sortable),
78 notResizableOrSortable = (visible | draggable | appearsOnColumnMenu),
81 notSortable = (visible | resizable | draggable | appearsOnColumnMenu)
104 void addColumn (
const String& columnName,
107 int minimumWidth = 30,
108 int maximumWidth = -1,
109 int propertyFlags = defaultFlags,
110 int insertIndex = -1);
117 void removeColumn (
int columnIdToRemove);
124 void removeAllColumns();
133 int getNumColumns (
bool onlyCountVisibleColumns)
const;
138 String getColumnName (
int columnId)
const;
141 void setColumnName (
int columnId,
const String& newName);
148 void moveColumn (
int columnId,
int newVisibleIndex);
152 int getColumnWidth (
int columnId)
const;
158 void setColumnWidth (
int columnId,
int newWidth);
165 void setColumnVisible (
int columnId,
bool shouldBeVisible);
170 bool isColumnVisible (
int columnId)
const;
181 void setSortColumnId (
int columnId,
bool sortForwards);
187 int getSortColumnId()
const;
192 bool isSortedForwards()
const;
207 int getTotalWidth()
const;
216 int getIndexOfColumnId (
int columnId,
bool onlyCountVisibleColumns)
const;
225 int getColumnIdOfIndex (
int index,
bool onlyCountVisibleColumns)
const;
238 int getColumnIdAtX (
int xToFind)
const;
246 void setStretchToFitActive (
bool shouldStretchToFit);
251 bool isStretchToFitActive()
const;
259 void resizeAllColumnsToFit (
int targetTotalWidth);
271 void setPopupMenuActive (
bool hasMenu);
276 bool isPopupMenuActive()
const;
293 void restoreFromString (
const String& storedVersion);
331 int columnIdNowBeingDragged);
335 void addListener (
Listener* newListener);
338 void removeListener (
Listener* listenerToRemove);
346 virtual void columnClicked (
int columnId,
const ModifierKeys& mods);
357 virtual void addMenuItems (
PopupMenu& menu,
int columnIdClicked);
368 virtual void reactToMenuItem (
int menuReturnId,
int columnIdClicked);
377 textColourId = 0x1003800,
378 backgroundColourId = 0x1003810,
380 outlineColourId = 0x1003820,
381 highlightColourId = 0x1003830,
397 const String& columnName,
int columnId,
398 int width,
int height,
399 bool isMouseOver,
bool isMouseDown,
int columnFlags) = 0;
406 void resized()
override;
425 virtual void showColumnChooserMenu (
int columnIdClicked);
430 ColumnInfo() { setInterceptsMouseClicks (
false,
false); }
433 int id, propertyFlags, width, minimumWidth, maximumWidth;
434 double lastDeliberateWidth;
437 OwnedArray<ColumnInfo> columns;
438 Array<Listener*> listeners;
440 class DragOverlayComp;
442 bool columnsChanged =
false, columnsResized =
false, sortChanged =
false;
443 bool menuActive =
true, stretchToFit =
false;
444 int columnIdBeingResized = 0, columnIdBeingDragged = 0, initialColumnWidth = 0;
445 int columnIdUnderMouse = 0, draggingColumnOffset = 0, draggingColumnOriginalIndex = 0, lastDeliberateWidth = 0;
447 ColumnInfo* getInfoForId (
int columnId)
const;
448 int visibleIndexToTotalIndex (
int visibleIndex)
const;
449 void sendColumnsChanged();
450 void handleAsyncUpdate()
override;
451 void beginDrag (
const MouseEvent&);
452 void endDrag (
int finalIndex);
453 int getResizeDraggerAt (
int mouseX)
const;
454 void updateColumnUnderMouse (
const MouseEvent&);
455 void setColumnUnderMouse (
int columnId);
456 void resizeColumnsToFit (
int firstColumnIndex,
int targetTotalWidth);
457 void drawColumnHeader (Graphics&, LookAndFeel&,
const ColumnInfo&);