using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;

namespace SQLite.Designer.Design
{
  [TypeConverter(typeof(ExpandableObjectConverter))]
  internal class PrimaryKey
  {
    private bool _primaryKey;
    private bool _autoIncrement;
    private IndexDirection _direction;
    private ConflictEnum _conflict;
    Column _column;

    internal PrimaryKey(Column col)
    {
      _column = col;
    }

    [RefreshProperties(RefreshProperties.All)]
    [DefaultValue(false)]
    public bool Enabled
    {
      get { return _primaryKey; }
      set
      {
        _primaryKey = value;

        if (_primaryKey == false)
          AutoIncrement = false;

        _column.RefreshGrid();
      }
    }

    [RefreshProperties(RefreshProperties.All)]
    [DefaultValue(false)]
    [DisplayName("Auto Increment")]
    public bool AutoIncrement
    {
      get { return _autoIncrement; }
      set
      {
        if (_primaryKey == false && value == true)
          Enabled = true;

        _autoIncrement = value;
      }
    }

    [DefaultValue(ConflictEnum.Abort)]
    [DisplayName("On Conflict")]
    public ConflictEnum Conflict
    {
      get { return _conflict; }
      set { _conflict = value; }
    }

    [DefaultValue(IndexDirection.Ascending)]
    [DisplayName("Sort Mode")]
    public IndexDirection SortMode
    {
      get { return _direction; }
      set { _direction = value; }
    }

    public override string ToString()
    {
      return Enabled.ToString();
    }
  }

  internal enum IndexDirection
  {
    Ascending = 0,
    Descending = 1,
  }
}
