void (T tool, Element groupElement) { Element element = new Element(TOOL); if (tool.getName() != null) { element.setAttribute(NAME, tool.getName()); } if (tool.getDescription() != null) { element.setAttribute(DESCRIPTION, tool.getDescription()); } saveToolAttributes(tool, element); Element taskElement = new Element(EXEC); final PathMacroManager macroManager = PathMacroManager.getInstance(ApplicationManager.getApplication()); Element option = new Element(ELEMENT_OPTION); taskElement.addContent(option); option.setAttribute(ATTRIBUTE_NAME, COMMAND); if (tool.getProgram() != null) { option.setAttribute(ATTRIBUTE_VALUE, macroManager.collapsePath(tool.getProgram())); } option = new Element(ELEMENT_OPTION); taskElement.addContent(option); option.setAttribute(ATTRIBUTE_NAME, PARAMETERS); if (tool.getParameters() != null) { option.setAttribute(ATTRIBUTE_VALUE, macroManager.collapsePath(tool.getParameters())); } option = new Element(ELEMENT_OPTION); taskElement.addContent(option); option.setAttribute(ATTRIBUTE_NAME, WORKING_DIRECTORY); if (tool.getWorkingDirectory() != null) { option.setAttribute(ATTRIBUTE_VALUE, macroManager.collapsePath(tool.getWorkingDirectory()).replace(File.separatorChar, '/')); } element.addContent(taskElement); FilterInfo[] filters = tool.getOutputFilters(); for (FilterInfo filter : filters) { Element filterElement = new Element(FILTER); filter.writeExternal(filterElement); element.addContent(filterElement); } groupElement.addContent(element); }