@Override @NonNull protected final CharSequence createContent() throws IOException { final FileObject file = getHandle().resolveFileObject(false); if (file == null) { throw new FileNotFoundException("Cannot open file: " + toString()); } final Source source = Source.create(file); if (source == null) { throw new IOException("No source for: " + FileUtil.getFileDisplayName(file)); //NOI18N } CharSequence content = source.createSnapshot().getText(); if (hasFilter && source.getDocument(false) == null) { content = filter(content); } return content; }
@Override @CheckForNull protected final OutputStream createOutputStream() throws IOException { final FileObject file = getHandle().resolveFileObject(true); if (file == null) { throw new IOException("Cannot create file: " + toString()); //NOI18N } final StyledDocument doc = getDocument(); if (doc != null) { return new DocumentStream (doc); } return null; }
@Override public StyledDocument getDocument() { final FileObject file = getHandle().resolveFileObject(false); if (file == null) { return null; } final Source src = Source.create(file); if (src == null) { return null; } final Document doc = src.getDocument(false); return (doc instanceof StyledDocument) ? ((StyledDocument)doc) : null; }
@CheckForNull public static BasicSourceFileObject create ( @NonNull final FileObject file, @NonNull final FileObject root) { try { return new BasicSourceFileObject ( new Handle(file, root), null, null, false); } catch (IOException ioe) { if (LOG.isLoggable(Level.SEVERE)) LOG.log(Level.SEVERE, ioe.getMessage(), ioe); return null; } }
@Override public void runAtomic(final Runnable r) { assert r != null; final StyledDocument doc = getDocument(); if (doc == null) { throw new IllegalStateException (); } else { LineDocumentUtils.as(doc, AtomicLockDocument.class).runAtomic(r); } }
public BasicSourceFileObject ( @NonNull final Handle handle, @NullAllowed final JavaFileFilterImplementation filter, @NullAllowed final CharSequence content, final boolean renderNow) throws IOException { super(handle, filter); this.hasFilter = filter != null; if (content != null || renderNow) { update(content); } }
public synchronized @Override void close() throws IOException { try { LineDocumentUtils.as(doc, AtomicLockDocument.class).runAtomic(new Runnable () { @Override public void run () { try { doc.remove(0,doc.getLength()); doc.insertString(0,new String( data, 0, pos, FileEncodingQuery.getEncoding(getHandle().resolveFileObject(false))), null); } catch (BadLocationException e) { if (LOG.isLoggable(Level.SEVERE)) LOG.log(Level.SEVERE, e.getMessage(), e); } } }); } finally { resetCaches(); } } }
@Override public void run () { try { doc.remove(0,doc.getLength()); doc.insertString(0,new String( data, 0, pos, FileEncodingQuery.getEncoding(getHandle().resolveFileObject(false))), null); } catch (BadLocationException e) { if (LOG.isLoggable(Level.SEVERE)) LOG.log(Level.SEVERE, e.getMessage(), e); } } });
@NonNull @Override public AbstractSourceFileObject createJavaFileObject ( @NonNull final AbstractSourceFileObject.Handle handle, @NullAllowed final JavaFileFilterImplementation filter, @NullAllowed final CharSequence content, final boolean renderNow) throws IOException { return new BasicSourceFileObject ( handle, filter, content, renderNow); } }
@Override protected final Long isDirty() { final FileObject file = getHandle().resolveFileObject(false); if (file == null) { return null; } final Source source = Source.create(file); if (source != null) { Document doc = source.getDocument(false); if (doc != null) { return DocumentUtilities.getDocumentTimestamp(doc); } } return null; }