internal ResourceEditorService(string resourceID, IServerConnection conn, IUrlLauncherService launcher, ISiteExplorer siteExp, OpenResourceManager orm) : base(resourceID, conn) { _siteExp = siteExp; _launcher = launcher; _orm = orm; }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); _siteExplorer = Workbench.Instance.ActiveSiteExplorer; _siteExplorer.ItemsSelected += OnItemsSelected; CheckButtonState(new RepositoryItem[0]); }
internal static void OnDragDrop(ISiteExplorer sender, DragEventArgs e, TreeNodeAdv droppedNode) { //If drop node specified, extract relevant folder, otherwise default to root (Library://) string folderId = StringConstants.RootIdentifier; IServerConnection conn = null; var mgr = ServiceRegistry.GetService<ServerConnectionManager>(); if (droppedNode != null) { var ri = droppedNode.Tag as RepositoryItem; if (ri != null) { if (ri.IsFolder) folderId = ri.ResourceId; else folderId = ri.Parent != null ? ri.Parent.ResourceId : StringConstants.RootIdentifier; } conn = mgr.GetConnection(ri.ConnectionName); } else { return; } Array a = e.Data.GetData(DataFormats.FileDrop) as Array; bool refresh = false; if (a != null && a.Length > 0) { DragDropHandlerService handlerSvc = ServiceRegistry.GetService<DragDropHandlerService>(); for (int i = 0; i < a.Length; i++) { string file = a.GetValue(i).ToString(); IList<IDragDropHandler> handlers = handlerSvc.GetHandlersForFile(file); if (handlers.Count == 0) continue; if (handlers.Count == 1) { using (new WaitCursor(Workbench.Instance)) { if (handlers[0].HandleDrop(conn, file, folderId)) refresh = true; } } if (handlers.Count > 1) { //Resolve which handler to use } } } if (refresh) sender.RefreshModel(conn.DisplayName, folderId); }
/// <summary> /// Initializes a new instance of the ResourcePropertiesDialog class /// </summary> /// <param name="icons"></param> /// <param name="connection"></param> /// <param name="resourceId"></param> /// <param name="openMgr"></param> /// <param name="siteExp"></param> public ResourcePropertiesDialog(IResourceIconCache icons, IServerConnection connection, string resourceId, OpenResourceManager openMgr, ISiteExplorer siteExp) : this() { m_connection = connection; m_resourceId = resourceId; ResourceID.Text = resourceId; m_icons = icons; _openMgr = openMgr; _siteExp = siteExp; InReferenceList.SmallImageList = OutReferenceList.SmallImageList = icons.SmallImageList; this.Disposed += OnDisposed; }
internal static void OnDragEnter(ISiteExplorer sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { Array a = e.Data.GetData(DataFormats.FileDrop) as Array; if (a != null && a.Length > 0) { e.Effect = DragDropEffects.Copy; } else { e.Effect = DragDropEffects.None; } } else { e.Effect = DragDropEffects.None; } }
internal void RenameResourceId(string oldId, string newId, IServerConnection conn, ISiteExplorer siteExp) { Check.ArgumentNotEmpty(oldId, nameof(oldId)); Check.ArgumentNotEmpty(newId, nameof(newId)); Check.ArgumentNotNull(siteExp, nameof(siteExp)); Check.ArgumentNotNull(conn, nameof(conn)); string oldKey = ComputeResourceKey(oldId, conn); string newKey = ComputeResourceKey(newId, conn); if (oldKey.Equals(newKey)) { return; } //Original must exist and new id must not if (_openItems.ContainsKey(oldKey) && !_openItems.ContainsKey(newKey)) { var ed = _openItems[oldKey]; _openItems.Remove(oldKey); _openItems[newKey] = ed; siteExp.FlagNode(conn.DisplayName, oldId, NodeFlagAction.None); siteExp.FlagNode(conn.DisplayName, newId, NodeFlagAction.HighlightOpen); } }
internal void RenameResourceId(string oldId, string newId, IServerConnection conn, ISiteExplorer siteExp) { Check.NotEmpty(oldId, "oldId"); //NOXLATE Check.NotEmpty(newId, "newId"); //NOXLATE Check.NotNull(siteExp, "siteExp"); //NOXLATE Check.NotNull(conn, "conn"); //NOXLATE string oldKey = ComputeResourceKey(oldId, conn); string newKey = ComputeResourceKey(newId, conn); if (oldKey.Equals(newKey)) return; //Original must exist and new id must not if (_openItems.ContainsKey(oldKey) && !_openItems.ContainsKey(newKey)) { var ed = _openItems[oldKey]; _openItems.Remove(oldKey); _openItems[newKey] = ed; siteExp.FlagNode(conn.DisplayName, oldId, NodeFlagAction.None); siteExp.FlagNode(conn.DisplayName, newId, NodeFlagAction.HighlightOpen); } }
/// <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="resourceId"></param> /// <param name="conn"></param> /// <param name="useXmlEditor"></param> /// <param name="siteExp"></param> public IEditorViewContent Open(string resourceId, IServerConnection conn, bool useXmlEditor, ISiteExplorer siteExp) { IResource res = null; try { res = (IResource)conn.ResourceService.GetResource(resourceId); return Open(res, conn, useXmlEditor, siteExp); } catch (Exception ex) { ErrorDialog.Show(ex); return null; } }
/// <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); ed.EditorService = editorSvc; _openItems[key] = ed; ed.ViewContentClosing += (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.ViewContentClosed += (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.EditorService.Saved += (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.DirtyStateChanged += (sender, e) => { siteExp.FlagNode(conn.DisplayName, res.ResourceID, ed.IsDirty ? NodeFlagAction.HighlightDirty : NodeFlagAction.HighlightOpen); }; } _openItems[key].Activate(); siteExp.FlagNode(conn.DisplayName, res.ResourceID, _openItems[key].IsDirty ? NodeFlagAction.HighlightDirty : NodeFlagAction.HighlightOpen); return _openItems[key]; }
internal static void OnDragEnter(ISiteExplorer sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { Array a = e.Data.GetData(DataFormats.FileDrop) as Array; if (a != null && a.Length > 0) { e.Effect = DragDropEffects.Copy; } else e.Effect = DragDropEffects.None; } else e.Effect = DragDropEffects.None; }
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); }
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) { _connMgr = connMgr; _connMgr.ConnectionAdded += OnConnectionAdded; _connMgr.ConnectionRemoved += OnConnectionRemoved; _omgr = omgr; _viewMgr = viewMgr; _viewMgr.ViewActivated += OnViewActivated; _siteExp = siteExp; _siteExp.ItemsSelected += OnSiteExplorerItemsSelected; _strip = new ToolStrip(); _strip.Layout += OnToolStripLayout; _strip.Stretch = true; _resIdLabel = new ToolStripLabel(Strings.Label_ResourceID); _cmbResourceId = new ToolStripComboBox(); _cmbResourceId.AutoSize = false; _cmbResourceId.Width = 250; _cmbResourceId.TextChanged += OnResourceIdChanged; _cmbResourceId.KeyUp += OnResourceIdKeyUp; _atLabel = new ToolStripLabel("@"); //NOXLATE _cmbActiveConnections = new ToolStripComboBox(); _cmbActiveConnections.AutoSize = false; _cmbActiveConnections.Width = 250; _cmbActiveConnections.ComboBox.SelectedIndexChanged += OnActiveConnectionChanged; _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 += btnGo_Click; _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 += btnOpenAsXml_Click; UpdateConnectionList(); UpdateNavigationState(); _strip.Items.AddRange(new ToolStripItem[] { _resIdLabel, _cmbResourceId, _atLabel, _cmbActiveConnections, _btnGo, _btnOpenAsXml }); }
public DriverThread(string url) { this.url = url; this.siteExplorer = new WebDriverSiteExplorer(); }
internal static void OnDragDrop(ISiteExplorer sender, DragEventArgs e, TreeNodeAdv droppedNode) { //If drop node specified, extract relevant folder, otherwise default to root (Library://) string folderId = StringConstants.RootIdentifier; IServerConnection conn = null; var mgr = ServiceRegistry.GetService <ServerConnectionManager>(); if (droppedNode != null) { var ri = droppedNode.Tag as RepositoryItem; if (ri != null) { if (ri.IsFolder) { folderId = ri.ResourceId; } else { folderId = ri.Parent != null ? ri.Parent.ResourceId : StringConstants.RootIdentifier; } } conn = mgr.GetConnection(ri.ConnectionName); } else { return; } Array a = e.Data.GetData(DataFormats.FileDrop) as Array; bool refresh = false; if (a != null && a.Length > 0) { DragDropHandlerService handlerSvc = ServiceRegistry.GetService <DragDropHandlerService>(); for (int i = 0; i < a.Length; i++) { string file = a.GetValue(i).ToString(); IList <IDragDropHandler> handlers = handlerSvc.GetHandlersForFile(file); if (handlers.Count == 0) { continue; } if (handlers.Count == 1) { using (new WaitCursor(Workbench.Instance)) { if (handlers[0].HandleDrop(conn, file, folderId)) { refresh = true; } } } if (handlers.Count > 1) { //Resolve which handler to use var handler = GenericItemSelectionDialog.SelectItem <IDragDropHandler>(Strings.SelectFileHandler, Strings.SelectFileHandlerDesc, handlers.ToArray()); if (handler != null) { using (new WaitCursor(Workbench.Instance)) { if (handler.HandleDrop(conn, file, folderId)) { refresh = true; } } } } } } if (refresh) { sender.RefreshModel(conn.DisplayName, folderId); } }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); _siteExplorer = Workbench.Instance.ActiveSiteExplorer; _siteExplorer.ItemsSelected += new RepositoryItemEventHandler(OnItemsSelected); CheckButtonState(new RepositoryItem[0]); }
/// <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="resourceId"></param> /// <param name="conn"></param> /// <param name="useXmlEditor"></param> /// <param name="siteExp"></param> public IEditorViewContent Open(string resourceId, IServerConnection conn, bool useXmlEditor, ISiteExplorer siteExp) { IResource res = null; try { res = (IResource)conn.ResourceService.GetResource(resourceId); return(Open(res, conn, useXmlEditor, siteExp)); } catch (Exception ex) { ErrorDialog.Show(ex); return(null); } }
/// <summary> /// Initializes a new instance of the ResourcePropertiesDialog class /// </summary> /// <param name="icons"></param> /// <param name="connection"></param> /// <param name="resourceId"></param> /// <param name="openMgr"></param> /// <param name="siteExp"></param> public ResourcePropertiesDialog(IResourceIconCache icons, IServerConnection connection, string resourceId, OpenResourceManager openMgr, ISiteExplorer siteExp) : this() { m_connection = connection; m_resourceId = resourceId; ResourceID.Text = resourceId; m_icons = icons; _openMgr = openMgr; _siteExp = siteExp; InReferenceList.SmallImageList = OutReferenceList.SmallImageList = icons.SmallImageList; }