private void ApplyMetaData(PropertyFlowList propList) { foreach (ListMetaData md in mMetadata) { propList.AddMetaDataForProp(md.a1, md.a2, md.a3, md.o1); } foreach (TypeBind tb in mTypeBind) { propList.SetTypeEditor(tb.a1, tb.a2, tb.t1); } }
override public DragDropEffects ValidateDragTarget(Control toMove, Control target, DragEventArgs e) { PropertyFlowList ctrlMove = toMove.Tag as PropertyFlowList; PropertyFlowList ctrlTarget = target.Tag as PropertyFlowList; ContainerList targetList = target as ContainerList; DynamicContainerList basidtargetList = target as DynamicContainerList; //to empty list //Also a basic typed super list. Types must match if (basidtargetList != null && ctrlMove != null) { if (basidtargetList.mListDataObjectType == ctrlMove.SelectedObject.GetType()) { //if()) return(DragDropEffects.Move); } } //What to do if it is just another super list? //if (targetList != null && toMove != null) //{ // SuperListDragButton button = toMove as SuperListDragButton; // if (targetList.GetType() == button.GetParentList().GetType()) // { // return DragDropEffects.Move; // } //} if (ctrlMove == null || ctrlTarget == null) { return(DragDropEffects.None); } if ((e.KeyState & 8) == 8 && (e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) { //return DragDropEffects.Copy; } else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) { if (ctrlMove == ctrlTarget) { //we return move here because it makes the animation look better return(DragDropEffects.Move); } if (ctrlMove.SelectedObject.GetType() == ctrlTarget.SelectedObject.GetType()) { return(DragDropEffects.Move); } } return(DragDropEffects.None); }
public override void OnDelete(ContainerListDragButton button) { PropertyFlowList flow = button.Tag as PropertyFlowList; object toDelete = flow.SelectedObject; mObjectList.Remove(toDelete); base.OnDelete(button); //ObjectDeleted if (ObjectDeleted != null) { ObjectDeleted.Invoke(flow, toDelete); } }
private ObjectEditorControl AddPropertyControl(object o) { PropertyFlowList flow = new PropertyFlowList(); flow.WrapContents = mbWrapcontents; flow.mbUseLabels = mbUseLabels; ApplyMetaData(flow); //flow.Tag = this; flow.SelectedObject = o; flow.SelectedObjectPropertyChanged += new ObjectEditorControl.PropertyChanged(flow_SelectedObjectPropertyChanged); flow.AnyPropertyChanged += new ObjectEditorControl.PropertyChanged(flow_AnyObjectPropertyChanged); this.AddRow(flow); flow.Dock = DockStyle.Fill; mListDataObjectType = o.GetType(); return(flow); }
override public void HandleDrop(DragEventArgs e, ContainerListDragButton otherButton, ContainerListDragButton thisButton) { PropertyFlowList ctrlMove = otherButton.Tag as PropertyFlowList; PropertyFlowList ctrlTarget = thisButton.Tag as PropertyFlowList; if (e.Effect == DragDropEffects.Move) { //if (ctrlMove.SelectedObject == ctrlTarget.SelectedObject) if (ctrlMove.Parent == ctrlTarget.Parent) { this.OnReOrderRequest(otherButton, thisButton); } else if (ctrlMove.SelectedObject.GetType() == ctrlTarget.SelectedObject.GetType()) { ContainerList senderParent = otherButton.GetParentList(); senderParent.OnTransferRequest(this, otherButton); //return DragDropEffects.Move; } } }