private Control CreateSymbolDefinitionEditor(ISymbolInstance symRef) { Check.ArgumentNotNull(symRef, nameof(symRef)); if (symRef.Reference.Type == SymbolInstanceType.Reference) { return(new ReferenceCtrl((ISymbolInstanceReferenceLibrary)symRef.Reference, _edSvc)); } else { var inline = (ISymbolInstanceReferenceInline)symRef.Reference; var symEditor = new SymbolEditorService(_edSvc, inline.SymbolDefinition); if (inline.SymbolDefinition.Type == SymbolDefinitionType.Simple) { var sed = new SimpleSymbolDefinitionEditorCtrl(); sed.Bind(symEditor); return(sed); } else { var sed = new CompoundSymbolDefinitionEditorCtrl(); sed.Bind(symEditor); return(sed); } } }
/// <summary> /// Binds the specified resource to this control. This effectively initializes /// all the fields in this control and sets up databinding on all fields. All /// subclasses *must* override this method. /// /// Also note that this method may be called more than once (e.g. Returning from /// and XML edit of this resource). Thus subclasses must take this scenario into /// account when implementing /// </summary> /// <param name="service">The editor service</param> protected override void Bind(Maestro.Editors.IEditorService service) { panelBody.Controls.Clear(); var ssym = service.GetEditedResource() as ISimpleSymbolDefinition; var csym = service.GetEditedResource() as ICompoundSymbolDefinition; if (ssym != null) { var ssymCtrl = new SimpleSymbolDefinitionEditorCtrl(); ssymCtrl.Dock = DockStyle.Fill; panelBody.Controls.Add(ssymCtrl); ssymCtrl.Bind(service); } else if (csym != null) { var csymCtrl = new CompoundSymbolDefinitionEditorCtrl(); csymCtrl.Dock = DockStyle.Fill; panelBody.Controls.Add(csymCtrl); csymCtrl.Bind(service); } }