1*d291ea28SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*d291ea28SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*d291ea28SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*d291ea28SAndrew Rist  * distributed with this work for additional information
6*d291ea28SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*d291ea28SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*d291ea28SAndrew Rist  * "License"); you may not use this file except in compliance
9*d291ea28SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*d291ea28SAndrew Rist  *
11*d291ea28SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*d291ea28SAndrew Rist  *
13*d291ea28SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*d291ea28SAndrew Rist  * software distributed under the License is distributed on an
15*d291ea28SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*d291ea28SAndrew Rist  * KIND, either express or implied.  See the License for the
17*d291ea28SAndrew Rist  * specific language governing permissions and limitations
18*d291ea28SAndrew Rist  * under the License.
19*d291ea28SAndrew Rist  *
20*d291ea28SAndrew Rist  *************************************************************/
21cdf0e10cSrcweir 
22cdf0e10cSrcweir #include <precomp.h>
23cdf0e10cSrcweir #include "hfi_navibar.hxx"
24cdf0e10cSrcweir 
25cdf0e10cSrcweir 
26cdf0e10cSrcweir // NOT FULLY DEFINED SERVICES
27cdf0e10cSrcweir #include <ary/idl/i_ce.hxx>
28cdf0e10cSrcweir #include <toolkit/hf_navi_main.hxx>
29cdf0e10cSrcweir #include <toolkit/hf_navi_sub.hxx>
30cdf0e10cSrcweir #include "hfi_interface.hxx"
31cdf0e10cSrcweir #include "hfi_module.hxx"
32cdf0e10cSrcweir #include "hfi_service.hxx"
33cdf0e10cSrcweir #include "hi_linkhelper.hxx"
34cdf0e10cSrcweir 
35cdf0e10cSrcweir 
36cdf0e10cSrcweir extern const String
37cdf0e10cSrcweir     C_sLocalManualLinks("#devmanual");
38cdf0e10cSrcweir 
39cdf0e10cSrcweir 
40cdf0e10cSrcweir const String        C_sTop      = "Overview";
41cdf0e10cSrcweir const String        C_sModule   = "Module";
42cdf0e10cSrcweir const String        C_sUse      = "Use";
43cdf0e10cSrcweir const String        C_sManual   = "Devguide";
44cdf0e10cSrcweir const String        C_sIndex    = "Index";
45cdf0e10cSrcweir 
46cdf0e10cSrcweir 
47cdf0e10cSrcweir 
48cdf0e10cSrcweir 
HF_IdlNavigationBar(Environment & io_rEnv,Xml::Element & o_rOut)49cdf0e10cSrcweir HF_IdlNavigationBar::HF_IdlNavigationBar( Environment &         io_rEnv,
50cdf0e10cSrcweir                                           Xml::Element &        o_rOut )
51cdf0e10cSrcweir     :   HtmlFactory_Idl(io_rEnv, &o_rOut)
52cdf0e10cSrcweir {
53cdf0e10cSrcweir }
54cdf0e10cSrcweir 
~HF_IdlNavigationBar()55cdf0e10cSrcweir HF_IdlNavigationBar::~HF_IdlNavigationBar()
56cdf0e10cSrcweir {
57cdf0e10cSrcweir }
58cdf0e10cSrcweir 
59cdf0e10cSrcweir void
Produce_CeMainRow(const client & i_ce,bool i_bNoUsePage)60cdf0e10cSrcweir HF_IdlNavigationBar::Produce_CeMainRow( const client & i_ce,
61cdf0e10cSrcweir                                         bool  i_bNoUsePage )
62cdf0e10cSrcweir {
63cdf0e10cSrcweir     HF_NaviMainRow
64cdf0e10cSrcweir                 aNaviMain( CurOut() );
65cdf0e10cSrcweir 
66cdf0e10cSrcweir     StreamLock  aLink(500);
67cdf0e10cSrcweir     StreamStr & rLink = aLink();
68cdf0e10cSrcweir 
69cdf0e10cSrcweir     Env().Get_LinkTo( rLink.reset(),
70cdf0e10cSrcweir 					  Env().OutputTree().Overview() );
71cdf0e10cSrcweir     aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
72cdf0e10cSrcweir 
73cdf0e10cSrcweir     Env().Get_LinkTo( rLink.reset(),
74cdf0e10cSrcweir 					  Env().Linker().PositionOf_CurModule() );
75cdf0e10cSrcweir     aNaviMain.Add_StdItem( C_sModule, rLink.c_str() );
76cdf0e10cSrcweir 
77cdf0e10cSrcweir     if (i_bNoUsePage)
78cdf0e10cSrcweir     {
79cdf0e10cSrcweir         aNaviMain.Add_NoneItem( C_sUse );
80cdf0e10cSrcweir     }
81cdf0e10cSrcweir     else
82cdf0e10cSrcweir     {
83cdf0e10cSrcweir         Env().Get_LinkTo( rLink.reset(),
84cdf0e10cSrcweir                           Env().Linker().PositionOf_CurXRefs(i_ce.LocalName()) );
85cdf0e10cSrcweir         aNaviMain.Add_StdItem( C_sUse, rLink.c_str() );
86cdf0e10cSrcweir     }
87cdf0e10cSrcweir 
88cdf0e10cSrcweir     const StringVector &
89cdf0e10cSrcweir         rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual();
90cdf0e10cSrcweir     if (rManualDescrs.size() == 2)
91cdf0e10cSrcweir     {
92cdf0e10cSrcweir         aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
93cdf0e10cSrcweir     }
94cdf0e10cSrcweir     else if (rManualDescrs.size() > 2)
95cdf0e10cSrcweir     {
96cdf0e10cSrcweir         aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks);
97cdf0e10cSrcweir     }
98cdf0e10cSrcweir     else
99cdf0e10cSrcweir     {
100cdf0e10cSrcweir         aNaviMain.Add_NoneItem( C_sManual );
101cdf0e10cSrcweir     }
102cdf0e10cSrcweir 
103cdf0e10cSrcweir     Env().Get_LinkTo( rLink.reset(),
104cdf0e10cSrcweir                       Env().Linker().PositionOf_Index() );
105cdf0e10cSrcweir     aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() );
106cdf0e10cSrcweir 
107cdf0e10cSrcweir     aNaviMain.Produce_Row();
108cdf0e10cSrcweir }
109cdf0e10cSrcweir 
110cdf0e10cSrcweir void
Produce_CeXrefsMainRow(const client & i_ce)111cdf0e10cSrcweir HF_IdlNavigationBar::Produce_CeXrefsMainRow( const client & i_ce )
112cdf0e10cSrcweir {
113cdf0e10cSrcweir     HF_NaviMainRow
114cdf0e10cSrcweir                 aNaviMain( CurOut() );
115cdf0e10cSrcweir 
116cdf0e10cSrcweir     StreamLock  aLink(500);
117cdf0e10cSrcweir     StreamStr & rLink = aLink();
118cdf0e10cSrcweir 
119cdf0e10cSrcweir     Env().Get_LinkTo( rLink.reset(),
120cdf0e10cSrcweir 					  Env().OutputTree().Overview() );
121cdf0e10cSrcweir     aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
122cdf0e10cSrcweir 
123cdf0e10cSrcweir     Env().Get_LinkTo( rLink.reset(),
124cdf0e10cSrcweir 					  Env().Linker().PositionOf_CurModule() );
125cdf0e10cSrcweir     aNaviMain.Add_StdItem( C_sModule, rLink.c_str() );
126cdf0e10cSrcweir 
127cdf0e10cSrcweir     aNaviMain.Add_SelfItem( C_sUse );
128cdf0e10cSrcweir 
129cdf0e10cSrcweir     const StringVector &
130cdf0e10cSrcweir         rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual();
131cdf0e10cSrcweir     if (rManualDescrs.size() == 2)
132cdf0e10cSrcweir     {
133cdf0e10cSrcweir         aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
134cdf0e10cSrcweir     }
135cdf0e10cSrcweir     else if (rManualDescrs.size() > 2)
136cdf0e10cSrcweir     {
137cdf0e10cSrcweir         aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks);
138cdf0e10cSrcweir     }
139cdf0e10cSrcweir     else
140cdf0e10cSrcweir     {
141cdf0e10cSrcweir         aNaviMain.Add_NoneItem( C_sManual );
142cdf0e10cSrcweir     }
143cdf0e10cSrcweir 
144cdf0e10cSrcweir     Env().Get_LinkTo( rLink.reset(),
145cdf0e10cSrcweir                       Env().Linker().PositionOf_Index() );
146cdf0e10cSrcweir     aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() );
147cdf0e10cSrcweir 
148cdf0e10cSrcweir     aNaviMain.Produce_Row();
149cdf0e10cSrcweir }
150cdf0e10cSrcweir 
151cdf0e10cSrcweir void
Produce_ModuleMainRow(const client & i_ce)152cdf0e10cSrcweir HF_IdlNavigationBar::Produce_ModuleMainRow( const client & i_ce )
153cdf0e10cSrcweir {
154cdf0e10cSrcweir     HF_NaviMainRow
155cdf0e10cSrcweir         aNaviMain( CurOut() );
156cdf0e10cSrcweir 
157cdf0e10cSrcweir     StreamLock  aLink(500);
158cdf0e10cSrcweir     StreamStr & rLink = aLink();
159cdf0e10cSrcweir 
160cdf0e10cSrcweir     Env().Get_LinkTo( rLink.reset(),
161cdf0e10cSrcweir 					  Env().OutputTree().Overview() );
162cdf0e10cSrcweir     aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
163cdf0e10cSrcweir 
164cdf0e10cSrcweir     aNaviMain.Add_SelfItem( C_sModule );
165cdf0e10cSrcweir 
166cdf0e10cSrcweir     aNaviMain.Add_NoneItem( C_sUse );
167cdf0e10cSrcweir 
168cdf0e10cSrcweir     const StringVector &
169cdf0e10cSrcweir         rManualDescrs = i_ce.Secondaries().Links2DescriptionInManual();
170cdf0e10cSrcweir     if (rManualDescrs.size() == 1)
171cdf0e10cSrcweir     {
172cdf0e10cSrcweir         aNaviMain.Add_StdItem(C_sManual, Env().Link2Manual( rManualDescrs.front() ));
173cdf0e10cSrcweir     }
174cdf0e10cSrcweir     else if (rManualDescrs.size() > 1)
175cdf0e10cSrcweir     {
176cdf0e10cSrcweir         aNaviMain.Add_StdItem(C_sManual, C_sLocalManualLinks);
177cdf0e10cSrcweir     }
178cdf0e10cSrcweir     else
179cdf0e10cSrcweir     {
180cdf0e10cSrcweir         aNaviMain.Add_NoneItem( C_sManual );
181cdf0e10cSrcweir     }
182cdf0e10cSrcweir 
183cdf0e10cSrcweir     Env().Get_LinkTo( rLink.reset(),
184cdf0e10cSrcweir                       Env().Linker().PositionOf_Index() );
185cdf0e10cSrcweir     aNaviMain.Add_StdItem( C_sIndex, rLink.c_str() );
186cdf0e10cSrcweir 
187cdf0e10cSrcweir     aNaviMain.Produce_Row();
188cdf0e10cSrcweir }
189cdf0e10cSrcweir 
190cdf0e10cSrcweir void
Produce_IndexMainRow()191cdf0e10cSrcweir HF_IdlNavigationBar::Produce_IndexMainRow()
192cdf0e10cSrcweir {
193cdf0e10cSrcweir     HF_NaviMainRow
194cdf0e10cSrcweir                 aNaviMain( CurOut() );
195cdf0e10cSrcweir 
196cdf0e10cSrcweir     StreamLock  aLink(500);
197cdf0e10cSrcweir     StreamStr & rLink = aLink();
198cdf0e10cSrcweir 
199cdf0e10cSrcweir     Env().Get_LinkTo( rLink.reset(),
200cdf0e10cSrcweir 					  Env().OutputTree().Overview() );
201cdf0e10cSrcweir     aNaviMain.Add_StdItem( C_sTop, rLink.c_str() );
202cdf0e10cSrcweir 
203cdf0e10cSrcweir     aNaviMain.Add_NoneItem( C_sModule );
204cdf0e10cSrcweir     aNaviMain.Add_NoneItem( C_sUse );
205cdf0e10cSrcweir     aNaviMain.Add_NoneItem( C_sManual );
206cdf0e10cSrcweir 
207cdf0e10cSrcweir     aNaviMain.Add_SelfItem( C_sIndex );
208cdf0e10cSrcweir 
209cdf0e10cSrcweir     aNaviMain.Produce_Row();
210cdf0e10cSrcweir 
211cdf0e10cSrcweir     CurOut() << new Html::HorizontalLine();
212cdf0e10cSrcweir }
213cdf0e10cSrcweir 
214cdf0e10cSrcweir DYN HF_NaviSubRow &
Add_SubRow()215cdf0e10cSrcweir HF_IdlNavigationBar::Add_SubRow()
216cdf0e10cSrcweir {
217cdf0e10cSrcweir     return *new HF_NaviSubRow( CurOut() );
218cdf0e10cSrcweir }
219cdf0e10cSrcweir 
220