private boolean validate() {
    setPageComplete(false);

    if (getFolder() == null) {
      setErrorMessage("Parent folder is empty.");
      return false;
    } else if (folder instanceof IWorkspaceRoot) {
      setErrorMessage("Parent is not a folder.");
      return false;
    }

    if (getSignature() == null) {
      setErrorMessage("Signature is empty.");
      return false;
    } else {
      IContentType t;
      try {
        t = getSignature().getContentDescription().getContentType();
      } catch (CoreException e) {
        t = null;
      }
      if (t == null || !t.getId().equals(Signature.CONTENT_TYPE)) {
        setErrorMessage("Signature has the wrong content type.");
        return false;
      }
    }

    String nT = nameText.getText().trim();

    if (nT.length() == 0) {
      setErrorMessage("Name is empty.");
      return false;
    }

    String proposedFileName = getFileName();

    IPath p = folder.getFullPath().makeRelative();
    if (!p.isValidSegment(proposedFileName)) {
      setErrorMessage("Name contains invalid characters.");
      return false;
    } else {
      p.append(proposedFileName);
      if (Project.findFileByPath(null, p) != null) {
        setErrorMessage("Name already exists.");
        return false;
      }
    }

    setPageComplete(true);
    setErrorMessage(null);
    return true;
  }