TaskPaneTreeNode.hxx (67e470da) | TaskPaneTreeNode.hxx (3e459a30) |
---|---|
1/************************************************************** | 1/************************************************************** |
2 * | 2 * |
3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at | 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at |
10 * | 10 * |
11 * http://www.apache.org/licenses/LICENSE-2.0 | 11 * http://www.apache.org/licenses/LICENSE-2.0 |
12 * | 12 * |
13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. | 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. |
19 * | 19 * |
20 *************************************************************/ 21 22 23 24#ifndef SD_TASKPANE_TREE_NODE_HXX 25#define SD_TASKPANE_TREE_NODE_HXX 26 27#include "ILayoutableWindow.hxx" --- 7 unchanged lines hidden (view full) --- 35} 36 37namespace sd { namespace toolpanel { 38 39class ControlContainer; 40class TaskPaneShellManager; 41 42enum TreeNodeStateChangeEventId { | 20 *************************************************************/ 21 22 23 24#ifndef SD_TASKPANE_TREE_NODE_HXX 25#define SD_TASKPANE_TREE_NODE_HXX 26 27#include "ILayoutableWindow.hxx" --- 7 unchanged lines hidden (view full) --- 35} 36 37namespace sd { namespace toolpanel { 38 39class ControlContainer; 40class TaskPaneShellManager; 41 42enum TreeNodeStateChangeEventId { |
43 EID_CHILD_ADDED, 44 EID_ALL_CHILDREN_REMOVED, 45 EID_EXPANSION_STATE_CHANGED, 46 EID_FOCUSED_STATE_CHANGED, 47 EID_SHOWING_STATE_CHANGED | 43 EID_CHILD_ADDED, 44 EID_ALL_CHILDREN_REMOVED, 45 EID_EXPANSION_STATE_CHANGED, 46 EID_FOCUSED_STATE_CHANGED, 47 EID_SHOWING_STATE_CHANGED |
48}; 49 50 51/** Base class for all members of the object hierarchy that makes up the | 48}; 49 50 51/** Base class for all members of the object hierarchy that makes up the |
52 tool panel. In the task pane, there are multiple hierarchies of such nodes, 53 with every panel having an own tree. The pane node is the root of the tree, below 54 that there are SubToolPanels and Window/Control objects. At the 55 lowest level there are only Window or Control objects. | 52 tool panel. In the task pane, there are multiple hierarchies of such nodes, 53 with every panel having an own tree. The pane node is the root of the tree, below 54 that there are SubToolPanels and Window/Control objects. At the 55 lowest level there are only Window or Control objects. |
56 | 56 |
57 This class provides the means of communication between objects on 58 different levels. | 57 This class provides the means of communication between objects on 58 different levels. |
59*/ 60class TreeNode | 59*/ 60class TreeNode |
61 : public ILayoutableWindow, 62 public ILayouter | 61 : public ILayoutableWindow, 62 public ILayouter |
63{ 64public: | 63{ 64public: |
65 TreeNode (TreeNode* pParent); 66 virtual ~TreeNode (void); | 65 TreeNode (TreeNode* pParent); 66 virtual ~TreeNode (void); |
67 | 67 |
68 void SetParentNode (TreeNode* pNewParent); 69 TreeNode* GetParentNode (void); | 68 void SetParentNode (TreeNode* pNewParent); 69 TreeNode* GetParentNode (void); |
70 | 70 |
71 /** Return the Window pointer of a tree node. 72 */ 73 virtual ::Window* GetWindow (void); | 71 /** Return the Window pointer of a tree node. 72 */ 73 virtual ::Window* GetWindow (void); |
74 | 74 |
75 /** Return a const pointer to the window of a tree node. 76 */ 77 virtual const ::Window* GetConstWindow (void) const; | 75 /** Return a const pointer to the window of a tree node. 76 */ 77 virtual const ::Window* GetConstWindow (void) const; |
78 | 78 |
79 /** Return the joined minimum width of all children, i.e. the largest of 80 the minimum widths. 81 */ 82 virtual sal_Int32 GetMinimumWidth (void); | 79 /** Return the joined minimum width of all children, i.e. the largest of 80 the minimum widths. 81 */ 82 virtual sal_Int32 GetMinimumWidth (void); |
83 | 83 |
84 /** The default implementaion always returns <FALSE/> 85 */ 86 virtual bool IsResizable (void); | 84 /** The default implementaion always returns <FALSE/> 85 */ 86 virtual bool IsResizable (void); |
87 | 87 |
88 /** Call this method whenever the size of one of the children of the 89 called node has to be changed, e.g. when the layout menu shows more 90 or less items than before. As a typical result the node will layout 91 and resize its children according to their size requirements. 92 93 Please remember that the size of the children can be changed in the 94 first place because scroll bars can give a node the space it needs. | 88 /** Call this method whenever the size of one of the children of the 89 called node has to be changed, e.g. when the layout menu shows more 90 or less items than before. As a typical result the node will layout 91 and resize its children according to their size requirements. |
95 | 92 |
96 The default implementation passes this call to its parent. 97 */ 98 virtual void RequestResize (void); | 93 Please remember that the size of the children can be changed in the 94 first place because scroll bars can give a node the space it needs. |
99 | 95 |
100 /** The default implementation shows the window (when it exists) when 101 bExpansionState is <TRUE/>. It hides the window otherwise. 102 @return 103 Returns <TRUE/> when the expansion state changes. When an 104 expansion state is requested that is already in place then 105 <FALSE/> is returned. 106 */ 107 virtual bool Expand (bool bExpansionState); | 96 The default implementation passes this call to its parent. 97 */ 98 virtual void RequestResize (void); |
108 | 99 |
109 /** The default implementation returns whether the window is showing. 110 When there is no window then it returns <FALSE/>. 111 */ 112 virtual bool IsExpanded (void) const; | 100 /** The default implementation shows the window (when it exists) when 101 bExpansionState is <TRUE/>. It hides the window otherwise. 102 @return 103 Returns <TRUE/> when the expansion state changes. When an 104 expansion state is requested that is already in place then 105 <FALSE/> is returned. 106 */ 107 virtual bool Expand (bool bExpansionState); |
113 | 108 |
114 /** Return whether the node can be expanded or collapsed. The default 115 implementation always returns <TRUE/> when there is window and 116 <FALSE/> otherwise. If <FALSE/> is returned 117 then Expand() may be called but it will not change the expansion 118 state. 119 */ 120 virtual bool IsExpandable (void) const; | 109 /** The default implementation returns whether the window is showing. 110 When there is no window then it returns <FALSE/>. 111 */ 112 virtual bool IsExpanded (void) const; |
121 | 113 |
122 /** The default implementation calls GetWindow()->Show(). 123 */ 124 virtual void Show (bool bVisibilityState); | 114 /** Return whether the node can be expanded or collapsed. The default 115 implementation always returns <TRUE/> when there is window and 116 <FALSE/> otherwise. If <FALSE/> is returned 117 then Expand() may be called but it will not change the expansion 118 state. 119 */ 120 virtual bool IsExpandable (void) const; |
125 | 121 |
126 /** The default implementation returns GetWindow()->IsVisible(). 127 */ 128 virtual bool IsShowing (void) const; | 122 /** The default implementation calls GetWindow()->Show(). 123 */ 124 virtual void Show (bool bVisibilityState); |
129 | 125 |
130 ControlContainer& GetControlContainer (void); | 126 /** The default implementation returns GetWindow()->IsVisible(). 127 */ 128 virtual bool IsShowing (void) const; |
131 | 129 |
132 /** Give each node access to a shell manage. This usually is the shell 133 manager of the ToolPanelViewShell. | 130 ControlContainer& GetControlContainer (void); |
134 | 131 |
135 At least the root node has to overwrite this method since the 136 default implementation simply returns the shell manager of its 137 parent. 138 */ 139 virtual TaskPaneShellManager* GetShellManager (void); | 132 /** Give each node access to a shell manage. This usually is the shell 133 manager of the ToolPanelViewShell. |
140 | 134 |
141 /** You will rarely need to overload this method. To supply your own 142 accessible object you should overload CreateAccessible() instead. 143 */ 144 virtual ::com::sun::star::uno::Reference< 145 ::com::sun::star::accessibility::XAccessible> GetAccessibleObject (void); | 135 At least the root node has to overwrite this method since the 136 default implementation simply returns the shell manager of its 137 parent. 138 */ 139 virtual TaskPaneShellManager* GetShellManager (void); |
146 | 140 |
147 /** Overload this method in order to supply a class specific accessible 148 object. 149 The default implementation will return a new instance of 150 AccessibleTreeNode. 151 @param rxParent 152 The accessible parent of the accessible object to create. It is 153 not necessaryly the accessible object of the parent window of 154 GetWindow(). 155 156 */ 157 virtual ::com::sun::star::uno::Reference< 158 ::com::sun::star::accessibility::XAccessible> CreateAccessibleObject ( 159 const ::com::sun::star::uno::Reference< 160 ::com::sun::star::accessibility::XAccessible>&rxParent); | 141 /** You will rarely need to overload this method. To supply your own 142 accessible object you should overload CreateAccessible() instead. 143 */ 144 virtual ::com::sun::star::uno::Reference< 145 ::com::sun::star::accessibility::XAccessible> GetAccessibleObject (void); |
161 | 146 |
162 /** Add a listener that will be informated in the future about state 163 changes of the tree node. This includes adding and removing 164 children as well as focus, visibility, and expansion state. 165 Multiple calls are ignored. Each listener is added only once. 166 */ 167 void AddStateChangeListener (const Link& rListener); | 147 /** Overload this method in order to supply a class specific accessible 148 object. 149 The default implementation will return a new instance of 150 AccessibleTreeNode. 151 @param rxParent 152 The accessible parent of the accessible object to create. It is 153 not necessarily the accessible object of the parent window of 154 GetWindow(). |
168 | 155 |
169 /** Call the state change listeners and pass a state change event with 170 the specified event id. The source field is set to this. 171 @param pChild 172 This optional parameter makes sense only with the 173 EID_CHILD_ADDED event. 174 */ 175 void FireStateChangeEvent ( 176 TreeNodeStateChangeEventId eEventId, 177 TreeNode* pChild = NULL) const; 178 | 156 */ 157 virtual ::com::sun::star::uno::Reference< 158 ::com::sun::star::accessibility::XAccessible> CreateAccessibleObject ( 159 const ::com::sun::star::uno::Reference< 160 ::com::sun::star::accessibility::XAccessible>&rxParent); 161 162 /** Add a listener that will be informed in the future about state 163 changes of the tree node. This includes adding and removing 164 children as well as focus, visibility, and expansion state. 165 Multiple calls are ignored. Each listener is added only once. 166 */ 167 void AddStateChangeListener (const Link& rListener); 168 169 /** Call the state change listeners and pass a state change event with 170 the specified event id. The source field is set to this. 171 @param pChild 172 This optional parameter makes sense only with the 173 EID_CHILD_ADDED event. 174 */ 175 void FireStateChangeEvent ( 176 TreeNodeStateChangeEventId eEventId, 177 TreeNode* pChild = NULL) const; 178 |
179protected: | 179protected: |
180 ::std::auto_ptr<ControlContainer> mpControlContainer; | 180 ::std::auto_ptr<ControlContainer> mpControlContainer; |
181 182private: | 181 182private: |
183 TreeNode* mpParent; 184 typedef ::std::vector<Link> StateChangeListenerContainer; 185 StateChangeListenerContainer maStateChangeListeners; | 183 TreeNode* mpParent; 184 typedef ::std::vector<Link> StateChangeListenerContainer; 185 StateChangeListenerContainer maStateChangeListeners; |
186}; 187 188 189 190 191/** Objects of this class are sent to listeners to notify them about state | 186}; 187 188 189 190 191/** Objects of this class are sent to listeners to notify them about state |
192 changes of a tree node. | 192 changes of a tree node. |
193*/ 194class TreeNodeStateChangeEvent 195{ 196public: 197 | 193*/ 194class TreeNodeStateChangeEvent 195{ 196public: 197 |
198 TreeNodeStateChangeEvent ( 199 const TreeNode& rNode, 200 TreeNodeStateChangeEventId eEventId, 201 TreeNode* pChild = NULL); | 198 TreeNodeStateChangeEvent ( 199 const TreeNode& rNode, 200 TreeNodeStateChangeEventId eEventId, 201 TreeNode* pChild = NULL); |
202 | 202 |
203 const TreeNode& mrSource; 204 TreeNodeStateChangeEventId meEventId; 205 TreeNode* mpChild; | 203 const TreeNode& mrSource; 204 TreeNodeStateChangeEventId meEventId; 205 TreeNode* mpChild; |
206}; 207 208} } // end of namespace ::sd::toolpanel 209 210#endif | 206}; 207 208} } // end of namespace ::sd::toolpanel 209 210#endif |