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_linachain.hxx> 24 25 26 // NOT FULLY DEFINED SERVICES 27 #include <toolkit/out_position.hxx> 28 29 30 31 HF_LinkedNameChain::HF_LinkedNameChain( Xml::Element & o_rOut ) 32 : HtmlMaker( o_rOut 33 >> *new Html::Paragraph 34 << new Html::ClassAttr("namechain") ) 35 { 36 } 37 38 HF_LinkedNameChain::~HF_LinkedNameChain() 39 { 40 } 41 42 void 43 HF_LinkedNameChain::Produce_CompleteChain( const output::Position & i_curPosition, 44 F_LinkMaker i_linkMaker ) const 45 { 46 produce_Level(i_curPosition.RelatedNode(), i_curPosition, i_linkMaker); 47 } 48 49 void 50 HF_LinkedNameChain::Produce_CompleteChain_forModule( const output::Position & i_curPosition, 51 F_LinkMaker i_linkMaker ) const 52 { 53 if (i_curPosition.Depth() == 0) 54 return; 55 produce_Level(*i_curPosition.RelatedNode().Parent(), i_curPosition, i_linkMaker); 56 } 57 58 59 60 namespace 61 { 62 63 StreamStr aLinkBuf(200); 64 65 } 66 67 void 68 HF_LinkedNameChain::produce_Level( output::Node & i_levelNode, 69 const output::Position & i_startPosition, 70 F_LinkMaker i_linkMaker ) const 71 { 72 if ( i_levelNode.Depth() > 0 ) 73 { 74 produce_Level( *i_levelNode.Parent(), 75 i_startPosition, 76 i_linkMaker ); 77 } 78 79 aLinkBuf.reset(); 80 81 String 82 sFileName = (*i_linkMaker)(i_levelNode.Name()); 83 output::Position 84 aLevelPos(i_levelNode, sFileName); 85 86 i_startPosition.Get_LinkTo(aLinkBuf, aLevelPos); 87 88 if ( i_levelNode.Depth() > 0 ) 89 { 90 CurOut() 91 >> *new Html::Link(aLinkBuf.c_str()) 92 << new Html::ClassAttr("namechain") 93 << i_levelNode.Name(); 94 CurOut() << " :: "; 95 } 96 else 97 { 98 CurOut() 99 >> *new Html::Link(aLinkBuf.c_str()) 100 << new Html::ClassAttr("namechain") 101 << "::"; 102 CurOut() << " "; 103 } 104 } 105