org.openide.loaders
Interface SaveAsCapable
public interface SaveAsCapable
Save document under a different file name and/or extension.
The default implementation is available in DataEditorSupport. So if your
editor support inherits from DataEditorSupport you can implement "Save As" feature
for your documents by adding the following lines into your DataObject's constructor:
getCookieSet().assign( SaveAsCapable.class, new SaveAsCapable() {
public void saveAs(FileObject folder, String fileName) throws IOException {
getDataEditorSupport().saveAs( folder, fileName );
}
});
If you have Node, you may use the following code:
public class MyNode extends AbstractNode implements Node.Cookie {
public Node.Cookie getCookie(Class clazz) {
...
if (SaveAsCapable.class.equals(clazz)) {
return new MySaveAsCookie();
}
....
return super.getCookie(clazz);
}
private class MySaveAsCookie implements Node.Cookie, SaveAsCapable {
public void saveAs(FileObject folder, String fileName) throws IOException {
FileObject newFile = folder.getFileObject(fileName);
if (newFile == null) {
newFile = FileUtil.createData(folder, fileName);
}
OutputStream output = newFile.getOutputStream();
InputStream input = ... // get your input stream
try {
byte[] buffer = new byte[4096];
while (input.available() > 0) {
output.write(buffer, 0, input.read(buffer));
}
}
finally {
if (input != null) {
input.close();
}
if (output != null) {
output.close();
}
}
}
}
}
- Since:
- 6.3
saveAs
void saveAs(FileObject folder,
String name)
throws IOException
- Invoke the save operation.
- Parameters:
folder - Folder to save to.name - New file name to save to.
- Throws:
IOException - if the object could not be saved