public IStructuredFormatProcessor getFormatProcessor(String contentTypeId) {
    if (contentTypeId == null) return null;

    IStructuredFormatProcessor formatProcessor = null;
    if (map.containsKey(contentTypeId)) {
      formatProcessor = (IStructuredFormatProcessor) map.get(contentTypeId);
    } else {
      IContentTypeManager manager = Platform.getContentTypeManager();
      IContentType queryContentType = manager.getContentType(contentTypeId);
      boolean found = false;
      for (Iterator iter = map.keySet().iterator(); iter.hasNext(); ) {
        String elementContentTypeId = (String) iter.next();
        IContentType elementContentType = manager.getContentType(elementContentTypeId);
        if (queryContentType.isKindOf(elementContentType)) {
          formatProcessor = (IStructuredFormatProcessor) map.get(elementContentTypeId);
          map.put(contentTypeId, formatProcessor);
          found = true;
          break;
        }
      }

      if (!found) map.put(contentTypeId, null);
    }

    return formatProcessor;
  }
 public void testIsAssociatedWith() {
   IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
   final SingleNodeScope scope = new SingleNodeScope();
   IContentType textContentType =
       contentTypeManager.getContentType(Platform.PI_RUNTIME + '.' + "text");
   IContentTypeSettings localSettings = null;
   try {
     localSettings = textContentType.getSettings(scope);
   } catch (CoreException e) {
     fail("0.1", e);
   }
   // haven't added association yet
   assertTrue("1.0", !textContentType.isAssociatedWith("hello.foo", scope));
   assertTrue("1.1", !textContentType.isAssociatedWith("hello.foo"));
   try {
     // associate at the scope level
     localSettings.addFileSpec("foo", IContentType.FILE_EXTENSION_SPEC);
   } catch (CoreException e) {
     fail("1.5", e);
   }
   try {
     localSettings = textContentType.getSettings(scope);
   } catch (CoreException e) {
     fail("2.1", e);
   }
   // scope-specific settings should contain the filespec we just added
   String[] fileSpecs = localSettings.getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
   assertEquals("2.2", 1, fileSpecs.length);
   assertEquals("2.3", "foo", fileSpecs[0]);
   // now it is associated at the scope level...
   assertTrue("2.5", textContentType.isAssociatedWith("hello.foo", scope));
   // ...but not at the global level
   assertTrue("2.6", !textContentType.isAssociatedWith("hello.foo"));
 }
  public void testContentTypeLookup() {
    IContentTypeManager global = Platform.getContentTypeManager();
    final SingleNodeScope scope = new SingleNodeScope();
    IContentTypeMatcher local = global.getMatcher(new LocalSelectionPolicy(), scope);
    IContentType textContentType = global.getContentType(Platform.PI_RUNTIME + '.' + "text");
    try {
      // added "<test case name>.global" to the text content type as a global file spec
      textContentType.addFileSpec(getName() + ".global", IContentType.FILE_NAME_SPEC);
    } catch (CoreException e) {
      fail("0.1", e);
    }
    try {
      // added "<test case name>.local" to the text content type as a local (scope-specific) file
      // spec
      textContentType
          .getSettings(scope)
          .addFileSpec(getName() + ".local", IContentType.FILE_NAME_SPEC);
    } catch (CoreException e) {
      fail("0.2", e);
    }
    // make ensure associations are properly recognized when doing content type lookup
    assertEquals("1.0", textContentType, global.findContentTypeFor(getName() + ".global"));
    assertEquals("1.1", null, local.findContentTypeFor(getName() + ".global"));
    assertEquals("2.0", textContentType, local.findContentTypeFor(getName() + ".local"));
    assertEquals("2.1", null, global.findContentTypeFor(getName() + ".local"));

    try {
      textContentType.removeFileSpec(getName() + ".global", IContentType.FILE_NAME_SPEC);
    } catch (CoreException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
예제 #4
0
 private static Set<String> loadGroovyFileNames() {
   IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
   if (contentTypeManager != null) {
     Set<String> names = null;
     IContentType groovyContentType =
         contentTypeManager.getContentType(GROOVY_SOURCE_CONTENT_TYPE);
     for (IContentType contentType : contentTypeManager.getAllContentTypes()) {
       if (contentType.isKindOf(groovyContentType)) {
         for (String fileName : contentType.getFileSpecs(IContentType.FILE_NAME_SPEC)) {
           if (names == null) names = new TreeSet<String>();
           names.add(fileName);
         }
       }
     }
     if (names != null) return names;
   }
   return Collections.emptySet();
 }
예제 #5
0
 private static Set<String> loadGroovyFileExtensions() {
   IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
   if (contentTypeManager != null) {
     IContentType groovyContentType =
         contentTypeManager.getContentType(GROOVY_SOURCE_CONTENT_TYPE);
     Set<String> extensions = new HashSet<String>();
     // https://bugs.eclipse.org/bugs/show_bug.cgi?id=121715
     // content types derived from groovy content type should be included
     for (IContentType contentType : contentTypeManager.getAllContentTypes()) {
       if (contentType.isKindOf(
           groovyContentType)) { // note that contentType.isKindOf(javaContentType) == true
         for (String fileExtension : contentType.getFileSpecs(IContentType.FILE_EXTENSION_SPEC)) {
           extensions.add(fileExtension);
         }
       }
     }
     return extensions;
   }
   return Collections.singleton("groovy");
 }