📄 seetagimpl.java
字号:
/* gnu.classpath.tools.gjdoc.SeeTagImpl Copyright (C) 2001 Free Software Foundation, Inc.This file is part of GNU Classpath.GNU Classpath is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version. GNU Classpath is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU Classpath; see the file COPYING. If not, write to theFree Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307 USA. */package gnu.classpath.tools.gjdoc;import com.sun.javadoc.*;import java.util.*;import java.text.*;public class SeeTagImpl extends AbstractTagImpl implements SeeTag { protected String reference; private String referencedClassName; private String referencedMemberName; private ClassDoc referencedClass; private MemberDoc referencedMember; private PackageDoc referencedPackage; private String label; private ClassDocImpl contextClass; public SeeTagImpl(String text, ClassDocImpl contextClass) { super(text); this.contextClass=contextClass; } public void resolve() { super.resolve(); text = text.trim(); if (text.startsWith("<") || text.startsWith("\"")) { label = text; return; } int labelNdx=text.indexOf(';'); if (labelNdx>=0) { label=""; return; } for (int i=0; i<text.length(); ++i) { if (" \t\r\n".indexOf(text.charAt(i)) >= 0) { labelNdx = i; break; } } int openParenNdx = text.indexOf('('); if (openParenNdx >= 0 && openParenNdx < labelNdx) { labelNdx=text.indexOf(')', openParenNdx); if (labelNdx >= 0) { ++ labelNdx; } } if (labelNdx<0 || labelNdx>=text.length()) { reference=text.trim(); label=""; } else { reference=text.substring(0,labelNdx).trim(); label=text.substring(labelNdx).trim(); } int mspecNdx=reference.indexOf('#'); String referencedFqName; if (mspecNdx<0) { referencedFqName=reference; } else { referencedFqName=reference.substring(0,mspecNdx); referencedMemberName=reference.substring(mspecNdx+1); } // the following is in contradiction to the api docs, but // conform to sun javadoc: return fully qualified classname // with referencedClassName(). if (referencedFqName.trim().length()>0) { referencedClassName=referencedFqName; if (contextClass==null) referencedClass=Main.getRootDoc().classNamed(referencedFqName); else referencedClass=contextClass.findClass(referencedFqName); } else { referencedClassName=""; referencedClass=contextClass; } if (referencedClass==null) { referencedClass = Main.getRootDoc().classNamed("java.lang." + referencedFqName); } if (referencedClass!=null && !referencedClass.isIncluded()) referencedClass=null; if (referencedClass!=null) { referencedPackage=referencedClass.containingPackage(); referencedClassName=referencedClass.qualifiedName(); if (referencedMemberName!=null) { if (referencedMemberName.indexOf('(')<0) { referencedMember=((ClassDocImpl)referencedClass).findFieldRec(referencedMemberName); if (null == referencedMember) { MethodDoc[] methods = ((ClassDocImpl)referencedClass).methods(); for (int i=0; i<methods.length; ++i) { if (methods[i].name().equals(referencedMemberName)) { if (null == referencedMember) { referencedMember = methods[i]; } else { referencedClass = null; referencedMember = null; //print warning here break; } } } } else { referencedClass = referencedMember.containingClass(); } } else { referencedMember=((ClassDocImpl)referencedClass).findExecutableRec(referencedMemberName); if (referencedMember==null) { //System.err.println("cannot find member for '"+referencedMemberName+"'"); referencedClass = null; } } } } /* else { System.err.println("class not found: '"+referencedFqName + "' in context class " + contextClass + " in " + this); } */ } public ClassDoc referencedClass() { return referencedClass; } public String referencedClassName() { return referencedClassName; } public MemberDoc referencedMember() { return referencedMember; } public String referencedMemberName() { return referencedMemberName; } public PackageDoc referencedPackage() { return referencedPackage; } public String label() { return label; } public String kind() { return "@see"; } public String name() { return "@see"; } public Tag[] firstSentenceTags() { return inlineTags(); } public Tag[] inlineTags() { return new Tag[]{new TextTagImpl(referencedClassName)}; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -