private static IContentType getContentType(ITypedElement element) {
   if (element == null) return null;
   String name = element.getName();
   IContentType ct = null;
   if (element instanceof IStreamContentAccessor) {
     IStreamContentAccessor isa = (IStreamContentAccessor) element;
     try {
       InputStream is = isa.getContents();
       if (is != null) {
         InputStream bis = new BufferedInputStream(is);
         try {
           ct = fgContentTypeManager.findContentTypeFor(is, name);
         } catch (IOException e) {
           // silently ignored
         } finally {
           try {
             bis.close();
           } catch (IOException e2) {
             // silently ignored
           }
         }
       }
     } catch (CoreException e1) {
       // silently ignored
     }
   }
   if (ct == null) ct = fgContentTypeManager.findContentTypeFor(name);
   return ct;
 }
 public static String readString(IStreamContentAccessor sa) throws CoreException {
   InputStream is = sa.getContents();
   if (is != null) {
     String encoding = null;
     if (sa instanceof IEncodedStreamContentAccessor) {
       try {
         encoding = ((IEncodedStreamContentAccessor) sa).getCharset();
       } catch (Exception e) {
       }
     }
     if (encoding == null) encoding = ResourcesPlugin.getEncoding();
     return readString(is, encoding);
   }
   return null;
 }
 /*
  * Guesses the file type of the given input.
  * Returns ITypedElement.TEXT_TYPE if none of the first 10 lines is longer than 1000 bytes.
  * Returns ITypedElement.UNKNOWN_TYPE otherwise.
  * Returns <code>null</code> if the input isn't an <code>IStreamContentAccessor</code>.
  */
 private static String guessType(ITypedElement input) {
   if (input instanceof IStreamContentAccessor) {
     IStreamContentAccessor sca = (IStreamContentAccessor) input;
     InputStream is = null;
     try {
       is = sca.getContents();
       if (is == null) return null;
       int lineLength = 0;
       int lines = 0;
       while (lines < 10) {
         int c = is.read();
         if (c == -1) // EOF
         break;
         if (c == '\n' || c == '\r') { // reset line length
           lineLength = 0;
           lines++;
         } else lineLength++;
         if (lineLength > 1000) return ITypedElement.UNKNOWN_TYPE;
       }
       return ITypedElement.TEXT_TYPE;
     } catch (CoreException ex) {
       // be silent and return UNKNOWN_TYPE
     } catch (IOException ex) {
       // be silent and return UNKNOWN_TYPE
     } finally {
       if (is != null) {
         try {
           is.close();
         } catch (IOException ex) {
           // silently ignored
         }
       }
     }
     return ITypedElement.UNKNOWN_TYPE;
   }
   return null;
 }