private void lstInstances_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstInstances.SelectedItems.Count == 1)
            {
                var             it     = lstInstances.SelectedItems[0];
                ISymbolInstance symRef = (ISymbolInstance)it.Tag;
                _params.Clear();

                ISymbolDefinitionBase sym = GetSymbolDefinition(symRef);

                //Add existing overrides
                foreach (var p in symRef.ParameterOverrides.Override)
                {
                    IParameter pdef  = sym.GetParameter(p.ParameterIdentifier);
                    var        model = new ParameterModel(p, pdef);
                    _params.Add(model);
                }
                //Now add available parameters
                PopulateAvailableParameters(symRef, sym);

                btnSaveExternal.Enabled           = (symRef.Reference.Type == SymbolInstanceType.Inline);
                btnEditInstanceProperties.Enabled = true;
                btnEditComponent.Enabled          = true;
            }
            else
            {
                btnSaveExternal.Enabled           = false;
                btnEditInstanceProperties.Enabled = false;
                btnEditComponent.Enabled          = false;
            }
        }
        private void RenderPreview(ISymbolInstance symInst, ListViewItem item)
        {
            string previewKey = null;

            if (!string.IsNullOrEmpty(item.ImageKey))
            {
                previewKey = item.ImageKey;
            }
            else
            {
                previewKey = Guid.NewGuid().ToString();
            }

            if (imgPreviews.Images.ContainsKey(previewKey))
            {
                Image img = imgPreviews.Images[previewKey];
                imgPreviews.Images.RemoveByKey(previewKey);
                img.Dispose();
            }

            var conn = _edSvc.CurrentConnection;
            ISymbolDefinitionBase previewSymbol = null;
            string resId = "Session:" + conn.SessionID + "//" + Guid.NewGuid().ToString() + ".SymbolDefinition";

            switch (symInst.Reference.Type)
            {
            case SymbolInstanceType.Inline:
                previewSymbol = (ISymbolDefinitionBase)((ISymbolInstanceReferenceInline)symInst.Reference).SymbolDefinition.Clone();
                //Inline symbol definitions will have schema and version stripped. We need to add them back
                previewSymbol.SetSchemaAttributes();
                previewSymbol.ResourceID = resId;
                using (var stream = ApplyOverrides(previewSymbol, symInst.ParameterOverrides))
                {
                    conn.ResourceService.SetResourceXmlData(resId, stream);
                }
                previewSymbol = (ISymbolDefinitionBase)conn.ResourceService.GetResource(resId);
                break;

            case SymbolInstanceType.Reference:
                previewSymbol            = (ISymbolDefinitionBase)conn.ResourceService.GetResource(((ISymbolInstanceReferenceLibrary)symInst.Reference).ResourceId);
                previewSymbol            = (ISymbolDefinitionBase)previewSymbol.Clone();
                previewSymbol.ResourceID = resId;
                using (var stream = ApplyOverrides(previewSymbol, symInst.ParameterOverrides))
                {
                    conn.ResourceService.SetResourceXmlData(resId, stream);
                }
                previewSymbol = (ISymbolDefinitionBase)conn.ResourceService.GetResource(resId);
                break;
            }
            var res = DefaultResourcePreviewer.GenerateSymbolDefinitionPreview(conn, previewSymbol, imgPreviews.ImageSize.Width, imgPreviews.ImageSize.Height);

            imgPreviews.Images.Add(previewKey, res.ImagePreview);
            item.ImageKey = previewKey;
        }
Example #3
0
 /// <summary>
 /// Gets the parameters.
 /// </summary>
 /// <param name="sym">The sym.</param>
 /// <returns></returns>
 public static IEnumerable <IParameter> GetParameters(this ISymbolDefinitionBase sym)
 {
     Check.ArgumentNotNull(sym, nameof(sym));
     if (sym.Type == SymbolDefinitionType.Simple)
     {
         return(((ISimpleSymbolDefinition)sym).GetParameters());
     }
     else
     {
         return(((ICompoundSymbolDefinition)sym).GetParameters());
     }
 }
 private void PopulateParameterList(ISymbolInstance symRef, ISymbolDefinitionBase sym)
 {
     foreach (var p in sym.GetParameters())
     {
         var param = p;
         var btn   = new ToolStripButton(p.DisplayName.Replace("&amp;", "&"), null, (s, e) =>
         {
             AddParameterOverride(symRef, sym, param);
         });
         btn.ToolTipText = p.Description;
         btnAddProperty.DropDown.Items.Insert(0, btn);
     }
     btnAddProperty.DropDown.Items.Add(toolStripSeparator1);
     btnAddProperty.DropDown.Items.Add(refreshToolStripMenuItem);
 }
        private ISymbolDefinitionBase GetSymbolDefinition(ISymbolInstance symRef)
        {
            ISymbolDefinitionBase sym = null;

            if (symRef.Reference.Type == SymbolInstanceType.Reference)
            {
                sym = (ISymbolDefinitionBase)_edSvc.CurrentConnection.ResourceService.GetResource(((ISymbolInstanceReferenceLibrary)symRef.Reference).ResourceId);
            }
            else if (symRef.Reference.Type == SymbolInstanceType.Inline)
            {
                var inline = (ISymbolInstanceReferenceInline)symRef.Reference;
                sym = inline.SymbolDefinition;
            }
            return(sym);
        }
 private static Stream ApplyOverrides(ISymbolDefinitionBase previewSymbol, IParameterOverrideCollection parameterOverrideCollection)
 {
     foreach (var ov in parameterOverrideCollection.Override)
     {
         foreach (var pdef in previewSymbol.GetParameters())
         {
             if (pdef.Name == ov.ParameterIdentifier)
             {
                 pdef.DefaultValue = ov.ParameterValue;
                 break;
             }
         }
     }
     return(ObjectFactory.Serialize(previewSymbol));
 }
        private void AddParameterOverride(ISymbolInstance symRef, ISymbolDefinitionBase sym, IParameter param)
        {
            foreach (var p in _params)
            {
                if (p.Override.ParameterIdentifier == param.Name)
                {
                    MessageBox.Show(Strings.ParameterOverrideExists);
                    return;
                }
            }

            var ov = symRef.ParameterOverrides.CreateParameterOverride(sym.Name, param.Name);

            ov.SymbolName     = sym.Name;
            ov.ParameterValue = param.DefaultValue;

            var model = new ParameterModel(ov, param);

            _params.Add(model);
            symRef.ParameterOverrides.AddOverride(ov);
            _edSvc.HasChanged();
        }
Example #8
0
 public SymbolEditorService(IEditorService edSvc, ISymbolDefinitionBase symDef)
 {
     _inner = edSvc;
     _symDef = symDef;
     this.PreviewLocale = "en"; //NOXLATE
 }
        private void AddParameterOverride(ISymbolDefinitionBase sym, IParameter param)
        {
            foreach (var p in _params)
            {
                if (p.ParameterIdentifier == param.Name)
                {
                    MessageBox.Show(Strings.ParameterOverrideExists);
                    return;
                }
            }

            var ov = _symRef.ParameterOverrides.CreateParameterOverride(sym.Name, param.Name);
            ov.SymbolName = sym.Name;

            _params.Add(ov);
            _symRef.ParameterOverrides.AddOverride(ov);
            this.RaiseDirty();
        }
 private void PopulateParameterList(ISymbolDefinitionBase sym)
 {
     foreach (var p in sym.GetParameters())
     {
         var param = p;
         var btn = new ToolStripButton(p.Name, null, (s, e) =>
         {
             AddParameterOverride(sym, param);
         });
         btnAdd.DropDown.Items.Insert(0, btn);
     }
     btnAdd.DropDown.Items.Add(toolStripSeparator1);
     btnAdd.DropDown.Items.Add(refreshToolStripMenuItem);
 }
Example #11
0
 /// <summary>
 /// Gets the parameter definition for the given identifer
 /// </summary>
 /// <param name="sym"></param>
 /// <param name="identifier"></param>
 /// <returns></returns>
 public static IParameter GetParameter(this ISymbolDefinitionBase sym, string identifier)
 {
     Check.ArgumentNotNull(sym, nameof(sym));
     return(sym.GetParameters().FirstOrDefault(x => x.Identifier == identifier));
 }
 private void PopulateAvailableParameters(ISymbolInstance symRef, ISymbolDefinitionBase symbol)
 {
     btnAddProperty.DropDown.Items.Clear();
     PopulateParameterList(symRef, symbol);
 }
Example #13
0
 public SymbolEditorService(IEditorService edSvc, ISymbolDefinitionBase symDef)
 {
     _inner             = edSvc;
     _symDef            = symDef;
     this.PreviewLocale = "en"; //NOXLATE
 }