@Override
  @SuppressWarnings({"unchecked"})
  public void readExternal(Element element) throws InvalidDataException {
    super.readExternal(element);
    DefaultJDOMExternalizer.readExternal(this, element);

    Element e = element.getChild("XsltFile");
    if (e != null) {
      final String url = e.getAttributeValue("url");
      if (url != null) {
        myXsltFile = VirtualFilePointerManager.getInstance().create(url, getProject(), null);
      }
    }
    e = element.getChild("XmlFile");
    if (e != null) {
      final String url = e.getAttributeValue("url");
      if (url != null) {
        myXmlInputFile = VirtualFilePointerManager.getInstance().create(url, getProject(), null);
      }
    }

    e = element.getChild("OutputFile");
    if (e != null) {
      myOutputFile = e.getAttributeValue("path");
      myOpenOutputFile = Boolean.valueOf(e.getAttributeValue("openOutputFile"));
      myOpenInBrowser = Boolean.valueOf(e.getAttributeValue("openInBrowser"));
    }
  }
  @Override
  public void writeExternal(Element element) throws WriteExternalException {
    super.writeExternal(element);
    DefaultJDOMExternalizer.writeExternal(this, element);

    Element e = new Element("XsltFile");
    if (myXsltFile != null) {
      e.setAttribute("url", myXsltFile.getUrl());
      element.addContent(e);
    }
    e = new Element("XmlFile");
    if (myXmlInputFile != null) {
      e.setAttribute("url", myXmlInputFile.getUrl());
      element.addContent(e);
    }
    e = new Element("OutputFile");
    if (myOutputFile != null) {
      e.setAttribute("path", myOutputFile);
      e.setAttribute("openOutputFile", Boolean.toString(myOpenOutputFile));
      e.setAttribute("openInBrowser", Boolean.toString(myOpenInBrowser));
      element.addContent(e);
    }
  }