@Override
 public IHyperlink[] detectHyperlinks(
     ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
   if (controller == null || controller.getLastCompilationUnit() == null) {
     return null;
   } else {
     Node node =
         findNode(
             controller.getLastCompilationUnit(),
             controller.getTokens(),
             region.getOffset(),
             region.getOffset() + region.getLength());
     if (node == null) {
       return null;
     } else {
       Node id = getIdentifyingNode(node);
       if (id == null) {
         return null;
       } else {
         Referenceable referenceable = getReferencedModel(node);
         Backends supportedBackends = supportedBackends();
         if (referenceable instanceof Declaration) {
           Declaration dec = (Declaration) referenceable;
           if (dec.isNative()) {
             if (supportedBackends.none()) {
               return null;
             } else {
               referenceable = resolveNative(referenceable, dec, supportedBackends);
             }
           } else {
             if (!supportedBackends.none()) {
               return null;
             }
           }
         } else { // Module or package descriptors
           if (!supportedBackends.none()) {
             return null;
           }
         }
         Node r = getReferencedNode(referenceable);
         if (r == null) {
           return null;
         } else {
           return new IHyperlink[] {new CeylonNodeLink(r, id)};
         }
       }
     }
   }
 }
 @Override
 public String getHyperlinkText() {
   Backends supportedBackends = supportedBackends();
   return "Ceylon Declaration"
       + (supportedBackends.none()
           ? ""
           : " \u2014 "
               + (supportedBackends.header()
                   ? "native header"
                   : supportedBackends + " backend implementation"));
 }
예제 #3
0
  private void writeDependencyRow(ModuleImport moduleImport) throws IOException {
    StringBuilder tooltip = new StringBuilder();
    if (moduleImport.isExport()) {
      tooltip.append("shared ");
    }
    if (moduleImport.isOptional()) {
      tooltip.append("optional ");
    }
    tooltip.append("import of module ");
    tooltip.append(moduleImport.getModule().getNameAsString());
    tooltip.append(" ");
    tooltip.append(moduleImport.getModule().getVersion());

    open("tr");

    open("td class='shrink'");
    open("span title='" + tooltip + "'");
    writeIcon(moduleImport);
    close("span");
    open("code class='decl-label'");
    linkRenderer().to(moduleImport.getModule()).write();
    Backends backends = moduleImport.getNativeBackends();
    if (!backends.none()) {
      write(" (");
      write(backends.names());
      write(")");
    }
    close("code");
    close("td");

    open("td class='shrink'");
    open("code");
    write(moduleImport.getModule().getVersion());
    close("code");
    close("td");

    open("td");
    open("div class='description import-description'");
    write(getDoc(moduleImport, linkRenderer()));
    close("div");
    close("td");

    close("tr");
  }