private void saveJNLP( Serializable object ) throws Exception {
final JFrame frame = PhetApplication.getInstance().getPhetFrame();
// XML encode into a byte output stream.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XMLEncoder encoder = new XMLEncoder( baos );
encoder.setExceptionListener( new ExceptionListener() {
private int errors = 0;
// Report the first recoverable exception.
public void exceptionThrown( Exception e ) {
if( errors == 0 ) {
showError( QWIResources.getString( "Save.error.encode" ), e );
errors++;
}
}
} );
encoder.writeObject( object );
encoder.close();
if( object == null ) {
throw new Exception( QWIResources.getString( "XML encoding failed" ) );
}
// Convert to a byte input stream.
ByteArrayInputStream inputStream = new ByteArrayInputStream( baos.toByteArray() );
// Get the JNLP service for saving files.
FileSaveService fss = (FileSaveService)ServiceManager.lookup( "javax.jnlp.FileSaveService" );
if( fss == null ) {
throw new UnavailableServiceException( "JNLP FileSaveService is unavailable" );
}
// Save the configuration to a file.
FileContents fc = fss.saveFileDialog( null, null, inputStream, _directoryName );
if( fc != null ) {
_directoryName = getDirectoryName( fc.getName() );
}
}
PersistenceManager.java 文件源码
java
阅读 23
收藏 0
点赞 0
评论 0
项目:PhET
作者:
评论列表
文章目录