#region Copyright and GPL
/*************************************************************************
 * dataMagus - The open source database learning software
 * Copyright (C) 2007 by all authors
 * Authors: Monika Schwitter (monsy@gmx.ch)
 *          Jürg Zgraggen (j.zgraggen@ejaz.net)
 *          HSLU (Hochschule Luzern - Technik+Architektur)
 * 
 *     This program is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 * 
 *     This program is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 * 
 *     You should have received a copy of the GNU General Public License
 *     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *************************************************************************/
#endregion
#region Using
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using dataMagus.Common.Physical.Relational;
#endregion

namespace dataMagus.Common.PlugIn.Generator
{
	/// <summary>
	/// Root interface for physical relational generators.
	/// </summary>
    public interface IRelationalGenerator : IGenerator
    {
        #region Methodes
        /// <summary>
        /// Get the generator control for the extended table data.
        /// </summary>
        /// <param name="element">Element to store the extended data for.</param>
        /// <returns>Instance of a generator control.</returns>
        GeneratorControl GetExtendedTableDataControl(PhysicalRelationalTable element);
        
        /// <summary>
        /// Get the generator control for the extended column data.
        /// </summary>
        /// <param name="element">Element to store the extended data for.</param>
        /// <returns>Instance of a generator control.</returns>
        GeneratorControl GetExtendedColumnDataControl(PhysicalRelationalColumn element);
        
        /// <summary>
        /// Get the generator control for the extended relationship data.
        /// </summary>
        /// <param name="element">Element to store the extended data for.</param>
        /// <returns>Instance of a generator control.</returns>
        GeneratorControl GetExtendedRelationshipDataControl(PhysicalRelationalRelationship element);
        
        /// <summary>
        /// Get the generator control for the extended index data.
        /// </summary>
        /// <param name="element">Element to store the extended data for.</param>
        /// <returns>Instance of a generator control.</returns>
        GeneratorControl GetExtendedIndexDataControl(PhysicalRelationalIndex element);
        #endregion
    }
}
