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; } }
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)); }
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; }
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(); } }
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); }
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; }
public GroupItem(IMapLayerGroup grp) : base(grp.Name, Properties.Resources.folder_horizontal, grp) { grp.PropertyChanged += WeakEventHandler.Wrap <PropertyChangedEventHandler>(OnPropertyChanged, (eh) => grp.PropertyChanged -= eh); }
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; } }
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(); } } }
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]); }
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); }