1 /**************************************************************
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
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
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.
19  *
20  *************************************************************/
21 
22 #include <precomp.h>
23 #include <toolkit/hf_navi_sub.hxx>
24 
25 
26 // NOT FULLY DEFINED SERVICES
27 
28 
HF_NaviSubRow(Xml::Element & o_rOut)29 HF_NaviSubRow::HF_NaviSubRow( Xml::Element & o_rOut )
30     :   HtmlMaker(o_rOut),
31 		aRow(),
32         pMyRow(0)
33 {
34     Setup_Row();
35 }
36 
~HF_NaviSubRow()37 HF_NaviSubRow::~HF_NaviSubRow()
38 {
39 }
40 
41 void
AddItem(const String & i_sText,const String & i_sLink,bool i_bSwitchOn)42 HF_NaviSubRow::AddItem( const String &      i_sText,
43                         const String &      i_sLink,
44                         bool                i_bSwitchOn )
45 {
46     aRow.push_back( SubRow_Item( SubRow_Data(i_sText,i_sLink),
47 								 i_bSwitchOn ));
48 }
49 
50 void
SwitchOn(int i_nIndex)51 HF_NaviSubRow::SwitchOn( int i_nIndex )
52 {
53     if ( i_nIndex < int(aRow.size()) )
54         aRow[i_nIndex].second = true;
55 }
56 
57 void
Setup_Row()58 HF_NaviSubRow::Setup_Row()
59 {
60     Html::Table *
61                 pTable = new Html::Table;
62     CurOut()
63         >> *pTable
64            << new Html::ClassAttr("navisub")
65            << new Xml::AnAttribute( "border", "0" )
66            << new Xml::AnAttribute( "cellpadding", "0" );
67     pMyRow = &pTable->AddRow();
68 }
69 
70 void
Produce_Row()71 HF_NaviSubRow::Produce_Row()
72 {
73     for ( SubRow::const_iterator it = aRow.begin();
74           it != aRow.end();
75           ++it )
76     {
77         Xml::Element &
78             rCell = *pMyRow
79                      >> *new Html::TableCell
80                          << new Html::ClassAttr("navisub");
81         StreamLock sl(100);
82         Xml::Element &
83             rGoon = (*it).second
84                             ?   ( rCell
85                                   >> *new Html::Link( sl()
86                                                       << "#"
87                                                       << (*it).first.second
88                                                       << c_str )
89                                      << new Html::ClassAttr("navisub")
90                                 )
91                             :   rCell;
92         rGoon
93             << (*it).first.first;
94     }
95 }
96 
97 
98