protected Object[] getXSDSchemaChildren(XSDSchema schema) {
    List<XSDElementDeclaration> declarations = new ArrayList<XSDElementDeclaration>();

    List<Object> attributeDeclarations = new ArrayList<Object>();
    if (null != xsdSchema) {
      for (XSDSchemaContent cnt : xsdSchema.getContents()) {
        if (cnt instanceof XSDInclude) {
          XSDInclude incu = (XSDInclude) cnt;
          String schemaLocation = incu.getSchemaLocation();
          XSDSchema schemaInc = createSchema(schemaLocation);
          addElementDeclarationFromSchema(schemaInc, declarations);
        } else if (cnt instanceof XSDAttributeDeclaration) {
          XSDAttributeDeclaration attriDec = (XSDAttributeDeclaration) cnt;
          attributeDeclarations.add(attriDec);
        }
      }
    }
    addElementDeclarationFromSchema(schema, declarations);

    Object[] schemaChildren =
        Util.filterOutDuplicatedElems(
            declarations.toArray(new XSDNamedComponent[declarations.size()]));
    attributeDeclarations.addAll(Arrays.asList(schemaChildren));

    return attributeDeclarations.toArray();
  }
 protected void commitDocumentToHistory(Document history) {
   try {
     String value = Util.nodeToString(history);
     undoActionTrack.put(getActionUndoPos(), value);
   } catch (Exception e) {
     log.error(e.getMessage(), e);
   }
 }
  public void setXsdSchema(String xsd) {
    try {
      xsdSchema = Util.createXsdSchema(xsd, treeObj);
    } catch (Exception e) {

      log.error(e.getMessage(), e);
    }
  }
 protected void commitDocumentToCurrent(Document currnt) {
   try {
     String value = Util.nodeToString(currnt);
     redoActionTrack.keySet().size();
     redoActionTrack.put(getActionUndoPos(), value);
   } catch (Exception e) {
     log.error(e.getMessage(), e);
   }
 }
 private void refresh(String content) {
   XSDSchema xsd;
   try {
     xsd = Util.createXsdSchema(content, page.getXObject());
   } catch (Exception e) {
     log.error(e.getMessage(), e);
     return;
   }
   page.setXsdSchema(xsd);
   page.refresh();
   page.markDirtyWithoutCommit();
 }
  protected Object[] getXSDElementDeclarationChildren_TypeDef(XSDElementDeclaration parent) {

    ArrayList<Object> list = new ArrayList<Object>();

    if (parent.getTypeDefinition() == null) {
      return new Object[0]; // elements with not type declaration
    }

    // handle extensions and restrictions directly
    if (parent.getTypeDefinition() instanceof XSDComplexTypeDefinition) {
      list.addAll(
          Util.getComplexTypeDefinitionChildren(
              (XSDComplexTypeDefinition) parent.getTypeDefinition(), true));
    } else {
      list.addAll(
          Util.getSimpleTypeDefinitionChildren(
              (XSDSimpleTypeDefinition) parent.getTypeDefinition()));
    }

    return list.toArray();
  }
  private Object[] getXSDSimpleTypeDefinitionChildren_ATOMIC(XSDSimpleTypeDefinition parent) {
    ArrayList<Object> list = new ArrayList<Object>();
    // add Base Type if not a pre-defined type
    if (parent != null
        && parent.getSchema() != null
        && parent.getSchema().getSchemaForSchema() != null) {
      if (!parent.getSchema().getSchemaForSchema().getTypeDefinitions().contains(parent)) {
        list.add(parent.getBaseTypeDefinition());
      }
    }

    if (!Util.isBuildInType(parent)) {
      list.addAll(parent.getFacetContents());
    }

    return list.toArray(new Object[list.size()]);
  }
  public String getXSDSchemaAsString() throws Exception {

    if (xsdSchema == null) {
      return ""; //$NON-NLS-1$
    }

    Document document = xsdSchema.getDocument();
    String schema = Util.nodeToString(document);

    // FIXES a bug in the XSD library that puts nillable attributes in
    // elements which are ref
    // That is illegal according to W3C §3.3.3 / 2.2 (and Xerces)
    Pattern p =
        Pattern.compile(
            "(<([a-z]+:)?element.*?)nillable=['|\"].*?['|\"](.*?ref=.*?>)"); //$NON-NLS-1$
    schema = p.matcher(schema).replaceAll("$1 $3"); // $NON-NLS-1$

    return schema;
  }