/******************************************************************************
 JTreeLibVersion.h

	Defines current version of JTree library

	Copyright © 1999 by John Lindal. All rights reserved.

 ******************************************************************************/

#ifndef _H_JTreeLibVersion
#define _H_JTreeLibVersion

// These have to be #defined so they can be used for conditional compilation.

#define CURRENT_JTREE_MAJOR_VERSION	1
#define CURRENT_JTREE_MINOR_VERSION	1
#define CURRENT_JTREE_PATCH_VERSION	7

// This is mainly provided so programmers can see the official version number.

static const char* kCurrentJCoreLibVersionStr = "1.1.7";

// version 1.1.7:
//	JTreeNode:
//		Added SortChildren().

// version 1.1.6:
//	JTreeNode:
//		Added argument for specifying sort order to SetChildCompareFunction().
//			In addition, this automatically sorts the children when it is called.
//		Now inherits from JBroadcaster so it can broadcast messages while its
//			children are sorted.
//	JNamedTreeNode:
//		Promoted private version of CompareNames() to protected and renamed it
//			DynamicCastCompareNames() to avoid confusion when taking its address.
//	JXTreeListWidget:
//		Maintains scroll position when nodes are moved around within the tree.

// version 1.1.3:
//	JXNamedTreeListWidget:
//		If the name of the node is empty, GetMinCellWidth() returns
//			a reasonable value.
//		Fixed bug that made input field sometimes fill the entire cell
//			while editing a node's name.
//		Added GetInputFieldIndent().

// version 1.1.2:
//	JTreeList:
//		Fixed bug so when a closed node is moved, it stays closed.
//	JXTreeListWidget:
//		Converted enum { kToggleOpenColumn, kNodeColumn } to functions because
//			it is now safe to add extra columns anywhere in the table.
//			multifile replace:  k(ToggleOpen|Node)Column  ->  Get$1ColIndex()
//		Removed GetAvailableWidth().  The code now automatically handles
//			any number of columns.
//		AdjustToTree() now provides a default implementation that allows any
//			one column width to be elastic.
//		Demoted AdjustColWidths() to private now that AdjustToTree() calls it.
//		Removed GetMinNodeColWidth() and replaced it with GetMinCellWidth().
//		Added Get/SetElasticColIndex().  Until the egcs bug is fixed, this
//			must be called after JXTreeListWidgetX().
//	JXNamedTreeListWidget:
//		Row heights now increase to fit image height, if necessary.
//		Implements GetMinCellWidth() for the node column.
//		CreateXInputField() no longer calls SetIsRequired().

// version 1.1.1:
//	JTree:
//		Added messages PrepareForNodeMove and NodeMoveFinished.
//		Eliminated SetRoot().  The root node must be passed to the constructor.
//		Eliminated the version of GetRoot() that returned JBoolean.
//	JTreeNode:
//		Removed constructor that took JTreeNode*.  Derived classes or clients
//			must call the appropriate insertion function.  This allows ctor
//			to be called with NULL, and also provides a way to insure that
//			object is fully constructed before NodeInserted is broadcast by JTree.
//		Renamed IsBranch() to IsOpenable() and MakeBranch() to ShouldBeOpenable().
//		Renamed MoveChildToIndex() to MoveToIndex() for consistency.
//		Added MoveBefore() and MoveAfter().
//	JNamedTreeNode:
//		Eliminated GetFontStyle() because colors are display dependent.
//			This functionality is now the widget's responsibility.
//	JTreeList:
//		Changed 'Element' to 'Node' in function and message names.
//		Eliminated FinishedLoading message because it was redundant.
//		Renamed Open/CloseBranch() to Open/Close().
//		Renamed ElementIsOpened() to IsOpen().
//		Both versions of IsOpen() are now const.
//		Removed ElementIsBranch() and GetElementDepth() to avoid interface bloat.
//		Added Close() that takes const JTreeNode*.
//		Added Toggle(), Open/CloseSiblings(), Open/CloseDescendants().
//		Added IsVisible().
//	JNamedTreeList:
//		Removed GetElementFontStyle().
//		Changed 'Element' to 'Node' in function names.
//		SetNodeName() takes JCharacter* instead of JString&.
//		Added ClosestMatch() to search visible nodes for a specified name.
//	JXTreeListWidget:
//		Inherits from JXStyleTable instead of JXEditTable.
//		Renamed kOpenBranchColumn to kToggleOpenColumn.
//		Renamed AdjustTableAfterLoading() to AdjustToTree().
//		Removed indent argument from constructor.
//		Added Get/SetIndentWidth().
//		Renamed IsToggleDragging() to IsDraggingToggle().
//		Renamed GetMaxNodeWidth() to GetMinNodeColWidth() and made it const.
//		Renamed TLDrawCell() to TLWDrawNode() and changed second argument to cell.
//		Renamed TreeCellOffset() to GetNodeIndent(), promoted it to public,
//			made it const, and fixed it to return JSize.
//		Removed TableToTreeCell().  Use GetCellRect() and GetNodeIndent() instead.
//		Removed GetTreeCell().  Use GetCell() and GetNodeIndent() instead.
//		ScrollToNode() takes JTreeNode* for consistency.
//		Added NeedsAdjustToTree() so derived classes can also optimize
//			to avoid calling AdjustToTree() more than once.
//		Added ToggleNode(), SetOpenAllAction().
//		Added GetSelectedNodes().
//		Maintains selection when nodes are moved around within the tree.
//	JXNamedTreeListWidget:
//		Removed indent argument from constructor.
//		Tossed messages NameChanged and FontChanged.  NameChanged should either
//			be caught by overriding ExtractInputData() or by listening for
//			JTree::NodeChanged.  FontChanged has been converted into a
//			virtual function in JXStyleTable.
//		Removed showIcons argument from constructor.
//		Renamed GetIcon() to GetImage().  It now returns JBoolean.  This controls
//			whether or not a node displays an image.  The default is to return kFalse.
//		Removed GetFontName(), GetFontSize(), and SetDefaultFont() since it
//			inherits from JXStyleTable.
//		Removed DoubleClickIcon() because the default behavior was pointless.
//		Replaced GetStringStartLoc() with GetImageWidth() and made it const.
//		Eliminated NewNameOK().  Derived classes should override ExtractInputData().
//		Collapsed PointInNode(), PointInIcon(), PointInName(), and PointAfterIcon()
//			to GetNode().
//		Renamed HilightTextOnly() to ShouldHilightTextOnly() and added
//			WillHilightTextOnly().
//		Added default HandleKeyPress() implementation that performs
//			incremental search.  Also added ClearIncrementalSearchBuffer()
//			so derived classes can clear this buffer after doing something
//			with the selection.

// version 1.1.0:
//	Removed JXTreeTableInput.  Derive from JXInputField instead.
//	JTree:
//		Renamed Get/SetBase() to Get/SetRoot().
//		Added versions of GetRoot() that return JBoolean.
//		Created const and non-const versions of GetRoot().
//		Demoted BroadcastInsert/Remove() to private.
//		Added NodeDeleted message.
//	JTreeNode:
//		Split constructor into two versions since there is no reason to specify
//			a tree when a parent is given.
//		OKToOpen() is now const.
//		Renamed IsBase() to IsRoot().
//		Renamed IndexValid() to ChildIndexValid().
//		Interchanged arguments to InsertAtIndex() to conform to JCore standard.
//		Removed GetChildren() in favor of GetChild().
//		Removed RemoveAll() because it made it too easy to leak memory.
//		Demoted SetTree() to private since it should never be called directly.
//		Added HasChildren(), GetIndexInParent(), DisconnectFromParent(),
//			Prepend(), InsertSorted(), MoveChildToIndex(), CollectDescendants().
//		Created const and non-const versions of GetTree(), GetChild(), GetParent().
//		Provided boolean and non-boolean versions of GetTree() and GetParent().
//		GetDepth() returns JSize.
//	JTreeList:
//		Now inherits from JContainer.
//		Added GetTree().
//		Added non-const version of GetNode().
//		Renamed NodeIsOpened() to NodeIsOpen().
//		Added messages NodeOpened and NodeClosed.
//	JNamedTreeList:
//		Added GetNamedNode().
//	JNamedTreeNode:
//		Split constructor into two versions since there is no reason to specify
//			a tree when a parent is given.
//		Removed OKToChange() since it was never used.
//		Moved InsertSorted() to JTreeNode.
//	JXTreeListWidget:
//		To work around the egcs thunks bug, derived classes must provide
//			Create() and call JXTreeListWidgetX().  Before this function is
//			called, the table is empty.
//		Defined enum with kOpenBranchColumn and kNodeColumn to avoid numeric
//			constants everywhere else.
//		Moved messages NodeOpened and NodeClosed to JTreeList.
//		TLDrawCell() is only called for kNodeColumn.
//		Demoted AdjustTableAfterLoading() to protected.
//		Renamed AvailableWidth() to GetAvailableWidth().
//		ScrollToNode() is public and takes "const JTreeNode&".
//		GetTreeList() is public.
//		Renamed DrawSelection() to ShouldDrawSelection().
//		Added WillDrawSelection().
//		ShouldDrawSelection() is turned on by default.
//		Added SelectNodes() and Open/CloseSelectedNodes().
//		Left/right arrows close/open the selected nodes.
//		IsToggleDragging() is now const.
//	JXNamedTreeListWidget:
//		Constructor requires JNamedTreeList.
//		Removed isEditable from constructor since it was unused.
//		Removed IsEditing() since it duplicated JTable function.
//		Promoted GetNamedTreeList/Node() to protected.
//		Removed TreeTableBeginEditing() since JTable provides IsEditing().
//		Removed SetEditorForEditMenu() since JXEditTable provides
//			GetEditMenuHandler().

#endif
