Log in Help
Print
Homereleasesgate-5.1-beta2-build3402-ALLpluginsOntologysrcgatecreoleontologyimplsesame 〉 ActionSaveOntology.java
 
/*
 *  Copyright (c) 1998-2009, The University of Sheffield.
 *
 *  This file is part of GATE (see http://gate.ac.uk/), and is free
 *  software, licenced under the GNU Library General Public License,
 *  Version 2, June 1991 (in the distribution as file licence.html,
 *  and also available at http://gate.ac.uk/gate/licence.html).
 *
 *  Johann Petrak 2009-08-13
 *
 *  $Id: ActionSaveOntology.java 11598 2009-10-13 13:44:17Z johann_p $
 */
package gate.creole.ontology.impl.sesame;

import gate.gui.MainFrame;
import gate.util.GateRuntimeException;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;

/**
 * Class for carrying out the action of saving an ontology.
 * This class creates uses {@link #GUISaveOptionsPane} to show a dialog
 * for specifying the file to save to and other options and saves the
 * ontology using those options if the user does not choose to cancel.
 * 
 * @author Johann Petrak
 */
class ActionSaveOntology
    extends AbstractAction {

  static final long serialVersionUID = 1L;

  private AbstractOntologyImplSesame ontology;

  public ActionSaveOntology(String label, AbstractOntologyImplSesame aThis) {
    super(label);
    ontology = aThis;
  }

  public void actionPerformed(ActionEvent ae) {
    Runnable runableAction = new Runnable() {

      public void run() {
        GUISaveOptionsPane pane = new GUISaveOptionsPane();
        boolean ok = pane.showOptionDialog();
        if (ok) {
          try {
            MainFrame.lockGUI("Saving ontology ... ");
            ontology.writeOntologyData(pane.getFile(),
                pane.getFormat(), pane.getIncludeImports());
          } catch (Exception ex) {
            throw new GateRuntimeException(
                "Problem when saving ontology to file "+
                pane.getFile().getAbsolutePath(),ex);
            } finally {
            MainFrame.unlockGUI();
          }
        }
      }
    };
    Thread thread = new Thread(runableAction, "");
    thread.setPriority(Thread.MIN_PRIORITY);
    thread.start();
  }
}