/// <summary> /// Отписываемся от события нажатия на дочерний контрол /// </summary> public void UnsubscribeClickEvent() { var allControls = HelperControls.GetAllChildrenControls(this.SubTaskPanel); foreach (var itemControl in allControls) { itemControl.Click -= this.ClickEventHandler; itemControl.DoubleClick -= this.DoubleClickEventHandler; } }
/// <summary> /// Вызывается при нажатии на элемент задачи. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void TaskItem_OnClick(object sender, EventArgs args) { var taskItem = HelperControls.GetParenByType <TaskItem>(sender as Control); if (taskItem == null) { return; } ChangeSelectedTaskItem(taskItem); }
/// <summary> /// Обработчик двойного нажатия мыши на элемент проекта. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ProjectItem_DoubleClick(object sender, EventArgs e) { if (sender == null || sender is Control == false) { return; } ProjectItem proj = HelperControls.GetParenByType <ProjectItem>(sender as Control); //ПО ДВОЙНОМУ КЛИКУ БУДЕМ РЕДАКТИРОВАТЬ ЭЛЕМЕНТ ПРОЕКТА proj.EditProjectData(); //данные по проекту изменились, как-будто мы поменяли элемент this.ChangeSelectedProjectItem(proj); }
/// <summary> /// Добавить в список IdeaListItem (пользовательский элемент идеи) /// </summary> /// <param name="idea"></param> private void AddIdeaListItem(Idea idea) { IdeaListItem IdeaListItem = new IdeaListItem(idea); //Устанавливаем обработчик нажатия на все дочерние элементы для корректного визуального выделения объекта идей HelperControls.SetOnClickHandlerForAllElementsInControl(IdeaListItem, SelectIdeaItem); IdeaListItem.TitleProp = idea.Title; IdeaListItem.MarkProp = idea.Mark.ToString(); IdeaListItem.SectionColorProp = Constants.SectionsColors[idea.Section]; IdeaListItem.Width = flowLayoutPanelIdeas.Width - 25; flowLayoutPanelIdeas.Controls.Add(IdeaListItem); flowLayoutPanelIdeas.Controls.SetChildIndex(IdeaListItem, 0); }
private void SelectIdeaItem(object sender, EventArgs e) { Control c = sender as Control; //Получим элемент UserControl IdeaListItem IdeaListItem ideaItem = HelperControls.GetParenByType <IdeaListItem>(c); if (ideaItem == null) { return; } //Поменяем цвет для выделенной идеи ChangeColorSelectedIdeaItem(ideaItem); ShowDataForIdea(ideaItem.Idea); }
/// <summary> /// Вызывается при нажатии на элемент проекта /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ProjectItem_Click(object sender, EventArgs e) { if (sender == null || sender is Control == false) { return; } Control control = sender as Control; ProjectItem proj = HelperControls.GetParenByType <ProjectItem>(control); if (proj == default(ProjectItem)) { return; } //Так как мы выбрали Новый ProjectItem, то нужно поменять цвет выделения. ChangeSelectedProjectItem(proj); }
/// <summary> /// Добавить подзадачу в задачу /// </summary> /// <param name="subTask"></param> /// <param name="removeInnerMyTask">Нужно ли удалять объект MyTask, который был автоматически добавлен /// при добавлении taskItem. То есть если объект MyProject уже сформирован, то ничего к нему не добавлять</param> public void AddSubTaskItem(TaskItem subTask, bool removeInnerMyTask = false, bool selectAfterAdd = true) { if (subTask?.Task?.Status == TaskStatus.Done) { subTask.StatusCheckBox.Checked = true; } //Если это главная панель, то установить скроллинг if (Equals(this, this.ProjectItem.MainProjectTaskRoot)) { this.SubTaskPanel.AutoScroll = true; } this.SubTaskPanel.Controls.Add(subTask.SubTaskPanel); this.SubTaskPanel.Controls.Add(subTask); this.SubTaskPanel.Controls.SetChildIndex(subTask, 0); this.SubTaskPanel.Controls.SetChildIndex(subTask.SubTaskPanel, 0); #region Не трогать, а то будет КАПУТ this.SubTaskItems.Add(subTask); if (removeInnerMyTask == true) { this.Task.SubTasks.RemoveAt(this.Task.SubTasks.Count - 1); } #endregion //вызовем у проекта событие OnChangeSelectedTaskItem (Что выбрали другую задачу). Вызываем событие через внешний метод. //Как-то это не хорошо, но пока что так. Не могу вызвать событие напрямую. if (selectAfterAdd) { this.ProjectItem.SelectedTaskItemWasChanged(subTask); } //Привязываем обработчик события нажатия для дочерних элементов HelperControls.SetOnClickHandlerForAllElementsInControl(subTask, subTask.ClickEventHandler); HelperControls.SetOnDoubleClickHandlerForAllElementsInControl(subTask, subTask.DoubleClickEventHandler); }
void InitaliseHelpers() { s4pi.Helpers.HelperManager.Reload(); int tabIndex = 4; foreach (var helper in s4pi.Helpers.HelperManager.Helpers) { HelperControls hc = new HelperControls(helper.id, ref tabIndex); lhc.Add(hc); hc.btn.Click += new EventHandler(hc_btn_Click); int h = tlpHelpers.Height; tlpHelpers.RowCount++; tlpHelpers.RowStyles.Insert(tlpHelpers.RowCount - 2, new RowStyle(SizeType.AutoSize)); tlpHelpers.Controls.Add(hc.btn, 0, tlpHelpers.RowCount - 2); tlpHelpers.Controls.Add(hc.cb, 1, tlpHelpers.RowCount - 2); tlpHelpers.Controls.Add(hc.lb, 2, tlpHelpers.RowCount - 2); this.Height = this.Height - h + tlpHelpers.Height; } }
/// <summary> /// Добавить проект в родительскую панель /// </summary> /// <param name="parent"></param> /// <param name="proj"></param> private void AddProjectItemToParentPanel(Control parent, ProjectItem proj) { this.TaskPanel.Controls.Add(proj.MainProjectTaskRoot.SubTaskPanel); proj.Dock = DockStyle.Top; //привязываем событие нажатия мыши на элемент проекта HelperControls.SetOnClickHandlerForAllElementsInControl(proj, ProjectItem_Click); HelperControls.SetOnDoubleClickHandlerForAllElementsInControl(proj, ProjectItem_DoubleClick); //Привязываем элемент проекта к родителю parent.Controls.Add(proj); parent.Controls.SetChildIndex(proj, 0); //Добавляем для проекта его личную панель для задач. this.TaskPanel.Controls.Add(proj.TasksPanel); //Только что созданный проект и будет текущим проектом. ChangeSelectedProjectItem(proj, false); //Добавим обработчик события изменения текущей(выбранной) задачи proj.OnChangeSelectedTaskItem -= ChangeSelectedTaskItem; proj.OnChangeSelectedTaskItem += ChangeSelectedTaskItem; }
void InitaliseHelpers() { s3pi.Helpers.HelperManager.Reload(); int tabIndex = 4; foreach (var helper in s3pi.Helpers.HelperManager.Helpers) { HelperControls hc = new HelperControls(helper.id, ref tabIndex); lhc.Add(hc); hc.btn.Click += new EventHandler(hc_btn_Click); int h = tlpHelpers.Height; tlpHelpers.RowCount++; tlpHelpers.RowStyles.Insert(tlpHelpers.RowCount - 2, new RowStyle(SizeType.AutoSize)); tlpHelpers.Controls.Add(hc.btn, 0, tlpHelpers.RowCount - 2); tlpHelpers.Controls.Add(hc.cb, 1, tlpHelpers.RowCount - 2); tlpHelpers.Controls.Add(hc.lb, 2, tlpHelpers.RowCount - 2); this.Height = this.Height - h + tlpHelpers.Height; } }
/// <summary> /// Fired when a user taps the markdown helper /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void RedditMarkdownVisualHelper_OnHelperTapped(object sender, HelperControls.OnHelperTappedArgs e) { int selStart = ui_postUrlTextBox.SelectionStart; int selLength = ui_postUrlTextBox.SelectionLength; string curText = ui_postUrlTextBox.Text; string insertNewLine = null; // Depending on the type see what we can do. switch (e.Type) { case HelperControls.VisualHelperTypes.Bold: if(selLength != 0) { // Wrap the selected text ui_postUrlTextBox.Text = curText.Insert(selStart + selLength, "**").Insert(selStart, "**"); } else { // Or add to the end ui_postUrlTextBox.Text = curText + " **example**"; } break; case HelperControls.VisualHelperTypes.Italic: if (selLength != 0) { // Wrap the selected text ui_postUrlTextBox.Text = curText.Insert(selStart + selLength, "*").Insert(selStart, "*"); } else { // Or add to the end ui_postUrlTextBox.Text = curText + " *example*"; } break; case HelperControls.VisualHelperTypes.Link: if (selLength != 0) { // Wrap the selected text ui_postUrlTextBox.Text = curText.Insert(selStart + selLength, ")[http://www.example.com]").Insert(selStart, "{"); } else { // Or add to the end ui_postUrlTextBox.Text = curText + " [example](http://www.example.com)"; } break; case HelperControls.VisualHelperTypes.NewLine: int injectPos = selStart; // Inject the new line at the current pos ui_postUrlTextBox.Text = curText.Insert(injectPos, " \r\n"); // Move the selection to the end of insert ui_postUrlTextBox.SelectionStart = injectPos + 3; break; case HelperControls.VisualHelperTypes.Quote: insertNewLine = "> "; break; case HelperControls.VisualHelperTypes.List: insertNewLine = "* "; break; case HelperControls.VisualHelperTypes.NumberedList: insertNewLine = "1. "; break; case HelperControls.VisualHelperTypes.Code: insertNewLine = " "; break; } // If the insert on new line is not null we need to find the last new line and // insert the text. if(insertNewLine != null) { int searchStart = selStart == curText.Length ? selStart - 1 : selStart; int indexLastNewLine = curText.LastIndexOf('\n', searchStart); ui_postUrlTextBox.Text = curText.Insert(indexLastNewLine + 1, insertNewLine); } // When we leave focus the text box again so we don't press enter on the key again ui_postUrlTextBox.Focus(FocusState.Programmatic); }
/// <summary> /// Обработчик мобытия нажатия на TaskItem. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void TaskItem_OnClick(object sender, EventArgs args) { TaskItem clickedTaskItem = HelperControls.GetParenByType <TaskItem>(sender as Control); this.ProjectItem?.SelectedTaskItemWasChanged(clickedTaskItem); }
protected void CreateControls() { Controls.Clear(); Item item = null; var published = new List <Item>(); Item[] targets = null; try { var db = Factory.GetDatabase(Constants.Databases.MASTERDB) ?? Factory.GetDatabase(Constants.Databases.WEBDB); var id = !string.IsNullOrEmpty(ItemId) ? ItemId : ControlAttributes.Substring(ControlAttributes.IndexOf("//master/", StringComparison.Ordinal) + 9, 38); item = new ID(id).ToSitecoreItem(db); var targetsRoot = item.Database.GetItem( Constants.Sitecore.PUBLISHING_TARGETS); targets = targetsRoot.GetChildren().ToArray(); foreach (var target in targets) { try { var webItem = item.ID.ToSitecoreItem(Factory.GetDatabase(target[TARGETDATABASE])); if (webItem != null && webItem.Versions.Count != 0) { HelperControls.CreateLitertal("Published Version on " + target[TARGETDATABASE], Controls); HelperControls.CreateSitecoreControl <Integer>("version" + target[TARGETDATABASE], true, true, true, webItem.Version.ToString(), Controls, GetID("version" + target.Name), false, false); published.Add(webItem); } else if (webItem != null && webItem.Versions.Count == 0) { HelperControls.CreateLitertal("Published, but no Versions on " + target[TARGETDATABASE], Controls); } else { HelperControls.CreateLitertal("Not published on " + target[TARGETDATABASE], Controls); } } catch (Exception) { HelperControls.CreateLitertal("Target DB " + target[TARGETDATABASE] + " not found.", Controls); } finally { HelperControls.CreateLitertal("<br />", Controls); } } } catch (Exception ex) { Log.Error(ex.Message, ex, this); } finally { if (item != null) { HelperControls.CreateLitertal("<br />", Controls); HelperControls.CreateLitertal("Number of Versions on master", Controls); HelperControls.CreateSitecoreControl <Integer>("version_master", true, true, true, item.Versions.Count.ToString(), Controls, GetID("version_master"), false, false); HelperControls.CreateLitertal("<br />", Controls); } try { HelperControls.CreateLitertal("<br />", Controls); HelperControls.CreateLitertal( "<table width='100%'><tr><td colspan=7 style='background-color:silver;color:white'><center>Version Details</center></td><td > </td><td style='background-color:silver;color:white'></td></tr><tr><td style='background-color:silver;color:white'><center>Version</center></td><td style='background-color:silver;color:white'><center>Created By</center></td><td style='background-color:silver;color:white'><center>Created Date</center></td><td style='background-color:silver;color:white'><center>Modified By</center></td><td style='background-color:silver;color:white'><center>Modified Date</center></td><td style='background-color:silver;color:white'><center>Languages</center></td><td style='background-color:silver;color:white'><center>Work-Flow State</center></td><td><center> </center></td><td style='background-color:silver;color:white'><center>Published</center></td></tr><tbody>", Controls); if (item != null) { var versions = (from p in item.Versions.GetVersions(true).ToArray() orderby p.Version.Number select p).ToList(); foreach (var version in versions) { DateTime outValCreate; DateTime outValModify; string workFlowName; GetOutValCreate(version, out outValCreate, out outValModify, out workFlowName); var isPublished = false; var pub = (published.Where( p => p.Version.Number == version.Version.Number && p.Languages.Where( l => p.Database.GetItem(p.ID, l) != null && p.Database.GetItem(p.ID, l).Versions.Count > 0) .Select(l => l.Name) .Contains(version.Language.Name))). FirstOrDefault(); if (pub != null) { isPublished = true; } HelperControls.CreateLitertal( "<tr><td style='" + (isPublished ? "background-color:lightgreen;color:black;" : string.Empty) + "'><center>" + version.Version.Number + "</center></td><td" + (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) + "><center>" + version.Fields[FieldIDs.CreatedBy].Value + "</center></td><td" + (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) + "><center>" + (outValCreate == DateTime.MinValue ? string.Empty : outValCreate.ToString("dd MMM yyyy HH:mm")) + "</center></td><td" + (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) + "><center>" + version.Fields[FieldIDs.UpdatedBy].Value + "</center></td><td" + (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) + "><center>" + (outValModify == DateTime.MinValue ? string.Empty : outValModify.ToString("dd MMM yyyy HH:mm")) + "</td><td" + (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) + "><center>" + version.Language.Name + "</center>" + "</td><td" + (isPublished ? " style='background-color:lightgreen;color:black;'" : string.Empty) + "><center>" + workFlowName + "</center></td>" + "</td><td><center></center></td>" + "</td><td><center>" + (isPublished ? "◄" : string.Empty) + "</center></td>" + "</tr>", Controls); } } HelperControls.CreateLitertal("</tbody></table>", Controls); if (targets != null) { foreach (var target in targets) { try { var errMessage = string.Empty; Item webItem; try { webItem = item.ID.ToSitecoreItem(Factory.GetDatabase(target[TARGETDATABASE])); } catch (Exception ex) { errMessage = ex.Message; webItem = null; } if (webItem != null) { DateTime outValCreate; DateTime outValModify; string workFlowName; GetOutValCreate(webItem, out outValCreate, out outValModify, out workFlowName); HelperControls.CreateLitertal("<br />", Controls); HelperControls.CreateLitertal( "<table width='100%'><tr><td colspan=7 style='background-color:silver;color:white'><center>Item Details on " + target[TARGETDATABASE] + "</center></td></tr><tr><td style='background-color:silver;color:white'><center>Version</center></td><td style='background-color:silver;color:white'><center>Created By</center></td><td style='background-color:silver;color:white'><center>Created Date</center></td><td style='background-color:silver;color:white'><center>Modified By</center></td><td style='background-color:silver;color:white'><center>Modified Date</center></td><td style='background-color:silver;color:white'><center>Languages</center></td><td style='background-color:silver;color:white'><center>Work-Flow State</center></td></tr><tbody>", Controls); HelperControls.CreateLitertal( "<tr><td><center>" + webItem.Version.Number + "</center></td><td><center>" + webItem.Fields[FieldIDs.CreatedBy].Value + "</center></td><td><center>" + (outValCreate == DateTime.MinValue ? string.Empty : outValCreate.ToString("dd MMM yyyy HH:mm")) + "</center></td><td><center>" + webItem.Fields[FieldIDs.UpdatedBy].Value + "</td><td><center>" + (outValModify == DateTime.MinValue ? string.Empty : outValModify.ToString("dd MMM yyyy HH:mm")) + "</center>" + "</td><td><center>" + string.Join(",", webItem.Languages.Where(p => webItem.Database.GetItem(webItem.ID, p) != null && webItem.Database.GetItem(webItem.ID, p).Versions.Count > 0).Select(p => p.Name).ToArray()) + "</center></td><td><center>" + workFlowName + "</center></td></tr>", Controls); } else { HelperControls.CreateLitertal("<br />", Controls); HelperControls.CreateLitertal( "<table width='100%'><tr><td style='background-color:silver;color:white'><center>Item Details on " + target[TARGETDATABASE] + "</center></td></tr><tbody>", Controls); HelperControls.CreateLitertal( "<tr><td style='text-align:center;' >No Item Found" + (!string.IsNullOrEmpty(errMessage) ? " ( <span style='color:red;'>" + errMessage + "</span>)" : string.Empty) + "</td></tr>", Controls); } } catch (Exception ex) { Log.Error(ex.Message, ex, this); } finally { HelperControls.CreateLitertal("</tbody></table>", Controls); } } } } catch (Exception ex) { Log.Error(ex.Message, ex, this); } } }
/// <summary> /// Обработчик cобытия двойного нажатия на TaskItem. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void TaskItem_OnDoubleClick(object sender, EventArgs args) { TaskItem clickedTaskItem = HelperControls.GetParenByType <TaskItem>(sender as Control); this.EditTaskItemData(); }
private void Ui_postList_OnListEndDetectedEvent(object sender, HelperControls.OnListEndDetected e) { // Suppress more event until we get more items. ui_postList.SuppressEndOfListEvent = true; m_collector.ExtendCollection(); }
/// <summary> /// Fired when a user taps the markdown helper /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void RedditMarkdownVisualHelper_OnHelperTapped(object sender, HelperControls.OnHelperTappedArgs e) { // Do the edit. RedditMarkdownVisualHelper.DoEdit(ui_postTitleTextBox, e.Type); }
/// <summary> /// Fired when the list is scrolled down a ways. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CommentList_OnListEndDetectedEvent(object sender, HelperControls.OnListEndDetected e) { if (m_user == null) { return; } EnsureCommentCollector(); // Request a extension. m_commentCollector.ExtendCollection(); }