/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 * 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:
 *         Florian Pirchner - Initial implementation
 */
package org.eclipse.osbp.vaaclipse.ui.preferences.model.validation;

import org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesCategory;

/**
 * A sample validator interface for
 * {@link org.eclipse.osbp.vaaclipse.ui.preferences.model.PreferencesPage}. This
 * doesn't really do anything, and it's not a real EMF artifact. It was
 * generated by the org.eclipse.emf.examples.generator.validator plug-in to
 * illustrate how EMF's code generator can be extended. This can be disabled
 * with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.
 */
public interface PreferencesPageValidator {
	boolean validate();

	boolean validateCategory(PreferencesCategory value);

	boolean validateDescription(String value);
}
