public GroupPropertiesCtrl(IMapDefinition map, IBaseMapGroup group)
            : this()
        {
            _init = true;
            try
            {
                _mdf = map;
                _el  = group;
                group.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnGroupChanged, (eh) => group.PropertyChanged -= eh);

                txtName.Text = group.Name;
                TextBoxBinder.BindText(txtLegendLabel, group, nameof(group.LegendLabel));
            }
            finally
            {
                _init = false;
            }
        }
Example #2
0
        public ExtendedClassSettings(IFeatureSource fs, IEnumerable <string> qualifiedClassNames, IFeatureSourceExtension ext)
            : this()
        {
            _fs  = fs;
            _ext = ext;
            var names = new List <string>(qualifiedClassNames);

            cmbBaseClass.DataSource = names;
            ext.PropertyChanged    += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnExtensionPropertyChanged, (eh) => ext.PropertyChanged -= eh);

            //HACK
            if (string.IsNullOrEmpty(_ext.FeatureClass))
            {
                _ext.FeatureClass = names[0];
            }

            ComboBoxBinder.BindSelectedIndexChanged(cmbBaseClass, nameof(cmbBaseClass.SelectedItem), ext, nameof(ext.FeatureClass));
        }
Example #3
0
        internal void Bind(ISearchCommand searchCommandType, IEditorService service)
        {
            cmbTargetFrame.DataSource = Enum.GetValues(typeof(TargetType));
            _init = true;
            Bind(service);
            _cmd = searchCommandType;

            _wl = (IWebLayout)_edsvc.GetEditedResource();
            var wlMap = _wl.Map;

            wlMap.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebMapLayoutPropertyChanged, (eh) => wlMap.PropertyChanged -= eh);

            LoadLayers();

            if (!string.IsNullOrEmpty(_cmd.Layer))
            {
                foreach (var lyr in _layers)
                {
                    if (lyr.Name == _cmd.Layer)
                    {
                        txtLayer.Text = _cmd.Layer;
                        txtLayer.Tag  = lyr.ResourceId;
                    }
                }
            }

            TextBoxBinder.BindText(txtFrame, _cmd, nameof(_cmd.TargetFrame));
            ComboBoxBinder.BindSelectedIndexChanged(cmbTargetFrame, nameof(cmbTargetFrame.SelectedItem), _cmd, nameof(_cmd.Target));
            TextBoxBinder.BindText(txtLayer, _cmd, nameof(_cmd.Layer));
            TextBoxBinder.BindText(txtFilter, _cmd, nameof(_cmd.Filter));
            TextBoxBinder.BindText(txtPrompt, _cmd, nameof(_cmd.Prompt));

            NumericBinder.BindValueChanged(numLimit, _cmd, nameof(_cmd.MatchLimit));

            UpdateColumns();
            foreach (var col in _cmd.ResultColumns.Column)
            {
                _columns.Add(col);
            }
            grdOutputColumns.DataSource = _columns;
            _columns.AddingNew         += OnAddingNewColumn;
            _columns.ListChanged       += OnColumnsChanged;
        }
Example #4
0
        private void btnNewCalculation_Click(object sender, EventArgs e)
        {
            if (_edSvc.IsNew)
            {
                MessageBox.Show(Strings.SaveResourceFirst);
                return;
            }

            var node = trvExtensions.SelectedNode;

            if (node != null)
            {
                var ext = node.Tag as IFeatureSourceExtension;
                if (ext != null)
                {
                    var calc  = ObjectFactory.CreateCalculatedProperty();
                    var cNode = new TreeNode();
                    cNode.ImageIndex = cNode.SelectedImageIndex = IDX_CALC;
                    cNode.Tag        = calc;
                    PropertyChangedEventHandler calcChange = (s, evt) =>
                    {
                        if (evt.PropertyName == nameof(calc.Name))
                        {
                            cNode.Text = calc.Name;
                        }
                        else if (evt.PropertyName == nameof(calc.Expression))
                        {
                            cNode.ToolTipText = calc.Expression;
                        }
                    };
                    calc.PropertyChanged += WeakEventHandler.Wrap(calcChange, (eh) => calc.PropertyChanged -= eh);

                    node.Nodes.Add(cNode);
                    node.Expand();

                    ext.AddCalculatedProperty(calc);
                    OnResourceChanged();

                    trvExtensions.SelectedNode = cNode;
                }
            }
        }
        private void OnAddCustomCommand(object sender, EventArgs e)
        {
            var tsi = sender as ToolStripItem;

            if (tsi != null && tsi.Tag != null)
            {
                var cmd = (ICommand)tsi.Tag;

                var ci = _wl.CreateCommandItem(cmd.Name);
                //Reg property listener
                PropertyChangedEventHandler handler = (s, evt) =>
                {
                    if (evt.PropertyName == "Name")
                    {
                        ci.Command = cmd.Name;
                        trvMenuItems.Refresh();
                    }
                };
                cmd.PropertyChanged += WeakEventHandler.Wrap(handler, (eh) => cmd.PropertyChanged -= eh);

                if (trvMenuItems.SelectedNode != null)
                {
                    var fly = trvMenuItems.SelectedNode.Tag as FlyoutItem;
                    if (fly != null)
                    {
                        fly.Tag.AddItem(ci);
                    }
                    else
                    {
                        _rootMenu.AddItem(ci);
                    }
                }
                else
                {
                    _rootMenu.AddItem(ci);
                }
                RefreshModel();
            }
        }
Example #6
0
        private void btnNewJoin_Click(object sender, EventArgs e)
        {
            if (_edSvc.IsNew)
            {
                MessageBox.Show(Strings.SaveResourceFirst);
                return;
            }

            var node = trvExtensions.SelectedNode;

            if (node != null)
            {
                var ext = node.Tag as IFeatureSourceExtension;
                if (ext != null)
                {
                    var join  = ObjectFactory.CreateAttributeRelation();
                    var jNode = new TreeNode();
                    jNode.Tag        = join;
                    jNode.ImageIndex = jNode.SelectedImageIndex = IDX_JOIN;
                    PropertyChangedEventHandler joinChange = (s, evt) =>
                    {
                        if (evt.PropertyName == nameof(join.Name))
                        {
                            jNode.Text = join.Name;
                        }
                    };
                    join.PropertyChanged += WeakEventHandler.Wrap(joinChange, (eh) => join.PropertyChanged -= eh);

                    node.Nodes.Add(jNode);
                    node.Expand();

                    ext.AddRelation(join);
                    OnResourceChanged();

                    trvExtensions.SelectedNode = jNode;
                }
            }
        }
        /// <summary>
        /// Internal use only. Do not invoke directly. Use <see cref="ViewContentManager"/> for that
        /// </summary>
        public SiteExplorer()
        {
            InitializeComponent();
            Application.Idle          += new EventHandler(OnIdle);
            ndResource.ToolTipProvider = new RepositoryItemToolTipProvider();
            ndResource.DrawText       += WeakEventHandler.Wrap <EventHandler <Aga.Controls.Tree.NodeControls.DrawEventArgs> >(OnNodeDrawText, (eh) => ndResource.DrawText -= eh);

            var ts = ToolbarService.CreateToolStripItems("/Maestro/Shell/SiteExplorer/Toolbar", this, true); //NOXLATE

            tsSiteExplorer.Items.AddRange(ts);

            _connManager = ServiceRegistry.GetService <ServerConnectionManager>();

            var omgr = ServiceRegistry.GetService <OpenResourceManager>();
            var clip = ServiceRegistry.GetService <ClipboardService>();

            _model             = new RepositoryTreeModel(_connManager, trvResources, omgr, clip);
            trvResources.Model = _model;

            Workbench wb = Workbench.Instance;

            wb.ActiveDocumentChanged += WeakEventHandler.Wrap(OnActiveDocumentChanged, (eh) => wb.ActiveDocumentChanged -= eh);
        }
        internal void Bind(IInvokeUrlCommand invokeUrlCommandType, IEditorService service)
        {
            cmbTargetFrame.DataSource = Enum.GetValues(typeof(TargetType));
            Bind(service);
            service.RegisterCustomNotifier(this);

            TextBoxBinder.BindText(txtUrl, invokeUrlCommandType, nameof(invokeUrlCommandType.URL));
            TextBoxBinder.BindText(txtFrame, invokeUrlCommandType, nameof(invokeUrlCommandType.TargetFrame));
            ComboBoxBinder.BindSelectedIndexChanged(cmbTargetFrame, nameof(cmbTargetFrame.SelectedItem), invokeUrlCommandType, nameof(invokeUrlCommandType.Target));
            CheckBoxBinder.BindChecked(chkDisableIfEmpty, invokeUrlCommandType, nameof(invokeUrlCommandType.DisableIfSelectionEmpty));

            foreach (var p in invokeUrlCommandType.AdditionalParameter)
            {
                _params.Add(p);
            }
            grdParameters.DataSource = _params;
            _params.ListChanged     += OnParamsListChanged;
            _params.AddingNew       += OnAddingNew;
            lstLayers.DataSource     = invokeUrlCommandType.LayerSet.Layer;

            invokeUrlCommandType.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnCommandPropertyChanged, (eh) => invokeUrlCommandType.PropertyChanged -= eh);
            _cmd = invokeUrlCommandType;
        }
        private void AddWidgetItem(IWidget widget)
        {
            var item = new WidgetItem()
            {
                Name       = widget.Name,
                Type       = widget.Type,
                Widget     = widget,
                IsDockable = true
            };

            item.IsDockable = _context.IsWidgetDockable(widget.Type);

            PropertyChangedEventHandler widgetChange = (s, e) =>
            {
                if (e.PropertyName == nameof(widget.Name))
                {
                    item.Name = widget.Name;
                }
            };

            widget.PropertyChanged += WeakEventHandler.Wrap(widgetChange, (eh) => widget.PropertyChanged -= eh);

            _items.Add(item);
        }
Example #10
0
 public BaseLayerItem(IBaseMapLayer layer, IBaseMapGroup parent)
     : base(layer.Name, Properties.Resources.layer, layer)
 {
     layer.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnPropertyChanged, (eh) => layer.PropertyChanged -= eh);
     this.Parent            = parent;
 }
Example #11
0
 public GroupItem(IMapLayerGroup grp)
     : base(grp.Name, Properties.Resources.folder_horizontal, grp)
 {
     grp.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnPropertyChanged, (eh) => grp.PropertyChanged -= eh);
 }
Example #12
0
 public LayerItem(IMapLayer layer)
     : base(layer.Name, Properties.Resources.layer, layer)
 {
     layer.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnPropertyChanged, (eh) => layer.PropertyChanged -= eh);
 }
        public void Bind(IEditorService service)
        {
            _service = service;
            _service.RegisterCustomNotifier(this);

            var lyr = service.GetEditedResource() as ILayerDefinition;

            Debug.Assert(lyr != null);

            _dlayer = lyr.SubLayer as IDrawingLayerDefinition;
            Debug.Assert(_dlayer != null);

            TextBoxBinder.BindText(txtDrawingSource, _dlayer, nameof(_dlayer.ResourceId));
            cmbSheet.DisplayMember = "Title"; //NOXLATE
            cmbSheet.ValueMember   = "Name";  //NOXLATE
            cmbSheet.DataSource    = _sheets;
            PopulateSheets();
            cmbSheet_SelectedIndexChanged(this, EventArgs.Empty);
            ComboBoxBinder.BindSelectedIndexChanged(cmbSheet, nameof(cmbSheet.SelectedValue), _dlayer, nameof(_dlayer.Sheet));

            var minBinding = new Binding(nameof(txtMinScale.Text), _dlayer, nameof(_dlayer.MinScale));
            var maxBinding = new Binding(nameof(txtMaxScale.Text), _dlayer, nameof(_dlayer.MaxScale));

            minBinding.Format += (sender, ce) =>
            {
                if (ce.DesiredType != typeof(string))
                {
                    return;
                }

                ce.Value = Convert.ToDouble(ce.Value);
            };
            minBinding.Parse += (sender, ce) =>
            {
                if (ce.DesiredType != typeof(double))
                {
                    return;
                }
                double val;
                if (!double.TryParse(ce.Value.ToString(), out val))
                {
                    return;
                }

                ce.Value = val;
            };
            maxBinding.Format += (sender, ce) =>
            {
                if (ce.DesiredType != typeof(string))
                {
                    return;
                }

                ce.Value = Convert.ToDouble(ce.Value);
            };
            maxBinding.Parse += (sender, ce) =>
            {
                if (ce.DesiredType != typeof(double))
                {
                    return;
                }
                double val;
                if (!double.TryParse(ce.Value.ToString(), out val))
                {
                    return;
                }

                ce.Value = val;
            };

            TextBoxBinder.BindText(txtMinScale, minBinding);
            TextBoxBinder.BindText(txtMaxScale, maxBinding);

            //This is not the root object so no change listeners have been subscribed
            _dlayer.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnDrawingLayerPropertyChanged, (eh) => _dlayer.PropertyChanged -= eh);
        }
        public override void Bind(IEditorService service)
        {
            try
            {
                _init  = true;
                _edsvc = service;
                _edsvc.RegisterCustomNotifier(this);

                var res = service.GetEditedResource() as ILayerDefinition;
                Debug.Assert(res != null);

                _vl = res.SubLayer as IVectorLayerDefinition;
                Debug.Assert(_vl != null);

                txtFeatureClass.Text = _vl.FeatureName;
                txtGeometry.Text     = _vl.Geometry;
                ResetErrorState();

                if (string.IsNullOrEmpty(txtFeatureClass.Text) || string.IsNullOrEmpty(txtGeometry.Text))
                {
                    TryFillUIFromNewFeatureSource(_vl.ResourceId);
                    if (!_edsvc.CurrentConnection.ResourceService.ResourceExists(_vl.ResourceId))
                    {
                        errorProvider.SetError(txtFeatureSource, Strings.LayerEditorFeatureSourceNotFound);
                        MessageBox.Show(Strings.LayerEditorHasErrors);
                    }
                }
                else
                {
                    bool bShowErrorMessage = false;
                    txtFeatureSource.Text = _vl.ResourceId;
                    string featureClass = txtFeatureClass.Text;
                    string geometry     = txtGeometry.Text;
                    BusyWaitDialog.Run(null, () =>
                    {
                        var errors = new List <string>();
                        if (!_edsvc.CurrentConnection.ResourceService.ResourceExists(_vl.ResourceId))
                        {
                            errors.Add(Strings.LayerEditorFeatureSourceNotFound);
                        }
                        if (!string.IsNullOrEmpty(featureClass))
                        {
                            ClassDefinition clsDef = null;
                            try
                            {
                                clsDef = _edsvc.CurrentConnection.FeatureService.GetClassDefinition(_vl.ResourceId, featureClass);
                            }
                            catch
                            {
                                errors.Add(Strings.LayerEditorFeatureClassNotFound);
                                //These property mappings will probably be bunk if this is the case, so clear them
                                _vl.ClearPropertyMappings();
                            }

                            if (clsDef != null)
                            {
                                GeometricPropertyDefinition geom = clsDef.FindProperty(geometry) as GeometricPropertyDefinition;
                                if (geom == null)
                                {
                                    errors.Add(Strings.LayerEditorGeometryNotFound);
                                }
                            }
                            else
                            {
                                //This is probably true
                                errors.Add(Strings.LayerEditorGeometryNotFound);
                            }
                        }
                        return(errors);
                    }, (result, ex) =>
                    {
                        if (ex != null)
                        {
                            ErrorDialog.Show(ex);
                        }
                        else
                        {
                            var list = (List <string>)result;
                            foreach (var err in list)
                            {
                                if (err == Strings.LayerEditorGeometryNotFound)
                                {
                                    errorProvider.SetError(txtGeometry, err);
                                    bShowErrorMessage = true;
                                }
                                else if (err == Strings.LayerEditorFeatureSourceNotFound)
                                {
                                    errorProvider.SetError(txtFeatureSource, err);
                                    //Don't show error message here if this is the only error as the user
                                    //will get a repair feature source prompt down the road
                                }
                                else if (err == Strings.LayerEditorFeatureClassNotFound)
                                {
                                    errorProvider.SetError(txtFeatureClass, err);
                                    bShowErrorMessage = true;
                                }
                            }
                            if (bShowErrorMessage)
                            {
                                MessageBox.Show(Strings.LayerEditorHasErrors);
                            }
                        }
                    });
                }

                txtFilter.Text = _vl.Filter;

                //Loose bind this one because 2.4 changes this behaviour making it
                //unsuitable for databinding via TextBoxBinder
                txtHyperlink.Text = _vl.Url;

                txtTooltip.Text = _vl.ToolTip;

                //This is not the root object so no change listeners have been subscribed
                _vl.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnVectorLayerPropertyChanged, (eh) => _vl.PropertyChanged -= eh);
            }
            finally
            {
                _init = false;
            }
        }
Example #15
0
        public override void Bind(IEditorService service)
        {
            service.RegisterCustomNotifier(this);
            _edSvc        = service;
            _edSvc.Saved += OnResourceSaved;
            _fs           = (IFeatureSource)_edSvc.GetEditedResource();

            //Build tree
            if (_fs.Extension != null)
            {
                foreach (var ext in _fs.Extension)
                {
                    TreeNode node = new TreeNode();
                    node.Tag        = ext;
                    node.ImageIndex = node.SelectedImageIndex = IDX_EXTENSION;

                    node.Text        = ext.Name;
                    node.ToolTipText = string.Format(Strings.ExtendedClassTooltip, ext.FeatureClass);

                    PropertyChangedEventHandler extPropChange = (s, evt) =>
                    {
                        if (evt.PropertyName == nameof(ext.Name))
                        {
                            node.Text = ext.Name;
                        }
                        else if (evt.PropertyName == nameof(ext.FeatureClass))
                        {
                            node.ToolTipText = string.Format(Strings.ExtendedClassTooltip, ext.FeatureClass);
                        }
                    };
                    ext.PropertyChanged += WeakEventHandler.Wrap(extPropChange, (eh) => ext.PropertyChanged -= eh);

                    trvExtensions.Nodes.Add(node);

                    if (ext.CalculatedProperty != null)
                    {
                        foreach (var calc in ext.CalculatedProperty)
                        {
                            var cNode = new TreeNode();
                            cNode.ImageIndex = cNode.SelectedImageIndex = IDX_CALC;
                            cNode.Tag        = calc;

                            cNode.Text        = calc.Name;
                            cNode.ToolTipText = calc.Expression;

                            PropertyChangedEventHandler calcChange = (s, evt) =>
                            {
                                if (evt.PropertyName == nameof(calc.Name))
                                {
                                    cNode.Text = calc.Name;
                                }
                                else if (evt.PropertyName == nameof(calc.Expression))
                                {
                                    cNode.ToolTipText = calc.Expression;
                                }
                            };
                            calc.PropertyChanged += WeakEventHandler.Wrap(calcChange, (eh) => calc.PropertyChanged -= eh);

                            node.Nodes.Add(cNode);
                        }
                    }
                    if (ext.AttributeRelate != null)
                    {
                        foreach (var join in ext.AttributeRelate)
                        {
                            var jNode = new TreeNode();
                            jNode.Tag        = join;
                            jNode.ImageIndex = jNode.SelectedImageIndex = IDX_JOIN;

                            jNode.Text = join.Name;

                            PropertyChangedEventHandler joinChange = (s, evt) =>
                            {
                                if (evt.PropertyName == nameof(join.Name))
                                {
                                    jNode.Text = join.Name;
                                }
                            };
                            join.PropertyChanged += WeakEventHandler.Wrap(joinChange, (eh) => join.PropertyChanged -= eh);

                            node.Nodes.Add(jNode);
                        }
                    }
                    node.ExpandAll();
                }
            }
        }
Example #16
0
        public override void Bind(IEditorService service)
        {
            _edsvc = service;
            _edsvc.RegisterCustomNotifier(this);
            _edsvc.Saved += OnSaved;

            _wl = (IWebLayout)_edsvc.GetEditedResource();
            GeneratePreviewUrl();

            _view = _wl.Map.InitialView;
            if (_view == null)
            {
                _view = _wl.CreateDefaultView();
                chkCustomView.Checked = false;
            }
            else
            {
                chkCustomView.Checked = true;
            }
            CheckInitialView();

            var wl2 = _wl as IWebLayout2;

            if (wl2 != null)
            {
                CheckBoxBinder.BindChecked(chkPingServer, wl2, nameof(wl2.EnablePingServer));
            }
            else
            {
                chkPingServer.Visible = false;
            }

            TextBoxBinder.BindText(numX, _view, nameof(_view.CenterX));
            TextBoxBinder.BindText(numY, _view, nameof(_view.CenterY));
            TextBoxBinder.BindText(numScale, _view, nameof(_view.Scale));

            TextBoxBinder.BindText(txtBrowserTitle, _wl, nameof(_wl.Title));
            TextBoxBinder.BindText(txtMapDefinition, _wl.Map, nameof(_wl.Map.ResourceId));
            TextBoxBinder.BindText(txtInitialTaskPaneUrl, _wl.TaskPane, nameof(_wl.TaskPane.InitialTask));

            CheckBoxBinder.BindChecked(chkContextMenu, _wl.ContextMenu, nameof(_wl.ContextMenu.Visible));
            CheckBoxBinder.BindChecked(chkLegend, _wl.InformationPane, nameof(_wl.InformationPane.LegendVisible));
            CheckBoxBinder.BindChecked(chkProperties, _wl.InformationPane, nameof(_wl.InformationPane.PropertiesVisible));
            CheckBoxBinder.BindChecked(chkStatusBar, _wl.StatusBar, nameof(_wl.StatusBar.Visible));

            CheckBoxBinder.BindChecked(chkTaskPane, _wl.TaskPane, nameof(_wl.TaskPane.Visible));
            CheckBoxBinder.BindChecked(chkTaskBar, _wl.TaskPane.TaskBar, nameof(_wl.TaskPane.TaskBar.Visible));
            CheckBoxBinder.BindChecked(chkToolbar, _wl.ToolBar, nameof(_wl.ToolBar.Visible));
            CheckBoxBinder.BindChecked(chkZoomControl, _wl.ZoomControl, nameof(_wl.ZoomControl.Visible));

            ComboBoxBinder.BindSelectedIndexChanged(cmbHyperlinkTarget, nameof(cmbHyperlinkTarget.SelectedItem), _wl.Map, nameof(_wl.Map.HyperlinkTarget));
            TextBoxBinder.BindText(txtHyperlinkFrame, _wl.Map, nameof(_wl.Map.HyperlinkTargetFrame));

            TextBoxBinder.BindText(numInfoPaneWidth, _wl.InformationPane, nameof(_wl.InformationPane.Width));
            TextBoxBinder.BindText(numTaskPaneWidth, _wl.TaskPane, nameof(_wl.TaskPane.Width));

            _wl.PropertyChanged   += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebLayoutPropertyChanged, (eh) => _wl.PropertyChanged -= eh);
            _view.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebLayoutPropertyChanged, (eh) => _view.PropertyChanged -= eh);
            var wlMap = _wl.Map;

            wlMap.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebLayoutPropertyChanged, (eh) => wlMap.PropertyChanged -= eh);
            var ctx = _wl.ContextMenu;

            ctx.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebLayoutPropertyChanged, (eh) => ctx.PropertyChanged -= eh);
            var info = _wl.InformationPane;

            info.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebLayoutPropertyChanged, (eh) => info.PropertyChanged -= eh);
            var stat = _wl.StatusBar;

            stat.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebLayoutPropertyChanged, (eh) => stat.PropertyChanged -= eh);
            var tpane = _wl.TaskPane;

            tpane.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebLayoutPropertyChanged, (eh) => tpane.PropertyChanged -= eh);
            var tbar = tpane.TaskBar;

            tbar.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebLayoutPropertyChanged, (eh) => tbar.PropertyChanged -= eh);
            var toolbar = _wl.ToolBar;

            toolbar.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebLayoutPropertyChanged, (eh) => toolbar.PropertyChanged -= eh);
            var zoom = _wl.ZoomControl;

            zoom.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnWebLayoutPropertyChanged, (eh) => zoom.PropertyChanged -= eh);
        }
 internal void ReReadSessionResource()
 {
     _editCopy = _conn.ResourceService.GetResource(this.EditedResourceID);
     _editCopy.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnResourcePropertyChanged, (eh) => _editCopy.PropertyChanged -= eh);
 }
        public override void Bind(IEditorService service)
        {
            cmbBackgroundColor.ResetColors();

            _service = service;
            _service.RegisterCustomNotifier(this);
            _map = (IMapDefinition)service.GetEditedResource();

            var mdf3 = _map as IMapDefinition3;

            if (mdf3 == null)
            {
                pnlTileSource.Visible = false;
            }
            else
            {
                switch (mdf3.TileSourceType)
                {
                case TileSourceType.External:
                    rdExternal.Checked = true;
                    break;

                case TileSourceType.Inline:
                    rdInline.Checked = true;
                    break;

                default:     //Default to none
                    rdNone.Checked = true;
                    break;
                }
            }

            var bmeta = new Binding("Text", _map, "Metadata");

            bmeta.Parse += (sender, e) =>
            {
                e.Value = META_START + e.Value + META_END;
            };
            bmeta.Format += (sender, e) =>
            {
                if (e.Value != null)
                {
                    var str = e.Value.ToString();
                    if (str.StartsWith(META_START) && str.EndsWith(META_END))
                    {
                        e.Value = str.Substring(META_START.Length, str.Length - (META_START.Length + META_END.Length));
                    }
                }
            };
            TextBoxBinder.BindText(txtDescription, bmeta);
            TextBoxBinder.BindText(txtCoordinateSystem, _map, "CoordinateSystem");

            //ColorComboBox requires custom databinding
            cmbBackgroundColor.CurrentColor          = _map.BackgroundColor;
            cmbBackgroundColor.SelectedIndexChanged += (sender, e) =>
            {
                _map.BackgroundColor = cmbBackgroundColor.CurrentColor;
            };
            PropertyChangedEventHandler mapChanged = (sender, e) =>
            {
                if (e.PropertyName == "BackgroundColor")
                {
                    cmbBackgroundColor.CurrentColor = _map.BackgroundColor;
                }
                else if (e.PropertyName == "Extents")
                {
                    UpdateExtentsFromMap();
                }
            };

            _map.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(mapChanged, (eh) => _map.PropertyChanged -= eh);

            txtLowerX.Text = _map.Extents.MinX.ToString(CultureInfo.InvariantCulture);
            txtLowerY.Text = _map.Extents.MinY.ToString(CultureInfo.InvariantCulture);
            txtUpperX.Text = _map.Extents.MaxX.ToString(CultureInfo.InvariantCulture);
            txtUpperY.Text = _map.Extents.MaxY.ToString(CultureInfo.InvariantCulture);

            txtLowerX.TextChanged += (s, e) =>
            {
                if (_updatingExtents)
                {
                    return;
                }

                if (txtLowerX.Text.EndsWith(".")) //Maybe typing in decimals atm
                {
                    return;
                }

                double d;
                if (double.TryParse(txtLowerX.Text, out d))
                {
                    _map.Extents.MinX = d;
                }
            };

            txtLowerY.TextChanged += (s, e) =>
            {
                if (_updatingExtents)
                {
                    return;
                }

                if (txtLowerY.Text.EndsWith(".")) //Maybe typing in decimals atm
                {
                    return;
                }

                double d;
                if (double.TryParse(txtLowerY.Text, out d))
                {
                    _map.Extents.MinY = d;
                }
            };

            txtUpperX.TextChanged += (s, e) =>
            {
                if (_updatingExtents)
                {
                    return;
                }

                if (txtUpperX.Text.EndsWith(".")) //Maybe typing in decimals atm
                {
                    return;
                }

                double d;
                if (double.TryParse(txtUpperX.Text, out d))
                {
                    _map.Extents.MaxX = d;
                }
            };

            txtUpperY.TextChanged += (s, e) =>
            {
                if (_updatingExtents)
                {
                    return;
                }

                if (txtUpperY.Text.EndsWith(".")) //Maybe typing in decimals atm
                {
                    return;
                }

                double d;
                if (double.TryParse(txtUpperY.Text, out d))
                {
                    _map.Extents.MaxY = d;
                }
            };

            PropertyChangedEventHandler extChange = (sender, e) =>
            {
                UpdateExtentsFromMap();
                OnResourceChanged();
            };
            var ext = _map.Extents;

            ext.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(extChange, (eh) => ext.PropertyChanged -= eh);
        }
        internal static string ComputeResourceKey(IResource res, IServerConnection conn) => $"{conn.DisplayName}|{res.ResourceID}"; //NOXLATE

        /// <summary>
        /// Opens the specified resource using its assigned editor. If the resource is already
        /// open, the the existing editor view is activated instead. If the resource has no assigned
        /// editor or useXmlEditor is true, the resource will be opened in the default
        /// XML editor.
        /// </summary>
        /// <param name="res"></param>
        /// <param name="conn"></param>
        /// <param name="useXmlEditor"></param>
        /// <param name="siteExp"></param>
        public IEditorViewContent Open(IResource res, IServerConnection conn, bool useXmlEditor, ISiteExplorer siteExp)
        {
            string key = ComputeResourceKey(res, conn);

            if (!_openItems.ContainsKey(key))
            {
                var svc = ServiceRegistry.GetService <ViewContentManager>();
                IEditorViewContent ed = null;
                if (useXmlEditor || !res.IsStronglyTyped)
                {
                    ed = svc.OpenContent <XmlEditor>(ViewRegion.Document);
                }
                else
                {
                    ed = FindEditor(svc, res.GetResourceTypeDescriptor());
                }
                var launcher  = ServiceRegistry.GetService <UrlLauncherService>();
                var editorSvc = new ResourceEditorService(res.ResourceID, conn, launcher, siteExp, this, this);
                ed.EditorService = editorSvc;
                _openItems[key]  = ed;
                CancelEventHandler vcClosing = (sender, e) =>
                {
                    if (ed.IsDirty && !ed.DiscardChangesOnClose)
                    {
                        if (ed.IsNew)
                        {
                            if (!MessageService.AskQuestion(string.Format(Strings.CloseUnsavedResource, string.Empty)))
                            {
                                e.Cancel = true;
                            }
                        }
                        else
                        {
                            using (var diag = new DirtyStateConfirmationDialog(ed.EditorService))
                            {
                                if (diag.ShowDialog() == System.Windows.Forms.DialogResult.No)
                                {
                                    e.Cancel = true;
                                }
                            }
                        }
                    }
                };
                ed.ViewContentClosing += WeakEventHandler.Wrap(vcClosing, (eh) => ed.ViewContentClosing -= eh);
                EventHandler vcClosed = (sender, e) =>
                {
                    //Recompute the resource key as that may have changed by a save as operation
                    _openItems.Remove(ComputeResourceKey(((EditorContentBase)sender).EditorService.ResourceID, conn));
                    siteExp.FlagNode(conn.DisplayName, ed.EditorService.ResourceID, NodeFlagAction.None);
                };
                ed.ViewContentClosed += WeakEventHandler.Wrap(vcClosed, (eh) => ed.ViewContentClosed -= eh);
                EventHandler edSaved = (sender, e) =>
                {
                    //If saved from new resource, the resource id would be session based
                    //So we need to update this to the new resource id as defined by the
                    //editor service
                    if (_openItems.ContainsKey(key))
                    {
                        var ed2 = _openItems[key];
                        _openItems.Remove(key);
                        _openItems[ComputeResourceKey(ed.EditorService.ResourceID, conn)] = ed2;
                    }
                };
                ed.EditorService.Saved += WeakEventHandler.Wrap(edSaved, (eh) => ed.EditorService.Saved -= eh);
                EventHandler dirty = (sender, e) =>
                {
                    siteExp.FlagNode(conn.DisplayName, res.ResourceID, ed.IsDirty ? NodeFlagAction.HighlightDirty : NodeFlagAction.HighlightOpen);
                };
                ed.DirtyStateChanged += WeakEventHandler.Wrap(dirty, (eh) => ed.DirtyStateChanged -= eh);
            }
            _openItems[key].Activate();
            siteExp.FlagNode(conn.DisplayName, res.ResourceID, _openItems[key].IsDirty ? NodeFlagAction.HighlightDirty : NodeFlagAction.HighlightOpen);
            return(_openItems[key]);
        }
Example #20
0
        public ResourceIdNavigator(ServerConnectionManager connMgr,
                                   OpenResourceManager omgr,
                                   ViewContentManager viewMgr,
                                   ISiteExplorer siteExp,
                                   Workbench wb)
        {
            _connMgr = connMgr;
            _connMgr.ConnectionAdded   += WeakEventHandler.Wrap <ServerConnectionEventHandler>(OnConnectionAdded, (eh) => _connMgr.ConnectionAdded -= eh);
            _connMgr.ConnectionRemoved += WeakEventHandler.Wrap <ServerConnectionEventHandler>(OnConnectionRemoved, (eh) => _connMgr.ConnectionRemoved -= eh);

            _omgr    = omgr;
            _viewMgr = viewMgr;
            _viewMgr.ViewActivated += WeakEventHandler.Wrap <ViewEventHandler>(OnViewActivated, (eh) => _viewMgr.ViewActivated -= eh);

            _siteExp = siteExp;
            _siteExp.ItemsSelected += WeakEventHandler.Wrap <RepositoryItemEventHandler>(OnSiteExplorerItemsSelected, (eh) => _siteExp.ItemsSelected -= eh);

            _strip         = new ToolStrip();
            _strip.Layout += WeakEventHandler.Wrap <LayoutEventHandler>(OnToolStripLayout, (eh) => _strip.Layout -= eh);
            _strip.Stretch = true;

            _resIdLabel                 = new ToolStripLabel(Strings.Label_ResourceID);
            _cmbResourceId              = new ToolStripComboBox();
            _cmbResourceId.AutoSize     = false;
            _cmbResourceId.Width        = 250;
            _cmbResourceId.TextChanged += WeakEventHandler.Wrap(OnResourceIdChanged, (eh) => _cmbResourceId.TextChanged -= eh);
            _cmbResourceId.KeyUp       += WeakEventHandler.Wrap <KeyEventHandler>(OnResourceIdKeyUp, (eh) => _cmbResourceId.KeyUp -= eh);

            _atLabel = new ToolStripLabel("@"); //NOXLATE
            _cmbActiveConnections          = new ToolStripComboBox();
            _cmbActiveConnections.AutoSize = false;
            _cmbActiveConnections.Width    = 250;
            _cmbActiveConnections.ComboBox.SelectedIndexChanged += WeakEventHandler.Wrap(OnActiveConnectionChanged, (eh) => _cmbActiveConnections.ComboBox.SelectedIndexChanged -= eh);
            _cmbActiveConnections.ComboBox.DropDownStyle         = ComboBoxStyle.DropDownList;

            _btnGo                   = new ToolStripButton(Strings.Label_Open);
            _btnGo.Image             = Properties.Resources.arrow;
            _btnGo.DisplayStyle      = ToolStripItemDisplayStyle.ImageAndText;
            _btnGo.TextImageRelation = TextImageRelation.TextBeforeImage;
            _btnGo.ToolTipText       = Strings.Label_OpenResource;
            _btnGo.Click            += WeakEventHandler.Wrap(btnGo_Click, (eh) => _btnGo.Click -= eh);

            _btnOpenAsXml                   = new ToolStripButton(Strings.Label_OpenAsXml);
            _btnOpenAsXml.Image             = Properties.Resources.arrow;
            _btnOpenAsXml.DisplayStyle      = ToolStripItemDisplayStyle.ImageAndText;
            _btnOpenAsXml.TextImageRelation = TextImageRelation.TextBeforeImage;
            _btnOpenAsXml.ToolTipText       = Strings.Label_OpenResourceAsXml;
            _btnOpenAsXml.Click            += WeakEventHandler.Wrap(btnOpenAsXml_Click, (eh) => _btnOpenAsXml.Click -= eh);

            UpdateConnectionList();
            UpdateNavigationState();

            _strip.Items.AddRange(new ToolStripItem[]
            {
                _resIdLabel,
                _cmbResourceId,
                _atLabel,
                _cmbActiveConnections,
                _btnGo,
                _btnOpenAsXml
            });

            wb.Theme?.ApplyTo(_strip);
        }