/******************************************************************************* * Copyright (c) 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.internal.ui.wizards.settingswizards; import org.eclipse.swt.graphics.Image; import org.w3c.dom.Element; import org.xml.sax.ContentHandler; import org.eclipse.cdt.core.settings.model.ICFolderDescription; /** * The exported XML file is divided into 'section' elements, each * ISettingsProcessor is responsible for reading and writing * a particular section. * * A section can contain anything, for example include paths or macros. * No schema is defined for the XML file, that way additional settings * processors can be easily added. In the future there may be an extension * point for adding settings processors. * * * @author Mike Kucera * @since 5.1 */ public interface ISettingsProcessor { /** * Return the string that will appear in the selection list * on the wizard page. */ String getDisplayName(); /** * Return the image that will appear in the selection list * on the wizard page. */ Image getIcon(); /** * The name of the section in the XML file. * * This String should be unique, so prefix it with the package * name or something. */ String getSectionName(); /** * Outputs a section of the XML file using the given SAX ContentHandler. * * @param projectRoot The folder description for the selected project and configuration * @throws SettingsImportExportException if the section could not be written */ void writeSectionXML(ICFolderDescription projectRoot, ContentHandler content) throws SettingsImportExportException; /** * Passed part of the DOM tree that represents the section * that is processed by this importer. * * @param projectRoot The folder description for the selected project and configuration * @throws SettingsImportExportException if the section could not be read and imported */ void readSectionXML(ICFolderDescription projectRoot, Element section) throws SettingsImportExportException; }