private void SetListViewItemLabel(ISymbolInstance symRef, ListViewItem li)
        {
            var sym = GetSymbolDefinition(symRef);

            if (symRef.Reference.Type == SymbolInstanceType.Reference)
            {
                ISymbolInstance2 symRef2 = symRef as ISymbolInstance2;
                if (symRef2 != null)
                {
                    li.Text = sym.Name + " (" + symRef2.GeometryContext + " - " + ((ISymbolInstanceReferenceLibrary)symRef.Reference).ResourceId + ")";
                }
                else
                {
                    li.Text = sym.Name + " (" + ((ISymbolInstanceReferenceLibrary)symRef.Reference).ResourceId + ")";
                }
            }
            else
            {
                ISymbolInstance2 symRef2 = symRef as ISymbolInstance2;
                if (symRef2 != null)
                {
                    li.Text = sym.Name + " (" + symRef2.GeometryContext + " - " + Strings.InlineSymbolDefinition + ")";
                }
                else
                {
                    li.Text = sym.Name + " (" + Strings.InlineSymbolDefinition + ")";
                }
            }
        }
        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 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);
         }
     }
 }
 private void viaEditorToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (grdOverrides.SelectedRows.Count == 1 && lstInstances.SelectedItems.Count == 1)
     {
         var             it         = lstInstances.SelectedItems[0];
         ISymbolInstance symRef     = (ISymbolInstance)it.Tag;
         var             ov         = (ParameterModel)grdOverrides.SelectedRows[0].DataBoundItem;
         Func <string>   editAction = GetParameterEditorAction(ov.Type, ov.Value);
         if (editAction != null)
         {
             string expr = editAction();
             if (expr != null)
             {
                 ov.Value = expr;
                 _edSvc.HasChanged();
             }
         }
         else //Fallback to Expression Editor
         {
             string expr = _edSvc.EditExpression(ov.Value, _cls, _provider, _featureSourceId, ExpressionEditorMode.Expression, true);
             if (expr != null)
             {
                 ov.Value = expr;
                 _edSvc.HasChanged();
             }
         }
     }
 }
 private void refreshToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (lstInstances.SelectedItems.Count == 1)
     {
         var             it     = lstInstances.SelectedItems[0];
         ISymbolInstance symRef = (ISymbolInstance)it.Tag;
         PopulateAvailableParameters(symRef, GetSymbolDefinition(symRef));
     }
 }
 private void btnDelete_Click(object sender, EventArgs e)
 {
     if (lstInstances.SelectedItems.Count == 1)
     {
         var             it     = lstInstances.SelectedItems[0];
         ISymbolInstance symRef = (ISymbolInstance)it.Tag;
         _comp.RemoveSymbolInstance(symRef);
         lstInstances.Items.Remove(it);
     }
 }
        public SymbolInstancePropertiesDialog(ISymbolInstance inst, IEditorService edSvc, ClassDefinition cls, string featureSourceId, string providerName)
            : this()
        {
            _edSvc           = edSvc;
            _cls             = cls;
            _featureSourceId = featureSourceId;
            _providerName    = providerName;

            symAddToExclusionRegion.SetBooleanMode();
            symAddToExclusionRegion.Bind(inst, nameof(inst.AddToExclusionRegion));

            symCheckExclusionRegion.SetBooleanMode();
            symCheckExclusionRegion.Bind(inst, nameof(inst.CheckExclusionRegion));

            symDrawLast.SetBooleanMode();
            symDrawLast.Bind(inst, nameof(inst.DrawLast));

            symSizeContext.SetEnumMode <SizeContextType>();
            symSizeContext.Bind(inst, nameof(inst.SizeContext));

            symInsertOffsetX.Bind(inst, nameof(inst.InsertionOffsetX));
            symInsertOffsetY.Bind(inst, nameof(inst.InsertionOffsetY));

            symPositioningAlgorithm.Items = new string[]
            {
                "'Default'",
                "'EightSurrounding'",
                "'PathLabels'"
            };
            symPositioningAlgorithm.Bind(inst, nameof(inst.PositioningAlgorithm));

            symScaleX.Bind(inst, nameof(inst.ScaleX));
            symScaleY.Bind(inst, nameof(inst.ScaleY));

            var inst2 = inst as ISymbolInstance2;

            if (inst2 != null)
            {
                symGeometryContext.SetEnumMode <GeometryContextType>();
                symUsageContext.SetEnumMode <UsageContextType>();

                symRenderingPass.Bind(inst2, nameof(inst2.RenderingPass));
                symGeometryContext.Bind(inst2, nameof(inst2.GeometryContext));
                symUsageContext.Bind(inst2, nameof(inst2.UsageContext));
            }
            else
            {
                symRenderingPass.Visible                    =
                    symGeometryContext.Visible              =
                        symUsageContext.Visible             =
                            lblRenderingPass.Visible        =
                                lblGeometryContext.Visible  =
                                    lblUsageContext.Visible = false;
            }
        }
        public SymbolInstancePropertiesDialog(ISymbolInstance inst, IEditorService edSvc, ClassDefinition cls, string featureSourceId, string providerName)
            : this()
        {
            _edSvc = edSvc;
            _cls = cls;
            _featureSourceId = featureSourceId;
            _providerName = providerName;

            symAddToExclusionRegion.SetBooleanMode();
            symAddToExclusionRegion.Bind(inst, "AddToExclusionRegion");

            symCheckExclusionRegion.SetBooleanMode();
            symCheckExclusionRegion.Bind(inst, "CheckExclusionRegion");

            symDrawLast.SetBooleanMode();
            symDrawLast.Bind(inst, "DrawLast");

            symSizeContext.SetEnumMode<SizeContextType>();
            symSizeContext.Bind(inst, "SizeContext");

            symInsertOffsetX.Bind(inst, "InsertionOffsetX");
            symInsertOffsetY.Bind(inst, "InsertionOffsetY");

            symPositioningAlgorithm.Items = new string[]
            {
                "'Default'",
                "'EightSurrounding'",
                "'PathLabels'"
            };
            symPositioningAlgorithm.Bind(inst, "PositioningAlgorithm");

            symScaleX.Bind(inst, "ScaleX");
            symScaleY.Bind(inst, "ScaleY");

            var inst2 = inst as ISymbolInstance2;
            if (inst2 != null)
            {
                symGeometryContext.SetEnumMode<GeometryContextType>();
                symUsageContext.SetEnumMode<UsageContextType>();

                symRenderingPass.Bind(inst2, "RenderingPass");
                symGeometryContext.Bind(inst2, "GeometryContext");
                symUsageContext.Bind(inst2, "UsageContext");
            }
            else
            {
                symRenderingPass.Visible =
                symGeometryContext.Visible =
                symUsageContext.Visible =
                lblRenderingPass.Visible =
                lblGeometryContext.Visible =
                lblUsageContext.Visible = 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;
        }
 private void btnDeleteProperty_Click(object sender, EventArgs e)
 {
     if (grdOverrides.SelectedRows.Count == 1 && lstInstances.SelectedItems.Count == 1)
     {
         var             it     = lstInstances.SelectedItems[0];
         ISymbolInstance symRef = (ISymbolInstance)it.Tag;
         var             ov     = (ParameterModel)grdOverrides.SelectedRows[0].DataBoundItem;
         _params.Remove(ov);
         symRef.ParameterOverrides.RemoveOverride(ov.Override);
         _edSvc.HasChanged();
     }
 }
        private void btnEditInstanceProperties_Click(object sender, EventArgs e)
        {
            if (lstInstances.SelectedItems.Count == 1)
            {
                var             it     = lstInstances.SelectedItems[0];
                ISymbolInstance symRef = (ISymbolInstance)it.Tag;

                using (var diag = new SymbolInstancePropertiesDialog(symRef, _edSvc, _cls, _featureSourceId, _provider))
                {
                    diag.ShowDialog();
                    SetListViewItemLabel(symRef, it);
                }
            }
        }
        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 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 void btnDown_Click(object sender, EventArgs e)
 {
     if (lstInstances.SelectedItems.Count == 1)
     {
         var             it     = lstInstances.SelectedItems[0];
         var             oldIdx = lstInstances.Items.IndexOf(it);
         ISymbolInstance symRef = (ISymbolInstance)it.Tag;
         int             idx    = _comp.MoveSymbolInstanceDown(symRef);
         if (idx <= _comp.SymbolInstance.Count() - 1 && idx >= 0)
         {
             var item = lstInstances.Items[idx];
             lstInstances.Items.RemoveAt(idx);
             lstInstances.Items.RemoveAt(oldIdx);
             lstInstances.Items.Insert(oldIdx, item);
             lstInstances.Items.Insert(idx, it);
         }
     }
 }
        private void AddInstance(ISymbolInstance symRef, bool add)
        {
            var li = new ListViewItem();

            li.Tag = symRef;

            SetListViewItemLabel(symRef, li);

            lstInstances.Items.Add(li);
            btnUp.Enabled = btnDown.Enabled = (lstInstances.Items.Count > 1);

            if (add)
            {
                _comp.AddSymbolInstance(symRef);
            }
            li.Selected = (lstInstances.Items.Count == 1);
            RenderPreview(symRef, li);
        }
        private void btnEditComponent_Click(object sender, EventArgs e)
        {
            var             it     = lstInstances.SelectedItems[0];
            ISymbolInstance symRef = (ISymbolInstance)it.Tag;
            var             c      = CreateSymbolDefinitionEditor(symRef);

            c.Dock = DockStyle.Fill;
            using (var ed = new EditorTemplateForm())
            {
                ed.Text = Strings.EditSymbolDefinition;
                ed.ItemPanel.Controls.Add(c);
                ed.ManualSizeManagement = true;
                ed.Width  = 800;
                ed.Height = 600;
                if (ed.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    _edSvc.HasChanged();
                }
            }
        }
예제 #17
0
        public void SetContent(ISymbolInstance symRef, IEditorService edSvc, ClassDefinition cls, string provider, string featureSourceId)
        {
            _symRef = symRef;
            _edSvc = edSvc;

            _cls = cls;
            _provider = provider;
            _featureSourceId = featureSourceId;

            _params.Clear();
            //Add existing overrides
            foreach (var p in symRef.ParameterOverrides.Override)
            {
                _params.Add(p);
            }
            //Now add available parameters
            PopulateAvailableParameters();
            grpSettings.Controls.Clear();
            Control c = CreateEditor(symRef, edSvc.ResourceService);
            c.Dock = DockStyle.Fill;
            grpSettings.Controls.Add(c);
        }
        private void btnSaveExternal_Click(object sender, EventArgs e)
        {
            if (lstInstances.SelectedItems.Count == 1)
            {
                var             it     = lstInstances.SelectedItems[0];
                ISymbolInstance symRef = (ISymbolInstance)it.Tag;

                if (symRef.Reference.Type == SymbolInstanceType.Inline)
                {
                    var sym = ((ISymbolInstanceReferenceInline)symRef.Reference).SymbolDefinition;
                    using (var picker = new ResourcePicker(_edSvc.CurrentConnection, ResourceTypes.SymbolDefinition.ToString(), ResourcePickerMode.SaveResource))
                    {
                        if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            sym.SetSchemaAttributes();
                            _edSvc.CurrentConnection.ResourceService.SaveResourceAs(sym, picker.ResourceID);
                            MessageBox.Show(string.Format(Maestro.Editors.Strings.SymbolExported, picker.ResourceID));
                        }
                    }
                }
            }
        }
        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();
        }
예제 #20
0
        private void AddInstance(ISymbolInstance symRef, bool add)
        {
            var li = new ListViewItem();
            li.ImageIndex = (symRef.Reference.Type == SymbolInstanceType.Reference) ? 0 : 1;
            li.Tag = symRef;
            if (li.ImageIndex == 0)
                li.Text = ((ISymbolInstanceReferenceLibrary)symRef.Reference).ResourceId;
            else
                li.Text = Strings.InlineSymbolDefinition;

            lstInstances.Items.Add(li);
            if (add)
                _comp.AddSymbolInstance(symRef);
            li.Selected = (lstInstances.Items.Count == 1);
        }
예제 #21
0
 private Control CreateEditor(ISymbolInstance symRef, IResourceService resSvc)
 {
     Check.NotNull(symRef, "symRef"); //NOXLATE
     if (symRef.Reference.Type == SymbolInstanceType.Reference)
     {
         return new ReferenceCtrl((ISymbolInstanceReferenceLibrary)symRef.Reference, resSvc);
     }
     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;
         }
     }
 }
 private void PopulateAvailableParameters(ISymbolInstance symRef, ISymbolDefinitionBase symbol)
 {
     btnAddProperty.DropDown.Items.Clear();
     PopulateParameterList(symRef, symbol);
 }