private void lvCapabilities_DragDrop(object sender, DragEventArgs de)
{
if (de.Data.GetDataPresent(DataFormats.Text))
{
TSFType tsf = TSFType.Deserialize((string) de.Data.GetData(DataFormats.Text));
var capability = new Capability();
capability.name = tsf.name;
object item = tsf.model.Item;
if (item is Signal)
{
var signal = (Signal) item;
XmlElement elm = XmlUtils.Object2XmlElement(item);
capability.SignalDescription = new Extension();
if (capability.SignalDescription.Any == null)
capability.SignalDescription.Any = new List<XmlElement>();
capability.SignalDescription.Any.Add(elm);
capability.Interface = new Interface();
if (signal.In != null)
{
String[] ins = signal.In.Split(' ');
foreach (String i in ins)
{
var p = new Port();
p.name = i;
p.direction = PortDirection.Input;
p.directionSpecified = true;
capability.Interface.Ports.Add(p);
}
}
if (signal.Out != null)
{
String[] outs = signal.Out.Split(' ');
foreach (String o in outs)
{
var p = new Port();
p.name = o;
p.direction = PortDirection.Output;
p.directionSpecified = true;
if (capability.Interface.Ports == null)
capability.Interface.Ports = new List<Port>();
capability.Interface.Ports.Add(p);
}
}
var form = new CapabilityForm(_instrumentDescription);
form.Capability = capability;
if (DialogResult.OK == form.ShowDialog())
{
String reference = EMPTYCHAR;
String uuid = EMPTYCHAR;
capability = form.Capability;
_capabilityItems.Add(capability);
var lvi = new ListViewItem(reference);
lvi.SubItems.Add(capability.name);
lvi.SubItems.Add(uuid);
lvi.Tag = capability;
Items.Add(lvi);
}
}
}
}