using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization;
using CategoryTheory;
using DataPerformer;
using DiagramUI.Labels;
using DataPerformer.Interfaces;
namespace Regression
{
[Serializable()]
public class SelectionLink : ICategoryArrow, IRemovableObject, ISerializable
{
#region Fields
private object obj;
private int a = 0;
private IStructuredSelectionConsumer source;
private IStructuredSelectionCollection target;
#endregion
#region Constructors
public SelectionLink()
{
}
/// <summary>
/// Deserialization constructor
/// </summary>
/// <param name="info">Serialization info</param>
/// <param name="context">Streaming context</param>
protected SelectionLink(SerializationInfo info, StreamingContext context)
{
info.GetValue("A", typeof(int));
}
#endregion
#region ICategoryArrow Members
public ICategoryObject Source
{
get
{
return source as ICategoryObject;
}
set
{
if (!(value is IStructuredSelectionConsumer))
{
CategoryException.ThrowIllegalSourceException();
}
source = value as IStructuredSelectionConsumer;
}
}
public ICategoryObject Target
{
get
{
return target as ICategoryObject;
}
set
{
if (!(value is IStructuredSelectionCollection))
{
CategoryException.ThrowIllegalTargetException();
}
ICategoryObject s = source as ICategoryObject;
INamedComponent ns = s.Object as INamedComponent;
INamedComponent nt = value.Object as INamedComponent;
if (nt.Root.Ord >= ns.Root.Ord)
{
throw new Exception(DataLink.SetProviderBefore);
}
target = value as IStructuredSelectionCollection;
source.Add(target);
}
}
public bool IsMonomorphism
{
get
{
return false;
}
}
public bool IsEpimorphism
{
get
{
return false;
}
}
public bool IsIsomorphism
{
get
{
return false;
}
}
public ICategoryArrow Compose(ICategory category, ICategoryArrow next)
{
return null;
}
#endregion
#region IAssociatedObject Members
public object Object
{
get
{
return obj;
}
set
{
obj = value;
}
}
#endregion
#region IRemovableObject Members
public void RemoveObject()
{
source.Remove(target);
}
#endregion
#region ISerializable Members
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("A", a);
}
#endregion
}
}