Go to the documentation of this file.
25 #ifndef JUCE_TREEVIEW_H_INCLUDED
26 #define JUCE_TREEVIEW_H_INCLUDED
84 void addSubItem (
TreeViewItem* newItem,
int insertPosition = -1);
94 template <
class ElementComparator>
97 addSubItem (newItem, findInsertIndexInSortedArray (comparator, subItems.begin(), newItem, 0, subItems.size()));
105 void removeSubItem (
int index,
bool deleteItem =
true);
122 template <
class ElementComparator>
125 subItems.sort (comparator);
147 void setOpen (
bool shouldBeOpen);
158 void setSelected (
bool shouldBeSelected,
159 bool deselectOtherItemsFirst,
174 void treeHasChanged() const
noexcept;
181 void repaintItem() const;
187 int getRowNumberInTree() const
noexcept;
192 bool areAllParentsOpen() const
noexcept;
197 void setLinesDrawnForSubItems (
bool shouldDrawLines)
noexcept;
206 virtual
bool mightContainSubItems() = 0;
218 virtual
String getUniqueName() const;
240 virtual
void itemOpennessChanged (
bool isNowOpen);
255 virtual
int getItemWidth()
const {
return -1; }
312 virtual void paintItem (
Graphics& g,
int width,
int height);
323 Colour backgroundColour,
bool isMouseOver);
342 virtual void itemClicked (
const MouseEvent& e);
358 virtual void itemDoubleClicked (
const MouseEvent& e);
365 virtual void itemSelectionChanged (
bool isNowSelected);
370 virtual String getTooltip();
388 virtual var getDragSourceDescription();
402 virtual bool isInterestedInFileDrag (
const StringArray& files);
412 virtual void filesDropped (
const StringArray& files,
int insertIndex);
447 void setDrawsInLeftMargin (
bool canDrawInLeftMargin)
noexcept;
460 void setDrawsInRightMargin (
bool canDrawInRightMargin)
noexcept;
495 void restoreOpennessState (
const XmlElement& xml);
499 int getIndexInParent() const
noexcept;
502 bool isLastOfSiblings() const
noexcept;
511 String getItemIdentifierString() const;
553 int y, itemHeight, totalHeight, itemWidth, totalWidth;
556 bool redrawNeeded : 1;
557 bool drawLinesInside : 1;
558 bool drawLinesSet : 1;
559 bool drawsInLeftMargin : 1;
560 bool drawsInRightMargin : 1;
561 unsigned int openness : 2;
565 void updatePositions (
int newY);
568 void paintRecursively (
Graphics&,
int width);
574 void deselectAllRecursively (
TreeViewItem* itemToIgnore);
575 int countSelectedItemsRecursively (
int depth) const
noexcept;
579 void restoreToDefaultOpenness();
582 bool removeSubItemFromList (
int index,
bool deleteItem);
583 void removeAllSubItemsFromList();
584 bool areLinesDrawn() const;
586 #if JUCE_CATCH_DEPRECATED_CODE_MISUSE
646 void deleteRootItem();
654 void setRootItemVisible (
bool shouldBeVisible);
669 void setDefaultOpenness (
bool isOpenByDefault);
687 void setMultiSelectEnabled (
bool canMultiSelect);
699 void setOpenCloseButtonsVisible (
bool shouldBeVisible);
709 void clearSelectedItems();
716 int getNumSelectedItems (
int maximumDepthToSearchTo = -1) const
noexcept;
724 void moveSelectedRow (
int deltaRows);
731 int getNumRowsInTree() const;
758 void setIndentSize (
int newIndentSize);
785 XmlElement* getOpennessState (
bool alsoIncludeScrollPosition) const;
798 void restoreOpennessState (const
XmlElement& newState,
799 bool restoreStoredSelection);
811 backgroundColourId = 0x1000500,
812 linesColourId = 0x1000501,
813 dragAndDropIndicatorColourId = 0x1000502,
814 selectedItemBackgroundColourId = 0x1000503
826 Colour backgroundColour,
bool isItemOpen,
bool isMouseOver) = 0;
828 virtual bool areLinesDrawnForTreeView (
TreeView&) = 0;
829 virtual int getTreeViewIndentSize (
TreeView&) = 0;
836 void resized()
override;
838 bool keyPressed (
const KeyPress&)
override;
840 void colourChanged()
override;
842 void enablementChanged()
override;
844 bool isInterestedInFileDrag (
const StringArray& files)
override;
846 void fileDragEnter (
const StringArray& files,
int x,
int y)
override;
848 void fileDragMove (
const StringArray& files,
int x,
int y)
override;
850 void fileDragExit (
const StringArray& files)
override;
852 void filesDropped (
const StringArray& files,
int x,
int y)
override;
854 bool isInterestedInDragSource (
const SourceDetails&)
override;
856 void itemDragEnter (
const SourceDetails&)
override;
858 void itemDragMove (
const SourceDetails&)
override;
860 void itemDragExit (
const SourceDetails&)
override;
862 void itemDropped (
const SourceDetails&)
override;
865 class ContentComponent;
867 class InsertPointHighlight;
881 bool defaultOpenness, needsRecalculating, rootItemVisible;
882 bool multiSelectEnabled, openCloseButtonsVisible;
885 void recalculateIfNeeded();
886 void updateButtonUnderMouse (const
MouseEvent&);
892 bool toggleOpenSelectedItem();
893 void moveOutOfSelectedItem();
894 void moveIntoSelectedItem();
895 void moveByPages (
int numPages);
897 #if JUCE_CATCH_DEPRECATED_CODE_MISUSE
899 virtual int paintOpenCloseButton (
Graphics&,
int,
int,
bool) {
return 0; }
905 #endif // JUCE_TREEVIEW_H_INCLUDED
Definition: juce_TreeView.h:603
Definition: juce_FileDragAndDropTarget.h:33
TreeViewItem * getParentItem() const noexcept
Definition: juce_TreeView.h:133
Definition: juce_TreeView.cpp:392
Definition: juce_TreeView.h:535
Definition: juce_TreeView.cpp:875
Definition: juce_ContainerDeletePolicy.h:44
Definition: juce_Variant.h:46
Definition: juce_String.h:43
bool areItemsOpenByDefault() const noexcept
Definition: juce_TreeView.h:675
Definition: juce_TreeView.cpp:25
Definition: juce_Colour.h:35
XmlElement * getOpennessState(bool alsoIncludeScrollPosition) const
Definition: juce_TreeView.cpp:619
Definition: juce_Viewport.h:42
#define JUCE_API
Definition: juce_StandardHeader.h:139
Definition: juce_CriticalSection.h:47
Definition: juce_Rectangle.h:36
static const String empty
Definition: juce_String.h:152
void sortSubItems(ElementComparator &comparator)
Definition: juce_TreeView.h:123
Definition: juce_DragAndDropTarget.h:43
Definition: juce_GraphicsContext.h:42
#define noexcept
Definition: juce_CompilerSupport.h:141
virtual ~LookAndFeelMethods()
Definition: juce_TreeView.h:823
virtual int getItemHeight() const
Definition: juce_TreeView.h:263
TreeViewItem * getItemOnRow(int index) const
Definition: juce_TreeView.cpp:581
virtual Component * createItemComponent()
Definition: juce_TreeView.h:294
bool isMultiSelectEnabled() const noexcept
Definition: juce_TreeView.h:693
TreeViewItem * getRootItem() const noexcept
Definition: juce_TreeView.h:641
virtual bool canBeSelected() const
Definition: juce_TreeView.h:268
Definition: juce_KeyPress.h:37
void itemDropped(const SourceDetails &) override
Definition: juce_TreeView.cpp:1127
Definition: juce_TreeView.cpp:984
Definition: juce_Line.h:44
bool isInterestedInDragSource(const SourceDetails &) override
Definition: juce_TreeView.cpp:1107
bool isRootItemVisible() const noexcept
Definition: juce_TreeView.h:660
NotificationType
Definition: juce_NotificationType.h:33
Definition: juce_TreeView.h:45
Definition: juce_XmlElement.h:142
Definition: juce_Component.h:33
Definition: juce_TreeView.h:821
void addSubItemSorted(ElementComparator &comparator, TreeViewItem *newItem)
Definition: juce_TreeView.h:95
@ sendNotification
Definition: juce_NotificationType.h:36
ColourIds
Definition: juce_TreeView.h:809
Definition: juce_TreeView.cpp:944
Definition: juce_MouseEvent.h:36
TreeViewItem * findItemFromIdentifierString(const String &identifierString) const
Definition: juce_TreeView.cpp:599
Definition: juce_StringArray.h:39
bool areOpenCloseButtonsVisible() const noexcept
Definition: juce_TreeView.h:705
TreeView * getOwnerView() const noexcept
Definition: juce_TreeView.h:130
Definition: juce_DragAndDropTarget.h:53