import java.util.HashMap;

import ag.ion.bion.officelayer.application.IOfficeApplication;
import ag.ion.bion.officelayer.application.OfficeApplicationRuntime;
import ag.ion.bion.officelayer.document.IDocumentService;
import ag.ion.bion.officelayer.event.DocumentAdapter;
import ag.ion.bion.officelayer.event.IDocumentEvent;
import ag.ion.bion.officelayer.text.ITextDocument;

public class SaveAndOpen {

  private final static String      OPEN_OFFICE_ORG_PATH = "C:\\Programme\\OpenOffice.org 3";

  public static IOfficeApplication officeAplication     = null;

  public static void main(String[] args) {
    HashMap configuration = new HashMap();
    configuration.put(IOfficeApplication.APPLICATION_HOME_KEY, OPEN_OFFICE_ORG_PATH);
    configuration.put(IOfficeApplication.APPLICATION_TYPE_KEY, IOfficeApplication.LOCAL_APPLICATION);

    try {
      officeAplication = OfficeApplicationRuntime.getApplication(configuration);
      officeAplication.activate();
      IDocumentService documentService = officeAplication.getDocumentService();
      final ITextDocument doc = (ITextDocument) documentService.loadDocument("P:/workspaces/NOA/ag.ion.noa/aaa.odt");
      doc.getTextService().getText().setText("bbb");
      doc.addDocumentListener(new DocumentAdapter() {
        public void onSaveAsDone(IDocumentEvent documentEvent) {
          saveHook();
        }

        public void onSaveDone(IDocumentEvent documentEvent) {
          saveHook();
        }

        private void saveHook() {
          try {
            IDocumentService documentService = officeAplication.getDocumentService();
            documentService.loadDocument(doc.getFrame(), "P:/workspaces/NOA/ag.ion.noa/fff.odt");
            doc.close();
          }
          catch (Exception e) {
            e.printStackTrace();
          }
        }
      });
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }
}
